public void UpdatePlayerReportCard(UpdateReportCardRequest request) { ThrowIf.ArgumentIsNull(request); var command = GetReportCardUpdateCommand(request); using (var connection = connectionFactory.Connect()) { connection.Open(); using (var transaction = connection.BeginTransaction()) { try { connection.Execute(command.Sql, command.Parameters, transaction); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } } } }
public Response UpdatePlayerReportCard(UpdateReportCardRequest request) { var evaluationResult = updateReportCardRequestValidator.Validate(request); if (!evaluationResult.IsValid) { return(Response.CreateResponse(evaluationResult.Messages)); } var response = CheckReportCardRequestIntegrity(request.ClubId, request.SquadId, request.TermId, request.PlayerId); if (response.Errors.Any()) { return(response); } var reportCard = evaluationQuery.GetPlayerReportCard(request.ClubId, request.ReportCardId); if (reportCard == null || !reportCard.ReportCardExists) { return(Response.CreateResponse(new EntityNotFoundException("The specified report card does not exist"))); } else if (reportCard.PlayerId != request.PlayerId) { return(Response.CreateResponse(new IllegalOperationException("The specified report card does not belong to this player"))); } try { evaluationRepository.UpdatePlayerReportCard(request); return(Response.CreateSuccessResponse()); }catch (Exception ex) { return(Response.CreateResponse(ex)); } }
private (string Sql, DynamicParameters Parameters) GetReportCardUpdateCommand(UpdateReportCardRequest request) { string sql = null; DynamicParameters parameters = new DynamicParameters(); parameters.Add("@PlayerReportCardId", request.ReportCardId.ToString()); if (request.SkillId.HasValue) { sql = $@"DELETE PlayerReportCardGrades WHERE PlayerReportCardId = (SELECT PlayerReportCardId FROM PlayerReportCards WHERE Guid = @PlayerReportCardId) AND ReportCardSkillId = (SELECT ReportCardSkillId FROM ReportCardSkills WHERE Guid = @ReportCardSkillId); {(request.ReportCardGrade.HasValue ? @"INSERT INTO PlayerReportCardGrades (PlayerReportCardId, ReportCardSkillId, ReportCardGradeId) VALUES( (SELECT PlayerReportCardId FROM PlayerReportCards WHERE Guid = @PlayerReportCardId), (SELECT ReportCardSkillId FROM ReportCardSkills WHERE Guid = @ReportCardSkillId), @ReportCardGradeId)" : "") };" ; parameters.Add("@ReportCardSkillId", request.SkillId.ToString()); parameters.Add("@ReportCardGradeId", (request.ReportCardGrade.HasValue ? (int?)request.ReportCardGrade : null)); } else if (request.Facet != null && !request.Facet.Key.IsEmpty()) { sql = $@"DELETE PlayerReportCardFacets WHERE PlayerReportCardId = (SELECT PlayerReportCardId FROM PlayerReportCards WHERE Guid = @PlayerReportCardId) AND FacetKey = @FacetKey; {(!request.Facet.Value.IsEmpty() ? @"INSERT INTO PlayerReportCardFacets (PlayerReportCardId, FacetKey, FacetValue) VALUES( (SELECT PlayerReportCardId FROM PlayerReportCards WHERE Guid = @PlayerReportCardId), @FacetKey, @FacetValue)" : "") };" ; parameters.Add("@FacetKey", request.Facet.Key); parameters.Add("@FacetValue", request.Facet?.Value); } return(sql, parameters); }