public Response Track(AssignmentTrainingMaterialViewRequest request) { var club = clubQuery.GetClub(request.ClubId); if (club == null) { return(Response.CreateResponse(new EntityNotFoundException("The specified club doesn not exist"))); } var assignment = assignmentQuery.GetAssignment(club.Guid, request.AssignmentId); if (assignment == null) { return(Response.CreateResponse(new EntityNotFoundException("The specified assignment was not found"))); } else if (assignment.ClubId != request.ClubId) { return(Response.CreateResponse(new IllegalOperationException("The specified assignment does not belong to this club"))); } var trainingMaterial = libraryQuery.GetTrainingMaterial(request.TrainingMaterialId); if (trainingMaterial == null) { return(Response.CreateResponse(new EntityNotFoundException("The specified training material does not exist"))); } else if (!assignment.TrainingMaterials.Any(t => t.Guid == request.TrainingMaterialId)) { return(Response.CreateResponse(new IllegalOperationException("The specified training material does not belong to this assignment"))); } var clubSquads = squadQuery.GetSquads(request.ClubId); Member member = request.Membership == Core.Membership.Coach ? memberQuery.GetCoach(request.MemberId) as Member : memberQuery.GetPlayer(request.MemberId) as Member; var l1 = member.Squads.Intersect(clubSquads.Select(s => s.Guid)).ToList(); var l2 = clubSquads.Select(s => s.Guid).Intersect(member.Squads).ToList(); if (member == null) { return(Response.CreateResponse(new EntityNotFoundException("The specified member does not exist"))); } else if (clubSquads == null || !member.Squads.Intersect(clubSquads.Select(s => s.Guid)).Any()) { return(Response.CreateResponse(new IllegalOperationException("The specified member does not belong to any squad"))); } try { trackerRepository.Track(request); return(Response.CreateSuccessResponse()); } catch (Exception ex) { return(Response.CreateResponse(ex)); } }
public void Track(AssignmentTrainingMaterialViewRequest request) { string sql = @" INSERT INTO AssignmentTrainingMaterialViews (AssignmentId, TrainingMaterialId, PlayerId, ViewedOn) VALUES( (SELECT AssignmentId FROM Assignments WHERE Guid = @AssignmentGuid), (SELECT TrainingMaterialId FROM TrainingMaterials WHERE Guid = @TrainingMaterialGuid), (SELECT PlayerId FROM Players WHERE Guid = @PlayerGuid AND (Deleted IS NULL OR Deleted = 0)), GetDate() )"; var parameters = new DynamicParameters(); parameters.Add("@AssignmentGuid", request.AssignmentId.ToString()); parameters.Add("@TrainingMaterialGuid", request.TrainingMaterialId.ToString()); parameters.Add("@PlayerGuid", request.Membership == Core.Membership.Player ? request.MemberId.ToString() : null); using (var connection = connectionFactory.Connect()) { connection.Open(); connection.Execute(sql, parameters); } }