Skip to content

Commit 43e4d5d

Browse files
authored
Bugfix/blueprint push2 (#60)
Change Official and Team submissions to be created when the move changes, instead of creating them all at once.
1 parent 89e8c41 commit 43e4d5d

File tree

3 files changed

+51
-48
lines changed

3 files changed

+51
-48
lines changed

Cite.Api/Cite.Api.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22
<PropertyGroup>
3-
<Version>1.8.2</Version>
3+
<Version>1.8.3</Version>
44
<TargetFramework>net8.0</TargetFramework>
55
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
66
<NoWarn>CS1591</NoWarn>

Cite.Api/Services/EvaluationService.cs

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,6 @@ public async Task<Evaluation> UploadJsonAsync(FileForm form, CancellationToken c
403403
}
404404
}
405405
// okay to update this evaluation
406-
await _context.Database.BeginTransactionAsync(ct);
407406
evaluation.CreatedBy = evaluationToUpdate.CreatedBy;
408407
evaluation.DateCreated = evaluationToUpdate.DateCreated;
409408
evaluation.ModifiedBy = _user.GetId();
@@ -418,7 +417,6 @@ public async Task<Evaluation> UploadJsonAsync(FileForm form, CancellationToken c
418417
await _context.SaveChangesAsync(ct);
419418
_logger.LogDebug("Verifying required submissions exist");
420419
await VerifyOfficialAndTeamSubmissions(evaluationToUpdate, ct);
421-
await _context.Database.CommitTransactionAsync(ct);
422420
evaluation = await GetAsync(evaluationToUpdate.Id, ct);
423421

424422
return evaluation;
@@ -507,41 +505,40 @@ private async Task VerifyOfficialAndTeamSubmissions(EvaluationEntity evaluation,
507505
// get a list of moves for the evaluation
508506
var moves = await _moveService.GetByEvaluationAsync(evaluation.Id, ct);
509507
// verify submissions exist for all moves
510-
foreach (var move in moves)
508+
// make sure all official and team submissions exist
509+
var moveNumber = evaluation.CurrentMoveNumber;
510+
if (!submissionList.Any(s => s.UserId == null && s.TeamId == null && s.MoveNumber == moveNumber))
511511
{
512-
// make sure all official and team submissions exist
513-
if (!submissionList.Any(s => s.UserId == null && s.TeamId == null && s.MoveNumber == move.MoveNumber))
512+
var submission = new Submission()
513+
{
514+
Id = Guid.NewGuid(),
515+
EvaluationId = evaluation.Id,
516+
TeamId = null,
517+
UserId = null,
518+
ScoringModelId = evaluation.ScoringModelId,
519+
MoveNumber = moveNumber,
520+
DateCreated = DateTime.UtcNow
521+
};
522+
_logger.LogDebug("Make Official submission for move " + moveNumber.ToString());
523+
await _submissionService.CreateNewSubmission(_context, submission, ct);
524+
}
525+
// team submissions
526+
foreach (var team in evaluationTeamList)
527+
{
528+
if (!submissionList.Any(s => s.UserId == null && s.TeamId == team.Id && s.MoveNumber == moveNumber))
514529
{
515530
var submission = new Submission() {
516531
Id = Guid.NewGuid(),
517532
EvaluationId = evaluation.Id,
518-
TeamId = null,
533+
TeamId = team.Id,
519534
UserId = null,
520535
ScoringModelId = evaluation.ScoringModelId,
521-
MoveNumber = move.MoveNumber,
536+
MoveNumber = moveNumber,
522537
DateCreated = DateTime.UtcNow
523538
};
524-
_logger.LogInformation("Make Official submission for move " + move.MoveNumber.ToString());
539+
_logger.LogDebug("Make Team submission for move " + moveNumber + " team=" + submission.TeamId.ToString());
525540
await _submissionService.CreateNewSubmission(_context, submission, ct);
526541
}
527-
// team submissions
528-
foreach (var team in evaluationTeamList)
529-
{
530-
if (!submissionList.Any(s => s.UserId == null && s.TeamId == team.Id && s.MoveNumber == move.MoveNumber))
531-
{
532-
var submission = new Submission() {
533-
Id = Guid.NewGuid(),
534-
EvaluationId = evaluation.Id,
535-
TeamId = team.Id,
536-
UserId = null,
537-
ScoringModelId = evaluation.ScoringModelId,
538-
MoveNumber = move.MoveNumber,
539-
DateCreated = DateTime.UtcNow
540-
};
541-
_logger.LogInformation("Make Team submission for move " + move.MoveNumber + " team=" + submission.TeamId.ToString());
542-
await _submissionService.CreateNewSubmission(_context, submission, ct);
543-
}
544-
}
545542
}
546543

547544
}

Cite.Api/Services/SubmissionService.cs

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,7 @@ private async Task<SubmissionEntity> createRequestedSubmissionAndOthers(ViewMode
643643
(s.UserId == submission.UserId)))
644644
{
645645
submission.MoveNumber = move.MoveNumber;
646+
_logger.LogDebug("Creating new submission from createRequestedSubmissionAndOthers");
646647
await CreateNewSubmission(_context, submission, ct);
647648
}
648649
}
@@ -667,23 +668,24 @@ public async Task<SubmissionEntity> CreateNewSubmission(CiteContext citeContext,
667668
submissionEntity.Status = Data.Enumerations.ItemStatus.Active;
668669
submissionEntity.Evaluation = null;
669670
submissionEntity.ScoringModel = null;
670-
citeContext.Submissions.Add(submissionEntity);
671671
// catch race condition if we try to add the same submission twice
672672
try
673673
{
674-
await citeContext.SaveChangesAsync(ct);
675674
var scoringModelEntity = await citeContext.ScoringModels
676675
.Include(sm => sm.ScoringCategories)
677676
.ThenInclude(sc => sc.ScoringOptions)
678677
.FirstAsync(sm => sm.Id == submissionEntity.ScoringModelId);
679-
await CreateSubmissionCategories(submissionEntity, scoringModelEntity, ct);
680-
_logger.LogInformation("Created submission for move " + submission.MoveNumber.ToString());
678+
CreateSubmissionCategories(submissionEntity, scoringModelEntity, ct);
679+
citeContext.Submissions.Add(submissionEntity);
680+
await citeContext.SaveChangesAsync(ct);
681+
_logger.LogDebug("Created submission for move " + submission.MoveNumber.ToString());
681682

682683
return submissionEntity;
683684
}
684-
catch (System.Exception)
685+
catch (System.Exception ex)
685686
{
686-
_logger.LogWarning("!!! Tried to create a duplicate submission");
687+
var message = "!!! Error creating submission. " + ex.Message + " ===> " + ex.InnerException?.Message;
688+
_logger.LogWarning(message);
687689
return null;
688690
}
689691
}
@@ -914,33 +916,37 @@ public async Task<bool> DeleteAsync(Guid id, CancellationToken ct)
914916
return await GetAsync(submissionId, ct);
915917
}
916918

