Skip to content

Commit 5e32b13

Browse files
TD-5562 introduce the multipage form service
1 parent 47d551e commit 5e32b13

File tree

4 files changed

+54
-33
lines changed

4 files changed

+54
-33
lines changed

DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs

Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using DigitalLearningSolutions.Web.Helpers;
99
using DigitalLearningSolutions.Web.Models.Enums;
1010
using DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments;
11+
using GDS.MultiPageFormData.Enums;
1112
using Microsoft.AspNetCore.Mvc;
1213
using Microsoft.AspNetCore.Mvc.Rendering;
1314
using Microsoft.Extensions.Logging;
@@ -82,7 +83,6 @@ public IActionResult ViewCompetencyAssessments(string tabname, string? searchStr
8283
isWorkforceManager
8384
);
8485
}
85-
8686
var currentTab = tabname == "All" ? CompetencyAssessmentsTab.AllCompetencyAssessments : CompetencyAssessmentsTab.MyCompetencyAssessments;
8787
CompetencyAssessmentsViewModel? model = new CompetencyAssessmentsViewModel(
8888
isWorkforceManager,
@@ -103,6 +103,11 @@ public IActionResult CompetencyAssessmentName(string actionName, int competencyA
103103
{
104104
var adminId = GetAdminID();
105105
var competencyAssessmentBase = new CompetencyAssessmentBase();
106+
if ((frameworkId.HasValue && frameworkId.Value != 0 && actionName == "New"))
107+
{
108+
var data = new CompetencyAssessmentFeaturesViewModel();
109+
SetcompetencyAssessmentFeaturesData(data);
110+
}
106111
if (competencyAssessmentId > 0)
107112
{
108113
competencyAssessmentBase = competencyAssessmentService.GetCompetencyAssessmentBaseById(competencyAssessmentId, adminId);
@@ -168,8 +173,7 @@ public IActionResult SaveProfileName(CompetencyAssessmentBase competencyAssessme
168173
}
169174
if (frameworkId.HasValue && frameworkId.Value != 0
170175
&& competencyAssessmentId != 0
171-
&& actionName == "Edit") return RedirectToAction("CompetencyAssessmentFeatures", new { competencyAssessmentId, frameworkId });
172-
176+
&& actionName == "Edit") return RedirectToAction("CompetencyAssessmentFeatures", new { competencyAssessmentId, frameworkId });
173177
}
174178
return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId, frameworkId });
175179
}
@@ -653,18 +657,11 @@ public IActionResult CompetencyAssessmentFeatures(int competencyAssessmentId, in
653657
{
654658

655659
var adminId = GetAdminID();
656-
if (competencyAssessmentId == 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
657-
var competencyAssessment = competencyAssessmentService.GetCompetencyAssessmentFeaturesTaskStatus(competencyAssessmentId);
658-
if (competencyAssessment != null)
659-
{
660-
var model = new CompetencyAssessmentFeaturesViewModel(competencyAssessment, frameworkId);
661-
return View(model);
662-
}
663-
660+
var data = GetcompetencyAssessmentFeaturesData();
661+
if (!string.IsNullOrEmpty(data.CompetencyAssessmentName)) return View(data);
664662
var competencyAssessmentBase = competencyAssessmentService.GetCompetencyAssessmentBaseById(competencyAssessmentId, adminId);
665663
if (competencyAssessmentBase == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
666664
if (competencyAssessmentBase.UserRole < 2) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
667-
668665
var baseModel = new CompetencyAssessmentFeaturesViewModel(competencyAssessmentBase.ID,
669666
competencyAssessmentBase.CompetencyAssessmentName,
670667
competencyAssessmentBase.UserRole,
@@ -676,38 +673,58 @@ public IActionResult CompetencyAssessmentFeatures(int competencyAssessmentId, in
676673
public IActionResult CompetencyAssessmentFeatures(CompetencyAssessmentFeaturesViewModel featuresViewModel)
677674
{
678675
if (featuresViewModel == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
679-
var competency = competencyAssessmentService.UpdateCompetencyAssessmentFeaturesTaskStatus(featuresViewModel.ID,
680-
featuresViewModel.DescriptionStatus,
681-
featuresViewModel.ProviderandCategoryStatus,
682-
featuresViewModel.VocabularyStatus,
683-
featuresViewModel.WorkingGroupStatus,
684-
featuresViewModel.AllframeworkCompetenciesStatus);
685-
if (!competency) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
676+
SetcompetencyAssessmentFeaturesData(featuresViewModel);
686677
return RedirectToAction("CompetencyAssessmentSummary", new { competencyAssessmentId = featuresViewModel.ID,featuresViewModel.FrameworkId });
687-
688678
}
689679

690680
[Route("/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Summary")]
691681
public IActionResult CompetencyAssessmentSummary(int competencyAssessmentId, int? frameworkId = null)
692682
{
693683
if (competencyAssessmentService.GetSelfAssessmentStructure(competencyAssessmentId) != 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 410 });
694684
if (competencyAssessmentId == 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
695-
var competencyAssessment = competencyAssessmentService.GetCompetencyAssessmentFeaturesTaskStatus(competencyAssessmentId);
696-
if (competencyAssessment == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
697-
var model = new CompetencyAssessmentFeaturesViewModel(competencyAssessment, frameworkId);
698-
return View(model);
685+
var data = GetcompetencyAssessmentFeaturesData();
686+
if (data == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
687+
SetcompetencyAssessmentFeaturesData(data);
688+
return View(data);
699689
}
700690
[HttpPost]
701691
[Route("/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Summary")]
702692
public IActionResult CompetencyAssessmentSummary(CompetencyAssessmentFeaturesViewModel competency)
703693
{
704-
if (competencyAssessmentService.GetSelfAssessmentStructure(competency.ID) != 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 410 });
705-
if (competency.ID == 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
706-
competencyAssessmentService.UpdateSelfAssessmentFromFramework(competency.ID , competency.FrameworkId );
707-
var insertSelfAssessment = competencyAssessmentService.InsertSelfAssessmentStructure(competency.ID, competency.FrameworkId);
694+
var data = GetcompetencyAssessmentFeaturesData();
695+
if (data.ID == 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
696+
if (competencyAssessmentService.GetSelfAssessmentStructure(data.ID) != 0) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 410 });
697+
var features = competencyAssessmentService.UpdateCompetencyAssessmentFeaturesTaskStatus(data.ID,
698+
data.DescriptionStatus,
699+
data.ProviderandCategoryStatus,
700+
data.VocabularyStatus,
701+
data.WorkingGroupStatus,
702+
data.AllframeworkCompetenciesStatus);
703+
if (!features) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
704+
competencyAssessmentService.UpdateSelfAssessmentFromFramework(data.ID , data.FrameworkId );
705+
var insertSelfAssessment = competencyAssessmentService.InsertSelfAssessmentStructure(data.ID, data.FrameworkId);
708706
if (!insertSelfAssessment) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 500 });
707+
multiPageFormService.ClearMultiPageFormData(MultiPageFormDataFeature.AddCustomWebForm("AssessmentFeaturesDataCWF"), TempData);
708+
TempData.Clear();
709709
return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId = competency.ID, competency.FrameworkId });
710+
}
711+
712+
private void SetcompetencyAssessmentFeaturesData(CompetencyAssessmentFeaturesViewModel data)
713+
{
714+
multiPageFormService.SetMultiPageFormData(
715+
data,
716+
MultiPageFormDataFeature.AddCustomWebForm("AssessmentFeaturesDataCWF"),
717+
TempData
718+
);
719+
}
710720

721+
private CompetencyAssessmentFeaturesViewModel GetcompetencyAssessmentFeaturesData()
722+
{
723+
var data = multiPageFormService.GetMultiPageFormData<CompetencyAssessmentFeaturesViewModel>(
724+
MultiPageFormDataFeature.AddCustomWebForm("AssessmentFeaturesDataCWF"),
725+
TempData
726+
).GetAwaiter().GetResult();
727+
return data;
711728
}
712729
}
713730
}

DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessmentsController.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
using DigitalLearningSolutions.Web.Helpers;
44
using DigitalLearningSolutions.Web.Services;
5+
using GDS.MultiPageFormData;
56
using Microsoft.AspNetCore.Authorization;
67
using Microsoft.AspNetCore.Mvc;
78
using Microsoft.Extensions.Configuration;
@@ -16,20 +17,23 @@ public partial class CompetencyAssessmentsController : Controller
1617
private readonly IFrameworkNotificationService frameworkNotificationService;
1718
private readonly ILogger<CompetencyAssessmentsController> logger;
1819
private readonly IConfiguration config;
20+
private readonly IMultiPageFormService multiPageFormService;
1921
public CompetencyAssessmentsController(
2022
ICompetencyAssessmentService competencyAssessmentService,
2123
IFrameworkService frameworkService,
2224
ICommonService commonService,
2325
IFrameworkNotificationService frameworkNotificationService,
2426
ILogger<CompetencyAssessmentsController> logger,
25-
IConfiguration config)
27+
IConfiguration config,
28+
IMultiPageFormService multiPageFormService)
2629
{
2730
this.competencyAssessmentService = competencyAssessmentService;
2831
this.frameworkService = frameworkService;
2932
this.commonService = commonService;
3033
this.frameworkNotificationService = frameworkNotificationService;
3134
this.logger = logger;
3235
this.config = config;
36+
this.multiPageFormService = multiPageFormService;
3337
}
3438
public IActionResult Index()
3539
{

DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/CompetencyAssessmentFeaturesViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public CompetencyAssessmentFeaturesViewModel(int id, string competencyAssessment
1515
FrameworkId = frameworkId;
1616
}
1717

18-
public CompetencyAssessmentFeaturesViewModel(CompetencyAssessmentFeatures features, int? frameworkId)
18+
public CompetencyAssessmentFeaturesViewModel(CompetencyAssessmentFeaturesViewModel features)
1919
{
2020
ID = features.ID;
2121
CompetencyAssessmentName = features.CompetencyAssessmentName;
@@ -24,7 +24,7 @@ public CompetencyAssessmentFeaturesViewModel(CompetencyAssessmentFeatures featur
2424
VocabularyStatus = features.VocabularyStatus;
2525
WorkingGroupStatus = features.WorkingGroupStatus;
2626
AllframeworkCompetenciesStatus = features.AllframeworkCompetenciesStatus;
27-
FrameworkId = frameworkId.Value;
27+
FrameworkId = features.FrameworkId.Value;
2828
}
2929
public int ID { get; set; }
3030
public string CompetencyAssessmentName { get; set; } = string.Empty;

DigitalLearningSolutions.Web/Views/CompetencyAssessments/CompetencyAssessmentFeatures.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@
4848
</nhs-form-group>
4949
<input name="ID" type="hidden" asp-for="ID" />
5050
<input name="CompetencyAssessmentName" type="hidden" asp-for="CompetencyAssessmentName" />
51-
<input name="userRole" type="hidden" asp-for="UserRole" />
52-
<input name="FrameID" type="hidden" asp-for="FrameworkId" />
51+
<input name="UserRole" type="hidden" asp-for="UserRole" />
52+
<input name="FrameworkId" type="hidden" asp-for="FrameworkId" />
5353
<button class="nhsuk-button" type="submit">
5454
Next
5555
</button>

0 commit comments

Comments
 (0)