Skip to content

Commit 4adbdbd

Browse files
authored
Merge pull request #3048 from TechnologyEnhancedLearning/Develop/Features/TD-5158-AddToWhichCompetenciesPage
TD-5158 Implements add questions to which competencies page
2 parents ccb09a1 + 5430233 commit 4adbdbd

File tree

5 files changed

+170
-11
lines changed

5 files changed

+170
-11
lines changed

DigitalLearningSolutions.Web/Controllers/FrameworksController/ImportCompetencies.cs

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44
using DigitalLearningSolutions.Web.Models;
55
using DigitalLearningSolutions.Web.Services;
66
using DigitalLearningSolutions.Web.ViewModels.Frameworks.Import;
7-
using DocumentFormat.OpenXml.Office2010.ExcelAc;
87
using GDS.MultiPageFormData.Enums;
98
using Microsoft.AspNetCore.Mvc;
109
using Microsoft.AspNetCore.Mvc.Rendering;
11-
using Microsoft.DotNet.Scaffolding.Shared.Project;
1210
using System.Collections.Generic;
1311
using System.IO;
1412
using System.Linq;
@@ -85,7 +83,7 @@ public IActionResult ImportCompleted()
8583
var resultsModel = new ImportCompetenciesPreProcessViewModel(results, data) { IsNotBlank = data.IsNotBlank, TabName = data.TabName };
8684
data.CompetenciesToProcessCount = resultsModel.ToProcessCount;
8785
data.CompetenciesToAddCount = resultsModel.CompetenciesToAddCount;
88-
data.CompetenciesToUpdateCount = resultsModel.CompetenciesToUpdateCount;
86+
data.CompetenciesToUpdateCount = resultsModel.ToUpdateOrSkipCount;
8987
setBulkUploadData(data);
9088
return View("Developer/Import/ImportCompleted", resultsModel);
9189
}
@@ -153,8 +151,45 @@ public IActionResult AddAssessmentQuestions(AddAssessmentQuestionsFormData model
153151
{
154152
data.CustomAssessmentQuestionID = null;
155153
}
154+
if (data.CompetenciesToUpdateCount > 0)
155+
{
156+
data.AddAssessmentQuestionsOption = 2;
157+
setBulkUploadData(data);
158+
return RedirectToAction("AddQuestionsToWhichCompetencies", "Frameworks", new { frameworkId = data.FrameworkId, tabname = data.TabName });
159+
}
160+
else
161+
{
162+
data.AddAssessmentQuestionsOption = 1;
163+
setBulkUploadData(data);
164+
return RedirectToAction("Summary", "Frameworks", new { frameworkId = data.FrameworkId, tabname = data.TabName });
165+
}
166+
}
167+
[Route("/Framework/{frameworkId}/{tabname}/Import/AssessmentQuestions/Competencies")]
168+
public IActionResult AddQuestionsToWhichCompetencies()
169+
{
170+
var data = GetBulkUploadData();
171+
var model = new AddQuestionsToWhichCompetenciesViewModel
172+
(
173+
data.FrameworkId,
174+
data.FrameworkName,
175+
data.FrameworkVocubulary,
176+
data.DefaultQuestionIDs,
177+
data.CustomAssessmentQuestionID,
178+
data.AddAssessmentQuestionsOption,
179+
data.CompetenciesToProcessCount,
180+
data.CompetenciesToAddCount,
181+
data.CompetenciesToUpdateCount
182+
);
183+
return View("Developer/Import/AddQuestionsToWhichCompetencies", model);
184+
}
185+
[HttpPost]
186+
[Route("/Framework/{frameworkId}/{tabname}/Import/AssessmentQuestions/Competencies")]
187+
public IActionResult AddQuestionsToWhichCompetencies(int AddAssessmentQuestionsOption)
188+
{
189+
var data = GetBulkUploadData();
190+
data.AddAssessmentQuestionsOption = AddAssessmentQuestionsOption;
156191
setBulkUploadData(data);
157-
return RedirectToAction("AddQuestionsToWhichCompetencies");
192+
return RedirectToAction("Summary", "Frameworks", new { frameworkId = data.FrameworkId, tabname = data.TabName });
158193
}
159194
private void setupBulkUploadData(int frameworkId, int adminUserID, string competenciessFileName, string tabName, bool isNotBlank)
160195
{

DigitalLearningSolutions.Web/Models/BulkCompetenciesData.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ public BulkCompetenciesData(DetailFramework framework, int adminUserId, string c
2727
public int AdminUserId { get; set; }
2828
public bool IsNotBlank { get; set; }
2929
public string CompetenciesFileName { get; set; }
30-
public List<int> DefaultQuestionIDs { get; set; } = [];
31-
public int? CustomAssessmentQuestionID { get; set; }
3230
public bool AddDefaultAssessmentQuestions { get; set; } = true;
3331
public bool AddCustomAssessmentQuestion { get; set; } = false;
32+
public List<int> DefaultQuestionIDs { get; set; } = [];
33+
public int? CustomAssessmentQuestionID { get; set; }
34+
public int AddAssessmentQuestionsOption { get; set; } //1 = only added, 2 = added and updated, 3 = all uploaded
3435
public int CompetenciesToProcessCount { get; set; }
3536
public int CompetenciesToAddCount { get; set; }
3637
public int CompetenciesToUpdateCount { get; set; }
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using DigitalLearningSolutions.Web.Helpers;
2+
using System.Collections.Generic;
3+
using System.Runtime.Versioning;
4+
5+
namespace DigitalLearningSolutions.Web.ViewModels.Frameworks.Import
6+
{
7+
public class AddQuestionsToWhichCompetenciesViewModel
8+
{
9+
public AddQuestionsToWhichCompetenciesViewModel
10+
(
11+
int frameworkId,
12+
string frameworkName,
13+
string frameworkVocabulary,
14+
List<int> defaultQuestions,
15+
int? customQuestionId,
16+
int addAssessmentQuestionsOption,
17+
int competenciesToProcessCount,
18+
int competenciesToAddCount,
19+
int competenciesToUpdateCount)
20+
{
21+
FrameworkID = frameworkId;
22+
FrameworkName = frameworkName;
23+
FrameworkVocabularySingular = FrameworkVocabularyHelper.VocabularySingular(frameworkVocabulary);
24+
FrameworkVocabularyPlural = FrameworkVocabularyHelper.VocabularyPlural(frameworkVocabulary);
25+
TotalQuestions = defaultQuestions.Count + (customQuestionId != null ? 1 : 0);
26+
AddAssessmentQuestionsOption = addAssessmentQuestionsOption;
27+
CompetenciesToProcessCount = competenciesToProcessCount;
28+
CompetenciesToAddCount = competenciesToAddCount;
29+
CompetenciesToUpdateCount = competenciesToUpdateCount;
30+
}
31+
public int FrameworkID { get; set; }
32+
public string FrameworkName { get; set; }
33+
public string FrameworkVocabularySingular { get; set; }
34+
public string FrameworkVocabularyPlural { get; set; }
35+
public int TotalQuestions { get; set; }
36+
public int AddAssessmentQuestionsOption { get; set; } = 1; //1 = only added, 2 = added and updated, 3 = all uploaded
37+
public int CompetenciesToProcessCount { get; set; }
38+
public int CompetenciesToAddCount { get; set; }
39+
public int CompetenciesToUpdateCount { get; set; }
40+
}
41+
}

DigitalLearningSolutions.Web/ViewModels/Frameworks/Import/ImportCompetenciesPreProcessViewModel.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ public ImportCompetenciesPreProcessViewModel(ImportCompetenciesResult bulkCompet
1818
ToProcessCount = bulkCompetenciesResult.ProcessedCount;
1919
CompetenciesToAddCount = bulkCompetenciesResult.CompetencyAddedCount;
2020
ToUpdateOrSkipCount = bulkCompetenciesResult.CompetencyUpdatedCount;
21-
CompetencyGroupsToAddCount = bulkCompetenciesResult.GroupAddedCount;
22-
CompetencyGroupsToUpdateCount = bulkCompetenciesResult.GroupUpdatedCount;
2321
Errors = bulkCompetenciesResult.Errors.Select(x => (x.RowNumber, MapReasonToErrorMessage(x.Reason, FrameworkVocabularyHelper.VocabularySingular(bulkCompetenciesData.FrameworkVocubulary))));
2422
}
2523
public string? FrameworkName { get; set; }
@@ -30,9 +28,6 @@ public ImportCompetenciesPreProcessViewModel(ImportCompetenciesResult bulkCompet
3028
public int ErrorCount => Errors.Count();
3129
public int ToProcessCount { get; set; }
3230
public int CompetenciesToAddCount { get; set; }
33-
public int CompetenciesToUpdateCount { get; set; }
34-
public int CompetencyGroupsToAddCount { get; set; }
35-
public int CompetencyGroupsToUpdateCount { get; set; }
3631
public int ToUpdateOrSkipCount { get; set; }
3732
public string? ImportFile { get; set; }
3833
public bool IsNotBlank { get; set; }
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
@using DigitalLearningSolutions.Web.Extensions
2+
@using DigitalLearningSolutions.Web.ViewModels.Frameworks.Import
3+
4+
@model AddQuestionsToWhichCompetenciesViewModel
5+
6+
@{
7+
ViewData["Application"] = "Framework Service";
8+
ViewData["HeaderPathName"] = "Framework Service";
9+
var errorHasOccurred = !ViewData.ModelState.IsValid;
10+
ViewData["Title"] = errorHasOccurred ? "Error: Add Assessment Questions" : "Add Assessment Questions";
11+
var cancelLinkData = Html.GetRouteValues();
12+
}
13+
<link rel="stylesheet" href="@Url.Content("~/css/frameworks/frameworksShared.css")" asp-append-version="true">
14+
@section NavMenuItems {
15+
<partial name="Shared/_NavMenuItems" />
16+
}
17+
@section NavBreadcrumbs {
18+
<nav class="nhsuk-breadcrumb" aria-label="Breadcrumb">
19+
<div class="nhsuk-width-container">
20+
<ol class="nhsuk-breadcrumb__list">
21+
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewFrameworks" asp-route-tabname="Mine">Frameworks</a></li>
22+
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewFramework" asp-route-frameworkId="@ViewContext.RouteData.Values["frameworkId"]" asp-route-tabname="Structure">Framework Structure</a></li>
23+
<li class="nhsuk-breadcrumb__item">Bulk upload</li>
24+
</ol>
25+
<p class="nhsuk-breadcrumb__back"><a class="nhsuk-breadcrumb__backlink" asp-action="ViewFramework" asp-route-frameworkId="@ViewContext.RouteData.Values["frameworkId"]" asp-route-tabname="Structure">Back to framework structure</a></p>
26+
</div>
27+
</nav>
28+
}
29+
<div class="nhsuk-grid-row">
30+
<div class="nhsuk-grid-column-full">
31+
<div class="nhsuk-u-reading-width">
32+
<form class="nhsuk-u-margin-bottom-3" method="post" asp-action="SubmitAddWhoToGroup" enctype="multipart/form-data">
33+
<fieldset class="nhsuk-fieldset">
34+
<legend class="nhsuk-fieldset__legend nhsuk-fieldset__legend--l">
35+
<h1 class="nhsuk-fieldset__heading">
36+
Which @Model.FrameworkVocabularyPlural.ToLower() should the questions be added to?
37+
</h1>
38+
</legend>
39+
<div class="nhsuk-hint nhsuk-u-margin-bottom-2">
40+
Choose which @Model.FrameworkVocabularyPlural.ToLower() you want to add the @Model.TotalQuestions assessment questions to
41+
</div>
42+
<div class="nhsuk-hint">
43+
Select one option
44+
</div>
45+
<div class="nhsuk-form-group">
46+
<div class="nhsuk-radios">
47+
@if (Model.CompetenciesToAddCount > 0)
48+
{
49+
<div class="nhsuk-radios__item">
50+
<input class="nhsuk-radios__input" id="option-1" asp-for="@Model.AddAssessmentQuestionsOption" type="radio" value="1" aria-describedby="option-1-hint">
51+
<label class="nhsuk-label nhsuk-radios__label" for="option-1">
52+
Only add questions to new @Model.FrameworkVocabularyPlural.ToLower()
53+
</label>
54+
<div class="nhsuk-hint nhsuk-radios__hint" id="option-1-hint">
55+
@Model.TotalQuestions assessment questions will be added to the @Model.CompetenciesToAddCount new @Model.FrameworkVocabularyPlural.ToLower()
56+
</div>
57+
</div>
58+
}
59+
<div class="nhsuk-radios__item">
60+
<input class="nhsuk-radios__input" id="option-2" asp-for="@Model.AddAssessmentQuestionsOption" type="radio" value="2" aria-describedby="option-2-hint">
61+
<label class="nhsuk-label nhsuk-radios__label" for="option-2">
62+
Only add questions to @(Model.CompetenciesToAddCount > 0 ? Model.CompetenciesToAddCount + " new and " : "") modified @Model.FrameworkVocabularyPlural.ToLower()
63+
</label>
64+
<div class="nhsuk-hint nhsuk-radios__hint" id="option-2-hint">
65+
@(Model.CompetenciesToAddCount > 0 ? Model.CompetenciesToAddCount + " new @Model.FrameworkVocabularyPlural.ToLower() and only those of the " : "Only those of the ") @Model.CompetenciesToUpdateCount existing @Model.FrameworkVocabularyPlural.ToLower() that have been modified in the sheet will have the assessment questions added
66+
</div>
67+
</div>
68+
<div class="nhsuk-radios__item">
69+
<input class="nhsuk-radios__input" id="option-3" asp-for="@Model.AddAssessmentQuestionsOption" type="radio" value="3" aria-describedby="option-3-hint">
70+
<label class="nhsuk-label nhsuk-radios__label" for="option-3">
71+
Add questions to all @Model.FrameworkVocabularyPlural.ToLower() in my uploaded sheet
72+
</label>
73+
<div class="nhsuk-hint nhsuk-radios__hint" id="option-3-hint">
74+
All @(Model.CompetenciesToProcessCount) @Model.FrameworkVocabularyPlural.ToLower() in the sheet that are will have the assessment questions added to them
75+
</div>
76+
</div>
77+
</div>
78+
</div>
79+
80+
</fieldset>
81+
<a asp-controller="Frameworks" asp-action="AddAssessmentQuestions" asp-all-route-data="@cancelLinkData" role="button" class="nhsuk-button nhsuk-button--secondary">Back</a>
82+
<button class="nhsuk-button" type="submit">Next</button>
83+
</form>
84+
<vc:back-link asp-controller="Frameworks" asp-action="Index" asp-all-route-data="@null" link-text="Cancel" />
85+
</div>
86+
</div>
87+
</div>

0 commit comments

Comments
 (0)