917-
private async Task<IEnumerable<SubmissionCategoryEntity>> CreateSubmissionCategories(
919+
private IEnumerable<SubmissionCategoryEntity> CreateSubmissionCategories(
918920
SubmissionEntity submissionEntity, ScoringModelEntity scoringModelEntity, CancellationToken ct)
919921
{
920922
foreach (var scoringCategoryEntity in scoringModelEntity.ScoringCategories)
921923
{
922-
var submissionCategoryEntity = new SubmissionCategoryEntity();
923-
submissionCategoryEntity.ScoringCategoryId = scoringCategoryEntity.Id;
924-
submissionCategoryEntity.SubmissionId = submissionEntity.Id;
925-
submissionCategoryEntity.Score = 0;
926-
_context.SubmissionCategories.Add(submissionCategoryEntity);
927-
await _context.SaveChangesAsync(ct);
928-
await CreateSubmissionOptions(submissionCategoryEntity, scoringCategoryEntity, ct);
924+
var submissionCategoryEntity = new SubmissionCategoryEntity()
925+
{
926+
Id = Guid.NewGuid(),
927+
ScoringCategoryId = scoringCategoryEntity.Id,
928+
SubmissionId = submissionEntity.Id,
929+
Score = 0,
930+
};
931+
CreateSubmissionOptions(submissionCategoryEntity, scoringCategoryEntity, ct);
932+
submissionEntity.SubmissionCategories.Add(submissionCategoryEntity);
929933
}
930934
return submissionEntity.SubmissionCategories;
931935
}
932936

933-
private async Task<IEnumerable<SubmissionOptionEntity>> CreateSubmissionOptions(
937+
private IEnumerable<SubmissionOptionEntity> CreateSubmissionOptions(
934938
SubmissionCategoryEntity submissionCategoryEntity, ScoringCategoryEntity scoringCategoryEntity, CancellationToken ct)
935939
{
936940
foreach (var scoringOptionEntity in scoringCategoryEntity.ScoringOptions)
937941
{
938-
var submissionOptionEntity = new SubmissionOptionEntity();
939-
submissionOptionEntity.ScoringOptionId = scoringOptionEntity.Id;
940-
submissionOptionEntity.SubmissionCategoryId = submissionCategoryEntity.Id;
941-
submissionOptionEntity.IsSelected = false;
942-
_context.SubmissionOptions.Add(submissionOptionEntity);
943-
await _context.SaveChangesAsync(ct);
942+
var submissionOptionEntity = new SubmissionOptionEntity()
943+
{
944+
Id = Guid.NewGuid(),
945+
ScoringOptionId = scoringOptionEntity.Id,
946+
SubmissionCategoryId = submissionCategoryEntity.Id,
947+
IsSelected = false
948+
};
949+
submissionCategoryEntity.SubmissionOptions.Add(submissionOptionEntity);
944950
}
945951
return submissionCategoryEntity.SubmissionOptions;
946952
}

0 commit comments

Comments
 (0)