From 831a48d30fd2aa9db349bcada9652bdea7a3fa9e Mon Sep 17 00:00:00 2001 From: marzmehr Date: Sat, 28 Oct 2023 10:26:12 -0700 Subject: [PATCH 1/9] SS-760 and SS-761: wording changes --- web/src/components/Home.vue | 25 +++++++++++++---------- web/src/components/MyTeam/ViewReports.vue | 6 +++--- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/web/src/components/Home.vue b/web/src/components/Home.vue index b4011180..de78fba8 100644 --- a/web/src/components/Home.vue +++ b/web/src/components/Home.vue @@ -34,7 +34,7 @@ Training Status {{data.value}} - + @@ -227,10 +227,10 @@ reportFilter: string[] = [] locationOptionsList: locationInfoType[] = []; - statusOptions = {danger:'Not Met', warning:'Expired', court:'Expiring Soon'} + statusOptions = {danger:'Not Taken', warning:'Expired', court:'Expiring Soon'} trainingFields = [ - {key:"excluded", label:"Exclude", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: false,thStyle:'width:5%; line-height:1rem;'}, + {key:"excluded", label:"Excused", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: false,thStyle:'width:5%; line-height:1rem;'}, {key:"name", label:"Name", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: true, thStyle:'width:30%;'}, {key:"trainingType", label:"Training Type", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: true, thStyle:'width:15%;'}, {key:"end", label:"Completion Date", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: true, thStyle:'width:20%;'}, From 22da914882c92b521b4ae92b954fbc2b256b4699 Mon Sep 17 00:00:00 2001 From: marzmehr Date: Sat, 28 Oct 2023 10:40:42 -0700 Subject: [PATCH 2/9] minor edit --- web/src/components/MyTeam/ViewReports.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/MyTeam/ViewReports.vue b/web/src/components/MyTeam/ViewReports.vue index 06f3f04c..61eb82c0 100644 --- a/web/src/components/MyTeam/ViewReports.vue +++ b/web/src/components/MyTeam/ViewReports.vue @@ -230,7 +230,7 @@ statusOptions = {danger:'Not Taken', warning:'Expired', court:'Expiring Soon'} trainingFields = [ - {key:"excluded", label:"Excused", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: false,thStyle:'width:5%; line-height:1rem;'}, + {key:"excluded", label:"Excuse", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: false,thStyle:'width:5%; line-height:1rem;'}, {key:"name", label:"Name", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: true, thStyle:'width:30%;'}, {key:"trainingType", label:"Training Type", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: true, thStyle:'width:15%;'}, {key:"end", label:"Completion Date", thClass: 'border-bottom align-middle text-center', tdClass:'align-middle text-center', sortable: true, thStyle:'width:20%;'}, From 5e6362f8fc1e5cf0bd34d98f61458303ae982a47 Mon Sep 17 00:00:00 2001 From: marzmehr Date: Sat, 4 Nov 2023 12:25:08 -0700 Subject: [PATCH 3/9] SS-762: Adding functionality to retain excused sheriffs --- .../usermanagement/SheriffController.cs | 9 + api/models/dto/generated/SheriffDto.g.cs | 1 + api/services/usermanagement/SheriffService.cs | 9 + ...4350_UpdateSheriff_Add_Excused.Designer.cs | 2456 +++++++++++++++++ ...0231104164350_UpdateSheriff_Add_Excused.cs | 23 + .../SheriffDbContextModelSnapshot.cs | 3 + db/models/sheriff/Sheriff.cs | 1 + web/src/components/Home.vue | 35 +- web/src/components/MyTeam/ViewReports.vue | 40 +- 9 files changed, 2553 insertions(+), 24 deletions(-) create mode 100644 db/migrations/20231104164350_UpdateSheriff_Add_Excused.Designer.cs create mode 100644 db/migrations/20231104164350_UpdateSheriff_Add_Excused.cs diff --git a/api/controllers/usermanagement/SheriffController.cs b/api/controllers/usermanagement/SheriffController.cs index 72c8b5fe..dff8c6e5 100644 --- a/api/controllers/usermanagement/SheriffController.cs +++ b/api/controllers/usermanagement/SheriffController.cs @@ -155,6 +155,15 @@ public async Task> UploadPhoto(Guid? id, string badgeNu return Ok(sheriff.Adapt()); } + [HttpPut] + [Route("updateExcused")] + [PermissionClaimAuthorize(perm: Permission.GenerateReports)] + public async Task> UpdateExcused(Sheriff excusedSheriff) + { + var sheriff = await SheriffService.UpdateSheriffExcused(excusedSheriff); + return Ok(sheriff.Adapt()); + } + #endregion Sheriff #region SheriffAwayLocation diff --git a/api/models/dto/generated/SheriffDto.g.cs b/api/models/dto/generated/SheriffDto.g.cs index fe20f847..71982d91 100644 --- a/api/models/dto/generated/SheriffDto.g.cs +++ b/api/models/dto/generated/SheriffDto.g.cs @@ -16,6 +16,7 @@ public partial class SheriffDto public List Training { get; set; } public string PhotoUrl { get; set; } public DateTimeOffset LastPhotoUpdate { get; set; } + public bool Excused { get; set; } public Guid Id { get; set; } public bool IsEnabled { get; set; } public string FirstName { get; set; } diff --git a/api/services/usermanagement/SheriffService.cs b/api/services/usermanagement/SheriffService.cs index 77fef0ff..b55f0fff 100644 --- a/api/services/usermanagement/SheriffService.cs +++ b/api/services/usermanagement/SheriffService.cs @@ -164,6 +164,15 @@ public async Task UpdateSheriffPhoto(Guid? id, string badgeNumber, byte return savedSheriff; } + public async Task UpdateSheriffExcused(Sheriff sheriff) + { + var savedSheriff = await Db.Sheriff.FindAsync(sheriff.Id); + savedSheriff.ThrowBusinessExceptionIfNull($"No {nameof(Sheriff)} with Id: {sheriff.Id}"); + savedSheriff.Excused = sheriff.Excused; + await Db.SaveChangesAsync(); + return savedSheriff; + } + public async Task UpdateSheriffHomeLocation(Guid id, int locationId) { var savedSheriff = await Db.Sheriff.FindAsync(id); diff --git a/db/migrations/20231104164350_UpdateSheriff_Add_Excused.Designer.cs b/db/migrations/20231104164350_UpdateSheriff_Add_Excused.Designer.cs new file mode 100644 index 00000000..1ff2eef8 --- /dev/null +++ b/db/migrations/20231104164350_UpdateSheriff_Add_Excused.Designer.cs @@ -0,0 +1,2456 @@ +// +using System; +using System.Text.Json; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using SS.Db.models; + +namespace SS.Db.Migrations +{ + [DbContext(typeof(SheriffDbContext))] + [Migration("20231104164350_UpdateSheriff_Add_Excused")] + partial class UpdateSheriff_Add_Excused + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseIdentityByDefaultColumns() + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("FriendlyName") + .HasColumnType("text"); + + b.Property("Xml") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("DataProtectionKeys"); + }); + + modelBuilder.Entity("SS.Api.Models.DB.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("AgencyId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("JustinCode") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("ParentLocationId") + .HasColumnType("integer"); + + b.Property("RegionId") + .HasColumnType("integer"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("AgencyId") + .IsUnique(); + + b.HasIndex("CreatedById"); + + b.HasIndex("RegionId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Location"); + + b.HasData( + new + { + Id = 1, + AgencyId = "SS1", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "Office of Professional Standards", + Timezone = "America/Vancouver" + }, + new + { + Id = 2, + AgencyId = "SS2", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "Sheriff Provincial Operation Centre", + Timezone = "America/Vancouver" + }, + new + { + Id = 3, + AgencyId = "SS3", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "Central Float Pool", + Timezone = "America/Vancouver" + }, + new + { + Id = 4, + AgencyId = "SS4", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "ITAU", + Timezone = "America/Vancouver" + }, + new + { + Id = 5, + AgencyId = "SS5", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Name = "Office of the Chief Sheriff", + Timezone = "America/Vancouver" + }, + new + { + Id = 6, + AgencyId = "SS6", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + JustinCode = "4882", + Name = "South Okanagan Escort Centre", + Timezone = "America/Vancouver" + }); + }); + + modelBuilder.Entity("SS.Db.models.audit.Audit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("KeyValues") + .HasColumnType("jsonb"); + + b.Property("NewValues") + .HasColumnType("jsonb"); + + b.Property("OldValues") + .HasColumnType("jsonb"); + + b.Property("TableName") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("KeyValues"); + + b.ToTable("Audit"); + }); + + modelBuilder.Entity("SS.Db.models.auth.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Permission"); + + b.HasData( + new + { + Id = 1, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Allows the user to login.", + Name = "Login" + }, + new + { + Id = 5, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Create Profile (User)", + Name = "CreateUsers" + }, + new + { + Id = 6, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Expire Profile (User)", + Name = "ExpireUsers" + }, + new + { + Id = 7, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Profile (User)", + Name = "EditUsers" + }, + new + { + Id = 8, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View all Roles", + Name = "ViewRoles" + }, + new + { + Id = 9, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Create and Assign Roles", + Name = "CreateAndAssignRoles" + }, + new + { + Id = 10, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Expire Roles", + Name = "ExpireRoles" + }, + new + { + Id = 11, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Roles", + Name = "EditRoles" + }, + new + { + Id = 13, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Create Types", + Name = "CreateTypes" + }, + new + { + Id = 14, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Types", + Name = "EditTypes" + }, + new + { + Id = 15, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Expire Types", + Name = "ExpireTypes" + }, + new + { + Id = 16, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View shifts", + Name = "ViewShifts" + }, + new + { + Id = 19, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Create and Assign Shifts", + Name = "CreateAndAssignShifts" + }, + new + { + Id = 20, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Expire Shifts", + Name = "ExpireShifts" + }, + new + { + Id = 21, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Shifts", + Name = "EditShifts" + }, + new + { + Id = 22, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Distribute Schedule", + Name = "ViewDistributeSchedule" + }, + new + { + Id = 23, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Assigned Location", + Name = "ViewAssignedLocation" + }, + new + { + Id = 24, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Region (all locations within region)", + Name = "ViewRegion" + }, + new + { + Id = 25, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Province (all regions, all locations)", + Name = "ViewProvince" + }, + new + { + Id = 27, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Home Location", + Name = "ViewHomeLocation" + }, + new + { + Id = 28, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Import Shifts", + Name = "ImportShifts" + }, + new + { + Id = 30, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Create Assignments", + Name = "CreateAssignments" + }, + new + { + Id = 31, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Assignments", + Name = "EditAssignments" + }, + new + { + Id = 32, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Expire Assignments", + Name = "ExpireAssignments" + }, + new + { + Id = 33, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Duties", + Name = "ViewDutyRoster" + }, + new + { + Id = 34, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Create Duties", + Name = "CreateAndAssignDuties" + }, + new + { + Id = 35, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Duties", + Name = "EditDuties" + }, + new + { + Id = 36, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Expire Duties", + Name = "ExpireDuties" + }, + new + { + Id = 37, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Idir", + Name = "EditIdir" + }, + new + { + Id = 38, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Edit Past Training", + Name = "EditPastTraining" + }, + new + { + Id = 39, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Remove Past Training", + Name = "RemovePastTraining" + }, + new + { + Id = 40, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View DutyRoster in the future", + Name = "ViewDutyRosterInFuture" + }, + new + { + Id = 41, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View Shifts in the future (not time constrained)", + Name = "ViewAllFutureShifts" + }, + new + { + Id = 42, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "View other profiles (beside their own)", + Name = "ViewOtherProfiles" + }, + new + { + Id = 43, + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Generate Reports based on Sheriff's activity", + Name = "GenerateReports" + }); + }); + + modelBuilder.Entity("SS.Db.models.auth.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(50L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Role"); + + b.HasData( + new + { + Id = 1, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Administrator", + Name = "Administrator" + }, + new + { + Id = 2, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Manager", + Name = "Manager" + }, + new + { + Id = 3, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Sheriff", + Name = "Sheriff" + }); + }); + + modelBuilder.Entity("SS.Db.models.auth.RolePermission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(100L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("PermissionId") + .HasColumnType("integer"); + + b.Property("RoleId") + .HasColumnType("integer"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("PermissionId"); + + b.HasIndex("RoleId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("RolePermission"); + }); + + modelBuilder.Entity("SS.Db.models.auth.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Discriminator") + .IsRequired() + .HasColumnType("text"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("FirstName") + .HasColumnType("text"); + + b.Property("HomeLocationId") + .HasColumnType("integer"); + + b.Property("IdirId") + .HasColumnType("uuid"); + + b.Property("IdirName") + .HasColumnType("text"); + + b.Property("IsEnabled") + .HasColumnType("boolean"); + + b.Property("KeyCloakId") + .HasColumnType("uuid"); + + b.Property("LastLogin") + .HasColumnType("timestamp with time zone"); + + b.Property("LastName") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("HomeLocationId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("User"); + + b.HasDiscriminator("Discriminator").HasValue("User"); + + b.HasData( + new + { + Id = new Guid("00000000-0000-0000-0000-000000000001"), + ConcurrencyToken = 0u, + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + FirstName = "SYSTEM", + IsEnabled = false, + LastName = "SYSTEM" + }); + }); + + modelBuilder.Entity("SS.Db.models.auth.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(5000L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EffectiveDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryReason") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("integer"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("UserId"); + + b.HasIndex("RoleId", "UserId") + .IsUnique(); + + b.ToTable("UserRole"); + }); + + modelBuilder.Entity("SS.Db.models.jc.JcSynchronization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("LastSynchronization") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.ToTable("JcSynchronization"); + }); + + modelBuilder.Entity("SS.Db.models.lookupcodes.LookupSortOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(1000L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("LookupCodeId") + .HasColumnType("integer"); + + b.Property("SortOrder") + .HasColumnType("integer"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LocationId"); + + b.HasIndex("LookupCodeId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("LookupCodeId", "LocationId") + .IsUnique(); + + b.ToTable("LookupSortOrder"); + + b.HasData( + new + { + Id = 1, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 1, + SortOrder = 1 + }, + new + { + Id = 2, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 2, + SortOrder = 2 + }, + new + { + Id = 3, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 3, + SortOrder = 3 + }, + new + { + Id = 4, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 4, + SortOrder = 4 + }, + new + { + Id = 5, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 5, + SortOrder = 5 + }, + new + { + Id = 6, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 6, + SortOrder = 6 + }, + new + { + Id = 7, + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + LookupCodeId = 7, + SortOrder = 7 + }); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Assignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("AdhocEndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("AdhocStartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("End") + .HasColumnType("interval"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryReason") + .HasColumnType("text"); + + b.Property("Friday") + .HasColumnType("boolean"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("LookupCodeId") + .HasColumnType("integer"); + + b.Property("Monday") + .HasColumnType("boolean"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Saturday") + .HasColumnType("boolean"); + + b.Property("Start") + .HasColumnType("interval"); + + b.Property("Sunday") + .HasColumnType("boolean"); + + b.Property("Thursday") + .HasColumnType("boolean"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("Tuesday") + .HasColumnType("boolean"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Wednesday") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LocationId"); + + b.HasIndex("LookupCodeId"); + + b.HasIndex("UpdatedById"); + + b.ToTable("Assignment"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Duty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("AssignmentId") + .HasColumnType("integer"); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LocationId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("Duty"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.DutySlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("DutyId") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("IsClosed") + .HasColumnType("boolean"); + + b.Property("IsNotAvailable") + .HasColumnType("boolean"); + + b.Property("IsNotRequired") + .HasColumnType("boolean"); + + b.Property("IsOvertime") + .HasColumnType("boolean"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("SheriffId") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DutyId"); + + b.HasIndex("LocationId"); + + b.HasIndex("SheriffId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("DutySlot"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Shift", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(200L, null, null, null, null, null); + + b.Property("AnticipatedAssignmentId") + .HasColumnType("integer"); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("OvertimeHours") + .HasColumnType("double precision"); + + b.Property("SheriffId") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("AnticipatedAssignmentId"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LocationId"); + + b.HasIndex("SheriffId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("Shift"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffActingRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryReason") + .HasColumnType("text"); + + b.Property("Rank") + .HasColumnType("text"); + + b.Property("SheriffId") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("SheriffId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("SheriffActingRank"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffAwayLocation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryReason") + .HasColumnType("text"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("SheriffId") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LocationId"); + + b.HasIndex("SheriffId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("SheriffAwayLocation"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffLeave", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryReason") + .HasColumnType("text"); + + b.Property("LeaveTypeId") + .HasColumnType("integer"); + + b.Property("SheriffId") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LeaveTypeId"); + + b.HasIndex("SheriffId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("SheriffLeave"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffTraining", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Comment") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryReason") + .HasColumnType("text"); + + b.Property("FirstNotice") + .HasColumnType("boolean"); + + b.Property("Note") + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("SheriffId") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Timezone") + .HasColumnType("text"); + + b.Property("TrainingCertificationExpiry") + .HasColumnType("timestamp with time zone"); + + b.Property("TrainingTypeId") + .HasColumnType("integer"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("SheriffId"); + + b.HasIndex("TrainingTypeId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("StartDate", "EndDate"); + + b.ToTable("SheriffTraining"); + }); + + modelBuilder.Entity("db.models.Region", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Code") + .HasColumnType("text"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("JustinId") + .HasColumnType("integer"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("JustinId") + .IsUnique(); + + b.HasIndex("UpdatedById"); + + b.ToTable("Region"); + }); + + modelBuilder.Entity("ss.db.models.LookupCode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn() + .HasIdentityOptions(1000L, null, null, null, null, null); + + b.Property("AdvanceNotice") + .HasColumnType("integer"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("Code") + .HasColumnType("text"); + + b.Property("ConcurrencyToken") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("xid") + .HasColumnName("xmin"); + + b.Property("CreatedById") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("now()"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("EffectiveDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("integer"); + + b.Property("Mandatory") + .HasColumnType("boolean"); + + b.Property("SubCode") + .HasColumnType("text"); + + b.Property("Type") + .HasColumnType("integer"); + + b.Property("UpdatedById") + .HasColumnType("uuid"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ValidityPeriod") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("CreatedById"); + + b.HasIndex("LocationId"); + + b.HasIndex("UpdatedById"); + + b.HasIndex("Type", "Code", "LocationId") + .IsUnique(); + + b.ToTable("LookupCode"); + + b.HasData( + new + { + Id = 1, + AdvanceNotice = 0, + Code = "Chief Sheriff", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Chief Sheriff", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 2, + AdvanceNotice = 0, + Code = "Superintendent", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Superintendent", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 3, + AdvanceNotice = 0, + Code = "Staff Inspector", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Staff Inspector", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 4, + AdvanceNotice = 0, + Code = "Inspector", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Inspector", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 5, + AdvanceNotice = 0, + Code = "Staff Sergeant", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Staff Sergeant", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 6, + AdvanceNotice = 0, + Code = "Sergeant", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Sergeant", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 7, + AdvanceNotice = 0, + Code = "Deputy Sheriff", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Deputy Sheriff", + Mandatory = false, + Type = 7, + ValidityPeriod = 0 + }, + new + { + Id = 8, + AdvanceNotice = 0, + Code = "CEW (Taser)", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "CEW (Taser)", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 9, + AdvanceNotice = 0, + Code = "DNA", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "DNA", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 10, + AdvanceNotice = 0, + Code = "FRO", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "FRO", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 11, + AdvanceNotice = 0, + Code = "Fire Arm", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Fire Arm", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 12, + AdvanceNotice = 0, + Code = "First Aid", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "First Aid", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 13, + AdvanceNotice = 0, + Code = "Advanced Escort SPC (AESOC)", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Advanced Escort SPC (AESOC)", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 14, + AdvanceNotice = 0, + Code = "Extenuating Circumstances SPC (EXSPC)", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Extenuating Circumstances SPC (EXSPC)", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 15, + AdvanceNotice = 0, + Code = "Search Gate", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Search Gate", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 16, + AdvanceNotice = 0, + Code = "Other", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Other", + Mandatory = false, + Type = 6, + ValidityPeriod = 0 + }, + new + { + Id = 17, + AdvanceNotice = 0, + Code = "STIP", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "STIP", + Mandatory = false, + Type = 5, + ValidityPeriod = 0 + }, + new + { + Id = 18, + AdvanceNotice = 0, + Code = "Annual", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Annual", + Mandatory = false, + Type = 5, + ValidityPeriod = 0 + }, + new + { + Id = 19, + AdvanceNotice = 0, + Code = "Illness", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Illness", + Mandatory = false, + Type = 5, + ValidityPeriod = 0 + }, + new + { + Id = 20, + AdvanceNotice = 0, + Code = "Special", + ConcurrencyToken = 0u, + CreatedById = new Guid("00000000-0000-0000-0000-000000000001"), + CreatedOn = new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Special", + Mandatory = false, + Type = 5, + ValidityPeriod = 0 + }); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.Sheriff", b => + { + b.HasBaseType("SS.Db.models.auth.User"); + + b.Property("BadgeNumber") + .HasColumnType("text"); + + b.Property("Excused") + .HasColumnType("boolean"); + + b.Property("Gender") + .HasColumnType("integer"); + + b.Property("LastPhotoUpdate") + .HasColumnType("timestamp with time zone"); + + b.Property("Photo") + .HasColumnType("bytea"); + + b.Property("Rank") + .HasColumnType("text"); + + b.HasIndex("BadgeNumber") + .IsUnique(); + + b.HasDiscriminator().HasValue("Sheriff"); + }); + + modelBuilder.Entity("SS.Api.Models.DB.Location", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("db.models.Region", "Region") + .WithMany() + .HasForeignKey("RegionId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Region"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.audit.Audit", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.auth.Permission", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.auth.Role", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.auth.RolePermission", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.Permission", "Permission") + .WithMany() + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.Role", "Role") + .WithMany("RolePermissions") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.auth.User", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "HomeLocation") + .WithMany() + .HasForeignKey("HomeLocationId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("HomeLocation"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.auth.UserRole", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.Role", "Role") + .WithMany("UserRoles") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "User") + .WithMany("UserRoles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CreatedBy"); + + b.Navigation("Role"); + + b.Navigation("UpdatedBy"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("SS.Db.models.lookupcodes.LookupSortOrder", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ss.db.models.LookupCode", "LookupCode") + .WithMany("SortOrder") + .HasForeignKey("LookupCodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Location"); + + b.Navigation("LookupCode"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Assignment", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ss.db.models.LookupCode", "LookupCode") + .WithMany() + .HasForeignKey("LookupCodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Location"); + + b.Navigation("LookupCode"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Duty", b => + { + b.HasOne("SS.Db.models.scheduling.Assignment", "Assignment") + .WithMany() + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("Assignment"); + + b.Navigation("CreatedBy"); + + b.Navigation("Location"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.DutySlot", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.scheduling.Duty", "Duty") + .WithMany("DutySlots") + .HasForeignKey("DutyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired(); + + b.HasOne("SS.Db.models.sheriff.Sheriff", "Sheriff") + .WithMany() + .HasForeignKey("SheriffId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Duty"); + + b.Navigation("Location"); + + b.Navigation("Sheriff"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Shift", b => + { + b.HasOne("SS.Db.models.scheduling.Assignment", "AnticipatedAssignment") + .WithMany() + .HasForeignKey("AnticipatedAssignmentId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired(); + + b.HasOne("SS.Db.models.sheriff.Sheriff", "Sheriff") + .WithMany() + .HasForeignKey("SheriffId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("AnticipatedAssignment"); + + b.Navigation("CreatedBy"); + + b.Navigation("Location"); + + b.Navigation("Sheriff"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffActingRank", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.sheriff.Sheriff", "Sheriff") + .WithMany("ActingRank") + .HasForeignKey("SheriffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Sheriff"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffAwayLocation", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SS.Db.models.sheriff.Sheriff", "Sheriff") + .WithMany("AwayLocation") + .HasForeignKey("SheriffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Location"); + + b.Navigation("Sheriff"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffLeave", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("ss.db.models.LookupCode", "LeaveType") + .WithMany() + .HasForeignKey("LeaveTypeId"); + + b.HasOne("SS.Db.models.sheriff.Sheriff", "Sheriff") + .WithMany("Leave") + .HasForeignKey("SheriffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("LeaveType"); + + b.Navigation("Sheriff"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.SheriffTraining", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.sheriff.Sheriff", "Sheriff") + .WithMany("Training") + .HasForeignKey("SheriffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ss.db.models.LookupCode", "TrainingType") + .WithMany() + .HasForeignKey("TrainingTypeId"); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Sheriff"); + + b.Navigation("TrainingType"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("db.models.Region", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("ss.db.models.LookupCode", b => + { + b.HasOne("SS.Db.models.auth.User", "CreatedBy") + .WithMany() + .HasForeignKey("CreatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Api.Models.DB.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SS.Db.models.auth.User", "UpdatedBy") + .WithMany() + .HasForeignKey("UpdatedById") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("CreatedBy"); + + b.Navigation("Location"); + + b.Navigation("UpdatedBy"); + }); + + modelBuilder.Entity("SS.Db.models.auth.Role", b => + { + b.Navigation("RolePermissions"); + + b.Navigation("UserRoles"); + }); + + modelBuilder.Entity("SS.Db.models.auth.User", b => + { + b.Navigation("UserRoles"); + }); + + modelBuilder.Entity("SS.Db.models.scheduling.Duty", b => + { + b.Navigation("DutySlots"); + }); + + modelBuilder.Entity("ss.db.models.LookupCode", b => + { + b.Navigation("SortOrder"); + }); + + modelBuilder.Entity("SS.Db.models.sheriff.Sheriff", b => + { + b.Navigation("ActingRank"); + + b.Navigation("AwayLocation"); + + b.Navigation("Leave"); + + b.Navigation("Training"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/db/migrations/20231104164350_UpdateSheriff_Add_Excused.cs b/db/migrations/20231104164350_UpdateSheriff_Add_Excused.cs new file mode 100644 index 00000000..f16da9c5 --- /dev/null +++ b/db/migrations/20231104164350_UpdateSheriff_Add_Excused.cs @@ -0,0 +1,23 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace SS.Db.Migrations +{ + public partial class UpdateSheriff_Add_Excused : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Excused", + table: "User", + type: "boolean", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Excused", + table: "User"); + } + } +} diff --git a/db/migrations/SheriffDbContextModelSnapshot.cs b/db/migrations/SheriffDbContextModelSnapshot.cs index 3e285425..5af4161e 100644 --- a/db/migrations/SheriffDbContextModelSnapshot.cs +++ b/db/migrations/SheriffDbContextModelSnapshot.cs @@ -1900,6 +1900,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("BadgeNumber") .HasColumnType("text"); + b.Property("Excused") + .HasColumnType("boolean"); + b.Property("Gender") .HasColumnType("integer"); diff --git a/db/models/sheriff/Sheriff.cs b/db/models/sheriff/Sheriff.cs index c06f2031..e8874f6b 100644 --- a/db/models/sheriff/Sheriff.cs +++ b/db/models/sheriff/Sheriff.cs @@ -25,5 +25,6 @@ public class Sheriff : User public string PhotoUrl => Photo?.Length > 0 ? $"/api/sheriff/getPhoto/{Id}?{LastPhotoUpdate.Ticks}" : null; public DateTimeOffset LastPhotoUpdate { get; set; } + public Boolean Excused { get; set; } } } \ No newline at end of file diff --git a/web/src/components/Home.vue b/web/src/components/Home.vue index de78fba8..32e0a315 100644 --- a/web/src/components/Home.vue +++ b/web/src/components/Home.vue @@ -39,8 +39,15 @@ class="mx-2 my-3" variant="danger" :show="true"> - {{item.trainingType}} - {{item.status}} + +
+ {{item.trainingType}} +
+
+
+ {{item.status}} +
+ - {{item.trainingType}} - {{item.status}} + +
+ {{item.trainingType}} +
+
+
+ {{item.status}} +
+ - {{item.trainingType}} - ({{item.expiryDate | expiry-date}}) - {{item.status}} + +
+ {{item.trainingType}} +
+
+
+ {{item.status}} + ({{item.expiryDate | expiry-date}}) +
+ diff --git a/web/src/components/MyTeam/ViewReports.vue b/web/src/components/MyTeam/ViewReports.vue index 61eb82c0..4a881f8c 100644 --- a/web/src/components/MyTeam/ViewReports.vue +++ b/web/src/components/MyTeam/ViewReports.vue @@ -134,7 +134,7 @@ {{data.value}} - + @@ -169,7 +169,7 @@ - + @@ -370,7 +370,7 @@ const timezone = trainingData.timezone?trainingData.timezone:'America/Vancouver'; trainingInfo.end = trainingData.endDate? moment(trainingData.endDate).tz(timezone).format():''; trainingInfo.expiryDate = trainingData.trainingCertificationExpiry? moment(trainingData.trainingCertificationExpiry).tz(timezone).format():''; - trainingInfo.excluded = false; + trainingInfo.excluded = sheriffData.excused; const todayDate = moment().tz(timezone).format(); const advanceNoticeDate = moment().tz(timezone).add(trainingData.trainingType.advanceNotice, 'days').format() @@ -436,26 +436,32 @@ } - public splitExcludedReports(exclude, sheriffId){ + public excludeFromReports(exclude, sheriffId){ Vue.nextTick(()=>{ - if(exclude){ - const trainings = this.trainingReportData.filter(training => training.sheriffId==sheriffId); - this.excludedTrainingReportData.push(...trainings) - this.trainingReportData = this.trainingReportData.filter(training => training.sheriffId!=sheriffId); - }else { - const trainings = this.excludedTrainingReportData.filter(training => training.sheriffId==sheriffId); - this.trainingReportData.push(...trainings) - this.excludedTrainingReportData = this.excludedTrainingReportData.filter(training => training.sheriffId!=sheriffId); + const body = { + excused: exclude, + id: sheriffId } - this.excludedTrainingReportData.forEach(training => training.excluded = true); - this.trainingReportData.forEach(training => training.excluded = false); - this.filterReports() - }) + + const url = 'api/sheriff/updateExcused'; + this.$http.put(url, body) + .then(response => { + this.find() + }, err => { + this.error = err.response.data.error; + this.find() + }); + }) } public filterReports() { Vue.nextTick(() => { - this.filteredTrainingReportData = JSON.parse(JSON.stringify(this.trainingReportData)) + this.excludedTrainingReportData = JSON.parse(JSON.stringify(this.trainingReportData)) + this.excludedTrainingReportData = this.excludedTrainingReportData.filter(training => training.excluded) + + this.filteredTrainingReportData = JSON.parse(JSON.stringify(this.trainingReportData)) + this.filteredTrainingReportData = this.filteredTrainingReportData.filter(training => !training.excluded) + if(this.reportFilter.length>0){ this.filteredTrainingReportData =this.filteredTrainingReportData.filter(training => training.status && this.reportFilter.includes(training.status)) } From bf527c2129060e743f75b724446e0ac318501a25 Mon Sep 17 00:00:00 2001 From: marzmehr Date: Mon, 6 Nov 2023 20:20:33 -0800 Subject: [PATCH 4/9] SS-747: Adding initial chages to handle large volumes of training data in reports --- .../usermanagement/SheriffController.cs | 16 +- api/models/dto/TrainingReportDto.cs | 16 ++ api/models/dto/TrainingReportSearchDto.cs | 14 ++ api/models/types/TrainingStatus.cs | 8 + api/models/types/TrainingStatusTypes.cs | 9 + api/services/ManageTypesService.cs | 20 ++ .../usermanagement/TrainingService.cs | 143 +++++++++++- web/public/images/bcss-crest-lw.png | Bin 0 -> 129315 bytes web/src/components/Home.vue | 4 +- .../MyTeam/Components/CustomPagination.vue | 78 +++++++ web/src/components/MyTeam/ViewReports.vue | 215 ++++++++---------- 11 files changed, 391 insertions(+), 132 deletions(-) create mode 100644 api/models/dto/TrainingReportDto.cs create mode 100644 api/models/dto/TrainingReportSearchDto.cs create mode 100644 api/models/types/TrainingStatus.cs create mode 100644 api/models/types/TrainingStatusTypes.cs create mode 100644 web/public/images/bcss-crest-lw.png create mode 100644 web/src/components/MyTeam/Components/CustomPagination.vue diff --git a/api/controllers/usermanagement/SheriffController.cs b/api/controllers/usermanagement/SheriffController.cs index dff8c6e5..a8c84d40 100644 --- a/api/controllers/usermanagement/SheriffController.cs +++ b/api/controllers/usermanagement/SheriffController.cs @@ -32,15 +32,17 @@ public class SheriffController : UserController private ShiftService ShiftService { get; } private DutyRosterService DutyRosterService { get; } private SheriffDbContext Db { get; } + private TrainingService TrainingService { get; } // ReSharper disable once InconsistentNaming private readonly long _uploadPhotoSizeLimitKB; - public SheriffController(SheriffService sheriffService, DutyRosterService dutyRosterService, ShiftService shiftService, UserService userUserService, IConfiguration configuration, SheriffDbContext db) : base(userUserService) + public SheriffController(SheriffService sheriffService, DutyRosterService dutyRosterService, ShiftService shiftService, UserService userUserService,TrainingService trainingService, IConfiguration configuration, SheriffDbContext db) : base(userUserService) { SheriffService = sheriffService; ShiftService = shiftService; DutyRosterService = dutyRosterService; + TrainingService = trainingService; Db = db; _uploadPhotoSizeLimitKB = Convert.ToInt32(configuration.GetNonEmptyValue("UploadPhotoSizeLimitKB")); } @@ -277,6 +279,18 @@ public async Task RemoveSheriffLeave(int id, string expiryReason) #endregion SheriffLeave + #region SheriffTrainingReports + + [HttpPost] + [Route("training/reports")] + [PermissionClaimAuthorize(perm: Permission.GenerateReports)] + public async Task> GetSheriffsTrainingReports(TrainingReportSearchDto trainingReportSearch) + { + var sheriffs = await TrainingService.GetSheriffsTrainingReports(trainingReportSearch); + return Ok(sheriffs.Adapt>()); + } + #endregion SheriffTrainingReports + #region SheriffTraining [HttpGet] diff --git a/api/models/dto/TrainingReportDto.cs b/api/models/dto/TrainingReportDto.cs new file mode 100644 index 00000000..a29a7501 --- /dev/null +++ b/api/models/dto/TrainingReportDto.cs @@ -0,0 +1,16 @@ +using System; + +namespace SS.Api.models.dto +{ + public class TrainingReportDto + { + public string name { get; set; } + public string trainingType { get; set; } + public DateTimeOffset? end { get; set; } + public DateTimeOffset? expiryDate { get; set; } + public bool excluded { get; set; } + public Guid sheriffId { get; set; } + public string status { get; set; } + public string _rowVariant { get; set; } + } +} \ No newline at end of file diff --git a/api/models/dto/TrainingReportSearchDto.cs b/api/models/dto/TrainingReportSearchDto.cs new file mode 100644 index 00000000..7b52535f --- /dev/null +++ b/api/models/dto/TrainingReportSearchDto.cs @@ -0,0 +1,14 @@ +using System; + + +namespace SS.Api.models.dto +{ + public class TrainingReportSearchDto + { + public int? regionId { get; set; } + public int? locationId { get; set; } + public int? reportSubtypeId { get; set; } + public DateTimeOffset? startDate { get; set; } + public DateTimeOffset? endDate { get; set; } + } +} \ No newline at end of file diff --git a/api/models/types/TrainingStatus.cs b/api/models/types/TrainingStatus.cs new file mode 100644 index 00000000..7ef9de04 --- /dev/null +++ b/api/models/types/TrainingStatus.cs @@ -0,0 +1,8 @@ +namespace SS.Api.models.types +{ + public class TrainingStatus + { + public string status; + public string rowType; + } +} diff --git a/api/models/types/TrainingStatusTypes.cs b/api/models/types/TrainingStatusTypes.cs new file mode 100644 index 00000000..e8d36801 --- /dev/null +++ b/api/models/types/TrainingStatusTypes.cs @@ -0,0 +1,9 @@ +namespace SS.Api.models.types +{ + public static class TrainingStatusTypes + { + public static readonly string danger = "Not Taken"; + public static readonly string warning = "Expired"; + public static readonly string court = "Expiring Soon"; + } +} diff --git a/api/services/ManageTypesService.cs b/api/services/ManageTypesService.cs index f5b5fea9..b85e76b1 100644 --- a/api/services/ManageTypesService.cs +++ b/api/services/ManageTypesService.cs @@ -139,6 +139,26 @@ public async Task> GetAll(LookupTypes? codeType, int? locationI return lookupCodes; } + public async Task> GetAllForReports(int? id, LookupTypes? codeType, int? locationId, bool? mandatory, bool showExpired = false) + { + var lookupCodes = await Db.LookupCode.AsNoTracking() + .Include(lc => lc.SortOrder.Where(so => so.LocationId == locationId)) + .Where(lc => + (id == null || lc.Id == id) && + (codeType == null || lc.Type == codeType) && + (locationId == null || lc.LocationId == null || lc.LocationId == locationId) && + (mandatory == null || lc.Mandatory == mandatory) && + (showExpired || lc.ExpiryDate == null)) + .OrderBy(a => (int)a.Type) + .ThenBy(a => a.SortOrder.FirstOrDefault().SortOrder) + .ThenBy(a => a.Id) + .ToListAsync(); + + lookupCodes.ForEach(lc => lc.SortOrderForLocation = lc.SortOrder.FirstOrDefault()); + + return lookupCodes; + } + public async Task Find(int id) => await Db.LookupCode.AsNoTracking().FirstOrDefaultAsync(lc => lc.Id == id); public async Task Expire(int id) diff --git a/api/services/usermanagement/TrainingService.cs b/api/services/usermanagement/TrainingService.cs index 235619f1..44f1cc45 100644 --- a/api/services/usermanagement/TrainingService.cs +++ b/api/services/usermanagement/TrainingService.cs @@ -1,11 +1,18 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using SS.Api.helpers.extensions; using SS.Api.infrastructure.exceptions; +using SS.Api.models.dto; using SS.Db.models; +using SS.Db.models.lookupcodes; using SS.Db.models.sheriff; +using SS.Api.models.types; +using SS.Common.helpers.extensions; +using ss.db.models; +using Microsoft.Extensions.Logging; namespace SS.Api.services.usermanagement { @@ -13,22 +20,27 @@ namespace SS.Api.services.usermanagement public class TrainingService { private SheriffDbContext Db { get; } + private ManageTypesService ManageTypesService { get; } + private ILogger Logger { get; } - public TrainingService(SheriffDbContext db) + public TrainingService(ManageTypesService manageTypesService, SheriffDbContext db, ILogger logger) { + ManageTypesService = manageTypesService; Db = db; + Logger = logger; } + #region Training CronJob public async Task> GetTrainings() - { + { var sheriffTrainingQuery = Db.SheriffTraining.AsNoTracking() .AsSplitQuery() .Where(t => t.ExpiryDate == null) .Where(t => t.FirstNotice != true) - .Where(t => t.TrainingType.AdvanceNotice > 0) + .Where(t => t.TrainingType.AdvanceNotice > 0) .Include(t => t.TrainingType) - .Include(t => t.Sheriff); + .Include(t => t.Sheriff); return await sheriffTrainingQuery.ToListAsync(); } @@ -41,9 +53,124 @@ public async Task UpdateTraining(int trainingId) if (training.ExpiryDate.HasValue) throw new BusinessLayerException($"{nameof(SheriffTraining)} with the id: {trainingId} has been expired"); - + training.FirstNotice = true; - await Db.SaveChangesAsync(); - } + await Db.SaveChangesAsync(); + } + + #endregion Training CronJob + + + + #region Training Reports + public async Task> GetSheriffsTrainingReports(TrainingReportSearchDto trainingReportSearch) + { + Logger.LogInformation("__________Start_Creating_Reports___________"); + var sheriffQuery = Db.Sheriff.AsNoTracking() + .AsSplitQuery() + .Where(s => + s.IsEnabled && + (trainingReportSearch.locationId == null || s.HomeLocationId==trainingReportSearch.locationId) + ) + .Include(s => s.Training.Where(t => t.ExpiryDate == null)) + .ThenInclude(t => t.TrainingType) + .Include(s => s.HomeLocation) + .Where(s => trainingReportSearch.regionId == null || s.HomeLocation.RegionId==trainingReportSearch.regionId); + + var sheriffs = await sheriffQuery.ToListAsync(); + + List mandatoryTrainings = await ManageTypesService.GetAllForReports(trainingReportSearch.reportSubtypeId, LookupTypes.TrainingType, null, true, false); + List optionalTrainings = await ManageTypesService.GetAllForReports(trainingReportSearch.reportSubtypeId, LookupTypes.TrainingType, null, false, false); + + var sheriffTrainings = new List(); + + foreach (var sheriff in sheriffs) + { + var sheriffTrainingsId = sheriff.Training.Select(t => t.TrainingTypeId).ToArray(); + List optionalSheriffTrainings = optionalTrainings.FindAll(t => sheriffTrainingsId.Contains(t.Id)); + List allSheriffTrainings = new List(); + allSheriffTrainings.AddRange(optionalSheriffTrainings); + allSheriffTrainings.AddRange(mandatoryTrainings); + + foreach (var training in allSheriffTrainings) + { + if (!sheriffTrainingsId.Contains(training.Id)) + { + sheriffTrainings.Add(new TrainingReportDto() + { + name = sheriff.FirstName + ' ' + sheriff.LastName, + trainingType = training.Description, + end = null, + expiryDate = null, + excluded = sheriff.Excused, + sheriffId = sheriff.Id, + status = TrainingStatusTypes.danger, + _rowVariant = "danger" + }); + } + else + { + var takenTraining = sheriff.Training.Find(t => t.TrainingTypeId == training.Id); + var trainingStatus = GetTrainingStatus(takenTraining.TrainingCertificationExpiry, takenTraining.Timezone, training.AdvanceNotice); + + sheriffTrainings.Add(new TrainingReportDto() + { + name = sheriff.FirstName + ' ' + sheriff.LastName, + trainingType = training.Description, + end = takenTraining.EndDate.ConvertToTimezone(takenTraining.Timezone), + expiryDate = takenTraining.TrainingCertificationExpiry != null ? ((DateTimeOffset)takenTraining.TrainingCertificationExpiry).ConvertToTimezone(takenTraining.Timezone): null, + excluded = sheriff.Excused, + sheriffId = sheriff.Id, + status = trainingStatus.status, + _rowVariant = trainingStatus.rowType + }); + } + } + } + + Logger.LogInformation("__________End_Creating_Reports____________"); + + if(trainingReportSearch.startDate != null && trainingReportSearch.endDate != null) + return sheriffTrainings.FindAll(t => + t.end>=trainingReportSearch.startDate && + t.end<=trainingReportSearch.endDate + ); + else + return sheriffTrainings; + } + + #endregion Training Reports + + + + #region Help Methods + + private TrainingStatus GetTrainingStatus(DateTimeOffset? expiryDate, string timezone, int advanceNotice) + { + TrainingStatus trainingStatus = new TrainingStatus(); + + var todayDate = DateTimeOffset.UtcNow.ConvertToTimezone(timezone); + var advanceNoticeDate = DateTimeOffset.UtcNow.AddDays(advanceNotice).ConvertToTimezone(timezone); + + if(todayDate > expiryDate) + { + trainingStatus.rowType = "warning"; + trainingStatus.status = TrainingStatusTypes.warning; + } + else if(advanceNoticeDate > expiryDate) + { + trainingStatus.rowType = "court"; + trainingStatus.status = TrainingStatusTypes.court; + } + else + { + trainingStatus.rowType = "white"; + trainingStatus.status = ""; + } + + return trainingStatus; + } + + #endregion Help Methods } } \ No newline at end of file diff --git a/web/public/images/bcss-crest-lw.png b/web/public/images/bcss-crest-lw.png new file mode 100644 index 0000000000000000000000000000000000000000..8615f92449ad6e03b2cf923e715bc637fe91bf77 GIT binary patch literal 129315 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ƎZwsWVYax+@0Q#Wm)? zyCk)agM~iq-c%G#78-pLlB7qHbZ8B6Y}s8vr}j}8HDGr*F`2Y@9JQ3y>X0P;CEZ3j zVB?Y7Oh~FAvlbq};f*3XJ|6_AtK82|KYT))HW{t<`KifM(W`^l>^=e^*mtOeISaR= zgxuujq%v#XF1#KG-MVI9Q7;i-@4lnF`{_zVQKY_VKlQa`eD&2=Sglsl($ZPFb{|`I z6fpLtQRto9QGzazeFPn6u|y>^Y|LnCD-W`*pn-(89T_yZ2cokmjJj7R;IRA9sq0#L z27&-idw`S#V~bCk98ys0S_7(s0U2AJ7scVDO{$R}eq2IKLK@cS7}U+)-Kr^5rc6mm z%OInDF8g=w*4N zs4!a$sMRXkq(rc8mkmi1)q*?LI<7Isd6h&eB z^ckEkapCpU(NML6x8Hu3QKLpRk1$lk#Ky65$vmzbcMXwR4|1RhQJaJ!y9nBgP=y+4 zn+!wyCDC_4Z&bc>2*EJ>UeKoFY^=kmx3}~!>TO=mmN>|58`ZLRf+(QYX$b~Gcs&7X zE1VSWsif?zjp!&NQ4w0qI)z1xR}xfIbm-LW{4iP+MLOsA;O(i?S-aw7v;0}OWD5kM z@CC97$w~N}27*4BP)HyYI3H!sMjsVLjaWoDdHfuL0Ah0yFUuiR+L%@w77T<~wdOE0 ze%eN#fw{EHi~@fh9ycUqhVy%eN2XRzXq9?Qm@t7Ue|?P8TwL?oY;y}k8UgMQu3`28V%Sz16s+A!1_6LO$|XCE8G zEw|i!5kR1lJ^PMfjWnats2Mz{8;j?>%G-avnfMq(D<-laz?{YVdGfi>Ia^$L$@ko~ zYc~siJqilg8%|@lySeek8(Y05Au$oPM#F&vN6|!eYzcD7+$EfDy2@HoLBW0yT&Dql z_#_iW91W+qkjgI#0^9c0g+~QWFICk|l$O?W=CqB9Dh+N@Id!;>fUJ<3ZpC8NBT6bn zQ6M?1Gh@czb$P^xH7bUz+&ei^Slj%8GIFR2IZ#T_C!(lQQM6rXYKYf zt7l%T2SDqBR^sE2-Xts4jY<_3LXA!Ai696}n{$}b3Onu76~^=v2>R{x&5x#I+bH_w z$MO6}`#IZ~PK34HfBvKr1eA~;lu&bqp!~N2EhS?ppUytXorx3w(&{%B96rr$4}5~l)!OPt%bv!XveM`A72(V*sX){%+_4?`OWoUF(e4YlJwgSHR;tSfeX)S4|*XuzL znDNh_@ru!inn;wO15uxJS*FJMPOy9dob3E(rzBZv-!_Kz`>K&F(Zpu=A+1Y)V%v7X z9g^6+?l)rM4Rr35KzytbK@?Hzb(}2sG2+I%QEN0;hE?VF>d%q==Map>=8aLI(}5(_ zVn0`at$06b4W#9DqxC2JKz96C~l9_5H3xq0<5yKj>n$=7OyYFGq29!(BVsAaQ_OnrN6w&d#~PtK_A|u5ks;`Np5ZDv~b~K zR&P1iT=O5pZuc^N{P;`WGdd=QPPrY(h}W}z{Z4cV{ZV8Wf=Y{^viuHQ#)zPfJkPLb z&f+4?0@n^rWB$@2-u`qu-%MM=SD!9mJ28E8bpK(BGKpa1Nkd6dBO(;Qk z^GzTU3nj$*)_O{@qfZcy=m2e}FkNULZX!f%%KJqLxI0A%*^ZI=6bt zWuztX_b=8lcftDB=mvvab;DColn|2INNT$qI9+Aoiy!x)QPnYWKm-f6CvyLr z4z?X@gGw?WsHFdlUF;P=$l=ph{*Sz!N~Ogb-!0NNui@JLQ=8@`C|Px<7~PTnp!#ysX$) zL&0g=rEo8Q0FPh5<&#KBP5=EM(`a=J81)F}DxDw*$RPz!qlcg`NGK3i^c6*c21kIh zYB%e5pJVp?Ei78Kg}*#9fHo;6g7&ftE}lRz;6odc(1Nqm>LfxwA0VK}3L$@xc3pD_ zII3_u!zrRaD3gd(z@Xl3XxH{UgVpKs@ZN{B$nO|WadGKoZU{XuzW5X!+Ju`plB6RdsvWDg zm+|sPo9Wh3;*-hosC7}OBpsqk^B?s8y3D;13N+*F{&Od#sM1jD@5xWA1ojlQN39mQ zZkP_03g-TL2$x5P9PpBzYGcjnrLAsuMN#$jKiX=Hq9_VK{P+{)H8Lm)^_BZ@Iz3!>-F3fn#ES&|K8lYXC8UT5k^#S? z6d7GhHg)NbHlYMVVW^eRvJv5ONel}%wa<)X>@^vD`sM)MdbvL*Yn?3JQrrrCBL{;N zmp3x*&ih+5ZhjYqFDpt|X-aH8s8ws!IDH|0Twcr!iRdCS@HSN8b-B=M!knoRrxt5e)MfXj zYu7GJe)5s#)69!IVCK8;erWZYQ6u|t^Vodya@)52hRs{{5n&9U0C(RptmW^|Rn+qI z^Is4MhWPsPCz<@z-Ix7bqtU=uUw%ZFoUo&d$&!lE(vHKY8dj=#Nl4|m=eM%Ea0Dn9;dEpNUz^RjxGEvecCYsIQt@&5=_Dmv!YQLlbDs9D5?Hyd zf_@`<@!{0F8Fp1C+O~-zQgWcwpT<{tyj6hx>+}_IAgaT|#kx9Ivlz|4Y;83tq7hqJ z5e~Z>tzJ!o8~P3%^Sd|0T@xnYbbE2w&Z3eGd@_AIXU`U2(6mtT;^aG#nmb0Jkjzi> ze`|SCb?MYT4Efo-j}hbFW5~cxyz}})L|9Cy)#~Ot=fXeDe5i;BzWVYbUU_x|O-(l9 zl6oPjEj<0sX14DuqgzJ}pG`Ip{0};&Tt3KDe@Y7B&n$mX;n_PSI%lgne4?5sUt5hR zDBOI@HLP2^rdj0Z{93eZ2fwU1MpDvw(NwKg%`;EjMt*K`OIL5DI7`>ttk4g6c;-|P=~VyL4_!)(CZ|s>%A@axDt}_`GPE-`Nbbo zUF1-ZRr7wtX0zk=gBb8(ZwT9@Zr@+ct|K-ceCR4v-a3l*Y)0}mAOu}u7}XUndSjCV zFe55%N-FGBHHAn?47d0tT|Bn3N*b%Hn`z!EN@@aZ*nO0nZoj`(`ml4`7B;L~!xOjm zK~YwW$n7(_;%)Uo`3ykrhdJWGpA0F*Rf5@yiKiE)3IX?S?M~K zt=xktA_Kqs1ap?1AU`*jZn;t9wGmmlOF^yT|EuK-!s`!8^z0;2RqN#TXO`jjd6@Ra zG+uh?C5*=NjiR#h8tUt8bkA>3b!9b6R~K;Om|l2&0ama5jdPXteDw832J}d$vL@UJ zJ9(xSTSG04O?LeL;3Wb%ilXrLdo$TvPz6Bkxm|eOwfykIk0d1}v0?2hicX)x>-7*3 z8Hwrw((u|9OIfgR3D@6xJ(;PIcxnnzt5wuh)l%Cab721oj+fZ@$M?tBv9p>HLsF3R zSxCxhbXxfWCl~=m-3CRSM){fJcpTNVZJ*HUdv4fP%F1ok*c=`fZFln9aX+QiGPnKZ zDca?9{C(`AMyu!f4}YSzx{At*3KnlzjUYyG^572a4HXzH5rBff;Vel>R%9iGkRl^u zM-aSMC~!5@+ZsuXjV3y(fsel{1Qb$}tz>1#5^^3V(rQFj6zmQ!(fS|;*@esL#Aq^c zqVOnRe)taUBdUmx*7MdgH&WlYha-wYyYv*wst*#M(vQjp9ZQxj=f)exUesX>@!bz= zQ8f!`cFJqZ%dh?uSyq_!_2g#nGKHcuWjyoZbV|=PHp7YpMh(pY#mCKezsEbT-O1pA z-CNR|F=Ixf)9d*A2Qv`3iHhQR-22>0W_~z|fj!fBcOty}&k#EG{~rP755m*8igeBv zX=wED@&_AmHaXe8eH;Dy^=~<)WLe=*!6_bmd>V7UpNv7T<&Br`;7oBPp^%JTr{%=S zaz3BAgL%^*rcbXtX3ts0htt*|2m})ES+=O5*Tmj+_+oNAWT zQc#FOP$!^L3lOM62{~HNA_O>o+(l;lYzhkwa zL|DQn?)Kjf@!_ZQm^XV$E3`idR8*W}!J;+1_V#RouAMmSe!hD98b%DrWPf3Zm#2r& z{~r%DUjUxHLq-2?BDM8yUiol60aYU3fA>Av+1agL>vDP6xOp#!3Qkc|Yv;|^{({9~ zZ1ozi*Uz-+i|Emw z5Z_u9Cm51>|MR`vaQ|Bj9D3Ei*SWnCGx~DN5)nyuURTzxSV(@Ku7q6mAcqj}g4}>0 zY7jMvh`Q8pxhK0@o_>D652Q#6j-4YiA)0FkrO-1+q`Jw?(#=(@-&0FamdVbFLaPbS zX>t-F%ThWY-js?~AIGty`?+R#|CaW$ zN+r_0TL*sIc`)q%HMSd1J$4(0=5Ch5>E_`lKEv$;G$w}iZNmqz-;3F#Z*lKXsYE{e zY881o@wCZktw?M(o9W#vpC0)s?B2Z#kJrJ1m8Z$?7(?$ak#uV(uyVJ8B>vwFu-vo& z6US@l)mfytypemKUq-tQeVI99CK(wSm%Lu1QPaL%I=y@5^3mr@G3iA*cWQUhAYVn_ z-kpe#i$anl1Od9|ci^iTYk2pS8yP;V=S4y3^OXn_a=+!+Fl@Nr0 zo1o8yEC&%KiG%x#XqVlQjIP6Jat1hl^f;$>%_G0FmHckWSS-3$2SuaZ$B*-mla@D* zakt$5Z-Wf}^kr|ClgprMpJVl!LJTQg5u|@v7|F=Ka)Qo-1YIW(qzI&lK8S{FL|q0E zRx4*uoMhAP8mv|$A)kxbXdTxKOyq;VcHyHbU2!N14UHZw76Tz!CN;rGLW}`H_Mp{B zSgj_S8XU+WnUiG>y7%gZN~L1-=xdQgKlK&60hz-mJ$(4lCwRT*(^tJt!|SiyO=P5r zNe_)ja{*;x)#~jOSGYjZlb;jEt1sM+$<+GzKUYzMS`zVkeOK&`T{Ubddv@<(@-xpO ziazdrZY3wr*3%(VWa?9@Rt6mZSJu@%1YUU1K-X*)TlbVQ^6t3|yJ`&6r%xv_G4Xf* ztyZgH=0Bfi#!s7AzH-}T_vFaYQ}iDEILlXV=9W8O<(~2RTt8+|>r>R{RftcK_S0OG69DTMTSrif&q{O6~lVR(_r^wGHHp7&?BkBjSG`W zhb1bW#zsGCjf7efs5A6p_=u6st#uP`yfy`cQbkk!DMV4?rv(RDvSewi@6|Rdg#|yf zMv=&}!kZs02SLQ{3Gu>HH(XU&--u+0$Itl&f`*7FSQ&MQd5@|$HR49r_Y)m9OkJTY63Q^5wYmLqTzMzO+AA!?ei_0hT z%f@p=Cgq?A0tff+=Y>fRBgv&06dy$;g-H5j45mcZZrDqHrzFzS(psSmE?mVWRs8t# z1|*%4M<(=PNYCJJ9)>i35dRhi~ zd7YR$cMc0zpP^TmcsgW7(7%gFZJk1C?SIPd;m@x?2%fk_WYi!Dr_0CGnLGJ@;W2Kz z^)^2G=p!N`F0g2FdwKqqulVMNO?*9bEjo1&NhM-2n_Ftr*jOt%DZqC>tYyfc&KM1? z4H~=U=a8Nf$$j^Xy9i}3uyNxCCciWTwa$v)+dyUUuc%dOuI`@9o=xjHdEx~7c5I^L zbRoO8ZYJbx#G>-zX{yJPkV#WjJ@r*}{Jg$|-KQJrGrTi*+|iqEd2wiD4?;8hLsT0O zwI)J-CyFfd+x{vFPT08Xy0+*v;ZrN%3!<~=k+kQ7>`ZABdyA5I^TVkmrKJAX&@}(m zAOncBMzQ}u32`w2j9QTWt}9^e;8d}L{C>IQcTU26?j%jN04hy1dR+)X6cJP+C?T@5 ztSsAH%KoGE2%<=YNrO&rqPD7*P|!zdjhlKwM`pT=h7#JQdbxIFI|dF&C*YCM$$rYp z3PG2KRv*QjxeK}BxU1$C**LrdHBhx`28V3Wb)%T zpljw76&^p$*E2V;aOn=}>#FG8yK~E24xmGaj*J?0Ex+yD%0GYHP4~Pw+GRx2Gf%{z zhJ7a##Q()QO#%An!prwdbjTDbtFZIp`|DV-=@gGVJc)PTeHV+x(jr+6pixT<=$FU5 zh1-y2nO*yeSoG^IzL~j(fX{(Ot-@%~)4yLAnwlCpaToM&q~9 zR9MK_&3j2RdMT|5A?nOjon1>P=))A5#e)+kW3x40_PfQ!M$zC1@aE%v$w-U8Bu)Hs z`U099;X3U4k$FU15QN7H&kw(6&)dnSO*>j3TK|$Y=+&zi%YR+YkRg3|=+(6>Sal3g z7&}D8yOUHzS^jqd%wkZuYox-2u^_4ZZ2avkBOaJXokPcx#Y_44<4>?yBB-lxWZ|Nf zm+aB|Z`?(wd5HWkn#y;xw{riZUod3UOT6{o_w?x2o<+;|G5yA zqEQ>q@WJiT+72N4?8pIsD|CmT)}tWeZ>mI+Gzg-a<3&xhNj~2>4ERGJieZ7D^9L=B zc0XmMCI3AX&3`+$56Psb|8b$A)u`C9;WVPo0D_3Ys6zHv5hTn!b=U(mRW~(1MIkv( z&&{LL*?ORcnmQ+@2qS8ZL`9t!lTk;|Wk&6&1CBKze#Q^XARtrg7Kv#uvZw#y>V=Yx0tkDDt<7Y6f%` z2>lPCuv97--Y3N5dxG@ttWZ<$;vdE~+S*tT^WqeqXXuFl5S-z{e3xYsy& z>eAGI(7C1j6 zx7*GA_dUvy6K)haM0M#_6n{1839(p>T83Ub7>}(1wLXSWz=g+NLMZ4aF2;Z)iP#(g z)RIU*QP_OAjz^xp1I1q2QtO3+A-tXonqG-L@!6^Y0XeAP@hRABL1L}v)7nr_M$&68 zIUFY4m(SbJJ;btw^YH!-+v9&M$coRL#%o(ae6+5G2X=9qCAWO~y5p8%eD(b%4i%iF z@c3Ew>^;ha2i{@E&)dTRW>7PI>SH9tpKk`N->{3)X45;JPQ$e$&YLPYy)p}y9boKj zZ!u@y8tir_F)=ZG`|Y<(dF^#(FFC^FZ?0i?K?Q1+%$?UsOd793r}@tXmp1@yQ)M2# z-A}L1L1aZ{``!{Jz49x?rS;7Ceg;#gP9-WTntl6^F?{T+O#5~{Az9(nnYzoq=h!hr zc<}Ba?B0EtzrJ`syEeSf->2NcpuSmne661n$w@J^Z=ZR|d$?RKCO-TGr^>^I@--EE z@VL*B9Bn2!LJf+{h*1NnIdPC+KtyX!ZgoHP?;VHB6GW{RIdIm_?T_3-VvLTEz5D_| zg$8|dT__oo5cSbCmYr$|oYHa^4tIdy1y43ftG=vAPFk{=cmLX(Q@g%q$_r27cDerd zYO=zk1x)+|SU;CDNby-O^|gN7J|lWdJge88WXM%HSTq5YpdUd1 zjaET2q~dL=0VRZ_)es8E`1~?1cMzjq&8kfmq{nG7>Lki*++=sl!lXDTKV5^*6TsyO z5fvYY&uPb`mnbhSW!Ihp@;YX7^2B~T-T+2(GPR8=4(?sYRl^3N)oL%eA>!$pm&)t! z%;LM*n^?YjAB}b|!H`0~o*8`p@ndARNx2}^aq;*wpW|%?h)#L=R@%1<(;Ldq)$-Gv zjp#Hg6a`M7KF83(U9eg$NRmXqe*L)ax-o3twx8*>6e!!prvy^zN)+&?uZKv+>iS{mfc)nEnHYvTEfD1`ZgAAP9IoKDKT@Ky0+0 zT>2&hIgOfORCJbzDs5y+Qv5@S8;1HYJ)h-4&ik;iEG~# zPs8a}a@)%`oa8nw7@N&)$ApLZYT5_Q?keGb)4f{w{P%zx`jf#q(XOG-g z-dX_j7p|kB@jUCdZRYvzWx?SSM3~gg=m41Z>0@MGWT)G`dv}&CTgJ~n|IFmc&#?d5 z1w46wUk3HgzA{10ux3`YRAL@l%e~O^1z6GQDuT@pvh$$%- zwablBsz;;MBFi#zNJdgi=yej?x11p@$xK2@Br$O&d@dhqvkrfg7X;8+^Xm(|Fb9AuI*dtkuQ@JXT(!iL(mr>=yMVDHWBjG6L3`$^wbjcR1@;l z5p>sJtFPx&Re+nucgI_Grq!%OPy%SpsRVr<{O<6yJ`@O|l2o{T0pery2qOHvs+`Wf z+c0!k4z;ICa5V>+&mSOn&@jqRoR9i zzW$+RjjcHVr@T0heto)Jb`RBRHTn7Z+;!JoG}!FCKlK-m6jqTGZ=pk5GyS`%XrC%j zR;keBzB1rm5FjT*VdMa~`Dy`cghG?U!^$nE`Rwa$Y~ESK!w*g5mtTJ2>Z`AAR^+|h z`v`Q(&Em&jHihdZPk>{Erx-P|52}myK&#czzi%g=oct*{*%??P%`K-^7?dqu0{UIL z^j8)vJB*|@;c%SMqy1UwC# zI@`#W-BoyzFq$BXSv^H3EBI|^IrVlwiLpj} zeuebBj#QjDhE^>h3IcX_h;0QnCO!WKqeqV>E-sEGi+;rGJcr(tgx1uCHEXxip?zE{ z#j8JBv*xU3>&}y5KABO&7oR?gD1?~){aQYmwi1^+9DF9Dj@SQoZ!626%Xa-N7OuVa zT1Jl=&DI?U_~QFD6qnVLl3*bx%f!HLDmu3nur)%Bt#z>V%vHF3v_gJvh)7F_s(Kd- zR~+HZsax55u#{VGyPKb8|HPel-brL+C>TzTdS<`fmY*FI-zTtYP2wg?Kz#ViQwA z0bAWUBE&+jAJ?0ptqi%@llR1#Cf@(*IM2O2f?nN|ag`i_=B|`1hft{`f<)PGW&i*n z07*naR6zk*lZC6vL*3Z|Vw0?hl8Wkj56jkPw16n{<#cCoH3?XSGDjGaA zGradV6C0^2dK;R;|LMaUm+oLS(af9(ZOicm4SdQpqIyTUrn$ zk;#*%uxj-hzHs?vI2|%2)u-SM)R9Q^^Mh}m$yHZgc0{p03iRx2=e8d|Moaq;0FBi? z9)IYEqt-wVKJ*;-|7ke@6PrqT;^7~BYWmILyZ^Rr+xW>(e#}cRE#vwx%;1a@Cs7{u z;&M6gdYx#RiDB9N`RNVZ^UwyIs=ya6yPTVDy6Hn@8$Qi-ptXw&uJ{?^$gx>l>F54? zZsL}Idz8GU^Vf%OL6#-ri46WC43wZqAJE^bmaOV69d_fo0jRhok&DLJx&L*z7@>GU*y@{EP6dY^J zBPXnP9~kD2-)!Yi58Xn(cRMbJjnC&A0ZcSRQR1-|_7PTLQjL#;`=f+H9%^cX2%?0` zqhJ9W_YBi5%;3C>FDG1DMl{k-X<5amN)i8Mj1Nhck9d$)y!tdJpE?mN6C*vud*Yb2 zl^*8J2yxGS8)%wbLwR*6S|VD=;YY+~9ID8kJ%^}ioJjA%c6N27NMsDYe8nUbS;V#s ztlTh|d8|wnGnt^Myo%ZL8oBR*Rn%9wDK9M|nK4@@6jh5}_ z;XgcqWkWh+;B(6qIV8M(C%R>G`|q}L^Y^}hIJ6h?gD4I+vf{upjUyx;iUSVzbZ889 z?Wdv2MKI_cMFAyAqN^{>pZ>a+i%+b^=~9UHr)X#_MifL+nH+;dDJ*Pu9gH*WxC>Zt z>>^w)H^n7koKDwg*Ni^=YHQuku?s5^1q&;e9%I2{+Y)6JQsQIDxwCj}Z7#nh6c>D42DehFb@H?J)BGjHzHf600Zf*BitSPInn_=^Ln(dYMa_2-%hmItsb8-KAENfb$>atMlq)9u9Raxi0JF;Ct1|Jb>G z>%U|*|7Ah8VeLxp`tG&No7aeuPLfYXM(lhfP-_v~Q_&37(%9J&{GLcJb4DPERsxRd2LMxv**@Q8upSO zIDly9P>7Q0c%9>?sH}bKMJ7#}L~Cm&ix;1OsSnfF{yJK2nBJJ1i?6<$-~8rxbocZe z@$iL90$g#~5|%7E70b5x^4EXOBTuaxy^(kP@UjmKb^dD}dau{Z!i5X@+Sk6$isdWV z-*SNS&%c10nwo!Ma6u|vFvs(FT>Sd3s{tEJc5vq{XK}~>yPA@c4^NriT=o`MUh`d^ zUwVju&yB97=zKOtSfc zF=X#hmP}gX`DGoPa@u_K;VwQ%rxqmdhmtehE_t-2k;}cWuDoMk6v?)k(Oise+hp<< zqAbuCiR1LS@drJG!d_%Wrmoz>*DsyQa}VCmw#}RVdDhK8lP1*#PCj!UMsh5}z+WWO+n1oT zFT;6fjmOqfql>I-1!y0nQG%JBOQHtCtY5vCDGfzz**nM;*BnoInGZA3Kl-z#Ze!*( zI(lMMH_xZOp@B2bI0IeR*|=df>3BO1cLgp_h%GyMxcfK1r@F$!q=_GHh9C$6^XE>W zti;7zt6C^4@$&6&T==1S?*Gb5QIvvW?!Wl5ESs4p{|DQ)?!ho}y!rOK96fIwKmE5a zFlScthn!#nJv}|#|DO-?^WQEdnQCG$xr)V$7Zd64<+(?H&*v_h z1M${T@XF4|uyVr`c_iLg)q`z8=Rg)g6qt9$iOiin4y}LJm>?6KVI)r_M!IKg@CmSN z^#Dy_2OhVK)1}~cJFsoI_pu$Ev#=W3GKqA@P@OVfp95J@=<6B8G%ez>G{HcD_NU0u zR3)?Wtyi&Jb=1_>eRe0ArsaA5kza7z9p@7c7m+@+m*Gf)fdLnNhobbiZXg@)LC+^~ zdfh0BjE%tb@j;Fm=VbM|PSij-*^I`}V1{hAu=^AT75WBpBsF#Ph8Vg@bU>tcz=3%f zB}TAK^x*-95;@ksJHVlVJdNW@v9d`l!^AQQsfFT@aXEG7ObyW9ULg1S{eEu0{SJQr z`v({r?5FqOGYm&|BZ>-DHM9BAFJI>JE3c=eWj`M_oKjv^%vG14#oMpk!3|$Lne`iY z@_+RbMS;KEcMW@5qulf0a*jKCA~)T55tS83)~J2Gz5M2$-*V!T@A1_0t;mXZgh{`J zfv#m-bIrA^UAt~1jfGq`Lnbj)s0qe61qq{dyEvl3lG82T-Z{iE$4*BZI5=kAa~T^s z)P$Zobj1A_ifatVvUpSxEpOs>I}k;Ifx!%W4kXy|ZXfHn^|4`ZjKN5n_+SbnuQP3W zEuo-?P|#aYQo}|PMZAF`PFpmNhkkt<{k^^ac#Zwf-k8V!ct0MWm-_lJ(L>$zwhka! zHiq7VmdPW@HlCn|o`^?2YLMQ$GPyri%?Z%OxOH9?adPv?in3xi#-Xuw zku8UiRF&*d4~jz`6RK~o>tjM~5gxCKp%sD*z_0`+HTh|Y8i0Y@DYJcLKXm~ak4xet zx0{L**O>b$I{m04!O-=VI2;mnO{M6%MJ}Ur`Uw^6-`C5O zhVc+Ph;0k_f({Y`op{HM2W#N{Mbcc@UzvMD*`09-x+Mg4E zqfVTR%i};BJglVFZFB=H3qF5l13&o5W==k50XN=!F;;ZfsQ)%VJ`3)O8WP=Y1$ocI z=5PC=Io558a>0q!_=9f36-DH78Xk|6>M}QXedp-0w@84UEis;Zqm5Y7pd|19O}uEOY6M+ z+QqmO3o}2WaAoM2nHZw02vN*pBnFX3dQPe;VVO3Q>V5q3fsGt<>;%H9A3;mt@~9+Z zF|rvQm%~dw9mVZ+f^E`V?c|$RPNY60V#Euq60c7sI;2z9C@-#jjK;~Q;SJRB&W1tWTKx?54?f3_Zo835lO~P`_Wa)u zt`EUC$z;-O-MWpte*PyqdNgFE2vA5Tx{1ZRxO8rYS?4Yyr%P;U-GR&T(W3+&pX0Dv zdL%`aK$bx_psB8iKR)_(!qpWB!>#D?9uS0rnl+%C9=vWh2j6*t&|zi|rfGBEpY|}Z z&WqPAqdH^)f%nz3bj?5>ae1|En@lo`Bug~c7f}*)^Vn+#a5@Tq!|jk*II{vt6j`$) zfv(%kSa>EACr|n8f~=~hf#YW-IoR6E(|_;a=~subY#B*b(WPdRslAkYZCVdTm{jLN zAMPH@Fi1uDFo9&JOQtyF1qvx#7Cw5RxVmX^KJ~+IR0`+>9ASy7yC387xSP z+cvW&2T*edF|k2Vad}kip+ZgO@<|L17#R5+eXWINxcC7gYd)9bzPo=)taB@0IK2T? zk+|&4ncVfrT6$V{Q&M#_4p%W<5u3}e`z=F*J^aV_KF@-q<}qc; z@%B4>>$~?-QZ@lmbRsKGa+xU6-c96lQSQ2W3RCLC*f!|62o@Q9^RiR<&695&0Tftv z0euxdp!O;X0*a>wMd(5lq0}>g9qmC&BoPFqV4p15=$e4HY8=Cd+L1>1mwL{`vfU2UH|k!Nx)s4LbT; zaVbt@N#d-FuI2JCefhJ6@Fk_76LIRo8gBXOJRu$jNz(75Jmb2lAl^1 z-tAGDF)>L0!7esz>%|V#plccqmx5&^i1Z8+s+mH6XM{vFNx{%fMiAWyq6aV$MS+r1 z4|?7tK9DW2s~s}3>Y}}^ZR~?!nmqi#y|iz8g-cJZ$Dv3FK+vc1!)q2Wy$16AuQJ%X znS3^ethypXRmsyvDL+Z}FRZ?q~MV7jxI$ zuToku72C2%4!6_U@*D%5uhAIHbMCwfrquhfZLn+!Zzw?Xqw5tvCb!* z9UU|@RgCc%FRZzR%U>}{T-IU{^h69nlnRppriEdcm`VuA>7sr8J2+h`xulLIiafWp zgEbpt95X$PY1z2F4xBCp)3isadx9X~_7+aQcq~0)jb)9_JLW7uF};+*Y>;TahI7uI z#zTKNofD3)W!mhyqqel4*-6%Ua6gmgJFsn&-bfa=%Y~u{myBT z2vydS*Ya4Fjjmg`-3rsk``Nd5596BNA6Z!a&T=*_dy*^9Y#5mbE2Mz3Xj5FIa^n0t z-draTO&sLVuI*Uf5arbiaC*Wxy%lsuOs>4{R~$31hU)4nCQWSS%+rs><8l3y>7?)} zYd(RY!6+LytmF6-PaZQncVuAYh(sd1^6Kln{OVc`v_)~cD=96XjA`c4(gXCgzkyd4 zX$rdug~uc1<4maWVOci5pbLM(=7-Imu=62yO@MZ7JT_ILPOZ zuf#MUlQk&{7S<}8)i88@#ERDjGz3XOQ6x;uX0R`fH{eAQKtRW~EJUdgOhd6OrfJjE z7{K}zPOkrBL8hoqg1#(Z(cYyYD=sWsLQxBIL-|B6nVe4Z_)^d#AK!Ad3qyH^ZjsN6 zShf#$Ni)qA#SDr2_|qTW;+r=fLnb$bqDnMP3A1P2I;J1D04e#pGU7mb#8_%wYQd>6@kFOfl8D!(TDK@^lkLO<9$IpNLXBHkekIOGU zk>cVYb+wg81j}HwUC1oT#s7L7!!W3-s%Gl+8DoMqpU=_O*3PO`tGVaiCopX<9$y&4 zQc+!%Xj+C$s*i&QHgf%GVP+gZh4D?5Jo|bJ?Y+a;fgSQh6j_If;P? zk=8wwRRwUmRV-Cz_0|rWYTT5D3ILQM%NVAY-Ma_KW%D?l60$5(U0qZNHd`Z|G5{N0 zv(RiOO?5#8eH(_YAP5q&>SootC||usz@bVfzv?4tm;q@H#`7xjt+YjI4>CF;RsBG;{WnlNmRzo?y_= zmd%^_<$wG?0wrOt{pyXl+#a5K^bz*$*vh$=U&W4j_sGs%&!EX$^FC$9ZjIKg%`@@XG2wzI0hL zv!<3JND7vg!ASQY`N}xuyagP;#6U7FOi@I2%IN(Eu@ZfwbTlom6>MNV(r9gL+XC3) zNDtN|m4SvC(^&h|Q%D{sPPYo8gn)n|i)7(2|7jZ|o1l4oJ)*4O^7^m@kz^uDcYg-0E_F>y5Z?3n=WOV#~l|5ZO|9sN^&#~}xTy@4YetG)| zDBcRb{j+_%+vY)#R8&P|sBbUloMdy|RmV_K;w0a{pW&elPER?$%ISqBBm$PrsD-Sh z>qNT_F>t7p;oeSc+rqSL-rPD&b#pm4e0d>Sr2T#5C@-^hZ7WlcJDGI%Zk%%A_n0<# zOB@KIjqGdW-E})i#fB&e`|uaN-xD!R8^g4bjc+zsV*>3F=}kI1wIzJC3+ zY@B5u)ltc6cyzh0{ooeTbeS-qXCZGlSS#rclFK7Wv%!qOiR& zKa*xpC*QvjYyoTshG8(2u&JJP9Q#+TBpKBvl!_8J zZkLL~p^!@D$mcXfQ6OB~fG8E@AY@6x;dUTOB16$3^jw<$;XJqAvj#z}Lv{wqXVN_L zpOXj$T>SB|1V8=Hhd;ZMY}bx$oN;mkvM4Z^lz45uPIY~&4R$*r1V}Tc0 zpm};V`!;W8>Vl(4v~5OJB+{82QdYq2QAgb<1)-qTCkO(WOddfHNaZaI!^WY?6nSK1 zAZOWF*oY%(i$j$-YI->v*R*ifl4(cOjkYb4*9^Qam6;O&*gz-0OKGn3bN(sQc>JY( z>}grYj)O7Wo-(}tMjW0J6xE9;D!4plXjY!Gk`Oay&cx+*Gi}CD3rjakyTKOdL=q|KeglXez8P`uEvnQ2fSr#S59#lm^5Yvc)NIaIJw)NOcNC=564!4A0OUMq9e8$AKZK6F%vT1E3Rj@I16AjQTk&d1eTU*o2pI^%7 zPOZb~5HZtZb7Vm@De}7r1XFakA0iYQN3MS#4n=05J4wxiCR9;jcUP93?+(yZ>m$D- z!f-+(me9cMqP!}^zHJ>`a7sPpC2nMgLhn$X*if38%_Rr|RF-=9uh(~R+Szk(`2*w= zaTHlXc7$-aO|a9W)GdeGBGH$kedi9ITiMFSOR<-fCe^JdbKt!TDHL<>_Aozhy z?re#1@58&9H@}{h>wEa~Gp$sX7HX(i(!ew=zI^e7Lgpa*F|$KtGCJcHo`xw%Jon%; zG&j0Y6!AUGAE(!YF`^7yRp#aLbH@{n>D=?k4qjj1jo+nET~UO~g?duS;g1_ z3=Nwo>ihPprmG%HE#8hOKS*fR2a66@C6)ah@ge6Os5b5vZ<}1$Nk|h(#Y9?#<4Y6)> zFBf0(!;jS7IHF}DO1M783+wR9;c)Ve@BSMP|NeKV_7;wrQA?3`9Pez7aOZtbGp@05 zR8+^dExc}-bSh1tvY+`+az0~|d&gwLZg z6wkAKbuUE$7kB>ZS{fU|*vO=#1K37kQ$6tR9$tQ9AEuUPsHY7p>m(J;P&4O5Tty)s zyZcX+d$Uwm`Vqv!Fp;RrAlj%>LC-@JOb}$M${c*>OEdY-U29ppGs3YzV`B-CNQ#nT z5Ba=KCaYs2(mb;Ums4W%&VK&(b`Np0n!MmfQvE2h6I~P8xUB-Yx3&NPAOJ~3K~$A1 zFM`I#V)pLd#kl5)|NB8^Sr+@YyvfBU%*VD3e*R>PuJz) zaJ!^2JDq7*Ba|5f6Pp!V2XTd5eB}!h-`~AHHZQWkF4R+#X4bHC^LiSl9gPwQkZRkB zBrC)s{fMGSbG?s?Z#apH5(PV##I{WAL@%bKuwZr>b7x+JVM{oi4ir_!wr#d-uI17D zUgv_78ko{l%p0rsa^k7e$PY%)El`X+p^$@Ew@xl^qUjcjLq?J%wyt>#ZoXwqdOfir zh~FjR^0}$0wDE*zF>U(vPrUA#Oa|5Q$@?}lXV2k|pZ|vc_};g{ZsElFB zJY_74!C6v7xHdqj!iRu}4M?gJfAuVKz02Q6{IUjH_6%`BTIaQQx>&ZlpP37qIqQ-W zY1!AyQ-9me+2_vXtKT|`@snyHGfb*wEeHZ?pbF9D!paP@b$6V$LmB2x3}9ws_(COk zip%kpRkHl)mk3D1G&K~Drks`q*cySbh_0Cgf*u6hK(NzTf`{_3hjFz&+WOMWZ7$}( zfhd+`Gd!F-49F_*^F7jyrUE#$TL0R`K#k)%Q|%NKBB3KE-JH7-7T z+$Re#KoD#M(Eve3k|ZY09!F=(ZhYlc6px#TyQm0##6l^ZHR$h)W2Oc%;=P#30n9`n zM(hxJq!oLx1!-^(M$dM#?VHJUY+=U405^Q^93EeKkVAb*Y6A+1b^o;gdx;ol<F0NU{0iT@`6P~-S-~||FXGWhuIIuf6Brk^F#7isd3QawS_&_C zl8!|&4HLy76Yc829Sjnzsb|xRuaNI)#phD#=}ytvk)-!fiot;_nXEu6DdP1xu}q6} zS}OobwuxogoPSCq{jofczR||^))>jGfpyqJ=_zs|2m+5jvzLCYhMcL8&nD4xSp-Z3 zK_Z_SM#QA!P@Ljo7rQqv`-enL|LK!#)4DZ`Z>qz#ZMN;zs1B&)b^9Zw%XCLIZ*6Gd z*x4lWLdE}N;+$PxYnQ)20;Z;0W%Gf7eOkZM3Pg*)CD9( zz$Gcnt~AJ|;uP1_VrFt=5`)-+NMtBaxU>lDbUE-SMtKM8`-da zHxo~YF){4KNX5WXken*IW)KLa`Jt=fVQp1Bp2KtaBnIGMH1E(#h!0%JBESrw@ zC|~~C%>;v?PrT-)sS_Le$NDzDA|JA%l1SxoI-Oi{_GIq7{d)4>{Vj`5IH~ZUIs%9e z4?@O)O#vjz=i=Dm!%;mEcWDimUg74rMUx46K##VO85|w~Pwn?!I9dk0Cn}04BT6nT zJvqW#6c8mDK@<>F4~i$q!40b@DGO3rdo064!x)Bsm;r{3U}^}0Mzn7jK@bQOdjJjF zw$OEpK#>E(u(|mw)A;p6yZGzM9>!O=@Ou<&+h+FEGWPVQSbsnvXQ^n}g8rxCEJAXW zAj%HhiWjJ5<=Ty$a9kb7AMYm;iBRY9{O<*sWtzPD^rPHzL&05f`#xi2pwIqDDvv0; z$h#)+z%vI~v#p=)do#56q;WU|6jkB4StVR|#Z;bq?I611$5dTN+F^Bot)pjC2(qu> z=qXu9O2N=A-j~G4=IQC^Ky?T>oi<>SPTNdfbOP=`F_FFq$+S*5Tm+x8kkyAe@Hl*2 zdD$#3xNtr~W)Lemvb&3gA-};$l9EzC4pkx;bPP z4r~isF2m_@VC9EKQ9VIY@dbmNdx{@D-a&rwJ)OGuHYni;hJoUAAQer*RW_blrhpI|=ye`5O z!BL*5jexGp zGlc3IX_Z*UXe+m^E5vX-&-5u}EPeR}uD|i7|Gji^=Z>vZ6en@JRR#t%9$T8C$mhZ~ zjF0`fKyed&#tfG2sVA+@#b0qWa?wmOy29}b%9t{~7}JFNAKgh>D#4Nu8@aHCk(DgA z9z`(PF^0FJ4elU6bO6=t#HI98TjQd()<6noWP7fZ?8vyL=+i z1AFP(xQ=w%L>tl0?~7@;J#M-;FUKBkB~)bNcI0r#IV3BE$8F zqZ`Fe0M-#iw*GXOmewdfugdDBzs2}(p6`zYtNs!BfoK2nD03#66bIe>@#!8qB5v|| zV`MN-#I`hSQ^U3lY)i+sw8Dsk4XWxv6clVh!O(JKGckNFi|a3JAeGkn%ij(#Jd~!j zZGcdDmBKvBv@^P@ukL3`GqKGJqSh|TIdXN+!Lwy4%l8M``;B-nz0)#_u z=1wlAsWyPm>%_7wlF1zLltFucj)Yajj9IfkQB5`+i{f&7*tKmdP2-y>@&^uUmgmW4 zvlxbss;C%-jwH#fTeF&%o`0U7-S&NM{O-ST+Ibf-n0Cw0S1I1Z{EM$Njq9_9bwyBLys|%t8wv8w`#t^^<2Q+;3$5B3M4q75c*M{XJ zdk%oxfgnJ4B+Gw3xsQ31gG{fJG4m-DMIsP#7ltl%6GOL9)dHyHa7t9whLB_tK@`cP zvS@~gpr{CniYSV_v$31q-9B1c2beu2h~KBuaVSCWkc(uz7u!hVRpR*7C@v{Uk=r0t zWD}1bLdvxu=tBs$4N6hrUW+Q3*d7)iQ%h-Skj{Z3#x*wn&j*=hnmql;eVn$alxWQ0 zmitn8T@DaMYz*?l`^ZODlTWmekMF}w9Y9O8AX|B|$zIIdP~o+fhC@{lM1{G{NlrMb zg8oQ`l^c4w`fJ}}`76tKeQ67`rUwZJogWyRurYNL)3C5D3qerEJgA~rxDmE(A}bZ8;_fOfhf4F`o*k`iFw7?cjdwp=C6U3-bD^0rqx!5F{CFi(F(AQJY|*i z?>|6sxCqOzNW{{(iVC`a@u3v0hmvgU4RX`%zvJ{J=P-Z4F&ur|LdG{Yqbf3QzVZ@} z-v4XLtLv!#z${irTPqvat>Vx3-a&K45ZPD@YHlNYIwkzU0EVe!T7{bJKuZh1yyG?& z9Jh$?{P5qYsHhxuj(jgzYwE|bdgb!QnGgwjd#QT?T~?c9YB+k+(8Xju(+ksI0VCT~haVmY2&*2yKu*I?-e znY4zc75b#PtU*3!lFbgQ`B(OG|6gBb;^Zl`?A^o4 zch=)^NxZnUgOiRf<+@8Iv%hVS1DytjDbhKRW5d>7mapkSRYe->f=q5I=9I;?ys~sN zmRtss6G8S-8R%!$^itYdcHs(4p`^6*e=f*u%i=e8exJ!r0wp0g-@T^`OA3G>k{{Z| zyoq^ky>1Q_VGli#4Bx+dGcE0LENljbb0FHBbIJt1@VUuong*38GH&KVHoO}l(tUv4 z2jiUe`D>Un|0ujZAIB{|o|BfG#ipGx?!Nm4Y(d1fBmzDcvJ5shrYRr_@)13}LSIBc zmJ3j?C`s6+h>_^wm6vxhchNM+#0w)a_WP7R+sI-hdk|GWj$k8Jet0C^{b0%R-o&oT zfo+|XHIFAb(2Luppyv&;={$xl5FbpE%jvwaU*^a6{DF!O&~rplq^!K0V-}sjoTC@A zYWbV&*t&(u)21WKGRb(170>;O$bpx+^z2HeGzXYDwUVk*51lRR*tOvW9(jB@IZb2r z+wZXMop<=@Z+^$L88hka?ZM%29MR}5DJ^5ghAxzRI~A4Hn0k85sVxWvJrqTCp!zBh z9e&Jo7lJ5b>V=+@C@Ua{96FdK9#<%zehf7;=dyj%Zo0QDqr?xvkQl4&^M^_x7QEy z`zLo(H~my@yZb)IPngI+e;>cN?G~(}sdQ-5N%kG!rY{}GbFb~<#pS~!@-m6MMMrOz z{atzXA2NAu^$>=hrn*t{=5^rzp=2!ovQ&c(^cVIFu|3n05 z1JPlDH&<-sywjRka$*zlw2z#to|%izCGDJw5Sqfk{upGmdC>UwyDzBF+@p29a<)ZLSfWB zr(2|xc}nUVAXJG`JeA{5KJ8=Ix5)2j&QZtUbUAtE$-hurSI@e4mNL0?H?yaOM=4C$ zCXysjU+rUJV}RKcUEKZKSCJJ5zx?g}I2=y)AJ|8Ab3wela85$zpMr` zpTvG|cFG1p7O+hn*%?4o+?bheY}+hY3g-=C18EZZO3EhBp>*;L_U!3k*`FVyDxgtS zRY3k6juFzeX_L(v%#~lf9>Xwsd&P1dec~lt<4>n-@*=c!oSQ!H z$F$&g4{u>8En<@^WInt{*w#>F2Q8g84k^jJ>1Fsl4xWBt1Cn3N4(eom`7NmP>Hb9Fw`zD#+zce*EVQUVk&f z;f!xVL{I`C`+0lSI!->Op7|4C>2puBaeWJcvU-Xu>ScuI{z@d(iz`@z;w(ZCM2uV(BOS*` z50i`R$H)xgbqPH2Q!BR_c1 zDGW!_6jfAWrc;Pk9@~a&PGrKd$5LEX!Nwh(%sBcSs%vUL(K?4q%cyT`;wzV(fi}F8 zYSTgF00a+M>y{1~ZrvRR9+&KyE$7WGG+iV_I3b>kjZ{q+e#@-Wk;gmJr6MA-?p zjvz=FhDj!4U|BYbDq$Ele|^23xf6nvgZNKDwC) z|FVh=y9)ta*qH^u7yRM}@r}!x@VHgpSlP*7s*tUiI7#%hvG~|3YHN%5 z+q2tQe9GycxHkL5eX>*{!4vo1#!qfPgPws5+uOZ_{5II2=hIASD#5mG_IC^;O8$?S z;I)xmr6e-bxaX0L+knm$D}jAMAe*A_|@I_(%aX= zqT^4*=kpQm?Ly1hyobVTIRj5gJ*lLI9ZO;6lgOfusu+bpv90$CH$>Gj3g7!Z0_|N% zDkS*>I)EQ|$3}+!U8~Tf3M!k%5uPxWT%v|}R|jZOWW~T2a${LKfr=86oe30=pXTw6 zm?ms^{Vmq5>|*jUpRQOAhf6v385r2N)kiENa+?% zJZ2W%y~F(1tB25SKLQf=XfM}33@w%b8;@eM_h5|4jUhq-2Zxf`LZ$?y@&Wej8{nvU zH7M3DTKDf`{DevW+CEuVXB)>I+knTd^3KLyd?Uz|sb|5qaXCjuTm&0M^?&@Jr@MmJ z*W~Gsq^T_Pa_t3m;`1X{#aU>ELuz&U&4#eK0_!}{3$}&=8Ipsk@jSeSJ!kBJ=90E zdytB0&Dgd~I<8|_F4SN-{;3zDiB8^n<|%f*_E(yU`k6bcilU+d_~CWisA{2Yf|V<@ zIV2g|vOjVZr#Mt_gh?cGTZlvU6Dot>*UFf=fPX;1>_Qg2P>g;w(lG1o}IA=0^4%sv`2#AKykFsAbB; z5EZ4akITqV9TH6w{G`)E99a2xVuL14M;}YLW*m|%QDmFgmO*&dENmUjVV!VY86Eo$ zvZLGL>`#zdn5IcOlS0>Zz{av|I=WI!X%7B3V=XZF|EYWLI6KQS|NnhI_4GDpdP`=~ z8>u8A^eRokLUTa{T}3QwcUM7B+_l%WpdyGatgBQJ5UHVs6w-S#GnwAY=}-Uu@tm0? zBw*NeU%&l5|IBO3ne&|cxv%?bpU>wSEzmk^37JfWVzEGVbMYFEX)rI}2MPQxGTD1x*uZn*TnNU#Gm5;$q8wHQ07M zM#f5P-#>~F&^=UOY@&oDanvjXMbl9O4q+vX8Yp8yO&dk=E1FfQAjP7?`3sY*T0NKj zz2p4q(VwCwRuKr-l%tOv)9OM<60{u}BA_`KwuK}DfQ{#wfP(AFD6)cSW{Je-QDbLl z@19^zONuKmox`Rd^&=}Pj%{Hn5ng-k0PnrZrmi;3*fV=@9Osy^z5gR4d*P|ac<&`a zN`}qmg9^3PV3&n)Y^#Lh1g82KlH?Ef!;{_+5g=(%Hf-C^RhP^s5z}d`*0DTy%8k3O z&BVxVg61%*=gs8CuU(AlxvXE;#p591HeT04O6WqJy0J1J|-kEh&rGvzy8oFLqOM0E*g~JNrS!o&_mwj7a zX5e5o3(q>mmppSysNo3cP}QPQHKP_UUWxSQF8cd=P7K0jT7)AJ#>YoVr7QWxy=~n3 z>4hX?+SKN?EEmi22nJ%zTe}IK0=&ct~|E| z;kiVs>Zm||s#hvx}|&~QBykWiEe zo+shC4vHcp$rVV#qkq(6_H-Xhs>l+)V7KafJRvh|HnRV~2n!cflO6A)SS%2UME^cU zRxISPvInV1oy_h7BLp=S+cJ(g4Q;xH1dHZOeqUzEy~#-`goIr7bXqV(G8tqbW8gU! z#o{oB4z1%~u3y5U87-8CCg|RDkbta^5CYAH&)ohzS6()oXvEjn>lrApc3n4Z?LKMn zstX#p@brcw^dFACOv9lnu2Zp~5^ui8$b`X*Yx}WX!9>v@7*d%xGsY>)tB6F7Z4k?{ zM7l14qeRGO$7$c$NjMxP5|7Y!Xo%{TI>1BI6qdJyc!*6r+4;R^eaEvEj>}B`CEGN%R(2&+Re^H8PSjF=kG+ia6`yw}{;o!I~ zo(CQMIqrL=i?FU@+I^^s;B)Vv&-|H{=$eXU8VDd3(dg>U64G@lq9Jy-_jBuq)-YCd z_``FfR>{J3T=a;}_^68{eA1y| zIs|ozy`2S;)ludwZs4?))r6uEyzyhbkZpV9iVCwpn;mZkj0yQflD z6Q{Mc4oMR1*xo~9Q;NpAD6%Z`^Y4C>>Y7^SFI+%2n<1CWQeWTn28J#8<-dQQ`O{Ja z8W-}HXSc9<`xc55_i*KzO^A7QWOEs&Pft-Qnv{wIBwW9m2;Ei3Pl3CMyj$3P1i9pqkxBHIgE_tiN#cG+hP6gVPr{A zRT0N1m2e!JZ~b~Fp|HXYm(4^|1tSwCTiYhMbU}sRtCS?t5s3pE_tCm+2I=r1IU@yF zxSmTo6+=)$5Jr;2NRo`}`e+f`Hc_?1Esodr7?ezBs#PLM3a)G6xi&&5n4U&gZywLX z&prR1)y4ka?y?j$ezVZbfhU(Am4#*IeHscDYEA$EAOJ~3K~xI(r-0{_b290OB93_7 zrgE89?-xk&V`Dt~!a*c?4yD2%TBS-&I?B4Wd#RKJ0aapTXoR4yk&H(u6b)+P0fve; zSDiBxJ71zAAb5P+2xCPX1e|?J{V|McvuIMvnZ&9hWF`y__2$@laGXN}MOL0Qn+xB+ zjQ3SV{HY$eIJpU&O#g9npx!>1xpFDnw|6nHV;?8YNHEybPs`jHgi2Y?KDidhVTzQx zVrG=P|KkswciA;lYx(*@fbBR~mPLPGAJ6{vubg(~`TWxtZspFOe2>n)&Ght@c-I9@ z2mzU#&B8?u?A$lZjsrPv`r?<+b)Ea}`3*DY%;Cywu0ho_28RZS#o~lR;WEJ0<51Tj z6a;G@`wz^ev)T09XXx+l=k2TOs7qI&#w+ORHJCj!LdStYiUkuzkttukP z0yV7h+J*xh>Wd-5VK(o|aO!f4rkVt+PfGFpX1|K4YGDew5g!gGBrLO7<}^ywr%UWU zIKraYl{D2yQKT^>S;KVDpM*B5s-quD|O11 zJkKhh@Z~;)=ioWz981W@6hVw^CktoSl;sFa21i1GKvu$R+||WD-}V^Ma#(Tck{T-F zDu=rI36zICG*?FHD%u3%A$od;sgCK?CN$bcO5Av9BgOFokzmY+Ka~lhM$y73nGE+? z7-o?>AMN4OpF5p@oKs089>UJ%a0feZT^r|3)Q$^9m%2H#=;#>YrH5YNq!~U~H-tq% z*NIfskRR!#uDOEYp(03v=K3h=Ywg_elOOZ(PkrY2&FE;1t(%AV-Cg%^%WYqyvB~eN zeeRa8vvb>4cHi|Yo>||)nX5zm^4=Xp!zwRt7~q4SyM@*nK5+H(H{U{cXBXf2>Q}ks zotLw4(PB!aB9?7YC=?JtQ{yyt?bwbMOmX_07?FUASULkq2!yO6hvRsI2gnSnsFH*n z)UX_v_Pt$9pAG5iMzWbKef?Q#YobW9f@$O_4(=<{VRRPHY~qLCzm7jYzJ;It;#ofY z?iQxi!*KU5!tol?)92zC1tg;va0x{emd{S}k8P6P?MUD#e@nZ_eOMs zjv@pL>O;({2{6<%MlMstC|a0?&4HbLbajj{Jd~%Dn;;yJsjiTTr$Pi(38S|UCzHW* zv?<+?<9V=&jDr`fVQ8$xU+;aIMJ2a7BP5EM9JA_l9=`9+ z<5E=|$Kj{{{_kwxww<5+{1;OO=I4J3v3Qhgum2DoV-4K+g=bNd3s5RobJH!~pt`=E zs;cTTjxpVpHop+A4 z?9i0_;ACw;3#EysXOXNsg`R$^9GZJveQ6W2*@vu#aO^zA@lMV=r-iX`leTv2gxfMF zg!l*qf;|4G$B9L3X17%E!n&P|Wy>H@;Sf?rxZu=UW;Dmy+dj^&?j%AeJ`6`z5aMVr zW=`zkJr|@|v$O#TxbM%q*xwVMl1Wz8Fhb~*%t5ZZXg2M=S=t8*1a*m_ti{%jQRJ}B zyyh5v2ZwN77uR*!awyB3rVw+QqW;62C^FoaVRSHy5DL1kqv{&*n1%p~wu=`E(KpV!^++a3sR2Q%_?o zSK@}7K2B5X%qh@iI2fY3s)|T7iU785-Nq?v)^No&?x{lc1>K{BUM|6Wjj2-c0Z>rsX_=pT`&sclnNP4%S8*PD48~ikjF&MU~7AZ z1yvzJn#|Zpj?>Ovg(OUN_Lk@y&oX8?WGxq25;WJPkODd*If+or2UiPOr(^#%&RJbY zFrW~Rs=U0Vi$J&@&l9LxkZ7Wgc-3rzku;L5B80@tTl1`#ZIVugnAQ+u@BR*kG9d!t z3T9M{a{WKd<_`}Zq;cjN&OGV0SMA;|7s{%-nnF{$6TOQY4T8TraV~53X*7S#X)7`BWr1`4^t{x zxSr<&U=_c};#egj6=@I}xrr=DpePD~fI={&v8XwUQOxt_C!Xbr#~%teJFl zbTH6A!0b75IBD@x&N=^le)ZiiFlR<1AHH-Jk+2S)kBV^|mt5Y0NCIPG3{6r{B^k?g z&@_dLiV%^AjIK+lvP|cJL*z1f($!T6HAH{U5Q(@?@%PYhY#q;&u}c=)w;bSyKYamN z3s5pjD6&K}>?1uq&%t#J#z#iV_hA!{Xgt4Vgc<1|u}}chw6QD`Th&;n zDw3|`g{|GB>enF4`V@?>P*RBN!^~(-Fs(k$*m#Ei5m2-=p?DoyC^dDk1K4IBSq(7Q z+sndPF%t0rr?04{sbZWhukAvY9A0^)16!HK7jOL<+8fRo_;2>f=FDHn)gSyApa1I5 z5kgQOR|x1bm!5kPi{{o~m@YrNcRQwh5}qrUgG3KS_OLAv2^ZTgV2o|$rfU~aUmZnK z0<2x%#aO8cNiLx%I~)AC)I_gjBIOrjvKCCLRaS~>knpVP6v2t z-x#**;kq7@5GbmOdW5QzuW1k6BPJbv6J?NWh=I;5!$UbDs)}bAM{_>#6^2K%QR-*S zp<~-FdUqeBxi*X>LCJEt^T{6m;i9=rtCA^X3}jWIYsWU47A$7hGwp;Eej!CF7lCA1 z;_SthoW8h{d;Zc%GF`>gXd{Tl8Nj3B+t(7F~0J>pRi=v zaymOYxb=&lqBPOLnak6hx}+M{cKxDEnRz@gT11jyUHb%8;Q|OqH=FeI57Us)nNbs` zwJJ#0aE=Ez_b}AHpQ`5bQM9Agl%;SZ_dULerSl6^R)qNQRf|ymu$@O=+>I7K4IwF* z#W8F%hhr6R9Rm=&Gz!1FZZG$JZy`ozl=0CLVa>*IC7S1)#^-OjjYu?l!iA3$1_%ow zSh;#N3zjTn`)SrX+F z*R4R7CA#~@xbbV73505VEeKV`wk#xBnTnSK!4$(8i{6nw>Juso5*f##rY4HzxV*Bt zm#(oA`I5^(u|!*UiRE)sXfjiCtOiF7{`09W?s=k{Gp_y&XI_2-t1fsi7rpo6#H;El z3~!;PI`%pvlW-i1!BL%>mYK9|+RotqHWD!%*L4{kFY@%}VWRbmsL)24K0Qu$Fo$DU zfJCGsg&s>%%#0xrNQ&g2yk#C*u4MD@OFew|r@va9|%zP0j4tvzufxMY^JbLx&C_Nz#A<58C7A>HVj0ZW`HBPo@^2GLjp6-wdq?Qp&FG5j6$8A%1S~Uj_^sszEh+sfr z*@9{$3^r`pk89hQ#Zk-l$wRZTwV)6O`PQ=WX5eS7xs@PqgB`#<~~%af4ery}Iwad|d&X&7^S6Kj@L^QDij zK~rT++v6wqZ6_F+j_cU|z;;(cQIEbQMG2Cqn1@lS<>CE%F^vH*ps_a2x=o#UK*qAD z4k|=d1>wGi6T<^GYO0y$Ho zc}^=v-*ysV1End(Kv&jRKF%1t?S`)s2!=TD@?M4DQ=Q zC>EUZrk?F0REd&dFp(=#S$SgeZbAs+i4;SFeN&mEZQI16F^a_kjg8Ip_w}-H;Uf0z z+0C?R(`jv;;q&&&*E4^8l5(PNfD8Y6!He4aFELCsv|%E z26uexR#K4=6D6D7Z8@IWxQ%7AVknBBt+&YVgh^Ca_|mtY;0qr)g)82%kdcuby+b)R zb&il~I0rQyqe%_(H#@>Y=HPfEPrT5{yDw-$5`wEPnnhJb7ytUp?Sw+rsIo&OP$U@v z36pa!dOOQktzpi*dBo#!5^q6K?0;-zhmB2U?)>@8oj;!seDEK6_UWhi*3F-V@LU|d z*)Q1(f$JDpxlYX7ey+WI9`Cz+Apu>%5kbCr*9KnMlSWo_9NWaQY``g(Qnh1%ta>0p zb=_)4hqjaV+WGEXuQEPdz`;e6WlYDRDjZ-|b&&Q^gPjLTBqI)cyYozxY;?`fv!3|# zqg-&|g~vspO!n_ahjVP*)Xm}*4HUa~VCD?$lE>(Pug~v#9?`k);`|FQ=DBB{o&vW- zE5fKj9mjNWY@4?A>yVD%p9x7IR38Z*45etQP0`WOaa1MoO><+(Co+n%mP$ZTQB{r1 z#2_`b_3YWRi`u$+=FOW=p-?E}3H`O)y7@Kkzw7&a>|G1-JdbcRL@2D2%NCF&L1l9z zNHV%q0wsVfgKz~x2u?ZsLIMGuJ0EzQ&s{wmH{%=bK({|$SV#iP^88{^zK6`Pgj$~_ zpDoZm;;>@n8HanW{e9F{rFi@Kb9v&iEmVaxmR5(bT$jA8@lQ9c=E471M@vE{pesE4 z*PZ-o+$0!K+1Nf#Wh{vvsw@}NP7rb-1$p4r8hQqHa^ux=&{Uc8PHAG!^a{T9%Pj~m z$XOS@gR{?j8!as@)cg;0@Bc?A{5QI)YihXaz5l?|8+Y-!FMNPFuVIew#Ln)cIQT3h z{rmX(XHMfIS1%=?E0nw_x8Jdzr#5IPYTPfO>XGs$_dtMY838P9VG1k(uN(KC=? z@ysN;F0-sT#pTNyxbD;@7B?pls=|5a&SiE(f=iY+FtaXE_KJe1{`9~x9>Q~6obsmh zT$fZj%4uh{5DtK2I+$4#yJX_nE{5gu)LxzQulOKRd4$iT5rvaM;#E;X$pE(NVp+ay zx8t~2wvB08luQ%Tv{Aea=Pgb0PanB~2k*b16B(`}ghV(J^+~0UgYDQ9iUkx^!F63` z&YV4^s1ynv4xfgH2KmYNzR6{48mNf+BVt2gAGH$<=zh_=IDu3cCLYzN3_1`{(E}=X z{pe?0cf&_0n1c0tMp0A+Ra4Pa1+(Z74*N3@@&$`PJWet8&`NY*434>Geh!8=zp^RY9gam9i(pFX_- zEz*2Uwfck{gBoX3$8>&p&rZfOKIgBYCd}=hTEV;C)=XDdH?HfFcuOpX|3y!ByepYX zarHl3hb&3l@$Ii*pmEtH3t6?eo*B(a@I0~woA3Vi1s;E)h#t^<>|(h@r0L=EM)MG= zgl!cNLN0qXF*V;e5KJTF1Q)MPaqhx;&g~s0qy>B_0?Q;G4zRj8&hH-C$`$9#!Wzpn zuOY@zE{`e;Dr)MEy6+#~{wdb1Y(jQyX1Ap9JP)goMUrF+BPHy-0RqM{CXVAVWLI(P zkAF%iD7a;TnX!>ErcIy5L}r3?MVfprOEh+TiqXUO|B<%6J4rhsx(Bl5 z^*o|u;rSJ0q54xPT^H&r1B3z!hx&`8Y7%VPyqP6y&gHrFe`WRjN;K8aG4+67os2{@ zGKNGb>K9~k*&@Y)NoFK-6s&7{>kJM=g4ni0$@C}cOx{K!9%B854q9s>Osk3$^s6&0 zSu~5m!7(N>S^lzrFNg(iN@9IOwt^gIOIItm{`)3w{n#=RF`ZaMoGe|AF^0Z{9rW>gxV)8QJ<*UgEcR-od69p5xjp7I50h&7_k-e-4-7@WhLUxbe1w z)YZ#qY691>FpV6F7AmU_DM&)Xb4+Z@C?~--u4$L~J-+0a>)5o^hPe9eOW3w{4~21q zP+bt$_Hzo?bx8yy(iI^R=@_G#qOZiH2u#Q0+8d4@vVG4Zuh84u%f|KV_~Vc7;L`IJ zFn>l8JO=@c=S)f^2h(=h-I?X?$G7sU|C~?5jJddu%YmI6nK!4Ab=wDgA)B58mgSPJ z2(Wx%C3V#yTo3XE3)3p1$SRe!8o{7OeO(17uL;rFm*t1Q`7b{E`Og!Jy*YBezi)ui z;SpZjw2Ao(7Lv(k5R!!c2FbYNIBebg8kd||Pa>wUXkImr0#42=}X=1oQ?N(6O< za7aB0OIdV1Dryzdx{3gc=cEa$;CO;WGC@sR$22X>l0~Ut zQYcxh-PFfW=rLBVS~bP`e(;Gcy!VoYhc!iEj^Z(|a^dSzL?bdNkEVX{w9T(okZ{ zbKm5SZ;f;L)gR=fWhXO#(USj>ZTz=~0CpYfVBO0v@$kKO($~HVln~cl;d`!l%-6)1 z0tq&4@8;XT*g(f%6iEsklViB9OE^}I5HgY$#IsFY+rY!aGK&Zy2n55}wu^0*a9xx0 z7H7D4Wh3ny_oFHbCDZp}iKw4{xE^fi$Z*C53yG;Z8`tk;bLR;A4-NCz4LhiP-3euy z2Bl(=o!htYumAE-ESnXkI_hgv^p6;9-ao<6m`TSWgE_M!oO*IK%?(i$Swfa20=mrH z)-;ae;<_G*m`)_5;+6-4Bk2fS5Iz7H&jm^KVV#mMZ~o8Uev;4L`csxKUoq7XA08ee z9*>u01O$drEny3+-G25fUR4$@a?aBk^6uC zcG9U}8A~c&7lu;yV8`DIrsZIm4uzu4=tPmB(E^#QiQ~Hb?vH!v?kF;CZY^GEf@m2p z>Um(8E{<8`s*in%s_GglDk@mKbQzC6{2-qoZIKUO3aQdv+N z;p~NVxGr=Jj$u0&mSF24BQ8a&tI&igh4kP68(#&l|vI@Y`T2>Luc}hA3n}R z(c`l>-^R(SR?*+r$N0D}0e+}$KX-rk3&;VDVll|I$)l#>{C+ zA0(?vK6h-ABr0Ttq=As|aKUpK9WVJ!Wg&y)k6*QH2g`EGQI24L`yg(4c9!P}9(#5# ztIocXcU*QE&pr1nw|(wIl&m1twN-rStN(^+S={~0JLsRNLJm}-$u6fX3G(UBewyZK z)A2l)EnBv*Vf}i(dHZdQm#V3(szncmkR1!Dlp!;Cpd5A|W>rsG*(Db>uzXR?5kHrx ztqf6}4k4HEpW%=?g;1a54NH=*gS`8|2m{0U^6vyL9{ocFHf$XrU$EJ@d6Yy_Vd*KS z(zg9I5;27ZGb`D(y_<{Ap2rXWYZKS4s>O9(Hne5PSq|x_PE40*N`(pP8h_l}#aP~^ z7+gXmG5yVr%Pzc*oLW|GmX4MW^qdmKY!4T#C~(^HdRnHXsjE*C2u6E@ znRo81~C8qtv?!AbMdRHyyWV|rtP z0S+?p%~(V`imW+>EbyRcIP?wWr#9GFL8EslSJq|};1n=Sg|FS!MMOXPbGm3~;X2=K zc%Z8SAtWTd0)&h;x`7!jadz$=B9xkqq$NQpcy<=o^wo}q8beYOfQKwg7{xKhyEpTd z+dj$Gt(*AE)BDguRj9#=qt|&7?CiNGl*_nI9;=kac0m>pR0Nt_WceJIl_v$Uts*7U zW$~P9WZ6g1*QUb+gGzZ^?cw+E^HIppKZXyB-VR4#Aw!pj}xSk6V4znjM9>3<(1+qr!!|Mun2FxcP2 z2d+4Y1+#0Zi2Iz;!?-?|J#E9>dH;Ua?G6);rcndYqdtf^shchYo?{<}25*Dsp{P2N zqJyORB)iw4_lwyf~T|hNk*vN_Lb@`-=!59H~G^%9H_4(s|Ut zf3K(F8pD2GswViGS_6|tGqpC8AZ&4*b}T+4LP-AW-b6I$1kYtW&&D>h{xh>iFboUB zgq3q#nrclJ&Pr2N5u&Ohj3UcSZ;0dJO&Oplua)DtboFIv?;5AOKg-~7kzfDrAfd3t zyp{+v>Z6#p%ldsI6qH#6Qu9x&Z10+Qt^;LRaS0ovkU>ZaimJaU56r{GGDcCIA+EYO z!rRW8&9sKZQSUl3THt|4c9EX`HZH&78d85_l+_y>ndkBNqYv}_+rPl&7tG+C)zgR` z!4MWgFrF!~Wp_W{xN`?tvl3Yj;W!XUH67N0aBL)5#Vm~b1J?8i?h&5rs49#aKnMw= zG=ZuHv26p}bqGbPvCIOV=RmF<9fPnmPO0c(l{~6yb(Sx#ptU(pQ(csFB1kf>A2Z|3 z6A}msNeK3KjFHI{aXt9c^Bp|@+6boY;(0QW#7rbbN7bSzS{x+R4+;OjxI8}uMaaIz zIQ9`6O~4T_G+)ENY)oZ}k^g$<2m|!~*KSn^fm06CR2jxc58*i_Dk51tC&NXjPh-te zAFw-XS`t;2a2@Zkzwuyf!cQqWdNOR@HNbQ0`q;Q>f@ED1TZ$5lHKS?~WG(u}UfFYf z>XlH+^B8PwqktL+!QUG4At_UU3fHyp>}TVsjUjXLE~0nSuR6kMcR9^*pA2MJ>&f0=|QwmEkX{1 zkO+n=5R!h>Nj>E~g?gNY^IjK*Nw1^wh{JNke}_vJ9?qoaKi;F7^iX9_{D1Xw?Gi?D z7_&5jRT?0m6bR@lpSo@#70DpAm0>DVAwOJqyARUK=eq1Blvug+6yXAU5|Dlto%DRs0v1NBZKe%Tz`?^36)uZZu zKIYg4iWvhJ?z{CVsznyhb0`)15N?s8X>r+_ z6mwgX%xH?!(hwsV*QfeCez@<){Mo!kp=2>QTBLiR$oic{Htw}4I5A{3gce91vA{>D z0GCBTM46c9xh_K15jc2AW$pLL;Mnu4gl~Ep`u(u~rrUZQ-R6j&yUuZS`TzfU`9e#M zmBY3QSfvpxGeb}lES{xs?y4#hQ5_*97R>US!Kz z1RXtj2J_WK;*BV(PbQUw&j#^4_n18FOE zF_tV}@wbi4wk)o{@)ACCT{Be`zLyvtEAaI@Ug3o;B{aPTJ(xg}RowChv`SgDKn%yV zF$)<~J&dC2C~6RdjHGBs^kPyrC=ij+>*r-aB!$ zr#P~c>v?73tdCfk{1Zi%aoi(bd$=BVgz&z1#Q*imC!>QTYj~cE=h!$d$ikf>2o_Bb zMFLfMV`8ac`JO-$pvoRa(KCfseZefE zVU5aEkZ4%*Q`9ol&9+^(?ipm$&H>uH$62>+gaac98q;Zlkvb$vL6X$+`g?y9UE@ho zIXo8#MLp&|7uN0J_Rp;(8u43J4?Y{<10Vh3F`6pJ7}<{PTlxMiALMJFJ{3ul*>iA+ zo4)oukdI+W*2#@D)cF0UBlkAIp7t?b-PX^#Z3A=;YUJ$%fk4s^6NH4Ot5}ZbZ}zt^ z+C~!KxbD##UL0EiJ?4gv_}OF`e#%Ks;vfOjhL8@9E0tg4m$#SB5R7G^z2D{Br4os# zN^PZrESYTHC-LmYLEf=Oqq#B3mi;O(Z_QB=7u@!d1lxz3xZ}>P$9xu55nOV*#>!>B zc4f90;a1+Q!=@!<0|(`%ryMxuAnW8*&07pN@v79GdWrNHxNkd;GUAr2#R zCd=Rd&GzaPa_22!|0J-?5<*Divt783MMWq}L#4&C`AJqUu47(n3ItPo$HSMx7@H`u zWzQflZtP~~!7*OgZcv-9AQG)b)nmv?sLcBC4?){1p{T*BS!+Vk{hZeGe9v}dHQTe9 zUAc=N+y-U?)9DCh)_12Bk zbwO4mfJZbr8-&0H+Vc(vUpBb=sX?ZtbC|_;uD^Ub^IB8Xq(jKEM0GmE`D>(UtVbAwO#w!*O|u?VM4JMBuPb4Ls;d(^tv9vDCQAJ$Z81BDdBoHiXOpn z3}iXL&W<2Yzu3lEr?hb3K#pWZ#ovZi>6(URIk+CQ9XLp)ScR+v@F=0GI*v2hQ1ypp zTegAinCMyv%gEz74z80$NdBT&K!^h46CE@p$5^=}#c9hHF}I~+3K>6n@>sUZ&}e~Y zUhU$~FBKUoqzMLVktCH+tc>gz0-;J%<#$oeqr9Um;y4B-Ye(;l*F9{1n4mY6@41dI zX;71Zpe`872Pl>-nvyx*dvO?5RoK-QK^n6Y64yJ`0sP zF%6RiO%BWF%k1e1vwfe*lKD~Q%!>1!I|umkKc*NSbJ^Qo$n?#wswR}~8XP1#P!pF9%A)@hVj97ru#E%}a7$5INbGK3*FYvDOnwdS# zpFI`~C?w+nlJNjb=2l_bE}eZDHtguQ4Qr{ zm!?Kg{cG0RmWAM+T| zJ*L&GHybXps=S?FqW}N#ypnJad_lKIMC%Wx22C?eJMb5oy4v- zm26%v%Sn6WOAdwur>_XpJD8!dCc^wiiG#gI=Z&xK@K`*@V`gKPo33r-TXzj3NeznLo_olM5gPj)N_+1fQ0U^3*3@a?3r!bn=xc4t(Ty>GgX(y+sOe%y! zGWFF#I(sdmVVkesRDmX242)V7aIz}*mO@9* z_4|U}kshlw{G(@@hj285=xN1vdg4U)4 zS6(=WgIyDp44bE4>Ez*O+9*xfAS42*lTiYx@;KkJGYV9KXA|=dkqD)E=+Sn5aQE3K z1`w{Ss^*Jd{}JE1`IA(qgUqTe(K)13w3I27{G_LFZ3_p1uBzbV@a!z9n8KRH2~Jx! zhnjSl`sxUpB2R5_&x4|2vtdU+8+VTI#0C$`i<5{YK-3TkOSnS9v#m19-529IktQjk ze0P!zvW_G?T-V03{JNlU9sl=Uc}QUSp5Ae)%q3?8aXk;yg6Cc>5RV0zGehUc_my~Y zhs(`3g!#%xtNGBaJ#5`;vTVN2==kAH?s|ffEpR>m;fFQo>UWtt*WvLto!9m`ENT@r z*9$)WU71@xQ#RK z^%&1@H2C$S21UbP&zVgM|MHPKrZ}o60H{xQH4Acm$MSh8&OfDr>U5ZzbeL#ZLs#V^yaw2=OaD-wJ?*1B z`AQG39;hT3h@z^kgrZ_97*G|7s;W4>16hQk;<@fy2>$(n?LyJ~B7|$B2V@MxA)>o{ z;L;$oXV!Avm)i+z{>GGKnM+q&yyt=t&uy@{=h3V$H)eQz>r*k>yB*eU^9||lM@oGE zixpgbewdEl63Z9pESjb8#0GybUeBP5QFJ&GfHE-RvP6?8+B)m|rZInd2fK%AfSz*9 zAH?$tB%|QS4c!0IAvW$6eDh<1MRV$aVFVscbsBT=}Lx2ChwAp z`|c*7`OhPzjS_Ft=$g>@_MHPL5`=;p`J%_RHkU}i$2pEpxIDJOA{vm`a?sOo7(6ZT|7fY8K4)`ElL-B_90C7)xhKJiNAqJz4ZESBVh{$SzER z7^d189=Mj@c%K}ZDrCU%XM!JLfRY?Qk^?k0Eo1kn$CihNDV4G$r4a8Tu=*DT_r*LY-dCi#NJz(|2y!NPWIWD&q|7IEK0UCdjulFP5S>a9^-gb-YF z-SrIg_poO}N| zfvQy_D`6CM9Juklz|PPgh(V*T54J@4rOhjFZFs{&9F| zONk}(gVfYkFt53vLw)7BQ$nJt*25#h_BNA}okvoFI9{oYRXqH;c6HhqrpwG`m3tl< z=RFsMX{?noYzU|@p7$seTrOCt@bibv@;a0ujh=+2>O8t3L`_qOk*r`m19deKDxyUq zVS(ffa{5V8>XTUln!rP#sRH4Qaq;RPiJ->1Z4N*9FM}H{aXD|b&cEFl=Ig&PNhLyz zOyo!eySee26bcrCBHaTL3uj1vmDBRDq!j6-I^}tn`ZL`9HfRFExr{@_E;!*P8B59$I{k+}D^1V6er%gcKlR0WWtT(}Zm*pVam z>Yg&l`0zNQHSc_ND_@ypr}nm6GxmflU_$w{Yu{Ju!$$)w~`Tw zbOK5ybPc*JZV}vcrA|dcLRH|^Z6<$sy2yEJA_O&;k#Y0?wRhg(ag}$z|GcNojHXE% z^=?`26>M<9ICM-21cwqzAhgYf1d@CELpO88);_F%$#%H{o{-z3uCGiaD4M!$Nay_Z&=sFZc6jX(gewTPhyDe@?R0Xa-U+2&fhyFpy ztQv(y(-i_f!9|O7OfyA}UlIuS^UO+}hZ>oU%p}uL)%XOuW9BP2Z1?p!ko@zYeuaJW7IV z&vy9H!zl`Kf^6N zp}9p77lJ<$LZ{Pd_cVMj0DRg(F>(=V76qXRw8ne+_3{D!<*^O;j5JrASHYq=r6f~s zUwB_*FGo7!9IQ|B;6sm*o%`N+)%Q$xyj~yQzxP4Da?9s{q&KoPlUo+@Td)<(msiOR#@%_29f z@W(YK_dSu~D_7{;^*JvMt+y)^~q>W(+_aQ4P^&OJ>jpNior5e}>rN%{>H;A&b{(>@WsLGX z4NZZEpK~{2-C>2nm}K7}i~M|z1=DoedsXTWCGZ#?EVGO06KAqwMGI%1rZB!-N7KTn z$|yAaj9EI41C6Z~4?mwoQ{keyZeeBbAxU3!fJE}$PoL&4mD;)_v!@7dx=7<&_iy5y z`S}zEdx)m;`HyF#v~)-|Y#!p2GK0MAELyt?2>V<4+VwtO**;@n!=`C@Z35J zi9k9s18tHYy74aE%pKJe!FF_VDkotl`&qHMpQqOiAf<^=ycGBxibFQH-1!ZrPM`U{ z*L~lLLNFBKXaD*eZo6(N1O0uN(=Mjnu3`P_D_L^=WjI~U9 z?{U_`=?WJw3X-1#Wkn&H+69UD01d4+rvwCw0)_@V_E}6DukxK+v)EXh;&&@uspY!H zH1lTXu;f!7qJt@%Jd2X-9^xs;%AD@2wmRH+nZpGO6kgaMs4P;s@1M$f=;0 zC70SgFmarZzNp3XuO+zo5}h}8BtQzK@m~+e2&6u0vO8JctBNERG_2ZHH{ayjykpj zZE&Csq)cZDb{0bDTzjv>tSaap+(RM-Pp!5%^HjI!5FIkf&-F67LS^ze-K`o*GUIk7 z3uYNOQn05X%x{+;LRBCu%S$|Nj>Ib2L4_M{9LE#SAK;WJUZ&T0DJ&^u;oL&vP8LE@ z`TlLWfCe;-4@6R~g{27(<>SBKXN;6lVpUuT*<@5I5 zZhrA(KZ%rsS6AKzsq-!dW}7G(VN{ovrDU*>9&CL0{XtY;E($jJ>JF->%;54XulYd6 z`+?*Kic3oQ;m`gzKlu7>v=>)VST&i7$u-oj-@xoei)d?Fg`&8SAXU{EbAU+)A>91O zk&0_n!zl4#ba>%!{*qe~2CXqr^WL>wnsH7&b2i)7Z*f^ow&RMMI#x!i z+sZf+Cle>znVy3J%P4MiR*yv7FJ#d@^SH2TX@=m1u zJ6|8Bs5mx?a9o;*?eMpWqZgx2MM|_xmC#Uz^Y>A_-#35ROTXzLghpvz$OT(Vdz7k^ zxgUn1@Wtz@X=?AGvdYhn1|L^l62x)fPivyox7x(g3Vt1m^A(aZ!g+JsD9%?o+?~V! ze5js)AvoA1IrlstUXQ{xmzJ?*SCp;0dYC`c4Q=-y2HO$bewm;0BAsN);jxuzx}zpm z+Ce%BIEj%cA(C7tLdnQ(EGMxYRnNRX=>;B&X$MM+ut2Zx1y7|hv?w|aft6zVI~OShbd-iV7Ud{u`Cxy))#g2x~gK8L>lh-ayk23 zb)H;hjckfF8@owcHs_rYCX}Vnbi`u+p%hgm+6a_r_@T#>3Xd#{v0}Z6f0)&*YA#Yl zQ8QYSoOn8kqT)DU+ke9d`wWtu42*5WX}t6F6@sAOPkDZrvb+$&NrRnqOX)}5xBfxN zGb=jC@@Fw)Rt+mRTAVUDM3%=5JFmMW%r|e!;TPY?V`7=0D5BER?dQSYxz9F|t&pWoL(|E;E=i-p7w_53uwcA3we$ z!i^WH%&wMLwi{6-hq~|t@^P#<(n({b6X@P-grbqJHWDc+;nFLv{7|>=L#b7T!`b}k z{$KFJ@BIL?Vlowzr_;E*j*jLgX3U?-o~^sayx(@(5B_tl%EgN` zDoa#~a|AVI7JkErPfHSa@@eTXNm@EDz2Wf2jy?ur4v(%#0!eqIsp^KVM}uF-BIZQ~ zH3BFehKJ2#r$F<4bnqUdi2V^c03nc$jcvtIjUZNXn8oWqCNUod?h4iT&{3p3j-bp3 zF|wnzL567{?)98^0H-tTYXQ2UkxpfLSV!G2GYzk7jj?7+jDSxeZn_S0f0IQ?p2F$V zb@Fo+Htk4q)1@99DLL3Mz}^-?{b7fxlP#L#5cYxBD@aB=xNeD$m$nR$N=s%<@*xzJ z{)CrFrGlCY54H_I{cSh9n=PLCNikK04%HpUSq~ui~A1G1C{$XXCP!Tz1>%X*$qI zY+z{QyUxPL^SCyc;!cRq!ptTHWWP%3xNtLf`=jd`sicW*C$TLP$2O6U zB10%eIW7-Q5fC?>k&m~l!Dd&3&8p35_xg5>{yvp>LJ|(Us$PvP4mDN1{PNZk z9$DVb+xw$TtjwmdHO*5i`$(jrI9~-LmtA{%xZ|2^R8_EfSB$#D7McP#-q*ohSLoOx z%*{V*z^}VGpprH*{CTcEh;%UHQ9N1MD7v4pa**=zQ&@D?IUm|bX&>IH32y)LUEF@{ zQsRSWkY83wepwL>yLU5d;c0AqVeJSw_xX)U&OR+oeo+y9rsVb79wt=hVQ7M_yG^P} z2l(2J<#cwmqo_U1n;mA$&H;{e*^Dy|;x~dLFtu1pBPBd6n4`0yb`VY2tlMf*yI1n+ zE(b${HJcNe)JOj~2hFkhNQT1hnDLQH-e9zIWKTt-?eugF@cBy%5W=A_qLG)Kg~y{2 z@_Pse3_Kn!1BzAf7-uniO3|^@OlgmNAu&W%U1R_^n+ebBs;=}Jqa{bLHFh&aRqf;n^I6U|M9ZXQKmN1{S1nG z|8U;FU-iy?h8AGmZppfxDI9qipCMSj-a*%5yty+u5_-l{URG@wL{T-)oh^xk71C*g zw{{Qm*)!dr@R`~G01e1VL_t(ZFYDflj{ugfghO?SL2sW)iGPsN!YmFp4`E3g-4nzz zdr2qbNXJ3*3DZ}aeTo5>2E&4g2CvvK)KK7H#A z_ySp&F?X}~4N0DTd5GIT+s<_t<>NJ6HQ<|<7W4et4s2U85D#+CLkIZMm43c_O)md| zpuRcIxKfSF7e%Q*r10iGhd*yfvU+nHdm57nBwG(iwjM|U3Py&&sA&4fGA74KV_POd zND^sCCi>_d>>)nT!=>}Q%$}5s$D^Stf>{}*CIG`IU_wV;DL|!vIx5RcVl_($F!$-1)OhMn-!}31-S>UqdgB zjA14%cJ6iCG+lirwfp^SJZO>Yvk8TZ@%ln&ipz^o^}uM@;G{+?r_ymlZPobjPEIj0 zs$`Oe4x0y`k|13pdttMWO?6QQ;x1z7?9&XlG6Kvcowz=@@n@PC7Y+#~(pa4FXChW#cC??~F4)+Rpl@;--#mbN%H@$T{OH zMDp@@<@ZlhT3v}R7-0MQt)oe<3Cn*P!ItpAQz<0yg-;jK)SE?tx{vYW$Me*SL%g`Y zm3#g%8%@vRC%>xa8#nlPa#e~W-IAfCGA1k;&JV;${`BDTHs07+ILL}y2vOZ`cM&+Fzssbnle{7h!TGG`>mlEY#r@>^(^ivS1D5?id_oJ#hHYZ5`WJDk+^S#hPrjbBJfx_%*1+03#mx54| z2ftp-Tf5`zIFMxKBtN_M4RFV`lX+r!8?U~3kiob^H0EFgOL5XM(uqD&W)y!;6^fBX zrMiu;{PRC^{zaGmb&U+*cfb7&FK%w9bjD)3n-8*e^{ag9%FB6k^(&;4qaOF0*ZG+@ zE04!tHh6jSVXnEbi0p!560MtRfy2+G12CL}+`wm52PMc$agspG4 z(>IW$>9E_>j13JE$SI+E$|;mrjw6znhu7;pW^C=4P-*yIA+Rlrnu(K8RF&-PYsufN+VJs3-~Ykv<%I%6C>9Oac-1I?31+{(i6_}zS1 zC?8yREsIhI&5MjT?snaKO;TP93xf~Xq9^uhtF*I*3 zR=g9(iXjy*ol<0~p+;`J{6bE-`Tr2~ds+7DhpC)8k-V}p zwyj-1^1d^t>)d@)KHY=aG#ze5^GA5#HwQ_WHmZ=M9c853F6}gm;zEN)fWkr<@u=_p zPz2IRVWpzPOq1%|BTTFIbKd-7kPeC>ICWZ4X5!_sQq>?xr)_tz;b4-(ZLS!nBE*Qq z!16VR=<6H8AIzq_W*VAifT9ry1}U$oWYUyr7=|msos*M8<+$-KlUj((=%c?KjSaWe za_sA7BEha5wJ3@p5s&lIvZrwzYXst^V$GJx-W}p+4t6))V*2DMK|BX+TTBiof+eE$vlJ4oRh`d2TeBbPVvT`RHkWdWW3qCXljTL z1{s#p&J6PFWlr@FdEqpR=M*!!ItQX1UuHp`ak}eIp?2EY;cIW&9xxi=Co}~d>#!; zj`pBF%Epw^!A{2*8tkSzub+xS!P4_9sVojrn3r{o{GeOWgVxR=5($fj)&#rvHq$qd zq~*vEa~Ch6xU`&fDoJU@IA+f|jqIFUG)*HA41J_((tqb=nhE-Px*3c{*}Q23_514B zxp^JAVL>>Y#hlqiloST>d3A~l18CY<(WJEH(Akr~wjKWP;sLC*MQf+UE43;7Sz)q5 zr5K(ZPE`3=T5gd}Xg(~n2Rju*s9p?z9y%#z7Ps*0rn1{W{Ao`Qk`7M*oYh7jtCr5rCeI=N2F8X6j8 z@9wv0Jh+dh#(H*a-hgdcc(oV{PA{XlFhnrmqbT2p->;8QV}|W0Z8;=UHoNzC(Riqn zJ>U3ghFNWbm^MpRqU_duLNx6-69PC6lRw{w&38MRQ2`PP?JwJ~hJ@E67*97{w zMh5VMZ+?wk9UjKby@;OHL)5N*nX|6Bl0&=q&~mUTGxYjHl-H$0IyHz$buz0u#l>gl zGj)7~pkE)uX9KWoheX1nscn$`jeWF7gOpERNbOtOxca)!Gxzj)?ig7i@cFV%?)Xo5 zxs_5ADWSQkk-na8lF1Y+o_@q_Nv8W5U!hT$9|Q!`CgNd0XzobU z($>SDSG~o-7Erw<`26{(n&$&oouw5=s9qc=MRKqWJDtQE$ieVsQ>@f+)s5G3(`{e; ztdE|4lS3{2tlrQ|YqyuKSO}B= znh|(+qmvS8#SnS`$BN^mqBzn4C&kQ?UXqCf-+kcUn0xyCPu|E{nh){$CG%Kx&Zp=r zyNdpEKvHq|5=bjZW^nb20@H9|gI-F^1JQV6t;x7mbGp z=pS-Wb7nJl{z6Whw}40_f_F^A_T>8eDY)45_w|v8$7ws#${Vk(rR_*7vCeIrHNSvx z$cr~rOl4URRhT0`rznDiY0=wnvim>}4?WXFM}G*#h@gA3QPd3f&`Be06QKvN5?$_a zjI1`!o9AclqzDf`)5xRCUM3I>eey;I@THrs<*eC3)^2U0!?TEn9S2zO>5J&?=;Gk^ zJx4`?Hc7J|JK4?BGX*mzWi!1dLUzzIR)q* z`)|JbdV3h?@2CFY0sj2V6ZE##QC=3Hv?R#*${c1+EjY%p_YEY84kdZ=&vm@8K87z) z>>}@_+oG|PE!=ih1xprJp$Nf`|JNqIaqqt~`(3o{KQSZQxPBe~cF&i&=k7&p-qp^% zzu8WpWENg;knLMGAb{#34|iNOo~bnvDvLw-efr4UDsYFa?b_GHzQ#WGw|cqd&TmmO zaUy=d|6_ZTlk4wy#p5v&u^4rG-lo5|mp?xG09Ja4Y14|iU_1l*7ja%ms3V7&^nq+x2 z7ZINMfJaZU6hhG19b<1pFFW^ku7%PpFXrG#os@ zPrv^y8u#tus!va(v?zc_R~d?@>FQ0e`jx$uPg%?*S6of?gb7rSuQ|C3POiV|YH4ml z2*KMscaR&2P*7Neq9}hcCx60?Yz&yh3}%sJz1=FD5j)M?X>87*^i eom_v<>%Raa>opk5mz`z+0000

- + diff --git a/web/src/components/MyTeam/Components/CustomPagination.vue b/web/src/components/MyTeam/Components/CustomPagination.vue new file mode 100644 index 00000000..d1015e59 --- /dev/null +++ b/web/src/components/MyTeam/Components/CustomPagination.vue @@ -0,0 +1,78 @@ + + + diff --git a/web/src/components/MyTeam/ViewReports.vue b/web/src/components/MyTeam/ViewReports.vue index 4a881f8c..64476411 100644 --- a/web/src/components/MyTeam/ViewReports.vue +++ b/web/src/components/MyTeam/ViewReports.vue @@ -120,6 +120,14 @@ No Records Found.
+ +