Skip to content

Commit 924d943

Browse files
TD-5563 wrapping both UPDATE statements in a transaction
1 parent f62bde6 commit 924d943

File tree

1 file changed

+35
-16
lines changed

1 file changed

+35
-16
lines changed

DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace DigitalLearningSolutions.Data.DataServices
22
{
33
using Dapper;
4+
using DigitalLearningSolutions.Data.Extensions;
45
using DigitalLearningSolutions.Data.Models.CompetencyAssessments;
56
using Microsoft.Extensions.Logging;
67
using System;
@@ -858,27 +859,45 @@ FROM FrameworkCompetencies AS FC
858859

859860
return true;
860861
}
862+
861863
public bool UpdatePrimaryFrameworkCompetencies(int assessmentId, int frameworkId)
862864
{
863-
var numberOfAffectedRows = connection.Execute(
864-
@"UPDATE SelfAssessmentFrameworks SET IsPrimary = 0 WHERE (SelfAssessmentId = @assessmentId) AND (RemovedDate IS NULL)",
865-
new { assessmentId, frameworkId }
866-
);
867-
var numberOfAffectedRow = connection.Execute(
868-
@"UPDATE SelfAssessmentFrameworks SET IsPrimary = 1 WHERE (SelfAssessmentId = @assessmentId) AND (FrameworkId = @frameworkId ) AND (RemovedDate IS NULL)",
869-
new { assessmentId, frameworkId }
870-
);
871-
if (numberOfAffectedRow < 1)
865+
connection.EnsureOpen();
866+
using (var transaction = connection.BeginTransaction())
872867
{
873-
logger.LogWarning(
874-
"Not updating SelfAssessmentFrameworks as db update failed. " +
875-
$"assessmentId: {assessmentId}, frameworkId: {frameworkId}"
876-
);
877-
return false;
868+
var numberOfAffectedRows = connection.Execute(
869+
@"UPDATE SelfAssessmentFrameworks
870+
SET IsPrimary = 0
871+
WHERE (SelfAssessmentId = @assessmentId)
872+
AND (RemovedDate IS NULL)",
873+
new { assessmentId },
874+
transaction: transaction
875+
);
876+
877+
var numberOfAffectedRow = connection.Execute(
878+
@"UPDATE SelfAssessmentFrameworks
879+
SET IsPrimary = 1
880+
WHERE (SelfAssessmentId = @assessmentId)
881+
AND (FrameworkId = @frameworkId)
882+
AND (RemovedDate IS NULL)",
883+
new { assessmentId, frameworkId },
884+
transaction: transaction
885+
);
886+
887+
if ((numberOfAffectedRow < 1) || (numberOfAffectedRows < 1))
888+
{
889+
logger.LogWarning(
890+
"Not updating SelfAssessmentFrameworks as db update failed. " +
891+
$"assessmentId: {assessmentId}, frameworkId: {frameworkId}"
892+
);
893+
transaction.Rollback();
894+
return false;
895+
}
896+
897+
transaction.Commit();
898+
return true;
878899
}
879-
return true;
880900
}
881-
882901
public int? GetSelfAssessmentStructure(int competencyAssessmentId)
883902
{
884903
return connection.QueryFirstOrDefault<int>(

0 commit comments

Comments
 (0)