|  | 
| 1 | 1 | namespace DigitalLearningSolutions.Data.DataServices | 
| 2 | 2 | { | 
| 3 | 3 |     using Dapper; | 
|  | 4 | +    using DigitalLearningSolutions.Data.Extensions; | 
| 4 | 5 |     using DigitalLearningSolutions.Data.Models.CompetencyAssessments; | 
| 5 | 6 |     using Microsoft.Extensions.Logging; | 
| 6 | 7 |     using System; | 
| @@ -858,27 +859,45 @@ FROM FrameworkCompetencies AS FC | 
| 858 | 859 | 
 | 
| 859 | 860 |             return true; | 
| 860 | 861 |         } | 
|  | 862 | +        | 
| 861 | 863 |         public bool UpdatePrimaryFrameworkCompetencies(int assessmentId, int frameworkId) | 
| 862 | 864 |         { | 
| 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()) | 
| 872 | 867 |             { | 
| 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; | 
| 878 | 899 |             } | 
| 879 |  | -            return true; | 
| 880 | 900 |         } | 
| 881 |  | - | 
| 882 | 901 |         public int? GetSelfAssessmentStructure(int competencyAssessmentId) | 
| 883 | 902 |         { | 
| 884 | 903 |             return connection.QueryFirstOrDefault<int>( | 
|  | 
0 commit comments