Skip to content

Commit a43b862

Browse files
committed
TD-5163 modifies the insert competency group method to take an optional framework id
1 parent 6cf28ac commit a43b862

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

DigitalLearningSolutions.Data/DataServices/FrameworkDataService.cs

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ bool zeroBased
123123
//INSERT DATA
124124
BrandedFramework CreateFramework(DetailFramework detailFramework, int adminId);
125125

126+
int InsertCompetencyGroup(string groupName, string? groupDescription, int adminId, int? frameworkId);
126127
int InsertCompetencyGroup(string groupName, string? groupDescription, int adminId, int? frameworkId);
127128

128129
int InsertFrameworkCompetencyGroup(int groupId, int frameworkID, int adminId);
@@ -476,6 +477,7 @@ public BrandedFramework CreateFramework(DetailFramework detailFramework, int adm
476477
return new BrandedFramework();
477478
}
478479

480+
var existingFrameworks = connection.QuerySingle<int>(
479481
var existingFrameworks = connection.QuerySingle<int>(
480482
@"SELECT COUNT(*) FROM Frameworks WHERE FrameworkName = @frameworkName",
481483
new { frameworkName }
@@ -549,6 +551,7 @@ int adminId
549551
return GetBrandedFrameworkByFrameworkId(frameworkId, adminId);
550552
}
551553

554+
public int InsertCompetencyGroup(string groupName, string? groupDescription, int adminId, int? frameworkId)
552555
public int InsertCompetencyGroup(string groupName, string? groupDescription, int adminId, int? frameworkId)
553556
{
554557
if ((groupName.Length == 0) | (adminId < 1))
@@ -581,7 +584,26 @@ OUTPUT INSERTED.Id
581584
VALUES (@groupName, @groupDescription, @adminId)",
582585
new { groupName, groupDescription, adminId }
583586
);
584-
587+
if (numberOfAffectedRows < 1)
588+
{
589+
logger.LogWarning(
590+
"Not inserting competency group as db insert failed. " +
591+
$"Group name: {groupName}, admin id: {adminId}"
592+
);
593+
return -1;
594+
}
595+
596+
existingId = connection.QuerySingle<int>(
597+
@"SELECT COALESCE
598+
((SELECT TOP (1) ID
599+
FROM CompetencyGroups
600+
WHERE (Name = @groupName) AND EXISTS
601+
(SELECT 1 AS Expr1
602+
FROM FrameworkCompetencyGroups
603+
WHERE (CompetencyGroupID = CompetencyGroups.ID) AND (FrameworkID = @frameworkId) OR
604+
(CompetencyGroupID = CompetencyGroups.ID) AND (@frameworkId IS NULL))), 0) AS CompetencyGroupID",
605+
new { groupName, groupDescription }
606+
);
585607
return existingId;
586608
}
587609

@@ -595,6 +617,7 @@ public int InsertFrameworkCompetencyGroup(int groupId, int frameworkId, int admi
595617
return -2;
596618
}
597619

620+
var existingId = connection.QuerySingle<int>(
598621
var existingId = connection.QuerySingle<int>(
599622
@"SELECT COALESCE ((SELECT ID FROM FrameworkCompetencyGroups WHERE CompetencyGroupID = @groupID AND FrameworkID = @frameworkID), 0) AS FrameworkCompetencyGroupID",
600623
new { groupId, frameworkId }
@@ -613,7 +636,19 @@ FROM [FrameworkCompetencyGroups]
613636
WHERE ([FrameworkID] = @frameworkId)), 0)+1, @frameworkId)",
614637
new { groupId, adminId, frameworkId }
615638
);
616-
639+
if (numberOfAffectedRows < 1)
640+
{
641+
logger.LogWarning(
642+
"Not inserting framework competency group as db insert failed. " +
643+
$"Group id: {groupId}, admin id: {adminId}, frameworkId: {frameworkId}"
644+
);
645+
return -1;
646+
}
647+
648+
existingId = connection.QuerySingle<int>(
649+
@"SELECT COALESCE ((SELECT ID FROM FrameworkCompetencyGroups WHERE CompetencyGroupID = @groupID AND FrameworkID = @frameworkID), 0) AS FrameworkCompetencyGroupID",
650+
new { groupId, frameworkId }
651+
);
617652
return existingId;
618653
}
619654

