From 26c0dedb1dab432c87322cd0f19d45bcbe17b52e Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 10:01:43 +0000 Subject: [PATCH 01/50] Create ofsted area model --- .../Pages/Trusts/Ofsted/OfstedAreaModel.cs | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs new file mode 100644 index 000000000..219f8b542 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs @@ -0,0 +1,52 @@ +using DfE.FindInformationAcademiesTrusts.Data.Enums; +using DfE.FindInformationAcademiesTrusts.Services.Academy; +using DfE.FindInformationAcademiesTrusts.Services.DataSource; +using DfE.FindInformationAcademiesTrusts.Services.Trust; +using Microsoft.AspNetCore.Mvc; + +namespace DfE.FindInformationAcademiesTrusts.Pages.Trusts.Ofsted; + +public class OfstedAreaModel( + IDataSourceService dataSourceService, + ITrustService trustService, + IAcademyService academyService, + ILogger logger) + : TrustsAreaModel(dataSourceService, trustService, logger, "Ofsted") +{ + public AcademyOfstedServiceModel[] Academies { get; set; } = default!; + private IAcademyService AcademyService { get; } = academyService; + + public override async Task OnGetAsync() + { + var pageResult = await base.OnGetAsync(); + + if (pageResult.GetType() == typeof(NotFoundResult)) return pageResult; + + Academies = await AcademyService.GetAcademiesInTrustOfstedAsync(Uid); + + SubNavigationLinks = + [ + new TrustSubNavigationLinkModel("Current ratings", "./CurrentRatings", Uid, PageName, + this is CurrentRatingsModel), + new TrustSubNavigationLinkModel("Previous ratings", "./PreviousRatings", Uid, + PageName, this is PreviousRatingsModel), + new TrustSubNavigationLinkModel("Important dates", "./ImportantDates", Uid, PageName, + this is ImportantDatesModel), + new TrustSubNavigationLinkModel("Safeguarding and concerns", "./SafeguardingAndConcerns", Uid, + PageName, this is SafeguardingAndConcernsModel) + ]; + + DataSources.Add(new DataSourceListEntry(await DataSourceService.GetAsync(Source.Gias), + ["Date joined trust"])); + + DataSources.Add(new DataSourceListEntry(await DataSourceService.GetAsync(Source.Mis), + [ + "Current Ofsted rating", + "Date of last inspection", + "Previous Ofsted rating", + "Date of previous inspection" + ])); + + return pageResult; + } +} From ae5b4421d715be8e595808dabcc73b55f891a5eb Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Wed, 27 Nov 2024 14:03:31 +0000 Subject: [PATCH 02/50] Create the ofsted layout --- .../Pages/Trusts/Ofsted/_OfstedLayout.cshtml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_OfstedLayout.cshtml diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_OfstedLayout.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_OfstedLayout.cshtml new file mode 100644 index 000000000..595e799b6 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_OfstedLayout.cshtml @@ -0,0 +1,16 @@ +@model OfstedAreaModel +@{ + Layout = "_TrustLayout"; +} + +@RenderBody() +
+ + + + Download all academy data + +
From f4d967ca094f3b7d884388dd7da647708cd135a3 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 10:02:07 +0000 Subject: [PATCH 03/50] Create new ofsted pages --- .../Pages/Trusts/Ofsted/CurrentRatings.cshtml | 72 +++++++++++++++++++ .../Trusts/Ofsted/CurrentRatings.cshtml.cs | 16 +++++ .../Pages/Trusts/Ofsted/ImportantDates.cshtml | 48 +++++++++++++ .../Trusts/Ofsted/ImportantDates.cshtml.cs | 16 +++++ .../Pages/Trusts/Ofsted/OfstedAreaModel.cs | 26 +++++++ .../Trusts/Ofsted/PreviousRatings.cshtml | 72 +++++++++++++++++++ .../Trusts/Ofsted/PreviousRatings.cshtml.cs | 16 +++++ .../Ofsted/SafeguardingAndConcerns.cshtml | 65 +++++++++++++++++ .../Ofsted/SafeguardingAndConcerns.cshtml.cs | 16 +++++ 9 files changed, 347 insertions(+) create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml.cs create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml.cs create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml.cs create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml.cs diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml new file mode 100644 index 000000000..672338d3e --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml @@ -0,0 +1,72 @@ +@page "/trusts/ofsted/current-ratings" +@using DfE.FindInformationAcademiesTrusts.Extensions +@model CurrentRatingsModel + +@{ + Layout = "Ofsted/_OfstedLayout"; +} + +
+ + + + + + + + + + + + + + + + @foreach (var academy in Model.Academies) + { + + + + + + + + + + + } + +
Current ratings
+ School name + + Quality of education + + Behaviour and attitudes + + Personal development + + Leadership and management + + Early years provision + + Sixth form provision + + Before or after joining +
+ @academy.EstablishmentName
+
+ @academy.CurrentOfstedRating.QualityOfEducation.ToDisplayString() + + @academy.CurrentOfstedRating.BehaviourAndAttitudues.ToDisplayString() + + @academy.CurrentOfstedRating.PersonalDevelopment.ToDisplayString() + + @academy.CurrentOfstedRating.EffectivenessOfLeadershipAndManagement.ToDisplayString() + + @academy.CurrentOfstedRating.EarlyYearsProvision.ToDisplayString() + + @academy.CurrentOfstedRating.SixthFormProvision.ToDisplayString() + + @await Html.PartialAsync("_BeforeOrAfterTag", academy.WhenDidCurrentInspectionHappen) +
+
diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml.cs new file mode 100644 index 000000000..2a7a8ac60 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/CurrentRatings.cshtml.cs @@ -0,0 +1,16 @@ +using DfE.FindInformationAcademiesTrusts.Data; +using DfE.FindInformationAcademiesTrusts.Services.Academy; +using DfE.FindInformationAcademiesTrusts.Services.DataSource; +using DfE.FindInformationAcademiesTrusts.Services.Export; +using DfE.FindInformationAcademiesTrusts.Services.Trust; + +namespace DfE.FindInformationAcademiesTrusts.Pages.Trusts.Ofsted; + +public class CurrentRatingsModel( + IDataSourceService dataSourceService, + ITrustService trustService, + IAcademyService academyService, + IExportService exportService, + IDateTimeProvider dateTimeProvider, + ILogger logger) : OfstedAreaModel(dataSourceService, trustService, + academyService, exportService, dateTimeProvider, logger); diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml new file mode 100644 index 000000000..40b020095 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml @@ -0,0 +1,48 @@ +@page "/trusts/ofsted/important-dates" +@using DfE.FindInformationAcademiesTrusts.Extensions +@model ImportantDatesModel + +@{ + Layout = "Ofsted/_OfstedLayout"; +} + +
+ + + + + + + + + + + + @foreach (var academy in Model.Academies) + { + + + + + + + } + +
Important dates
+ School name + + Date joined + + Date of current inspection + + Date of previous inspection +
+ @academy.EstablishmentName
+
+ @academy.DateAcademyJoinedTrust.ToString(StringFormatConstants.ViewDate) + + @academy.CurrentOfstedRating.InspectionDate.ShowDateStringOrReplaceWithText() + + @academy.PreviousOfstedRating.InspectionDate.ShowDateStringOrReplaceWithText() +
+
diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml.cs new file mode 100644 index 000000000..9d8c54510 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/ImportantDates.cshtml.cs @@ -0,0 +1,16 @@ +using DfE.FindInformationAcademiesTrusts.Data; +using DfE.FindInformationAcademiesTrusts.Services.Academy; +using DfE.FindInformationAcademiesTrusts.Services.DataSource; +using DfE.FindInformationAcademiesTrusts.Services.Export; +using DfE.FindInformationAcademiesTrusts.Services.Trust; + +namespace DfE.FindInformationAcademiesTrusts.Pages.Trusts.Ofsted; + +public class ImportantDatesModel( + IDataSourceService dataSourceService, + ITrustService trustService, + IAcademyService academyService, + IExportService exportService, + IDateTimeProvider dateTimeProvider, + ILogger logger) : OfstedAreaModel(dataSourceService, trustService, + academyService, exportService, dateTimeProvider, logger); diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs index 219f8b542..e8722b395 100644 --- a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/OfstedAreaModel.cs @@ -1,6 +1,8 @@ +using DfE.FindInformationAcademiesTrusts.Data; using DfE.FindInformationAcademiesTrusts.Data.Enums; using DfE.FindInformationAcademiesTrusts.Services.Academy; using DfE.FindInformationAcademiesTrusts.Services.DataSource; +using DfE.FindInformationAcademiesTrusts.Services.Export; using DfE.FindInformationAcademiesTrusts.Services.Trust; using Microsoft.AspNetCore.Mvc; @@ -10,11 +12,15 @@ public class OfstedAreaModel( IDataSourceService dataSourceService, ITrustService trustService, IAcademyService academyService, + IExportService exportService, + IDateTimeProvider dateTimeProvider, ILogger logger) : TrustsAreaModel(dataSourceService, trustService, logger, "Ofsted") { public AcademyOfstedServiceModel[] Academies { get; set; } = default!; private IAcademyService AcademyService { get; } = academyService; + protected IExportService ExportService { get; } = exportService; + public IDateTimeProvider DateTimeProvider { get; } = dateTimeProvider; public override async Task OnGetAsync() { @@ -49,4 +55,24 @@ public override async Task OnGetAsync() return pageResult; } + + public virtual async Task OnGetExportAsync(string uid) + { + var trustSummary = await TrustService.GetTrustSummaryAsync(uid); + + if (trustSummary == null) + { + return new NotFoundResult(); + } + + // Sanitize the trust name to remove any illegal characters + var sanitizedTrustName = + string.Concat(trustSummary.Name.Where(c => !Path.GetInvalidFileNameChars().Contains(c))); + + var fileContents = await ExportService.ExportAcademiesToSpreadsheetAsync(uid); + var fileName = $"{sanitizedTrustName}-{DateTimeProvider.Now:yyyy-MM-dd}.xlsx"; + var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + + return File(fileContents, contentType, fileName); + } } diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml new file mode 100644 index 000000000..746ccd9e3 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml @@ -0,0 +1,72 @@ +@page "/trusts/ofsted/previous-ratings" +@using DfE.FindInformationAcademiesTrusts.Extensions +@model PreviousRatingsModel + +@{ + Layout = "Ofsted/_OfstedLayout"; +} + +
+ + + + + + + + + + + + + + + + @foreach (var academy in Model.Academies) + { + + + + + + + + + + + } + +
Previous ratings
+ School name + + Quality of education + + Behaviour and attitudes + + Personal development + + Leadership and management + + Early years provision + + Sixth form provision + + Before or after joining +
+ @academy.EstablishmentName
+
+ @academy.PreviousOfstedRating.QualityOfEducation.ToDisplayString() + + @academy.PreviousOfstedRating.BehaviourAndAttitudues.ToDisplayString() + + @academy.PreviousOfstedRating.PersonalDevelopment.ToDisplayString() + + @academy.PreviousOfstedRating.EffectivenessOfLeadershipAndManagement.ToDisplayString() + + @academy.PreviousOfstedRating.EarlyYearsProvision.ToDisplayString() + + @academy.PreviousOfstedRating.SixthFormProvision.ToDisplayString() + + @await Html.PartialAsync("_BeforeOrAfterTag", academy.WhenDidPreviousInspectionHappen) +
+
diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml.cs new file mode 100644 index 000000000..d29b57156 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/PreviousRatings.cshtml.cs @@ -0,0 +1,16 @@ +using DfE.FindInformationAcademiesTrusts.Data; +using DfE.FindInformationAcademiesTrusts.Services.Academy; +using DfE.FindInformationAcademiesTrusts.Services.DataSource; +using DfE.FindInformationAcademiesTrusts.Services.Export; +using DfE.FindInformationAcademiesTrusts.Services.Trust; + +namespace DfE.FindInformationAcademiesTrusts.Pages.Trusts.Ofsted; + +public class PreviousRatingsModel( + IDataSourceService dataSourceService, + ITrustService trustService, + IAcademyService academyService, + IExportService exportService, + IDateTimeProvider dateTimeProvider, + ILogger logger) : OfstedAreaModel(dataSourceService, trustService, + academyService, exportService, dateTimeProvider, logger); diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml new file mode 100644 index 000000000..220eeeb80 --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml @@ -0,0 +1,65 @@ +@page "/trusts/ofsted/safeguarding-and-concerns" +@using DfE.FindInformationAcademiesTrusts.Extensions +@model SafeguardingAndConcernsModel + +@{ + Layout = "Ofsted/_OfstedLayout"; +} + +
+
+ + + What this information means + + +
+ +

+ 'Effective safeguarding' means that a school has been judged to have adequate safeguarding policies and processes in place. It reviews them regularly and implements them well. +

+

+ 'Category of concern' means that a school has been found inadequate in a key or provision judgement. The school either has ‘serious weaknesses’ or requires ‘special measures.’ +

+ +
+
+ + + + + + + + + + + + @foreach (var academy in Model.Academies) + { + + + + + + + } + +
Current ratings
+ School name + + Effective safeguarding + + Category of concern + + Before or after joining +
+ @academy.EstablishmentName
+
+ @academy.CurrentOfstedRating.SafeguradingIsEffective.ToDisplayString() + + @academy.CurrentOfstedRating.CategoryOfConcern.ToDisplayString() + + @await Html.PartialAsync("_BeforeOrAfterTag", academy.WhenDidCurrentInspectionHappen) +
+
diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml.cs new file mode 100644 index 000000000..cbe771cca --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/SafeguardingAndConcerns.cshtml.cs @@ -0,0 +1,16 @@ +using DfE.FindInformationAcademiesTrusts.Data; +using DfE.FindInformationAcademiesTrusts.Services.Academy; +using DfE.FindInformationAcademiesTrusts.Services.DataSource; +using DfE.FindInformationAcademiesTrusts.Services.Export; +using DfE.FindInformationAcademiesTrusts.Services.Trust; + +namespace DfE.FindInformationAcademiesTrusts.Pages.Trusts.Ofsted; + +public class SafeguardingAndConcernsModel( + IDataSourceService dataSourceService, + ITrustService trustService, + IAcademyService academyService, + IExportService exportService, + IDateTimeProvider dateTimeProvider, + ILogger logger) : OfstedAreaModel(dataSourceService, trustService, + academyService, exportService, dateTimeProvider, logger); From c6341e0a49d4e39fb1a0903ea01f5d538e4a06f1 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 10:02:42 +0000 Subject: [PATCH 04/50] Update TrustsAreaModel to add ofsted to the navigations links --- .../Pages/Trusts/TrustsAreaModel.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/TrustsAreaModel.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/TrustsAreaModel.cs index 71f114232..c7be1df2e 100644 --- a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/TrustsAreaModel.cs +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/TrustsAreaModel.cs @@ -80,6 +80,8 @@ private void InitializeNavigationLinks() "contacts-nav"), new TrustNavigationLinkModel($"Academies ({TrustSummary.NumberOfAcademies})", "/Trusts/Academies/Details", Uid, PageName == "Academies in this trust", "academies-nav"), + new TrustNavigationLinkModel("Ofsted", "/Trusts/Ofsted/CurrentRatings", + Uid, PageName == "Ofsted", "ofsted-nav"), new TrustNavigationLinkModel("Governance", "/Trusts/Governance/TrustLeadership", Uid, PageName == "Governance", "governance-nav") From 26d10ffff25a353e8175cd9e307e4c3ad086da66 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 16:46:08 +0000 Subject: [PATCH 05/50] Create the before and after tag partial and enum --- .../Enums/BeforeOrAfterJoining.cs | 8 +++++ .../Trusts/Ofsted/_BeforeOrAfterTag.cshtml | 30 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 DfE.FindInformationAcademiesTrusts.Data/Enums/BeforeOrAfterJoining.cs create mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_BeforeOrAfterTag.cshtml diff --git a/DfE.FindInformationAcademiesTrusts.Data/Enums/BeforeOrAfterJoining.cs b/DfE.FindInformationAcademiesTrusts.Data/Enums/BeforeOrAfterJoining.cs new file mode 100644 index 000000000..b0747615a --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts.Data/Enums/BeforeOrAfterJoining.cs @@ -0,0 +1,8 @@ +namespace DfE.FindInformationAcademiesTrusts.Data.Enums; + +public enum BeforeOrAfterJoining +{ + Before, + After, + NotYetInspected +} diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_BeforeOrAfterTag.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_BeforeOrAfterTag.cshtml new file mode 100644 index 000000000..9f1abe9da --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Ofsted/_BeforeOrAfterTag.cshtml @@ -0,0 +1,30 @@ +@using DfE.FindInformationAcademiesTrusts.Data.Enums +@model DfE.FindInformationAcademiesTrusts.Data.Enums.BeforeOrAfterJoining + +@switch (Model) +{ + case BeforeOrAfterJoining.After: + { + + After + + break; + } + case BeforeOrAfterJoining.Before: + { + + Before + + break; + } + case BeforeOrAfterJoining.NotYetInspected: + { + Not yet inspected + break; + } + default: + { + Unknown + break; + } +} From 90f6e0c172c0e4a75336056eafc9935fd4983e06 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 16:46:20 +0000 Subject: [PATCH 06/50] Update stylings for table --- .../assets/sass/components/_table.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/DfE.FindInformationAcademiesTrusts/assets/sass/components/_table.scss b/DfE.FindInformationAcademiesTrusts/assets/sass/components/_table.scss index 5568fa2d3..bfce6333f 100644 --- a/DfE.FindInformationAcademiesTrusts/assets/sass/components/_table.scss +++ b/DfE.FindInformationAcademiesTrusts/assets/sass/components/_table.scss @@ -22,4 +22,13 @@ .column-header-date { width: 15%; } + + .column-header-ofsted-concern, + .column-header-ofsted-date { + width: 18%; + } + + .column-header-ofsted-rating { + width: 10%; + } } From 4febf31cab5c4b6d67871d0651542bbf7ce52e2a Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 16:46:53 +0000 Subject: [PATCH 07/50] Create CategoriesOfConcernExtensions --- .../CategoriesOfConcernExtensions.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 DfE.FindInformationAcademiesTrusts/Extensions/CategoriesOfConcernExtensions.cs diff --git a/DfE.FindInformationAcademiesTrusts/Extensions/CategoriesOfConcernExtensions.cs b/DfE.FindInformationAcademiesTrusts/Extensions/CategoriesOfConcernExtensions.cs new file mode 100644 index 000000000..f3e31335c --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Extensions/CategoriesOfConcernExtensions.cs @@ -0,0 +1,23 @@ +using DfE.FindInformationAcademiesTrusts.Data; + +namespace DfE.FindInformationAcademiesTrusts.Extensions; + +public static class CategoriesOfConcernExtensions +{ + public static string ToDataSortValue(this CategoriesOfConcern rating) + { + return rating.ToDisplayString().ToLowerInvariant().Trim(); + } + + public static string ToDisplayString(this CategoriesOfConcern rating) + { + return rating switch + { + CategoriesOfConcern.None => "None", + CategoriesOfConcern.SpecialMeasures => "Special measures", + CategoriesOfConcern.SeriousWeakness => "Serious weakness", + CategoriesOfConcern.NoticeToImprove => "Notice to improve", + _ => "Unknown" + }; + } +} From 852bfa405a9724c5fc15523443c7cfb7789767a8 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 16:47:37 +0000 Subject: [PATCH 08/50] Create SafeguardingAndConcernsExtensions --- .../Extensions/SafeguardingScoreExtensions.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 DfE.FindInformationAcademiesTrusts/Extensions/SafeguardingScoreExtensions.cs diff --git a/DfE.FindInformationAcademiesTrusts/Extensions/SafeguardingScoreExtensions.cs b/DfE.FindInformationAcademiesTrusts/Extensions/SafeguardingScoreExtensions.cs new file mode 100644 index 000000000..0cab8410c --- /dev/null +++ b/DfE.FindInformationAcademiesTrusts/Extensions/SafeguardingScoreExtensions.cs @@ -0,0 +1,23 @@ +using DfE.FindInformationAcademiesTrusts.Data; + +namespace DfE.FindInformationAcademiesTrusts.Extensions; + +public static class SafeguardingScoreExtensions +{ + public static string ToDataSortValue(this SafeguardingScore rating) + { + return rating.ToDisplayString().ToLowerInvariant().Trim(); + } + + public static string ToDisplayString(this SafeguardingScore score) + { + return score switch + { + SafeguardingScore.None => "None", + SafeguardingScore.Yes => "Yes", + SafeguardingScore.No => "No", + SafeguardingScore.NotRecorded => "Not recorded", + _ => "Unknown" + }; + } +} From 03eda31d8279555d1f71e2b83e0f8a7c17041450 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 16:50:36 +0000 Subject: [PATCH 09/50] Update OfstedRatingScoreExtensions with new scores --- .../Extensions/OfstedRatingScoreExtensions.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DfE.FindInformationAcademiesTrusts/Extensions/OfstedRatingScoreExtensions.cs b/DfE.FindInformationAcademiesTrusts/Extensions/OfstedRatingScoreExtensions.cs index ebe5a275e..1cbba5fb0 100644 --- a/DfE.FindInformationAcademiesTrusts/Extensions/OfstedRatingScoreExtensions.cs +++ b/DfE.FindInformationAcademiesTrusts/Extensions/OfstedRatingScoreExtensions.cs @@ -12,11 +12,13 @@ public static int ToDataSortValue(this OfstedRatingScore rating) OfstedRatingScore.Good => 2, OfstedRatingScore.RequiresImprovement => 3, OfstedRatingScore.Inadequate => 4, - OfstedRatingScore.None => 5, + OfstedRatingScore.DoesNotApply => 5, + OfstedRatingScore.NoJudgement => 6, + OfstedRatingScore.None => 7, _ => -1 }; } - + public static string ToDisplayString(this OfstedRatingScore rating) { return rating switch @@ -26,8 +28,9 @@ public static string ToDisplayString(this OfstedRatingScore rating) OfstedRatingScore.RequiresImprovement => "Requires improvement", OfstedRatingScore.Inadequate => "Inadequate", OfstedRatingScore.None => "Not yet inspected", + OfstedRatingScore.NoJudgement => "No judgement", + OfstedRatingScore.DoesNotApply => "Does not apply", _ => "Unknown" }; } } - From bb264675041f708e9dbd727cdfebf1fabf971784 Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Tue, 26 Nov 2024 16:53:30 +0000 Subject: [PATCH 10/50] Update AcademyOfstedServiceModel with enums to check when the academy was added compared to when the inspection took place --- .../Academy/AcademyOfstedServiceModel.cs | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/DfE.FindInformationAcademiesTrusts/Services/Academy/AcademyOfstedServiceModel.cs b/DfE.FindInformationAcademiesTrusts/Services/Academy/AcademyOfstedServiceModel.cs index af6c43149..11db709e3 100644 --- a/DfE.FindInformationAcademiesTrusts/Services/Academy/AcademyOfstedServiceModel.cs +++ b/DfE.FindInformationAcademiesTrusts/Services/Academy/AcademyOfstedServiceModel.cs @@ -1,4 +1,5 @@ using DfE.FindInformationAcademiesTrusts.Data; +using DfE.FindInformationAcademiesTrusts.Data.Enums; namespace DfE.FindInformationAcademiesTrusts.Services.Academy; @@ -8,4 +9,45 @@ public record AcademyOfstedServiceModel( DateTime DateAcademyJoinedTrust, OfstedRating PreviousOfstedRating, OfstedRating CurrentOfstedRating -); +) +{ + public BeforeOrAfterJoining WhenDidCurrentInspectionHappen + { + get + { + if (CurrentOfstedRating.InspectionDate is null) + { + return BeforeOrAfterJoining.NotYetInspected; + } + + if (CurrentOfstedRating.InspectionDate >= DateAcademyJoinedTrust) + { + return BeforeOrAfterJoining.After; + } + + // Must be CurrentOfstedRating.InspectionDate < DateAcademyJoinedTrust by process of elimination + + return BeforeOrAfterJoining.Before; + } + } + + public BeforeOrAfterJoining WhenDidPreviousInspectionHappen + { + get + { + if (PreviousOfstedRating.InspectionDate is null) + { + return BeforeOrAfterJoining.NotYetInspected; + } + + if (PreviousOfstedRating.InspectionDate >= DateAcademyJoinedTrust) + { + return BeforeOrAfterJoining.After; + } + + // Must be PreviousOfstedRating.InspectionDate < DateAcademyJoinedTrust by process of elimination + + return BeforeOrAfterJoining.Before; + } + } +} From 1cdeeae57f0554cabae004d5dd01f2a2f105714a Mon Sep 17 00:00:00 2001 From: Nick Warms Date: Wed, 27 Nov 2024 12:39:09 +0000 Subject: [PATCH 11/50] Remove the old ofsted pages from the academies area --- .../Trusts/Academies/OfstedRatings.cshtml | 40 ----- .../Trusts/Academies/OfstedRatings.cshtml.cs | 44 ------ .../Trusts/Academies/_AcademiesLayout.cshtml | 21 ++- .../Trusts/Academies/_OfstedRatingCell.cshtml | 15 -- .../Academies/_OfstedRatingCell.cshtml.cs | 46 ------ .../Academies/OfstedRatingCellModelTests.cs | 148 ------------------ .../Academies/OfstedRatingsModelTests.cs | 121 -------------- 7 files changed, 9 insertions(+), 426 deletions(-) delete mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml delete mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml.cs delete mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/_OfstedRatingCell.cshtml delete mode 100644 DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/_OfstedRatingCell.cshtml.cs delete mode 100644 tests/DfE.FindInformationAcademiesTrusts.UnitTests/Pages/Trusts/Academies/OfstedRatingCellModelTests.cs delete mode 100644 tests/DfE.FindInformationAcademiesTrusts.UnitTests/Pages/Trusts/Academies/OfstedRatingsModelTests.cs diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml deleted file mode 100644 index 96f1de289..000000000 --- a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml +++ /dev/null @@ -1,40 +0,0 @@ -@* Add the route to use hyphenation between words *@ -@page "/trusts/academies/ofsted-ratings" -@model OfstedRatingsModel - -@{ - Layout = "Academies/_AcademiesLayout"; -} - -
- - - - - - - - - - - @foreach (var academy in Model.Academies) - { - - - - @await Html.PartialAsync( - "_OfstedRatingCell", - new OfstedRatingCellModel { OfstedRating = academy.PreviousOfstedRating, AcademyJoinedDate = academy.DateAcademyJoinedTrust, IdPrefix = "previous" }) - - @await Html.PartialAsync( - "_OfstedRatingCell", - new OfstedRatingCellModel { OfstedRating = academy.CurrentOfstedRating, AcademyJoinedDate = academy.DateAcademyJoinedTrust, IdPrefix = "current" }) - - } - -
School nameDate joinedPrevious Ofsted ratingCurrent Ofsted rating
- @academy.EstablishmentName
URN: @academy.Urn -
- @academy.DateAcademyJoinedTrust.ToString(StringFormatConstants.ViewDate) -
-
diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml.cs b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml.cs deleted file mode 100644 index aebc0a510..000000000 --- a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/OfstedRatings.cshtml.cs +++ /dev/null @@ -1,44 +0,0 @@ -using DfE.FindInformationAcademiesTrusts.Data; -using DfE.FindInformationAcademiesTrusts.Data.Enums; -using DfE.FindInformationAcademiesTrusts.Services.Academy; -using DfE.FindInformationAcademiesTrusts.Services.DataSource; -using DfE.FindInformationAcademiesTrusts.Services.Export; -using DfE.FindInformationAcademiesTrusts.Services.Trust; -using Microsoft.AspNetCore.Mvc; - -namespace DfE.FindInformationAcademiesTrusts.Pages.Trusts.Academies; - -public class OfstedRatingsModel : AcademiesPageModel -{ - public AcademyOfstedServiceModel[] Academies { get; set; } = default!; - private IAcademyService AcademyService { get; } - - public OfstedRatingsModel(IDataSourceService dataSourceService, - ILogger logger, ITrustService trustService, IAcademyService academyService, IExportService exportService, IDateTimeProvider dateTimeProvider) : base(dataSourceService, trustService, exportService, logger, dateTimeProvider) - { - PageTitle = "Academies Ofsted ratings"; - TabName = "Ofsted ratings"; - AcademyService = academyService; - } - - public override async Task OnGetAsync() - { - var pageResult = await base.OnGetAsync(); - - if (pageResult.GetType() == typeof(NotFoundResult)) return pageResult; - - Academies = await AcademyService.GetAcademiesInTrustOfstedAsync(Uid); - - DataSources.Add(new DataSourceListEntry(await DataSourceService.GetAsync(Source.Gias), - new[] { "Date joined trust" })); - - DataSources.Add(new DataSourceListEntry(await DataSourceService.GetAsync(Source.Mis), - new[] - { - "Current Ofsted rating", "Date of last inspection", "Previous Ofsted rating", - "Date of previous inspection" - })); - - return pageResult; - } -} diff --git a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/_AcademiesLayout.cshtml b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/_AcademiesLayout.cshtml index c6165d029..560256f32 100644 --- a/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/_AcademiesLayout.cshtml +++ b/DfE.FindInformationAcademiesTrusts/Pages/Trusts/Academies/_AcademiesLayout.cshtml @@ -13,15 +13,16 @@ } } +
- - - - Download all academy data - + + + + Download all academy data +