@@ -657,13 +692,15 @@ public int InsertFrameworkCompetency(
657692
var existingId = 0;
658693
if (frameworkCompetencyGroupID == null)
659694
{
695+
existingId = connection.QuerySingle<int>(
660696
existingId = connection.QuerySingle<int>(
661697
@"SELECT COALESCE ((SELECT ID FROM FrameworkCompetencies WHERE [CompetencyID] = @competencyId AND FrameworkCompetencyGroupID IS NULL), 0) AS FrameworkCompetencyID",
662698
new { competencyId, frameworkCompetencyGroupID }
663699
);
664700
}
665701
else
666702
{
703+
existingId = connection.QuerySingle<int>(
667704
existingId = connection.QuerySingle<int>(
668705
@"SELECT COALESCE ((SELECT ID FROM FrameworkCompetencies WHERE [CompetencyID] = @competencyId AND FrameworkCompetencyGroupID = @frameworkCompetencyGroupID), 0) AS FrameworkCompetencyID",
669706
new { competencyId, frameworkCompetencyGroupID }
@@ -693,13 +730,15 @@ FROM [FrameworkCompetencies]
693730

694731
if (frameworkCompetencyGroupID == null)
695732
{
733+
existingId = connection.QuerySingle<int>(
696734
existingId = connection.QuerySingle<int>(
697735
@"SELECT COALESCE ((SELECT ID FROM FrameworkCompetencies WHERE [CompetencyID] = @competencyId AND FrameworkCompetencyGroupID IS NULL), 0) AS FrameworkCompetencyID",
698736
new { competencyId, frameworkCompetencyGroupID }
699737
);
700738
}
701739
else
702740
{
741+
existingId = connection.QuerySingle<int>(
703742
existingId = connection.QuerySingle<int>(
704743
@"SELECT COALESCE ((SELECT ID FROM FrameworkCompetencies WHERE [CompetencyID] = @competencyId AND FrameworkCompetencyGroupID = @frameworkCompetencyGroupID), 0) AS FrameworkCompetencyID",
705744
new { competencyId, frameworkCompetencyGroupID }
@@ -751,6 +790,7 @@ public int AddCollaboratorToFramework(int frameworkId, string? userEmail, bool c
751790
return -3;
752791
}
753792

793+
var existingId = connection.QuerySingle<int>(
754794
var existingId = connection.QuerySingle<int>(
755795
@"SELECT COALESCE
756796
((SELECT ID
@@ -801,6 +841,7 @@ FROM FrameworkCollaborators
801841
);
802842
}
803843

844+
existingId = connection.QuerySingle<int>(
804845
existingId = connection.QuerySingle<int>(
805846
@"SELECT COALESCE
806847
((SELECT ID
@@ -989,6 +1030,7 @@ int adminId
9891030
return;
9901031
}
9911032

1033+
var usedElsewhere = connection.QuerySingle<int>(
9921034
var usedElsewhere = connection.QuerySingle<int>(
9931035
@"SELECT COUNT(*) FROM FrameworkCompetencyGroups
9941036
WHERE CompetencyGroupId = @competencyGroupId
@@ -1159,13 +1201,15 @@ public void DeleteFrameworkCompetencyGroup(int frameworkCompetencyGroupId, int c
11591201
}
11601202

11611203
//Check if used elsewhere and delete competency group if not:
1204+
var usedElsewhere = connection.QuerySingle<int>(
11621205
var usedElsewhere = connection.QuerySingle<int>(
11631206
@"SELECT COUNT(*) FROM FrameworkCompetencyGroups
11641207
WHERE CompetencyGroupId = @competencyGroupId",
11651208
new { competencyGroupId }
11661209
);
11671210
if (usedElsewhere == 0)
11681211
{
1212+
usedElsewhere = connection.QuerySingle<int>(
11691213
usedElsewhere = connection.QuerySingle<int>(
11701214
@"SELECT COUNT(*) FROM SelfAssessmentStructure
11711215
WHERE CompetencyGroupId = @competencyGroupId",
@@ -1197,6 +1241,7 @@ public void DeleteFrameworkCompetencyGroup(int frameworkCompetencyGroupId, int c
11971241

11981242
public void DeleteFrameworkCompetency(int frameworkCompetencyId, int adminId)
11991243
{
1244+
var competencyId = connection.QuerySingle<int>(
12001245
var competencyId = connection.QuerySingle<int>(
12011246
@"SELECT CompetencyID FROM FrameworkCompetencies WHERE ID = @frameworkCompetencyId",
12021247
new { frameworkCompetencyId }
@@ -1228,13 +1273,15 @@ public void DeleteFrameworkCompetency(int frameworkCompetencyId, int adminId)
12281273
}
12291274

12301275
//Check if used elsewhere and delete competency group if not:
1276+
var usedElsewhere = connection.QuerySingle<int>(
12311277
var usedElsewhere = connection.QuerySingle<int>(
12321278
@"SELECT COUNT(*) FROM FrameworkCompetencies
12331279
WHERE CompetencyID = @competencyId",
12341280
new { competencyId }
12351281
);
12361282
if (usedElsewhere == 0)
12371283
{
1284+
usedElsewhere = connection.QuerySingle<int>(
12381285
usedElsewhere = connection.QuerySingle<int>(
12391286
@"SELECT COUNT(*) FROM SelfAssessmentStructure
12401287
WHERE CompetencyID = @competencyId",

DigitalLearningSolutions.Web/Services/ImportCompetenciesFromFileService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ CompetencyTableRow competencyRow
176176
int ? frameworkCompetencyGroupId = null;
177177
if (competencyRow.CompetencyGroup != null)
178178
{
179-
newCompetencyGroupId = frameworkService.InsertCompetencyGroup(competencyRow.CompetencyGroup, competencyRow.GroupDescription, adminUserId);
179+
int newCompetencyGroupId = frameworkService.InsertCompetencyGroup(competencyRow.CompetencyGroup, competencyRow.GroupDescription, adminUserId, frameworkId);
180180
if (newCompetencyGroupId > 0)
181181
{
182182
frameworkCompetencyGroupId = frameworkService.InsertFrameworkCompetencyGroup(newCompetencyGroupId, frameworkId, adminUserId);

0 commit comments

Comments
 (0)