From 68087fe5c5fdfa00c2b5aadd5e0ceabc73a5bc0b Mon Sep 17 00:00:00 2001 From: Xopabyteh <70832276+Xopabyteh@users.noreply.github.com> Date: Sat, 6 Apr 2024 18:41:21 +0200 Subject: [PATCH 1/7] Ridding of SigingRule --- .gitignore | 1 + .../ISubjectRegistrationsManagerFacade.cs | 6 +- DataLayer/Queries/SigningRuleListQuery.cs | 74 +-- ...udentSigningRulesWithRegistrationsQuery.cs | 118 ++-- .../StudentSubjectRegistrationListQuery.cs | 6 +- .../StudentWithSigningRuleListQuery.cs | 120 ++-- DataLayer/Queries/SubjectListQuery.cs | 36 +- .../Repositories/ISigningRuleRepository.cs | 8 +- .../Repositories/SigningRuleDbRepository.cs | 22 +- DataLayer/Seeds/Core/SigningRuleSeed.cs | 608 +++++++++--------- .../Fakes/FakeSigningRuleDataSource.cs | 46 +- .../DataSources/ISigningRuleDataSource.cs | 24 +- .../DataSources/SigningRuleDbDataSource.cs | 36 +- .../Repositories/ISigningRuleRepository.cs | 24 +- .../Repositories/SigningRuleDbRepository.cs | 44 +- .../SigningRuleDbRepositoryBase.cs | 44 +- ...240406162043_RemoveSigningRule.Designer.cs | 506 +++++++++++++++ .../20240406162043_RemoveSigningRule.cs | 145 +++++ .../IntranetGen3DbContextModelSnapshot.cs | 136 ---- Facades/SigningRuleFacade.cs | 200 +++--- Facades/StudentSubjectRegistrationFacade.cs | 2 +- Facades/SubjectRegistrationsManagerFacade.cs | 274 ++++---- Model/Grade.cs | 2 +- Model/SigningRule.cs | 54 +- Model/SigningRuleSubjectCategoryRelation.cs | 22 +- Model/SigningRuleSubjectTypeRelation.cs | 22 +- Model/StudentSubjectRegistration.cs | 4 +- Services/ISigningRuleMapper.cs | 16 +- Services/Security/UserManager.cs | 3 +- Services/SigningRuleMapper.cs | 62 +- .../Electives/HomeIndexMyElectives.razor | 5 +- .../Electives/HomeIndexMyElectives.razor.cs | 32 +- .../StudentSubjectRegistrationComponent.razor | 7 +- ...udentSubjectRegistrationComponent.razor.cs | 114 ++-- .../StudentWithSigningRuleList.razor | 5 +- .../StudentWithSigningRuleList.razor.cs | 102 +-- .../Pages/Electives/SubjectList.razor.cs | 24 +- Web.Server/Web.Server.csproj | 1 + 38 files changed, 1735 insertions(+), 1220 deletions(-) create mode 100644 Entity/Migrations/20240406162043_RemoveSigningRule.Designer.cs create mode 100644 Entity/Migrations/20240406162043_RemoveSigningRule.cs diff --git a/.gitignore b/.gitignore index 97960c58..5e778d64 100644 --- a/.gitignore +++ b/.gitignore @@ -259,3 +259,4 @@ Web/.vscode/launch.json .vscode /WebAPI/App_Data .DS_Store +/Web.Server/appsettings.WebServer.local.json diff --git a/Contracts/ISubjectRegistrationsManagerFacade.cs b/Contracts/ISubjectRegistrationsManagerFacade.cs index dd8bac34..4288e3d2 100644 --- a/Contracts/ISubjectRegistrationsManagerFacade.cs +++ b/Contracts/ISubjectRegistrationsManagerFacade.cs @@ -3,9 +3,9 @@ [ApiContract] public interface ISubjectRegistrationsManagerFacade { - Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default); - Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default); + //Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default); + //Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default); Task CancelRegistrationAsync(Dto studentSubjectRegistrationId, CancellationToken cancellationToken = default); Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto studentSubjectRegistrationCreateDto, CancellationToken cancellationToken = default); - Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken); + //Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken); } diff --git a/DataLayer/Queries/SigningRuleListQuery.cs b/DataLayer/Queries/SigningRuleListQuery.cs index b29f16bf..24b11f7d 100644 --- a/DataLayer/Queries/SigningRuleListQuery.cs +++ b/DataLayer/Queries/SigningRuleListQuery.cs @@ -1,43 +1,43 @@ -using Havit.Data.EntityFrameworkCore.Patterns.QueryServices; -using Havit.Extensions.DependencyInjection.Abstractions; -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.DataLayer.DataSources; -using MensaGymnazium.IntranetGen3.Primitives; +//using Havit.Data.EntityFrameworkCore.Patterns.QueryServices; +//using Havit.Extensions.DependencyInjection.Abstractions; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.DataLayer.DataSources; +//using MensaGymnazium.IntranetGen3.Primitives; -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; -[Service] -public class SigningRuleListQuery : QueryBase, ISigningRuleListQuery -{ - private readonly ISigningRuleDataSource SigningRuleDataSource; +//[Service] +//public class SigningRuleListQuery : QueryBase, ISigningRuleListQuery +//{ +// private readonly ISigningRuleDataSource SigningRuleDataSource; - public SigningRuleListQuery(ISigningRuleDataSource SigningRuleDataSource) - { - this.SigningRuleDataSource = SigningRuleDataSource; - } +// public SigningRuleListQuery(ISigningRuleDataSource SigningRuleDataSource) +// { +// this.SigningRuleDataSource = SigningRuleDataSource; +// } - public SigningRuleListQueryFilter Filter { get; set; } +// public SigningRuleListQueryFilter Filter { get; set; } - protected override IQueryable Query() - { - return SigningRuleDataSource.Data - .Select(sr => new SigningRuleDto() - { - Id = sr.Id, - Name = sr.Name, - GradeId = (GradeEntry)sr.GradeId, - Quantity = sr.Quantity, - SubjectCategoryIds = sr.SubjectCategoryRelations.Select(scr => scr.SubjectCategoryId).ToList(), - SubjectTypeIds = sr.SubjectTypeRelations.Select(str => str.SubjectTypeId).ToList(), - }); - } +// protected override IQueryable Query() +// { +// return SigningRuleDataSource.Data +// .Select(sr => new SigningRuleDto() +// { +// Id = sr.Id, +// Name = sr.Name, +// GradeId = (GradeEntry)sr.GradeId, +// Quantity = sr.Quantity, +// SubjectCategoryIds = sr.SubjectCategoryRelations.Select(scr => scr.SubjectCategoryId).ToList(), +// SubjectTypeIds = sr.SubjectTypeRelations.Select(str => str.SubjectTypeId).ToList(), +// }); +// } - public async Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default) - { - return new() - { - Data = await SelectDataFragmentAsync(startIndex, count, cancellationToken), - TotalCount = await CountAsync(cancellationToken) - }; - } -} +// public async Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default) +// { +// return new() +// { +// Data = await SelectDataFragmentAsync(startIndex, count, cancellationToken), +// TotalCount = await CountAsync(cancellationToken) +// }; +// } +//} diff --git a/DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs b/DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs index 97d383b7..092c69bf 100644 --- a/DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs +++ b/DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs @@ -1,71 +1,71 @@ -using Havit.Data.Patterns.DataLoaders; -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.DataLayer.DataSources; -using MensaGymnazium.IntranetGen3.Model; -using MensaGymnazium.IntranetGen3.Model.Security; -using MensaGymnazium.IntranetGen3.Primitives; +//using Havit.Data.Patterns.DataLoaders; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.DataLayer.DataSources; +//using MensaGymnazium.IntranetGen3.Model; +//using MensaGymnazium.IntranetGen3.Model.Security; +//using MensaGymnazium.IntranetGen3.Primitives; -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; -[Service] -public class StudentSigningRulesWithRegistrationsQuery : QueryBase, IStudentSigningRulesWithRegistrationsQuery -{ - private readonly ISigningRuleDataSource signingRuleDataSource; +//[Service] +//public class StudentSigningRulesWithRegistrationsQuery : QueryBase, IStudentSigningRulesWithRegistrationsQuery +//{ +// private readonly ISigningRuleDataSource signingRuleDataSource; - protected Student Student { get; set; } - protected Subject SubjectFilter { get; set; } +// protected Student Student { get; set; } +// protected Subject SubjectFilter { get; set; } - public StudentSigningRulesWithRegistrationsQuery( - ISigningRuleDataSource signingRuleDataSource) - { - this.signingRuleDataSource = signingRuleDataSource; - } +// public StudentSigningRulesWithRegistrationsQuery( +// ISigningRuleDataSource signingRuleDataSource) +// { +// this.signingRuleDataSource = signingRuleDataSource; +// } - protected override IQueryable Query() - { - Contract.Requires(Student is not null); +// protected override IQueryable Query() +// { +// Contract.Requires(Student is not null); - var studentNextGrade = ((GradeEntry)this.Student.GradeId).NextGrade(); +// var studentNextGrade = ((GradeEntry)this.Student.GradeId).NextGrade(); - var data = signingRuleDataSource.Data - .Where(x => x.GradeId == (int)studentNextGrade); +// var data = signingRuleDataSource.Data +// .Where(x => x.GradeId == (int)studentNextGrade); - if (this.SubjectFilter is not null) - { - data = data.Where(sr => this.SubjectFilter.GradeRelations.Select(gr => gr.GradeId).Contains(sr.GradeId)); - data = data.Where(sr => sr.SubjectTypeRelations.Any(str => this.SubjectFilter.TypeRelations.Select(tr => tr.SubjectTypeId).Contains(str.SubjectTypeId))); - data = data.Where(sr => sr.SubjectCategoryRelations.Any(scr => scr.SubjectCategoryId == this.SubjectFilter.CategoryId)); - } +// if (this.SubjectFilter is not null) +// { +// data = data.Where(sr => this.SubjectFilter.GradeRelations.Select(gr => gr.GradeId).Contains(sr.GradeId)); +// data = data.Where(sr => sr.SubjectTypeRelations.Any(str => this.SubjectFilter.TypeRelations.Select(tr => tr.SubjectTypeId).Contains(str.SubjectTypeId))); +// data = data.Where(sr => sr.SubjectCategoryRelations.Any(scr => scr.SubjectCategoryId == this.SubjectFilter.CategoryId)); +// } - return data.Select(sr => new SigningRuleWithRegistrationsDto() - { - Id = sr.Id, - GradeId = (GradeEntry)sr.GradeId, - Name = sr.Name, - Quantity = sr.Quantity, - SubjectCategoryIds = sr.SubjectCategoryRelations.Select(scr => scr.SubjectCategoryId).ToList(), - SubjectTypeIds = sr.SubjectTypeRelations.Select(str => str.SubjectTypeId).ToList(), - Registrations = sr.RegistrationsWithDeleted.Where(r => (r.StudentId == this.Student.Id) && (r.Deleted == null)) - .Select(ssr => new StudentSubjectRegistrationDto() - { - Id = ssr.Id, - StudentId = ssr.StudentId, - SigningRuleId = ssr.UsedSigningRuleId, - SubjectId = ssr.SubjectId, - RegistrationType = ssr.RegistrationType, - Created = ssr.Created, - }) - .ToList() - }); - } +// return data.Select(sr => new SigningRuleWithRegistrationsDto() +// { +// Id = sr.Id, +// GradeId = (GradeEntry)sr.GradeId, +// Name = sr.Name, +// Quantity = sr.Quantity, +// SubjectCategoryIds = sr.SubjectCategoryRelations.Select(scr => scr.SubjectCategoryId).ToList(), +// SubjectTypeIds = sr.SubjectTypeRelations.Select(str => str.SubjectTypeId).ToList(), +// Registrations = sr.RegistrationsWithDeleted.Where(r => (r.StudentId == this.Student.Id) && (r.Deleted == null)) +// .Select(ssr => new StudentSubjectRegistrationDto() +// { +// Id = ssr.Id, +// StudentId = ssr.StudentId, +// SigningRuleId = ssr.UsedSigningRuleId, +// SubjectId = ssr.SubjectId, +// RegistrationType = ssr.RegistrationType, +// Created = ssr.Created, +// }) +// .ToList() +// }); +// } - public Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default) - { - Contract.Requires(student is not null); +// public Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default) +// { +// Contract.Requires(student is not null); - this.Student = student; - this.SubjectFilter = subjectFilter; +// this.Student = student; +// this.SubjectFilter = subjectFilter; - return this.SelectAsync(cancellationToken); - } -} +// return this.SelectAsync(cancellationToken); +// } +//} diff --git a/DataLayer/Queries/StudentSubjectRegistrationListQuery.cs b/DataLayer/Queries/StudentSubjectRegistrationListQuery.cs index 744595d2..68e4cbd1 100644 --- a/DataLayer/Queries/StudentSubjectRegistrationListQuery.cs +++ b/DataLayer/Queries/StudentSubjectRegistrationListQuery.cs @@ -23,7 +23,7 @@ protected override IQueryable Query() return studentSubjectRegistrationDataSource.Data .WhereIf(Filter.SubjectId is not null, ssr => ssr.SubjectId == Filter.SubjectId) .WhereIf(Filter.GradeId is not null, ssr => ssr.Student.GradeId == Filter.GradeId) - .WhereIf(Filter.SigningRuleId is not null, ssr => ssr.UsedSigningRuleId == Filter.SigningRuleId) + //.WhereIf(Filter.SigningRuleId is not null, ssr => ssr.UsedSigningRuleId == Filter.SigningRuleId) .WhereIf(Filter.StudentId is not null, ssr => ssr.StudentId == Filter.StudentId) .WhereIf(Filter.RegistrationType is not null, ssr => ssr.RegistrationType == Filter.RegistrationType) .OrderByMultiple(Sorting, sortingExpression => sortingExpression switch @@ -31,7 +31,7 @@ protected override IQueryable Query() nameof(StudentSubjectRegistrationDto.SubjectId) => new() { s => s.Subject.Name, s => s.Student.User.Name }, nameof(StudentSubjectRegistrationDto.StudentId) => new() { s => s.Student.User.Name, s => s.Subject.Name }, nameof(StudentSubjectRegistrationDto.RegistrationType) => new() { s => s.RegistrationType, s => s.Subject.Name, s => s.Student.User.Name }, - nameof(StudentSubjectRegistrationDto.SigningRuleId) => new() { s => s.UsedSigningRule.Name, s => s.Subject.Name, s => s.Student.User.Name }, + //nameof(StudentSubjectRegistrationDto.SigningRuleId) => new() { s => s.UsedSigningRule.Name, s => s.Subject.Name, s => s.Student.User.Name }, "StudentGradeId" => new() { s => -s.Student.GradeId }, _ => throw new InvalidOperationException($"Unknown SortingItem.Expression {sortingExpression}.") }) @@ -41,7 +41,7 @@ protected override IQueryable Query() StudentId = ssr.StudentId, SubjectId = ssr.SubjectId, RegistrationType = ssr.RegistrationType, - SigningRuleId = ssr.UsedSigningRuleId, + //SigningRuleId = ssr.UsedSigningRuleId, Created = ssr.Created, }); } diff --git a/DataLayer/Queries/StudentWithSigningRuleListQuery.cs b/DataLayer/Queries/StudentWithSigningRuleListQuery.cs index b900586f..722b434d 100644 --- a/DataLayer/Queries/StudentWithSigningRuleListQuery.cs +++ b/DataLayer/Queries/StudentWithSigningRuleListQuery.cs @@ -1,60 +1,60 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.DataLayer.DataSources; -using MensaGymnazium.IntranetGen3.DataLayer.DataSources.Security; -using MensaGymnazium.IntranetGen3.Primitives; - -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -[Service] -public class StudentWithSigningRuleListQuery : QueryBase, IStudentWithSigningRuleListQuery -{ - private readonly IStudentDataSource studentDataSource; - private readonly ISigningRuleDataSource signingRuleDataSource; - - public StudentWithSigningRuleListQuery( - IStudentDataSource studentDataSource, - ISigningRuleDataSource signingRuleDataSource) - { - this.studentDataSource = studentDataSource; - this.signingRuleDataSource = signingRuleDataSource; - } - - public StudentWithSigningRuleListQueryFilter Filter { get; set; } - public SortItem[] Sorting { get; set; } - - protected override IQueryable Query() - { - var data = studentDataSource.Data - .Join(signingRuleDataSource.Data, s => s.GradeId - 1, sr => sr.GradeId, (student, signingRule) => new { student, signingRule }) - .WhereIf(Filter.GradeId.HasValue, i => i.student.GradeId == Filter.GradeId) - .WhereIf(Filter.StudentId.HasValue, i => i.student.Id == Filter.StudentId) - .WhereIf(Filter.SigningRuleId.HasValue, i => i.signingRule.Id == Filter.SigningRuleId) - .OrderBy(Sorting, sortingExpression => sortingExpression switch - { - nameof(StudentWithSigningRuleListItemDto.StudentId) => (i => i.student.User.Name), - nameof(StudentWithSigningRuleListItemDto.SigningRuleId) => (i => i.signingRule.Name), - _ => throw new InvalidOperationException($"Unknown SortingItem.Expression {sortingExpression}.") - }) - .Select(x => new StudentWithSigningRuleListItemDto - { - StudentId = x.student.Id, - SigningRuleId = x.signingRule.Id, - SigningRuleQuantity = x.signingRule.Quantity, - MainRegistrationsCount = x.signingRule.RegistrationsWithDeleted.Count(r => (r.Deleted == null) && (r.RegistrationType == StudentRegistrationType.Main) && (r.StudentId == x.student.Id) && (r.Subject.Deleted == null)), - SecondaryRegistrationsCount = x.signingRule.RegistrationsWithDeleted.Count(r => (r.Deleted == null) && (r.RegistrationType == StudentRegistrationType.Secondary) && (r.StudentId == x.student.Id) && (r.Subject.Deleted == null)), - }) - .WhereIf(Filter.IncompleteOnly, i => i.MainRegistrationsCount != i.SigningRuleQuantity); - - return data; - } - - public async Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default) - { - return new() - { - Data = await SelectDataFragmentAsync(startIndex, count, cancellationToken), - TotalCount = await CountAsync(cancellationToken) - }; - } - -} +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.DataLayer.DataSources; +//using MensaGymnazium.IntranetGen3.DataLayer.DataSources.Security; +//using MensaGymnazium.IntranetGen3.Primitives; + +//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; + +//[Service] +//public class StudentWithSigningRuleListQuery : QueryBase, IStudentWithSigningRuleListQuery +//{ +// private readonly IStudentDataSource studentDataSource; +// private readonly ISigningRuleDataSource signingRuleDataSource; + +// public StudentWithSigningRuleListQuery( +// IStudentDataSource studentDataSource, +// ISigningRuleDataSource signingRuleDataSource) +// { +// this.studentDataSource = studentDataSource; +// this.signingRuleDataSource = signingRuleDataSource; +// } + +// public StudentWithSigningRuleListQueryFilter Filter { get; set; } +// public SortItem[] Sorting { get; set; } + +// protected override IQueryable Query() +// { +// var data = studentDataSource.Data +// .Join(signingRuleDataSource.Data, s => s.GradeId - 1, sr => sr.GradeId, (student, signingRule) => new { student, signingRule }) +// .WhereIf(Filter.GradeId.HasValue, i => i.student.GradeId == Filter.GradeId) +// .WhereIf(Filter.StudentId.HasValue, i => i.student.Id == Filter.StudentId) +// .WhereIf(Filter.SigningRuleId.HasValue, i => i.signingRule.Id == Filter.SigningRuleId) +// .OrderBy(Sorting, sortingExpression => sortingExpression switch +// { +// nameof(StudentWithSigningRuleListItemDto.StudentId) => (i => i.student.User.Name), +// nameof(StudentWithSigningRuleListItemDto.SigningRuleId) => (i => i.signingRule.Name), +// _ => throw new InvalidOperationException($"Unknown SortingItem.Expression {sortingExpression}.") +// }) +// .Select(x => new StudentWithSigningRuleListItemDto +// { +// StudentId = x.student.Id, +// SigningRuleId = x.signingRule.Id, +// SigningRuleQuantity = x.signingRule.Quantity, +// MainRegistrationsCount = x.signingRule.RegistrationsWithDeleted.Count(r => (r.Deleted == null) && (r.RegistrationType == StudentRegistrationType.Main) && (r.StudentId == x.student.Id) && (r.Subject.Deleted == null)), +// SecondaryRegistrationsCount = x.signingRule.RegistrationsWithDeleted.Count(r => (r.Deleted == null) && (r.RegistrationType == StudentRegistrationType.Secondary) && (r.StudentId == x.student.Id) && (r.Subject.Deleted == null)), +// }) +// .WhereIf(Filter.IncompleteOnly, i => i.MainRegistrationsCount != i.SigningRuleQuantity); + +// return data; +// } + +// public async Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default) +// { +// return new() +// { +// Data = await SelectDataFragmentAsync(startIndex, count, cancellationToken), +// TotalCount = await CountAsync(cancellationToken) +// }; +// } + +//} diff --git a/DataLayer/Queries/SubjectListQuery.cs b/DataLayer/Queries/SubjectListQuery.cs index 7057313c..58f247e7 100644 --- a/DataLayer/Queries/SubjectListQuery.cs +++ b/DataLayer/Queries/SubjectListQuery.cs @@ -9,16 +9,16 @@ namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; public class SubjectListQuery : QueryBase, ISubjectListQuery { private readonly ISubjectDataSource subjectDataSource; - private readonly ISigningRuleRepository signingRuleRepository; + //private readonly ISigningRuleRepository signingRuleRepository; private readonly IStudentSubjectRegistrationDataSource studentSubjectRegistrationDataSource; public SubjectListQuery( ISubjectDataSource subjectDataSource, - ISigningRuleRepository signingRuleRepository, + //ISigningRuleRepository signingRuleRepository, IStudentSubjectRegistrationDataSource studentSubjectRegistrationDataSource) { this.subjectDataSource = subjectDataSource; - this.signingRuleRepository = signingRuleRepository; + //this.signingRuleRepository = signingRuleRepository; this.studentSubjectRegistrationDataSource = studentSubjectRegistrationDataSource; } @@ -33,24 +33,24 @@ protected override IQueryable Query() .WhereIf(Filter.SubjectCategoryId != null, s => s.CategoryId == Filter.SubjectCategoryId) .WhereIf(Filter.TeacherId != null, s => s.TeacherRelations.Any(tr => tr.TeacherId == Filter.TeacherId)); - if (Filter.SigningRuleId is not null) - { - var signingRule = signingRuleRepository.GetObject(Filter.SigningRuleId.Value); + //if (Filter.SigningRuleId is not null) + //{ + // var signingRule = signingRuleRepository.GetObject(Filter.SigningRuleId.Value); - data = data.Where(s => s.GradeRelations.Any(gr => gr.GradeId == signingRule.GradeId)); + // data = data.Where(s => s.GradeRelations.Any(gr => gr.GradeId == signingRule.GradeId)); - var subjectTypesIds = signingRule.SubjectTypeRelations.Select(str => str.SubjectTypeId); - if (subjectTypesIds.Any()) - { - data = data.Where(s => s.TypeRelations.Any(tr => subjectTypesIds.Contains(tr.SubjectTypeId))); - } + // var subjectTypesIds = signingRule.SubjectTypeRelations.Select(str => str.SubjectTypeId); + // if (subjectTypesIds.Any()) + // { + // data = data.Where(s => s.TypeRelations.Any(tr => subjectTypesIds.Contains(tr.SubjectTypeId))); + // } - var subjectCategoriesIds = signingRule.SubjectCategoryRelations.Select(str => str.SubjectCategoryId); - if (subjectCategoriesIds.Any()) - { - data = data.Where(s => subjectCategoriesIds.Contains(s.CategoryId)); - } - } + // var subjectCategoriesIds = signingRule.SubjectCategoryRelations.Select(str => str.SubjectCategoryId); + // if (subjectCategoriesIds.Any()) + // { + // data = data.Where(s => subjectCategoriesIds.Contains(s.CategoryId)); + // } + //} data = data .OrderByMultiple(Sorting, sortingExpression => sortingExpression switch diff --git a/DataLayer/Repositories/ISigningRuleRepository.cs b/DataLayer/Repositories/ISigningRuleRepository.cs index db8a48d7..f3a18225 100644 --- a/DataLayer/Repositories/ISigningRuleRepository.cs +++ b/DataLayer/Repositories/ISigningRuleRepository.cs @@ -1,6 +1,6 @@ -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; -public partial interface ISigningRuleRepository -{ +//public partial interface ISigningRuleRepository +//{ -} +//} diff --git a/DataLayer/Repositories/SigningRuleDbRepository.cs b/DataLayer/Repositories/SigningRuleDbRepository.cs index 85b9bd98..cfe6e7a2 100644 --- a/DataLayer/Repositories/SigningRuleDbRepository.cs +++ b/DataLayer/Repositories/SigningRuleDbRepository.cs @@ -1,13 +1,13 @@ -using System.Linq.Expressions; -using MensaGymnazium.IntranetGen3.Model; +//using System.Linq.Expressions; +//using MensaGymnazium.IntranetGen3.Model; -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; -public partial class SigningRuleDbRepository : ISigningRuleRepository -{ - protected override IEnumerable>> GetLoadReferences() - { - yield return sr => sr.SubjectTypeRelations; - yield return sr => sr.SubjectCategoryRelations; - } -} \ No newline at end of file +//public partial class SigningRuleDbRepository : ISigningRuleRepository +//{ +// protected override IEnumerable>> GetLoadReferences() +// { +// yield return sr => sr.SubjectTypeRelations; +// yield return sr => sr.SubjectCategoryRelations; +// } +//} \ No newline at end of file diff --git a/DataLayer/Seeds/Core/SigningRuleSeed.cs b/DataLayer/Seeds/Core/SigningRuleSeed.cs index 5c8cbcbb..c364b068 100644 --- a/DataLayer/Seeds/Core/SigningRuleSeed.cs +++ b/DataLayer/Seeds/Core/SigningRuleSeed.cs @@ -1,310 +1,310 @@ -using MensaGymnazium.IntranetGen3.Model; -using MensaGymnazium.IntranetGen3.Primitives; +//using MensaGymnazium.IntranetGen3.Model; +//using MensaGymnazium.IntranetGen3.Primitives; -namespace MensaGymnazium.IntranetGen3.DataLayer.Seeds.Core; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Seeds.Core; -public class SigningRuleSeed : DataSeed -{ - public override void SeedData() - { - var data = new[] - { - new SigningRule() { - SeedItemIdentifier = "Sekunda", - Name = "sekunda - specializační seminář nebo jazyk", - Description = "Je potřeba si zvolit jeden specializační seminář nebo jazyk.", - GradeId = (int) GradeEntry.Sekunda, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ForeignLanguage }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() { - SeedItemIdentifier = "TercieSpecSem", - Name = "tercie - specializační seminář", - Description = "Je potřeba si zvolit jeden specializační seminář.", - GradeId = (int) GradeEntry.Tercie, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() - { - SeedItemIdentifier = "TercieJazyk", - Name = "tercie - jazyk", - Description = "Je potřeba si zvolit jeden jazyk (pokud již nebyl zvolen v sekundě).", - GradeId = (int) GradeEntry.Tercie, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ForeignLanguage }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, +//public class SigningRuleSeed : DataSeed +//{ +// public override void SeedData() +// { +// var data = new[] +// { +// new SigningRule() { +// SeedItemIdentifier = "Sekunda", +// Name = "sekunda - specializační seminář nebo jazyk", +// Description = "Je potřeba si zvolit jeden specializační seminář nebo jazyk.", +// GradeId = (int) GradeEntry.Sekunda, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ForeignLanguage }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() { +// SeedItemIdentifier = "TercieSpecSem", +// Name = "tercie - specializační seminář", +// Description = "Je potřeba si zvolit jeden specializační seminář.", +// GradeId = (int) GradeEntry.Tercie, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "TercieJazyk", +// Name = "tercie - jazyk", +// Description = "Je potřeba si zvolit jeden jazyk (pokud již nebyl zvolen v sekundě).", +// GradeId = (int) GradeEntry.Tercie, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ForeignLanguage }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, - new SigningRule() - { - SeedItemIdentifier = "KvartaSpecSem", - Name = "kvarta - specializační seminář", - Description = "Je potřeba si zvolit jeden specializační seminář.", - GradeId = (int) GradeEntry.Kvarta, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, +// new SigningRule() +// { +// SeedItemIdentifier = "KvartaSpecSem", +// Name = "kvarta - specializační seminář", +// Description = "Je potřeba si zvolit jeden specializační seminář.", +// GradeId = (int) GradeEntry.Kvarta, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, - new SigningRule() - { - SeedItemIdentifier = "KvintaExtSem", - Name = "kvinta - nadstavbový seminář", - Description = "Je potřeba si zvolit jeden nadstavbový seminář.", - GradeId = (int) GradeEntry.Kvinta, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() - { - SeedItemIdentifier = "KvintaSpecExtSem", - Name = "kvinta - specializační/nadstavbový seminář", - Description = "Je potřeba si zvolit jeden specializační nebo nadstavbový seminář.", - GradeId = (int) GradeEntry.Kvinta, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() - { - SeedItemIdentifier = "SextaExtSem", - Name = "sexta - nadstavbový seminář", - Description = "Je potřeba si zvolit jeden nadstavbový seminář.", - GradeId = (int) GradeEntry.Sexta, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() - { - SeedItemIdentifier = "SextaSpecExtSem", - Name = "sexta - specializační/nadstavbový seminář", - Description = "Je potřeba si zvolit jeden specializační nebo nadstavbový seminář.", - GradeId = (int) GradeEntry.Sexta, - Quantity = 1, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() - { - SeedItemIdentifier = "SeptimaGradSem", - Name = "septima - dva maturitní semináře", - Description = "Je potřeba si zvolit dva maturitní semináře z oblastí Člověk a společnost nebo Člověk a příroda.", - GradeId = (int) GradeEntry.Septima, - Quantity = 2, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - }, - }, - new SigningRule() - { - SeedItemIdentifier = "SeptimaOther", - Name = "septima - další tři semináře", - Description = "Je potřeba si zvolit další tři specializační/nadstavbonvé/maturitní semináře.", - GradeId = (int) GradeEntry.Septima, - Quantity = 3, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - new SigningRule() - { - SeedItemIdentifier = "OktavaGradSem", - Name = "oktáva - dva maturitní semináře", - Description = "Je potřeba si zvolit dva maturitní semináře z oblastí Člověk a společnost nebo Člověk a příroda.", - GradeId = (int) GradeEntry.Oktava, - Quantity = 2, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - }, - }, - new SigningRule() - { - SeedItemIdentifier = "OktavaOther", - Name = "oktáva - další čtyři semináře", - Description = "Je potřeba si zvolit další čtyři specializační/nadstavbonvé/maturitní semináře.", - GradeId = (int) GradeEntry.Oktava, - Quantity = 4, - SubjectCategoryRelations = - { - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, - new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, - }, - SubjectTypeRelations = - { - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, - new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, - } - }, - }; +// new SigningRule() +// { +// SeedItemIdentifier = "KvintaExtSem", +// Name = "kvinta - nadstavbový seminář", +// Description = "Je potřeba si zvolit jeden nadstavbový seminář.", +// GradeId = (int) GradeEntry.Kvinta, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "KvintaSpecExtSem", +// Name = "kvinta - specializační/nadstavbový seminář", +// Description = "Je potřeba si zvolit jeden specializační nebo nadstavbový seminář.", +// GradeId = (int) GradeEntry.Kvinta, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "SextaExtSem", +// Name = "sexta - nadstavbový seminář", +// Description = "Je potřeba si zvolit jeden nadstavbový seminář.", +// GradeId = (int) GradeEntry.Sexta, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "SextaSpecExtSem", +// Name = "sexta - specializační/nadstavbový seminář", +// Description = "Je potřeba si zvolit jeden specializační nebo nadstavbový seminář.", +// GradeId = (int) GradeEntry.Sexta, +// Quantity = 1, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "SeptimaGradSem", +// Name = "septima - dva maturitní semináře", +// Description = "Je potřeba si zvolit dva maturitní semináře z oblastí Člověk a společnost nebo Člověk a příroda.", +// GradeId = (int) GradeEntry.Septima, +// Quantity = 2, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// }, +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "SeptimaOther", +// Name = "septima - další tři semináře", +// Description = "Je potřeba si zvolit další tři specializační/nadstavbonvé/maturitní semináře.", +// GradeId = (int) GradeEntry.Septima, +// Quantity = 3, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "OktavaGradSem", +// Name = "oktáva - dva maturitní semináře", +// Description = "Je potřeba si zvolit dva maturitní semináře z oblastí Člověk a společnost nebo Člověk a příroda.", +// GradeId = (int) GradeEntry.Oktava, +// Quantity = 2, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// }, +// }, +// new SigningRule() +// { +// SeedItemIdentifier = "OktavaOther", +// Name = "oktáva - další čtyři semináře", +// Description = "Je potřeba si zvolit další čtyři specializační/nadstavbonvé/maturitní semináře.", +// GradeId = (int) GradeEntry.Oktava, +// Quantity = 4, +// SubjectCategoryRelations = +// { +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, +// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, +// }, +// SubjectTypeRelations = +// { +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, +// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, +// } +// }, +// }; - Seed(For(data).PairBy(sr => sr.SeedItemIdentifier) - // TODO .WithoutUpdate() + relations - .AfterSave(item => - { - item.SeedEntity.SubjectCategoryRelations.ForEach(cr => cr.SigningRuleId = item.PersistedEntity.Id); - item.SeedEntity.SubjectTypeRelations.ForEach(tr => tr.SigningRuleId = item.PersistedEntity.Id); - }) - .AndForAll(sr => sr.SubjectCategoryRelations, - categoryRelationSeed => categoryRelationSeed.PairBy(cr => cr.SigningRuleId, cr => cr.SubjectCategoryId)) - .AndForAll(sr => sr.SubjectTypeRelations, - typeRelationSeed => typeRelationSeed.PairBy(tr => tr.SigningRuleId, tr => tr.SubjectTypeId)) - ); - } +// Seed(For(data).PairBy(sr => sr.SeedItemIdentifier) +// // TODO .WithoutUpdate() + relations +// .AfterSave(item => +// { +// item.SeedEntity.SubjectCategoryRelations.ForEach(cr => cr.SigningRuleId = item.PersistedEntity.Id); +// item.SeedEntity.SubjectTypeRelations.ForEach(tr => tr.SigningRuleId = item.PersistedEntity.Id); +// }) +// .AndForAll(sr => sr.SubjectCategoryRelations, +// categoryRelationSeed => categoryRelationSeed.PairBy(cr => cr.SigningRuleId, cr => cr.SubjectCategoryId)) +// .AndForAll(sr => sr.SubjectTypeRelations, +// typeRelationSeed => typeRelationSeed.PairBy(tr => tr.SigningRuleId, tr => tr.SubjectTypeId)) +// ); +// } - public override IEnumerable GetPrerequisiteDataSeeds() - { - yield return typeof(GradeSeed); - yield return typeof(SubjectCategorySeed); - yield return typeof(SubjectTypeSeed); - } -} +// public override IEnumerable GetPrerequisiteDataSeeds() +// { +// yield return typeof(GradeSeed); +// yield return typeof(SubjectCategorySeed); +// yield return typeof(SubjectTypeSeed); +// } +//} diff --git a/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs b/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs index f13de8a7..601c45dd 100644 --- a/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs +++ b/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs @@ -1,27 +1,27 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ +////------------------------------------------------------------------------------ +//// +//// This code was generated by a tool. +//// Changes to this file will be lost if the code is regenerated. +//// +////------------------------------------------------------------------------------ -using Havit.Data.EntityFrameworkCore.Patterns.DataSources.Fakes; -using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -using Havit.Data.Patterns.Attributes; +//using Havit.Data.EntityFrameworkCore.Patterns.DataSources.Fakes; +//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; +//using Havit.Data.Patterns.Attributes; -namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources.Fakes; +//namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources.Fakes; -[Fake] -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public class FakeSigningRuleDataSource : FakeDataSource, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource -{ - public FakeSigningRuleDataSource(params MensaGymnazium.IntranetGen3.Model.SigningRule[] data) - : this((IEnumerable)data) - { - } +//[Fake] +//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] +//public class FakeSigningRuleDataSource : FakeDataSource, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource +//{ +// public FakeSigningRuleDataSource(params MensaGymnazium.IntranetGen3.Model.SigningRule[] data) +// : this((IEnumerable)data) +// { +// } - public FakeSigningRuleDataSource(IEnumerable data, ISoftDeleteManager softDeleteManager = null) - : base(data, softDeleteManager) - { - } -} +// public FakeSigningRuleDataSource(IEnumerable data, ISoftDeleteManager softDeleteManager = null) +// : base(data, softDeleteManager) +// { +// } +//} diff --git a/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs b/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs index 482e5bc0..c92b7ce3 100644 --- a/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs +++ b/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs @@ -1,15 +1,15 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ +////------------------------------------------------------------------------------ +//// +//// This code was generated by a tool. +//// Changes to this file will be lost if the code is regenerated. +//// +////------------------------------------------------------------------------------ -using Havit.Data.Patterns.DataSources; +//using Havit.Data.Patterns.DataSources; -namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources; +//namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources; -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public interface ISigningRuleDataSource : IDataSource -{ -} +//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] +//public interface ISigningRuleDataSource : IDataSource +//{ +//} diff --git a/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs b/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs index b3cf2aa1..8d07e111 100644 --- a/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs +++ b/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs @@ -1,21 +1,21 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ +////------------------------------------------------------------------------------ +//// +//// This code was generated by a tool. +//// Changes to this file will be lost if the code is regenerated. +//// +////------------------------------------------------------------------------------ -using Havit.Data.EntityFrameworkCore; -using Havit.Data.EntityFrameworkCore.Patterns.DataSources; -using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; +//using Havit.Data.EntityFrameworkCore; +//using Havit.Data.EntityFrameworkCore.Patterns.DataSources; +//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources; +//namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources; -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public partial class SigningRuleDbDataSource : DbDataSource, ISigningRuleDataSource -{ - public SigningRuleDbDataSource(IDbContext dbContext, ISoftDeleteManager softDeleteManager) - : base(dbContext, softDeleteManager) - { - } -} +//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] +//public partial class SigningRuleDbDataSource : DbDataSource, ISigningRuleDataSource +//{ +// public SigningRuleDbDataSource(IDbContext dbContext, ISoftDeleteManager softDeleteManager) +// : base(dbContext, softDeleteManager) +// { +// } +//} diff --git a/DataLayer/_generated/Repositories/ISigningRuleRepository.cs b/DataLayer/_generated/Repositories/ISigningRuleRepository.cs index ba3687e4..bb542574 100644 --- a/DataLayer/_generated/Repositories/ISigningRuleRepository.cs +++ b/DataLayer/_generated/Repositories/ISigningRuleRepository.cs @@ -1,15 +1,15 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ +////------------------------------------------------------------------------------ +//// +//// This code was generated by a tool. +//// Changes to this file will be lost if the code is regenerated. +//// +////------------------------------------------------------------------------------ -using Havit.Data.Patterns.Repositories; +//using Havit.Data.Patterns.Repositories; -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public partial interface ISigningRuleRepository : IRepository -{ -} +//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] +//public partial interface ISigningRuleRepository : IRepository +//{ +//} diff --git a/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs b/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs index a3e469ff..eaea8fe6 100644 --- a/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs +++ b/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs @@ -1,25 +1,25 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ +////------------------------------------------------------------------------------ +//// +//// This code was generated by a tool. +//// Changes to this file will be lost if the code is regenerated. +//// +////------------------------------------------------------------------------------ -using Havit.Data.EntityFrameworkCore; -using Havit.Data.EntityFrameworkCore.Patterns.Caching; -using Havit.Data.EntityFrameworkCore.Patterns.Repositories; -using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -using Havit.Data.Patterns.DataEntries; -using Havit.Data.Patterns.DataLoaders; -using Havit.Data.Patterns.Infrastructure; +//using Havit.Data.EntityFrameworkCore; +//using Havit.Data.EntityFrameworkCore.Patterns.Caching; +//using Havit.Data.EntityFrameworkCore.Patterns.Repositories; +//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; +//using Havit.Data.Patterns.DataEntries; +//using Havit.Data.Patterns.DataLoaders; +//using Havit.Data.Patterns.Infrastructure; -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public partial class SigningRuleDbRepository : SigningRuleDbRepositoryBase, ISigningRuleRepository -{ - public SigningRuleDbRepository(IDbContext dbContext, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource dataSource, IEntityKeyAccessor entityKeyAccessor, IDataLoader dataLoader, ISoftDeleteManager softDeleteManager, IEntityCacheManager entityCacheManager) - : base(dbContext, dataSource, entityKeyAccessor, dataLoader, softDeleteManager, entityCacheManager) - { - } -} \ No newline at end of file +//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] +//public partial class SigningRuleDbRepository : SigningRuleDbRepositoryBase, ISigningRuleRepository +//{ +// public SigningRuleDbRepository(IDbContext dbContext, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource dataSource, IEntityKeyAccessor entityKeyAccessor, IDataLoader dataLoader, ISoftDeleteManager softDeleteManager, IEntityCacheManager entityCacheManager) +// : base(dbContext, dataSource, entityKeyAccessor, dataLoader, softDeleteManager, entityCacheManager) +// { +// } +//} \ No newline at end of file diff --git a/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs b/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs index 263602ea..f59e310d 100644 --- a/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs +++ b/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs @@ -1,26 +1,26 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ +////------------------------------------------------------------------------------ +//// +//// This code was generated by a tool. +//// Changes to this file will be lost if the code is regenerated. +//// +////------------------------------------------------------------------------------ -using Havit.Data.EntityFrameworkCore; -using Havit.Data.EntityFrameworkCore.Patterns.Caching; -using Havit.Data.EntityFrameworkCore.Patterns.Repositories; -using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -using Havit.Data.Patterns.DataEntries; -using Havit.Data.Patterns.DataLoaders; -using Havit.Data.Patterns.Infrastructure; +//using Havit.Data.EntityFrameworkCore; +//using Havit.Data.EntityFrameworkCore.Patterns.Caching; +//using Havit.Data.EntityFrameworkCore.Patterns.Repositories; +//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; +//using Havit.Data.Patterns.DataEntries; +//using Havit.Data.Patterns.DataLoaders; +//using Havit.Data.Patterns.Infrastructure; -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public abstract class SigningRuleDbRepositoryBase : DbRepository -{ - protected SigningRuleDbRepositoryBase(IDbContext dbContext, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource dataSource, IEntityKeyAccessor entityKeyAccessor, IDataLoader dataLoader, ISoftDeleteManager softDeleteManager, IEntityCacheManager entityCacheManager) - : base(dbContext, dataSource, entityKeyAccessor, dataLoader, softDeleteManager, entityCacheManager) - { - } +//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] +//public abstract class SigningRuleDbRepositoryBase : DbRepository +//{ +// protected SigningRuleDbRepositoryBase(IDbContext dbContext, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource dataSource, IEntityKeyAccessor entityKeyAccessor, IDataLoader dataLoader, ISoftDeleteManager softDeleteManager, IEntityCacheManager entityCacheManager) +// : base(dbContext, dataSource, entityKeyAccessor, dataLoader, softDeleteManager, entityCacheManager) +// { +// } -} \ No newline at end of file +//} \ No newline at end of file diff --git a/Entity/Migrations/20240406162043_RemoveSigningRule.Designer.cs b/Entity/Migrations/20240406162043_RemoveSigningRule.Designer.cs new file mode 100644 index 00000000..0fa08d3d --- /dev/null +++ b/Entity/Migrations/20240406162043_RemoveSigningRule.Designer.cs @@ -0,0 +1,506 @@ +// +using System; +using MensaGymnazium.IntranetGen3.Entity; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace MensaGymnazium.IntranetGen3.Entity.Migrations +{ + [DbContext(typeof(IntranetGen3DbContext))] + [Migration("20240406162043_RemoveSigningRule")] + partial class RemoveSigningRule + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Havit.Data.EntityFrameworkCore.Model.DataSeedVersion", b => + { + b.Property("ProfileName") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Version") + .HasColumnType("nvarchar(max)"); + + b.HasKey("ProfileName") + .HasName("PK_DataSeed"); + + b.ToTable("__DataSeed", (string)null); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Common.ApplicationSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("SubjectRegistrationAllowedFrom") + .HasColumnType("datetime"); + + b.Property("SubjectRegistrationAllowedTo") + .HasColumnType("datetime"); + + b.HasKey("Id"); + + b.ToTable("ApplicationSettings"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Grade", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AadGroupId") + .HasMaxLength(36) + .HasColumnType("nvarchar(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("Id"); + + b.ToTable("Grade"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.Student", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("datetime2"); + + b.Property("GradeId") + .HasColumnType("int"); + + b.Property("SeedEntityId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("GradeId"); + + b.ToTable("Student"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.Teacher", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("datetime2"); + + b.Property("FunFact") + .HasMaxLength(2147483647) + .HasColumnType("nvarchar(max)"); + + b.Property("SeededEntityId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Teacher"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("datetime2"); + + b.Property("Email") + .HasMaxLength(320) + .HasColumnType("nvarchar(320)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Oid") + .HasColumnType("uniqueidentifier"); + + b.Property("StudentId") + .HasColumnType("int"); + + b.Property("TeacherId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("Oid") + .IsUnique() + .HasFilter("[Oid] IS NOT NULL"); + + b.HasIndex("StudentId") + .IsUnique() + .HasFilter("[StudentId] IS NOT NULL"); + + b.HasIndex("TeacherId") + .IsUnique() + .HasFilter("[TeacherId] IS NOT NULL"); + + b.ToTable("User"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.StudentSubjectRegistration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("datetime2"); + + b.Property("RegistrationType") + .HasColumnType("int"); + + b.Property("StudentId") + .HasColumnType("int"); + + b.Property("SubjectId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("StudentId"); + + b.HasIndex("SubjectId"); + + b.ToTable("StudentSubjectRegistration"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Subject", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CanRegisterRepeatedly") + .HasColumnType("bit"); + + b.Property("Capacity") + .HasColumnType("int"); + + b.Property("CategoryId") + .HasColumnType("int"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime2") + .HasDefaultValueSql("GETDATE()"); + + b.Property("Deleted") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ScheduleDayOfWeek") + .HasColumnType("int"); + + b.Property("ScheduleSlotInDay") + .HasColumnType("int"); + + b.Property("SeedIdentifier") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Subject"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectCategory", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Name") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("SubjectCategory"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectGradeRelation", b => + { + b.Property("SubjectId") + .HasColumnType("int"); + + b.Property("GradeId") + .HasColumnType("int"); + + b.HasKey("SubjectId", "GradeId"); + + b.HasIndex("GradeId"); + + b.ToTable("SubjectGradeRelation"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectTeacherRelation", b => + { + b.Property("SubjectId") + .HasColumnType("int"); + + b.Property("TeacherId") + .HasColumnType("int"); + + b.HasKey("SubjectId", "TeacherId"); + + b.HasIndex("TeacherId"); + + b.ToTable("SubjectTeacherRelation"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectType", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Name") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("SubjectType"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectTypeRelation", b => + { + b.Property("SubjectId") + .HasColumnType("int"); + + b.Property("SubjectTypeId") + .HasColumnType("int"); + + b.HasKey("SubjectId", "SubjectTypeId"); + + b.HasIndex("SubjectTypeId"); + + b.ToTable("SubjectTypeRelation"); + + b + .HasAnnotation("Caching-AllKeysEnabled", true) + .HasAnnotation("Caching-EntitiesEnabled", true); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.Student", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.Grade", "Grade") + .WithMany("Students") + .HasForeignKey("GradeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Grade"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.User", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.Security.Student", "Student") + .WithOne("User") + .HasForeignKey("MensaGymnazium.IntranetGen3.Model.Security.User", "StudentId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("MensaGymnazium.IntranetGen3.Model.Security.Teacher", "Teacher") + .WithOne("User") + .HasForeignKey("MensaGymnazium.IntranetGen3.Model.Security.User", "TeacherId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("Student"); + + b.Navigation("Teacher"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.StudentSubjectRegistration", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.Security.Student", "Student") + .WithMany() + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("MensaGymnazium.IntranetGen3.Model.Subject", "Subject") + .WithMany() + .HasForeignKey("SubjectId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Student"); + + b.Navigation("Subject"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Subject", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.SubjectCategory", "Category") + .WithMany() + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectGradeRelation", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.Grade", "Grade") + .WithMany() + .HasForeignKey("GradeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("MensaGymnazium.IntranetGen3.Model.Subject", "Subject") + .WithMany("GradeRelations") + .HasForeignKey("SubjectId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Grade"); + + b.Navigation("Subject"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectTeacherRelation", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.Subject", "Subject") + .WithMany("TeacherRelations") + .HasForeignKey("SubjectId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("MensaGymnazium.IntranetGen3.Model.Security.Teacher", "Teacher") + .WithMany() + .HasForeignKey("TeacherId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Subject"); + + b.Navigation("Teacher"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SubjectTypeRelation", b => + { + b.HasOne("MensaGymnazium.IntranetGen3.Model.Subject", "Subject") + .WithMany("TypeRelations") + .HasForeignKey("SubjectId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("MensaGymnazium.IntranetGen3.Model.SubjectType", "SubjectType") + .WithMany() + .HasForeignKey("SubjectTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Subject"); + + b.Navigation("SubjectType"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Grade", b => + { + b.Navigation("Students"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.Student", b => + { + b.Navigation("User"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Security.Teacher", b => + { + b.Navigation("User"); + }); + + modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Subject", b => + { + b.Navigation("GradeRelations"); + + b.Navigation("TeacherRelations"); + + b.Navigation("TypeRelations"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Entity/Migrations/20240406162043_RemoveSigningRule.cs b/Entity/Migrations/20240406162043_RemoveSigningRule.cs new file mode 100644 index 00000000..e941674f --- /dev/null +++ b/Entity/Migrations/20240406162043_RemoveSigningRule.cs @@ -0,0 +1,145 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace MensaGymnazium.IntranetGen3.Entity.Migrations +{ + /// + public partial class RemoveSigningRule : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_StudentSubjectRegistration_SigningRule_UsedSigningRuleId", + table: "StudentSubjectRegistration"); + + migrationBuilder.DropTable( + name: "SigningRuleSubjectCategoryRelation"); + + migrationBuilder.DropTable( + name: "SigningRuleSubjectTypeRelation"); + + migrationBuilder.DropTable( + name: "SigningRule"); + + migrationBuilder.DropIndex( + name: "IX_StudentSubjectRegistration_UsedSigningRuleId", + table: "StudentSubjectRegistration"); + + migrationBuilder.DropColumn( + name: "UsedSigningRuleId", + table: "StudentSubjectRegistration"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "UsedSigningRuleId", + table: "StudentSubjectRegistration", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "SigningRule", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + GradeId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "nvarchar(max)", maxLength: 2147483647, nullable: true), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Quantity = table.Column(type: "int", nullable: true), + SeedItemIdentifier = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_SigningRule", x => x.Id); + table.ForeignKey( + name: "FK_SigningRule_Grade_GradeId", + column: x => x.GradeId, + principalTable: "Grade", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "SigningRuleSubjectCategoryRelation", + columns: table => new + { + SigningRuleId = table.Column(type: "int", nullable: false), + SubjectCategoryId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SigningRuleSubjectCategoryRelation", x => new { x.SigningRuleId, x.SubjectCategoryId }); + table.ForeignKey( + name: "FK_SigningRuleSubjectCategoryRelation_SigningRule_SigningRuleId", + column: x => x.SigningRuleId, + principalTable: "SigningRule", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_SigningRuleSubjectCategoryRelation_SubjectCategory_SubjectCategoryId", + column: x => x.SubjectCategoryId, + principalTable: "SubjectCategory", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "SigningRuleSubjectTypeRelation", + columns: table => new + { + SigningRuleId = table.Column(type: "int", nullable: false), + SubjectTypeId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SigningRuleSubjectTypeRelation", x => new { x.SigningRuleId, x.SubjectTypeId }); + table.ForeignKey( + name: "FK_SigningRuleSubjectTypeRelation_SigningRule_SigningRuleId", + column: x => x.SigningRuleId, + principalTable: "SigningRule", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_SigningRuleSubjectTypeRelation_SubjectType_SubjectTypeId", + column: x => x.SubjectTypeId, + principalTable: "SubjectType", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_StudentSubjectRegistration_UsedSigningRuleId", + table: "StudentSubjectRegistration", + column: "UsedSigningRuleId"); + + migrationBuilder.CreateIndex( + name: "IX_SigningRule_GradeId", + table: "SigningRule", + column: "GradeId"); + + migrationBuilder.CreateIndex( + name: "IX_SigningRuleSubjectCategoryRelation_SubjectCategoryId", + table: "SigningRuleSubjectCategoryRelation", + column: "SubjectCategoryId"); + + migrationBuilder.CreateIndex( + name: "IX_SigningRuleSubjectTypeRelation_SubjectTypeId", + table: "SigningRuleSubjectTypeRelation", + column: "SubjectTypeId"); + + migrationBuilder.AddForeignKey( + name: "FK_StudentSubjectRegistration_SigningRule_UsedSigningRuleId", + table: "StudentSubjectRegistration", + column: "UsedSigningRuleId", + principalTable: "SigningRule", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/Entity/Migrations/IntranetGen3DbContextModelSnapshot.cs b/Entity/Migrations/IntranetGen3DbContextModelSnapshot.cs index 252feca1..ebd787fe 100644 --- a/Entity/Migrations/IntranetGen3DbContextModelSnapshot.cs +++ b/Entity/Migrations/IntranetGen3DbContextModelSnapshot.cs @@ -189,69 +189,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("Caching-EntitiesEnabled", true); }); - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRule", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Description") - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.Property("GradeId") - .HasColumnType("int"); - - b.Property("Name") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("Quantity") - .HasColumnType("int"); - - b.Property("SeedItemIdentifier") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.HasKey("Id"); - - b.HasIndex("GradeId"); - - b.ToTable("SigningRule"); - }); - - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRuleSubjectCategoryRelation", b => - { - b.Property("SigningRuleId") - .HasColumnType("int"); - - b.Property("SubjectCategoryId") - .HasColumnType("int"); - - b.HasKey("SigningRuleId", "SubjectCategoryId"); - - b.HasIndex("SubjectCategoryId"); - - b.ToTable("SigningRuleSubjectCategoryRelation"); - }); - - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRuleSubjectTypeRelation", b => - { - b.Property("SigningRuleId") - .HasColumnType("int"); - - b.Property("SubjectTypeId") - .HasColumnType("int"); - - b.HasKey("SigningRuleId", "SubjectTypeId"); - - b.HasIndex("SubjectTypeId"); - - b.ToTable("SigningRuleSubjectTypeRelation"); - }); - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.StudentSubjectRegistration", b => { b.Property("Id") @@ -275,17 +212,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SubjectId") .HasColumnType("int"); - b.Property("UsedSigningRuleId") - .HasColumnType("int"); - b.HasKey("Id"); b.HasIndex("StudentId"); b.HasIndex("SubjectId"); - b.HasIndex("UsedSigningRuleId"); - b.ToTable("StudentSubjectRegistration"); }); @@ -455,55 +387,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Teacher"); }); - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRule", b => - { - b.HasOne("MensaGymnazium.IntranetGen3.Model.Grade", "Grade") - .WithMany("SigningRules") - .HasForeignKey("GradeId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.Navigation("Grade"); - }); - - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRuleSubjectCategoryRelation", b => - { - b.HasOne("MensaGymnazium.IntranetGen3.Model.SigningRule", "SigningRule") - .WithMany("SubjectCategoryRelations") - .HasForeignKey("SigningRuleId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.HasOne("MensaGymnazium.IntranetGen3.Model.SubjectCategory", "SubjectCategory") - .WithMany() - .HasForeignKey("SubjectCategoryId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.Navigation("SigningRule"); - - b.Navigation("SubjectCategory"); - }); - - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRuleSubjectTypeRelation", b => - { - b.HasOne("MensaGymnazium.IntranetGen3.Model.SigningRule", "SigningRule") - .WithMany("SubjectTypeRelations") - .HasForeignKey("SigningRuleId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.HasOne("MensaGymnazium.IntranetGen3.Model.SubjectType", "SubjectType") - .WithMany() - .HasForeignKey("SubjectTypeId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - - b.Navigation("SigningRule"); - - b.Navigation("SubjectType"); - }); - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.StudentSubjectRegistration", b => { b.HasOne("MensaGymnazium.IntranetGen3.Model.Security.Student", "Student") @@ -518,17 +401,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); - b.HasOne("MensaGymnazium.IntranetGen3.Model.SigningRule", "UsedSigningRule") - .WithMany("RegistrationsWithDeleted") - .HasForeignKey("UsedSigningRuleId") - .OnDelete(DeleteBehavior.Restrict) - .IsRequired(); - b.Navigation("Student"); b.Navigation("Subject"); - - b.Navigation("UsedSigningRule"); }); modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Subject", b => @@ -601,8 +476,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Grade", b => { - b.Navigation("SigningRules"); - b.Navigation("Students"); }); @@ -616,15 +489,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("User"); }); - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.SigningRule", b => - { - b.Navigation("RegistrationsWithDeleted"); - - b.Navigation("SubjectCategoryRelations"); - - b.Navigation("SubjectTypeRelations"); - }); - modelBuilder.Entity("MensaGymnazium.IntranetGen3.Model.Subject", b => { b.Navigation("GradeRelations"); diff --git a/Facades/SigningRuleFacade.cs b/Facades/SigningRuleFacade.cs index 7b4ee50c..4eafd2e9 100644 --- a/Facades/SigningRuleFacade.cs +++ b/Facades/SigningRuleFacade.cs @@ -1,100 +1,100 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.DataLayer.Queries; -using MensaGymnazium.IntranetGen3.DataLayer.Repositories; -using MensaGymnazium.IntranetGen3.Model; -using MensaGymnazium.IntranetGen3.Primitives; -using MensaGymnazium.IntranetGen3.Services; - - -namespace MensaGymnazium.IntranetGen3.Facades; - -[Service] -[Authorize] -public class SigningRuleFacade : ISigningRuleFacade -{ - private readonly ISigningRuleListQuery signingRuleListQuery; - private readonly ISigningRuleRepository signingRuleRepository; - private readonly IUnitOfWork unitOfWork; - private readonly ISigningRuleMapper signingRuleMapper; - - public SigningRuleFacade( - ISigningRuleListQuery SigningRuleListQuery, - ISigningRuleRepository SigningRuleRepository, - IUnitOfWork unitOfWork, - ISigningRuleMapper SigningRuleMapper) - { - this.signingRuleListQuery = SigningRuleListQuery; - this.signingRuleRepository = SigningRuleRepository; - this.unitOfWork = unitOfWork; - this.signingRuleMapper = SigningRuleMapper; - } - - public async Task> GetSigningRuleListAsync(DataFragmentRequest SigningRuleListRequest, CancellationToken cancellationToken = default) - { - Contract.Requires(SigningRuleListRequest is not null); - - signingRuleListQuery.Filter = SigningRuleListRequest.Filter; - //SigningRuleListQuery.Sorting = SigningRuleListRequest.Sorting; - - return await signingRuleListQuery.GetDataFragmentAsync(SigningRuleListRequest.StartIndex, SigningRuleListRequest.Count, cancellationToken); - } - - public async Task GetSigningRuleDetailAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default) - { - Contract.Requires(SigningRuleIdDto.Value != default); - - var SigningRule = await signingRuleRepository.GetObjectAsync(SigningRuleIdDto.Value, cancellationToken); - - return signingRuleMapper.MapToSigningRuleDto(SigningRule); - } - - [Authorize(Roles = nameof(Role.Administrator))] - public async Task> CreateSigningRuleAsync(SigningRuleDto SigningRuleDto, CancellationToken cancellationToken = default) - { - Contract.Requires(SigningRuleDto != null); - Contract.Requires(SigningRuleDto.Id == default); - - var SigningRule = new SigningRule(); - signingRuleMapper.MapFromSigningRuleDto(SigningRuleDto, SigningRule); - - unitOfWork.AddForInsert(SigningRule); - await unitOfWork.CommitAsync(cancellationToken); - - return Dto.FromValue(SigningRule.Id); - } - - [Authorize(Roles = nameof(Role.Administrator))] - public async Task UpdateSigningRuleAsync(SigningRuleDto SigningRuleDto, CancellationToken cancellationToken = default) - { - Contract.Requires(SigningRuleDto != null); - Contract.Requires(SigningRuleDto.Id != default); - - var SigningRule = await signingRuleRepository.GetObjectAsync(SigningRuleDto.Id, cancellationToken); - - SigningRule.Name = SigningRuleDto.Name; - - unitOfWork.AddForUpdate(SigningRule); - await unitOfWork.CommitAsync(cancellationToken); - } - - [Authorize(Roles = nameof(Role.Administrator))] - public async Task DeleteSigningRuleAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default) - { - var SigningRule = signingRuleRepository.GetObjectAsync(SigningRuleIdDto.Value, cancellationToken); - unitOfWork.AddForDelete(SigningRule); - - await unitOfWork.CommitAsync(cancellationToken); - } - - public async Task> GetAllSigningRuleReferencesAsync(CancellationToken cancellationToken = default) - { - return (await signingRuleRepository.GetAllAsync(cancellationToken)) - .Select(sr => new SigningRuleReferenceDto() - { - Id = sr.Id, - Name = sr.Name, - GradeId = (GradeEntry)sr.GradeId - }) - .ToList(); - } -} +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.DataLayer.Queries; +//using MensaGymnazium.IntranetGen3.DataLayer.Repositories; +//using MensaGymnazium.IntranetGen3.Model; +//using MensaGymnazium.IntranetGen3.Primitives; +//using MensaGymnazium.IntranetGen3.Services; + + +//namespace MensaGymnazium.IntranetGen3.Facades; + +//[Service] +//[Authorize] +//public class SigningRuleFacade : ISigningRuleFacade +//{ +// private readonly ISigningRuleListQuery signingRuleListQuery; +// private readonly ISigningRuleRepository signingRuleRepository; +// private readonly IUnitOfWork unitOfWork; +// private readonly ISigningRuleMapper signingRuleMapper; + +// public SigningRuleFacade( +// ISigningRuleListQuery SigningRuleListQuery, +// ISigningRuleRepository SigningRuleRepository, +// IUnitOfWork unitOfWork, +// ISigningRuleMapper SigningRuleMapper) +// { +// this.signingRuleListQuery = SigningRuleListQuery; +// this.signingRuleRepository = SigningRuleRepository; +// this.unitOfWork = unitOfWork; +// this.signingRuleMapper = SigningRuleMapper; +// } + +// public async Task> GetSigningRuleListAsync(DataFragmentRequest SigningRuleListRequest, CancellationToken cancellationToken = default) +// { +// Contract.Requires(SigningRuleListRequest is not null); + +// signingRuleListQuery.Filter = SigningRuleListRequest.Filter; +// //SigningRuleListQuery.Sorting = SigningRuleListRequest.Sorting; + +// return await signingRuleListQuery.GetDataFragmentAsync(SigningRuleListRequest.StartIndex, SigningRuleListRequest.Count, cancellationToken); +// } + +// //public async Task GetSigningRuleDetailAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default) +// //{ +// // Contract.Requires(SigningRuleIdDto.Value != default); + +// // var SigningRule = await signingRuleRepository.GetObjectAsync(SigningRuleIdDto.Value, cancellationToken); + +// // return signingRuleMapper.MapToSigningRuleDto(SigningRule); +// //} + +// //[Authorize(Roles = nameof(Role.Administrator))] +// //public async Task> CreateSigningRuleAsync(SigningRuleDto SigningRuleDto, CancellationToken cancellationToken = default) +// //{ +// // Contract.Requires(SigningRuleDto != null); +// // Contract.Requires(SigningRuleDto.Id == default); + +// // var SigningRule = new SigningRule(); +// // signingRuleMapper.MapFromSigningRuleDto(SigningRuleDto, SigningRule); + +// // unitOfWork.AddForInsert(SigningRule); +// // await unitOfWork.CommitAsync(cancellationToken); + +// // return Dto.FromValue(SigningRule.Id); +// //} + +// [Authorize(Roles = nameof(Role.Administrator))] +// public async Task UpdateSigningRuleAsync(SigningRuleDto SigningRuleDto, CancellationToken cancellationToken = default) +// { +// Contract.Requires(SigningRuleDto != null); +// Contract.Requires(SigningRuleDto.Id != default); + +// var SigningRule = await signingRuleRepository.GetObjectAsync(SigningRuleDto.Id, cancellationToken); + +// SigningRule.Name = SigningRuleDto.Name; + +// unitOfWork.AddForUpdate(SigningRule); +// await unitOfWork.CommitAsync(cancellationToken); +// } + +// [Authorize(Roles = nameof(Role.Administrator))] +// public async Task DeleteSigningRuleAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default) +// { +// var SigningRule = signingRuleRepository.GetObjectAsync(SigningRuleIdDto.Value, cancellationToken); +// unitOfWork.AddForDelete(SigningRule); + +// await unitOfWork.CommitAsync(cancellationToken); +// } + +// public async Task> GetAllSigningRuleReferencesAsync(CancellationToken cancellationToken = default) +// { +// return (await signingRuleRepository.GetAllAsync(cancellationToken)) +// .Select(sr => new SigningRuleReferenceDto() +// { +// Id = sr.Id, +// Name = sr.Name, +// GradeId = (GradeEntry)sr.GradeId +// }) +// .ToList(); +// } +//} diff --git a/Facades/StudentSubjectRegistrationFacade.cs b/Facades/StudentSubjectRegistrationFacade.cs index b26cdaac..1fc288c5 100644 --- a/Facades/StudentSubjectRegistrationFacade.cs +++ b/Facades/StudentSubjectRegistrationFacade.cs @@ -69,7 +69,7 @@ private void MapRegistrationFromDto(StudentSubjectRegistrationDto registrationDt registration.SubjectId = registrationDto.SubjectId.Value; registration.StudentId = registrationDto.StudentId.Value; registration.RegistrationType = registrationDto.RegistrationType.Value; - registration.UsedSigningRuleId = registrationDto.SigningRuleId.Value; + //registration.UsedSigningRuleId = registrationDto.SigningRuleId.Value; } [Authorize(Roles = nameof(Role.Administrator))] diff --git a/Facades/SubjectRegistrationsManagerFacade.cs b/Facades/SubjectRegistrationsManagerFacade.cs index 4995d776..87c3d50f 100644 --- a/Facades/SubjectRegistrationsManagerFacade.cs +++ b/Facades/SubjectRegistrationsManagerFacade.cs @@ -15,34 +15,22 @@ namespace MensaGymnazium.IntranetGen3.Facades; [Authorize] public class SubjectRegistrationsManagerFacade : ISubjectRegistrationsManagerFacade { - private readonly IStudentSigningRulesWithRegistrationsQuery studentSigningRulesWithRegistrationsQuery; - private readonly IStudentWithSigningRuleListQuery studentWithSigningRuleListQuery; private readonly IApplicationAuthenticationService applicationAuthenticationService; - private readonly ISubjectRepository subjectRepository; private readonly IStudentSubjectRegistrationRepository studentSubjectRegistrationRepository; private readonly IUnitOfWork unitOfWork; - private readonly IDataLoader dataLoader; private readonly ITimeService timeService; private readonly IApplicationSettingsEntries applicationSettingsEntries; public SubjectRegistrationsManagerFacade( - IStudentSigningRulesWithRegistrationsQuery studentSigningRulesWithRegistrationsQuery, - IStudentWithSigningRuleListQuery studentWithSigningRuleListQuery, IApplicationAuthenticationService applicationAuthenticationService, - ISubjectRepository subjectRepository, IStudentSubjectRegistrationRepository studentSubjectRegistrationRepository, IUnitOfWork unitOfWork, - IDataLoader dataLoader, ITimeService timeService, IApplicationSettingsEntries applicationSettingsEntries) { - this.studentSigningRulesWithRegistrationsQuery = studentSigningRulesWithRegistrationsQuery; - this.studentWithSigningRuleListQuery = studentWithSigningRuleListQuery; this.applicationAuthenticationService = applicationAuthenticationService; - this.subjectRepository = subjectRepository; this.studentSubjectRegistrationRepository = studentSubjectRegistrationRepository; this.unitOfWork = unitOfWork; - this.dataLoader = dataLoader; this.timeService = timeService; this.applicationSettingsEntries = applicationSettingsEntries; } @@ -96,22 +84,22 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st // Verify registration date Contract.Requires(RegistrationIsWithinValidDate(), "Přihlášku není možné založit. Je před, nebo již po termínu přihlašování"); - // Verify registration requirements - var signingRulesForRegistration = await GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(studentSubjectRegistrationCreateDto.SubjectId.Value), cancellationToken); - var signingRuleForRegistrationDto = signingRulesForRegistration.Single(sr => sr.Id == studentSubjectRegistrationCreateDto.SigningRuleId); - Contract.Requires(signingRuleForRegistrationDto is not null); - - switch (studentSubjectRegistrationCreateDto.RegistrationType) - { - case StudentRegistrationType.Main: - Contract.Requires(signingRuleForRegistrationDto.MainRegistrationAllowed, signingRuleForRegistrationDto.MainRegistrationNotAllowedReason); - break; - case StudentRegistrationType.Secondary: - Contract.Requires(signingRuleForRegistrationDto.SecondaryRegistrationAllowed, signingRuleForRegistrationDto.SecondaryRegistrationNotAllowedReason); - break; - default: - throw new InvalidOperationException($"Unknown {nameof(StudentRegistrationType)} value: {studentSubjectRegistrationCreateDto.RegistrationType}."); - } + //// Verify registration requirements + //var signingRulesForRegistration = await GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(studentSubjectRegistrationCreateDto.SubjectId.Value), cancellationToken); + //var signingRuleForRegistrationDto = signingRulesForRegistration.Single(sr => sr.Id == studentSubjectRegistrationCreateDto.SigningRuleId); + //Contract.Requires(signingRuleForRegistrationDto is not null); + + //switch (studentSubjectRegistrationCreateDto.RegistrationType) + //{ + // case StudentRegistrationType.Main: + // Contract.Requires(signingRuleForRegistrationDto.MainRegistrationAllowed, signingRuleForRegistrationDto.MainRegistrationNotAllowedReason); + // break; + // case StudentRegistrationType.Secondary: + // Contract.Requires(signingRuleForRegistrationDto.SecondaryRegistrationAllowed, signingRuleForRegistrationDto.SecondaryRegistrationNotAllowedReason); + // break; + // default: + // throw new InvalidOperationException($"Unknown {nameof(StudentRegistrationType)} value: {studentSubjectRegistrationCreateDto.RegistrationType}."); + //} // create registration var currentUser = applicationAuthenticationService.GetCurrentUser(); @@ -120,7 +108,7 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st var studentSubjectRegistration = new StudentSubjectRegistration { StudentId = currentUser.StudentId.Value, - UsedSigningRuleId = studentSubjectRegistrationCreateDto.SigningRuleId.Value, + //UsedSigningRuleId = studentSubjectRegistrationCreateDto.SigningRuleId.Value, SubjectId = studentSubjectRegistrationCreateDto.SubjectId.Value, RegistrationType = studentSubjectRegistrationCreateDto.RegistrationType.Value }; @@ -129,118 +117,118 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st await unitOfWork.CommitAsync(cancellationToken); } - [Authorize(Roles = nameof(Role.Student))] - public async Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default) - { - var signingRulesWithRegistrations = await GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)subjectId.Value), cancellationToken); - - List result = new(); - - var subjectRegistered = signingRulesWithRegistrations.SelectMany(x => x.Registrations).Any(ssr => ssr.SubjectId == subjectId.Value); - var subject = await subjectRepository.GetObjectAsync(subjectId.Value, cancellationToken); - var registrationCount = await studentSubjectRegistrationRepository.CountBySubjectAndTypeAsync(subjectId.Value, StudentRegistrationType.Main, cancellationToken); - - var user = applicationAuthenticationService.GetCurrentUser(); - Contract.Assert(user.Student is not null); - - var collisions = await studentSubjectRegistrationRepository.GetByStudentAndTimeAsync(user.Student.Id, subject.ScheduleDayOfWeek, subject.ScheduleSlotInDay, cancellationToken); - - foreach (var item in signingRulesWithRegistrations) - { - var resultItem = new SigningRuleStudentRegistrationsDto(); - resultItem.Id = item.Id; - resultItem.Name = item.Name; - - // main - resultItem.MainRegistration = item.Registrations.FirstOrDefault(r => (r.SubjectId == subjectId.Value) - && (r.RegistrationType == StudentRegistrationType.Main)); - if (resultItem.MainRegistration is not null) - { - resultItem.MainRegistrationAllowed = false; - resultItem.MainRegistrationNotAllowedReason = "Primární registrace tohoto předmětu k tomu pravidlu již existuje."; - } - else if (item.Registrations.Count(r => r.RegistrationType == StudentRegistrationType.Main) >= item.Quantity) - { - resultItem.MainRegistrationAllowed = false; - resultItem.MainRegistrationNotAllowedReason = "Počet primárních registrací tohoto pravidla vyčerpán."; - } - else if (subjectRegistered) - { - resultItem.MainRegistrationAllowed = false; - resultItem.MainRegistrationNotAllowedReason = "Předmět je již registrován."; - } - else if (subject.Capacity != null && registrationCount >= subject.Capacity) - { - resultItem.MainRegistrationAllowed = false; - resultItem.MainRegistrationNotAllowedReason = "Kapacita předmětu je naplněna."; - } - else if (collisions.Count > 0) - { - resultItem.MainRegistrationAllowed = false; - resultItem.MainRegistrationNotAllowedReason = "Předmět koliduje časově s jiným předmětem."; - } - else - { - resultItem.MainRegistrationAllowed = true; - } - - // secondary - resultItem.SecondaryRegistration = item.Registrations.FirstOrDefault(r => (r.SubjectId == subjectId.Value) && (r.RegistrationType == StudentRegistrationType.Secondary)); - if (resultItem.SecondaryRegistration is not null) - { - resultItem.SecondaryRegistrationAllowed = false; - resultItem.SecondaryRegistrationNotAllowedReason = "Náhradní registrace tohoto předmětu k tomu pravidlu již existuje."; - } - else if (item.Registrations.Count(r => r.RegistrationType == StudentRegistrationType.Secondary) >= item.Quantity) - { - resultItem.SecondaryRegistrationAllowed = false; - resultItem.SecondaryRegistrationNotAllowedReason = "Počet náhradních registrací tohoto pravidla vyčerpán."; - } - else if (subjectRegistered) - { - resultItem.SecondaryRegistrationAllowed = false; - resultItem.SecondaryRegistrationNotAllowedReason = "Předmět je již registrován."; - } - else - { - resultItem.SecondaryRegistrationAllowed = true; - } - - result.Add(resultItem); - } - - return result; - } - - [Authorize(Roles = nameof(Role.Student))] - public async Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default) - { - var user = applicationAuthenticationService.GetCurrentUser(); - Contract.Assert(user.Student is not null); - - Subject subjectFilter = null; - if (onlySubjectId.Value.HasValue) - { - subjectFilter = await subjectRepository.GetObjectAsync(onlySubjectId.Value.Value, cancellationToken); - await dataLoader.LoadAsync(subjectFilter, s => s.GradeRelations, cancellationToken); - await dataLoader.LoadAsync(subjectFilter, s => s.TypeRelations, cancellationToken); - } - - return await studentSigningRulesWithRegistrationsQuery.GetDataAsync(user.Student, subjectFilter, cancellationToken); - } - - public async Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken) - { - if (facadeRequest.Filter.CurrentStudentOnly) - { - var user = applicationAuthenticationService.GetCurrentUser(); - Contract.Requires(user.StudentId is not null); - facadeRequest.Filter.StudentId = user.StudentId; - } - - studentWithSigningRuleListQuery.Filter = facadeRequest.Filter; - studentWithSigningRuleListQuery.Sorting = facadeRequest.Sorting; - - return await studentWithSigningRuleListQuery.GetDataFragmentAsync(facadeRequest.StartIndex, facadeRequest.Count, cancellationToken); - } + //[Authorize(Roles = nameof(Role.Student))] + //public async Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default) + //{ + // var signingRulesWithRegistrations = await GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)subjectId.Value), cancellationToken); + + // List result = new(); + + // var subjectRegistered = signingRulesWithRegistrations.SelectMany(x => x.Registrations).Any(ssr => ssr.SubjectId == subjectId.Value); + // var subject = await subjectRepository.GetObjectAsync(subjectId.Value, cancellationToken); + // var registrationCount = await studentSubjectRegistrationRepository.CountBySubjectAndTypeAsync(subjectId.Value, StudentRegistrationType.Main, cancellationToken); + + // var user = applicationAuthenticationService.GetCurrentUser(); + // Contract.Assert(user.Student is not null); + + // var collisions = await studentSubjectRegistrationRepository.GetByStudentAndTimeAsync(user.Student.Id, subject.ScheduleDayOfWeek, subject.ScheduleSlotInDay, cancellationToken); + + // foreach (var item in signingRulesWithRegistrations) + // { + // var resultItem = new SigningRuleStudentRegistrationsDto(); + // resultItem.Id = item.Id; + // resultItem.Name = item.Name; + + // // main + // resultItem.MainRegistration = item.Registrations.FirstOrDefault(r => (r.SubjectId == subjectId.Value) + // && (r.RegistrationType == StudentRegistrationType.Main)); + // if (resultItem.MainRegistration is not null) + // { + // resultItem.MainRegistrationAllowed = false; + // resultItem.MainRegistrationNotAllowedReason = "Primární registrace tohoto předmětu k tomu pravidlu již existuje."; + // } + // else if (item.Registrations.Count(r => r.RegistrationType == StudentRegistrationType.Main) >= item.Quantity) + // { + // resultItem.MainRegistrationAllowed = false; + // resultItem.MainRegistrationNotAllowedReason = "Počet primárních registrací tohoto pravidla vyčerpán."; + // } + // else if (subjectRegistered) + // { + // resultItem.MainRegistrationAllowed = false; + // resultItem.MainRegistrationNotAllowedReason = "Předmět je již registrován."; + // } + // else if (subject.Capacity != null && registrationCount >= subject.Capacity) + // { + // resultItem.MainRegistrationAllowed = false; + // resultItem.MainRegistrationNotAllowedReason = "Kapacita předmětu je naplněna."; + // } + // else if (collisions.Count > 0) + // { + // resultItem.MainRegistrationAllowed = false; + // resultItem.MainRegistrationNotAllowedReason = "Předmět koliduje časově s jiným předmětem."; + // } + // else + // { + // resultItem.MainRegistrationAllowed = true; + // } + + // // secondary + // resultItem.SecondaryRegistration = item.Registrations.FirstOrDefault(r => (r.SubjectId == subjectId.Value) && (r.RegistrationType == StudentRegistrationType.Secondary)); + // if (resultItem.SecondaryRegistration is not null) + // { + // resultItem.SecondaryRegistrationAllowed = false; + // resultItem.SecondaryRegistrationNotAllowedReason = "Náhradní registrace tohoto předmětu k tomu pravidlu již existuje."; + // } + // else if (item.Registrations.Count(r => r.RegistrationType == StudentRegistrationType.Secondary) >= item.Quantity) + // { + // resultItem.SecondaryRegistrationAllowed = false; + // resultItem.SecondaryRegistrationNotAllowedReason = "Počet náhradních registrací tohoto pravidla vyčerpán."; + // } + // else if (subjectRegistered) + // { + // resultItem.SecondaryRegistrationAllowed = false; + // resultItem.SecondaryRegistrationNotAllowedReason = "Předmět je již registrován."; + // } + // else + // { + // resultItem.SecondaryRegistrationAllowed = true; + // } + + // result.Add(resultItem); + // } + + // return result; + //} + + //[Authorize(Roles = nameof(Role.Student))] + //public async Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default) + //{ + // var user = applicationAuthenticationService.GetCurrentUser(); + // Contract.Assert(user.Student is not null); + + // Subject subjectFilter = null; + // if (onlySubjectId.Value.HasValue) + // { + // subjectFilter = await subjectRepository.GetObjectAsync(onlySubjectId.Value.Value, cancellationToken); + // await dataLoader.LoadAsync(subjectFilter, s => s.GradeRelations, cancellationToken); + // await dataLoader.LoadAsync(subjectFilter, s => s.TypeRelations, cancellationToken); + // } + + // return await studentSigningRulesWithRegistrationsQuery.GetDataAsync(user.Student, subjectFilter, cancellationToken); + //} + + //public async Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken) + //{ + // if (facadeRequest.Filter.CurrentStudentOnly) + // { + // var user = applicationAuthenticationService.GetCurrentUser(); + // Contract.Requires(user.StudentId is not null); + // facadeRequest.Filter.StudentId = user.StudentId; + // } + + // studentWithSigningRuleListQuery.Filter = facadeRequest.Filter; + // studentWithSigningRuleListQuery.Sorting = facadeRequest.Sorting; + + // return await studentWithSigningRuleListQuery.GetDataFragmentAsync(facadeRequest.StartIndex, facadeRequest.Count, cancellationToken); + //} } diff --git a/Model/Grade.cs b/Model/Grade.cs index c8c0b8aa..20d36a4f 100644 --- a/Model/Grade.cs +++ b/Model/Grade.cs @@ -17,5 +17,5 @@ public class Grade public ICollection Students { get; } = new List(); - public List SigningRules { get; } = new List(); + //public List SigningRules { get; } = new List(); } diff --git a/Model/SigningRule.cs b/Model/SigningRule.cs index 457100c3..2b01e526 100644 --- a/Model/SigningRule.cs +++ b/Model/SigningRule.cs @@ -1,38 +1,38 @@ -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Havit.Model.Collections.Generic; +//using System.ComponentModel.DataAnnotations; +//using System.ComponentModel.DataAnnotations.Schema; +//using Havit.Model.Collections.Generic; -namespace MensaGymnazium.IntranetGen3.Model; +//namespace MensaGymnazium.IntranetGen3.Model; -public class SigningRule -{ - public int Id { get; set; } +//public class SigningRule +//{ +// public int Id { get; set; } - public Grade Grade { get; set; } - public int GradeId { get; set; } +// public Grade Grade { get; set; } +// public int GradeId { get; set; } - [MaxLength(100)] - public string Name { get; set; } +// [MaxLength(100)] +// public string Name { get; set; } - [MaxLength(Int32.MaxValue)] - public string Description { get; set; } +// [MaxLength(Int32.MaxValue)] +// public string Description { get; set; } - public List SubjectCategoryRelations { get; } = new List(); - [NotMapped] public IEnumerable SubjectCategories => SubjectCategoryRelations.Select(m => m.SubjectCategory); +// public List SubjectCategoryRelations { get; } = new List(); +// [NotMapped] public IEnumerable SubjectCategories => SubjectCategoryRelations.Select(m => m.SubjectCategory); - public List SubjectTypeRelations { get; } = new List(); - [NotMapped] public IEnumerable SubjectTypes => SubjectTypeRelations.Select(m => m.SubjectType); +// public List SubjectTypeRelations { get; } = new List(); +// [NotMapped] public IEnumerable SubjectTypes => SubjectTypeRelations.Select(m => m.SubjectType); - public int? Quantity { get; set; } +// public int? Quantity { get; set; } - public List RegistrationsWithDeleted { get; } = new List(); - [NotMapped] public ICollection Registrations { get; } +// public List RegistrationsWithDeleted { get; } = new List(); +// [NotMapped] public ICollection Registrations { get; } - [MaxLength(50)] - public string SeedItemIdentifier { get; set; } +// [MaxLength(50)] +// public string SeedItemIdentifier { get; set; } - public SigningRule() - { - Registrations = new FilteringCollection(RegistrationsWithDeleted, r => r.Deleted is null); - } -} +// public SigningRule() +// { +// Registrations = new FilteringCollection(RegistrationsWithDeleted, r => r.Deleted is null); +// } +//} diff --git a/Model/SigningRuleSubjectCategoryRelation.cs b/Model/SigningRuleSubjectCategoryRelation.cs index 8fa62b5d..558879ae 100644 --- a/Model/SigningRuleSubjectCategoryRelation.cs +++ b/Model/SigningRuleSubjectCategoryRelation.cs @@ -1,13 +1,13 @@ -namespace MensaGymnazium.IntranetGen3.Model; +//namespace MensaGymnazium.IntranetGen3.Model; -/// -/// M:N relation for SigningRule.SubjectCategories -/// -public class SigningRuleSubjectCategoryRelation -{ - public SigningRule SigningRule { get; set; } - public int SigningRuleId { get; set; } +///// +///// M:N relation for SigningRule.SubjectCategories +///// +//public class SigningRuleSubjectCategoryRelation +//{ +// public SigningRule SigningRule { get; set; } +// public int SigningRuleId { get; set; } - public SubjectCategory SubjectCategory { get; set; } - public int SubjectCategoryId { get; set; } -} +// public SubjectCategory SubjectCategory { get; set; } +// public int SubjectCategoryId { get; set; } +//} diff --git a/Model/SigningRuleSubjectTypeRelation.cs b/Model/SigningRuleSubjectTypeRelation.cs index 9b9ad715..87119293 100644 --- a/Model/SigningRuleSubjectTypeRelation.cs +++ b/Model/SigningRuleSubjectTypeRelation.cs @@ -1,13 +1,13 @@ -namespace MensaGymnazium.IntranetGen3.Model; +//namespace MensaGymnazium.IntranetGen3.Model; -/// -/// M:N relation for SigningRyle.SubjectTypes -/// -public class SigningRuleSubjectTypeRelation -{ - public SigningRule SigningRule { get; set; } - public int SigningRuleId { get; set; } +///// +///// M:N relation for SigningRyle.SubjectTypes +///// +//public class SigningRuleSubjectTypeRelation +//{ +// public SigningRule SigningRule { get; set; } +// public int SigningRuleId { get; set; } - public SubjectType SubjectType { get; set; } - public int SubjectTypeId { get; set; } -} +// public SubjectType SubjectType { get; set; } +// public int SubjectTypeId { get; set; } +//} diff --git a/Model/StudentSubjectRegistration.cs b/Model/StudentSubjectRegistration.cs index b8745170..83b593c5 100644 --- a/Model/StudentSubjectRegistration.cs +++ b/Model/StudentSubjectRegistration.cs @@ -15,8 +15,8 @@ public class StudentSubjectRegistration public StudentRegistrationType RegistrationType { get; set; } - public SigningRule UsedSigningRule { get; set; } - public int UsedSigningRuleId { get; set; } + //public SigningRule UsedSigningRule { get; set; } + //public int UsedSigningRuleId { get; set; } public DateTime Created { get; set; } public DateTime? Deleted { get; set; } diff --git a/Services/ISigningRuleMapper.cs b/Services/ISigningRuleMapper.cs index 20dc8d48..2c03448e 100644 --- a/Services/ISigningRuleMapper.cs +++ b/Services/ISigningRuleMapper.cs @@ -1,12 +1,12 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Model; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Model; -namespace MensaGymnazium.IntranetGen3.Services; +//namespace MensaGymnazium.IntranetGen3.Services; -public interface ISigningRuleMapper -{ - SigningRuleDto MapToSigningRuleDto(SigningRule signingRule); +//public interface ISigningRuleMapper +//{ +// SigningRuleDto MapToSigningRuleDto(SigningRule signingRule); - void MapFromSigningRuleDto(SigningRuleDto signingRuleDto, SigningRule signingRule); +// void MapFromSigningRuleDto(SigningRuleDto signingRuleDto, SigningRule signingRule); -} +//} diff --git a/Services/Security/UserManager.cs b/Services/Security/UserManager.cs index d0860867..1bad554c 100644 --- a/Services/Security/UserManager.cs +++ b/Services/Security/UserManager.cs @@ -39,9 +39,8 @@ public Task> GetRolesAsync(User user, ClaimsPrincipal principal = nu } #if DEBUG - //roles = Enum.GetValues().ToList(); + roles = Enum.GetValues().ToList(); #endif - return Task.FromResult>(roles); } } diff --git a/Services/SigningRuleMapper.cs b/Services/SigningRuleMapper.cs index 5e19bade..1b25e189 100644 --- a/Services/SigningRuleMapper.cs +++ b/Services/SigningRuleMapper.cs @@ -1,38 +1,38 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Model; -using MensaGymnazium.IntranetGen3.Primitives; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Model; +//using MensaGymnazium.IntranetGen3.Primitives; -namespace MensaGymnazium.IntranetGen3.Services; +//namespace MensaGymnazium.IntranetGen3.Services; -[Service] -public class SigningRuleMapper : ISigningRuleMapper -{ - public SigningRuleDto MapToSigningRuleDto(SigningRule signingRule) - { - Contract.Requires(signingRule != null); +//[Service] +//public class SigningRuleMapper : ISigningRuleMapper +//{ +// public SigningRuleDto MapToSigningRuleDto(SigningRule signingRule) +// { +// Contract.Requires(signingRule != null); - return new SigningRuleDto - { - Id = signingRule.Id, - Name = signingRule.Name, - Quantity = signingRule.Quantity, - GradeId = (GradeEntry)signingRule.GradeId, - SubjectTypeIds = new List(signingRule.SubjectTypes.Select(x => x.Id)), - SubjectCategoryIds = new List(signingRule.SubjectCategories.Select(x => x.Id)) - }; - } +// return new SigningRuleDto +// { +// Id = signingRule.Id, +// Name = signingRule.Name, +// Quantity = signingRule.Quantity, +// GradeId = (GradeEntry)signingRule.GradeId, +// SubjectTypeIds = new List(signingRule.SubjectTypes.Select(x => x.Id)), +// SubjectCategoryIds = new List(signingRule.SubjectCategories.Select(x => x.Id)) +// }; +// } - public void MapFromSigningRuleDto(SigningRuleDto signingRuleDto, SigningRule signingRule) - { - Contract.Requires(signingRuleDto is not null); - Contract.Requires(signingRule is not null); +// public void MapFromSigningRuleDto(SigningRuleDto signingRuleDto, SigningRule signingRule) +// { +// Contract.Requires(signingRuleDto is not null); +// Contract.Requires(signingRule is not null); - signingRule.Name = signingRuleDto.Name; - signingRule.Quantity = signingRuleDto.Quantity; - signingRule.GradeId = (int)signingRuleDto.GradeId; +// signingRule.Name = signingRuleDto.Name; +// signingRule.Quantity = signingRuleDto.Quantity; +// signingRule.GradeId = (int)signingRuleDto.GradeId; - // TODO - // SubjectCategories, SubjectTypes +// // TODO +// // SubjectCategories, SubjectTypes - } -} +// } +//} diff --git a/Web.Client/Pages/Electives/HomeIndexMyElectives.razor b/Web.Client/Pages/Electives/HomeIndexMyElectives.razor index 8bf7d383..cc451370 100644 --- a/Web.Client/Pages/Electives/HomeIndexMyElectives.razor +++ b/Web.Client/Pages/Electives/HomeIndexMyElectives.razor @@ -1,7 +1,8 @@  - +

HomeIndexMyElectives.razor

+ @* - +
*@
diff --git a/Web.Client/Pages/Electives/HomeIndexMyElectives.razor.cs b/Web.Client/Pages/Electives/HomeIndexMyElectives.razor.cs index 45f93242..fd8f2805 100644 --- a/Web.Client/Pages/Electives/HomeIndexMyElectives.razor.cs +++ b/Web.Client/Pages/Electives/HomeIndexMyElectives.razor.cs @@ -7,23 +7,23 @@ public partial class HomeIndexMyElectives { [Inject] protected ISubjectRegistrationsManagerFacade SubjectRegistrationsManagerFacade { get; set; } - private async Task> GetStudentWithSigningRuleGridData(GridDataProviderRequest request) - { - var facadeRequest = new DataFragmentRequest() - { - Filter = new() { CurrentStudentOnly = true }, - StartIndex = request.StartIndex, - Count = request.Count, - Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() - }; + //private async Task> GetStudentWithSigningRuleGridData(GridDataProviderRequest request) + //{ + // var facadeRequest = new DataFragmentRequest() + // { + // Filter = new() { CurrentStudentOnly = true }, + // StartIndex = request.StartIndex, + // Count = request.Count, + // Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() + // }; - var signingRuleListResult = await SubjectRegistrationsManagerFacade.GetStudentWithSigningRuleListAsync(facadeRequest, request.CancellationToken); + // var signingRuleListResult = await SubjectRegistrationsManagerFacade.GetStudentWithSigningRuleListAsync(facadeRequest, request.CancellationToken); - return new() - { - Data = signingRuleListResult.Data ?? new(), - TotalCount = signingRuleListResult.TotalCount - }; - } + // return new() + // { + // Data = signingRuleListResult.Data ?? new(), + // TotalCount = signingRuleListResult.TotalCount + // }; + //} } \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor index ae21df17..307cc1f6 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor @@ -1,4 +1,7 @@ - Tento předmět neodpovídá žádnému vašemu zápisovému pravidlu. - \ No newline at end of file + *@ \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs index cd207089..ce72a6f1 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs @@ -1,69 +1,69 @@ -using Havit; -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Primitives; +//using Havit; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Primitives; -namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; +//namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; -public partial class StudentSubjectRegistrationComponent -{ - [Parameter] public int? SubjectId { get; set; } +//public partial class StudentSubjectRegistrationComponent +//{ +// [Parameter] public int? SubjectId { get; set; } - [Parameter] public EventCallback OnRegistrationChanged { get; set; } +// [Parameter] public EventCallback OnRegistrationChanged { get; set; } - [Inject] protected IHxMessageBoxService MessageBox { get; set; } - [Inject] protected IHxMessengerService Messenger { get; set; } - [Inject] protected ISubjectRegistrationsManagerFacade SubjectRegistrationsManagerFacade { get; set; } +// [Inject] protected IHxMessageBoxService MessageBox { get; set; } +// [Inject] protected IHxMessengerService Messenger { get; set; } +// [Inject] protected ISubjectRegistrationsManagerFacade SubjectRegistrationsManagerFacade { get; set; } - private HxGrid gridComponent; +// private HxGrid gridComponent; - private async Task> GetGridData(GridDataProviderRequest request) - { - Contract.Assert(SubjectId is not null); +// private async Task> GetGridData(GridDataProviderRequest request) +// { +// Contract.Assert(SubjectId is not null); - var data = await SubjectRegistrationsManagerFacade.GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(SubjectId.Value)); +// var data = await SubjectRegistrationsManagerFacade.GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(SubjectId.Value)); - return request.ApplyTo(data); - } +// return request.ApplyTo(data); +// } - private async Task HandleCancelRegistrationClicked(int registrationId) - { - if (await MessageBox.ConfirmAsync("Opravdu chcete zrušit zápis?")) - { - try - { - await SubjectRegistrationsManagerFacade.CancelRegistrationAsync(Dto.FromValue(registrationId)); +// private async Task HandleCancelRegistrationClicked(int registrationId) +// { +// if (await MessageBox.ConfirmAsync("Opravdu chcete zrušit zápis?")) +// { +// try +// { +// await SubjectRegistrationsManagerFacade.CancelRegistrationAsync(Dto.FromValue(registrationId)); - await gridComponent.RefreshDataAsync(); - await OnRegistrationChanged.InvokeAsync(); - } - catch (OperationFailedException) - { - //NOOP - } - } - } +// await gridComponent.RefreshDataAsync(); +// await OnRegistrationChanged.InvokeAsync(); +// } +// catch (OperationFailedException) +// { +// //NOOP +// } +// } +// } - private async Task HandleCreateRegistrationClicked(int signingRuleId, StudentRegistrationType registrationType) - { - if (await MessageBox.ConfirmAsync("Opravdu chcete vytvořit zápis?")) - { - try - { - await SubjectRegistrationsManagerFacade.CreateRegistrationAsync( - new StudentSubjectRegistrationCreateDto() - { - SubjectId = SubjectId.Value, - SigningRuleId = signingRuleId, - RegistrationType = registrationType - }); +// private async Task HandleCreateRegistrationClicked(int signingRuleId, StudentRegistrationType registrationType) +// { +// if (await MessageBox.ConfirmAsync("Opravdu chcete vytvořit zápis?")) +// { +// try +// { +// await SubjectRegistrationsManagerFacade.CreateRegistrationAsync( +// new StudentSubjectRegistrationCreateDto() +// { +// SubjectId = SubjectId.Value, +// SigningRuleId = signingRuleId, +// RegistrationType = registrationType +// }); - await gridComponent.RefreshDataAsync(); - await OnRegistrationChanged.InvokeAsync(); - } - catch (OperationFailedException) - { - //NOOP - } - } - } -} \ No newline at end of file +// await gridComponent.RefreshDataAsync(); +// await OnRegistrationChanged.InvokeAsync(); +// } +// catch (OperationFailedException) +// { +// //NOOP +// } +// } +// } +//} \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor b/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor index 2b1ff78e..b178847e 100644 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor +++ b/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor @@ -1,6 +1,8 @@ @attribute [Route(Routes.Electives.StudentWithSigningRuleList)] - @@ -21,3 +23,4 @@ + *@ \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor.cs b/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor.cs index b4e610c6..a41c3833 100644 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor.cs +++ b/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor.cs @@ -1,51 +1,51 @@ -using Havit.Collections; -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; -public partial class StudentWithSigningRuleList -{ - [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } - [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } - [Inject] protected ISubjectRegistrationsManagerFacade SubjectRegistrationsManagerFacade { get; set; } - - private StudentWithSigningRuleGrid gridComponent; - private StudentWithSigningRuleListQueryFilter filterModel = new() { IncompleteOnly = true }; - - protected override async Task OnInitializedAsync() - { - await StudentsDataStore.EnsureDataAsync(); - await SigningRulesDataStore.EnsureDataAsync(); - } - - private async Task> GetGridData(GridDataProviderRequest request) - { - var facadeRequest = new DataFragmentRequest() - { - Filter = filterModel, - StartIndex = request.StartIndex, - Count = request.Count, - Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() - }; - - var signingRuleListResult = await SubjectRegistrationsManagerFacade.GetStudentWithSigningRuleListAsync(facadeRequest, request.CancellationToken); - - return new() - { - Data = signingRuleListResult.Data ?? new(), - TotalCount = signingRuleListResult.TotalCount - }; - } - - private async Task HandleFilterModelChanged(StudentWithSigningRuleListQueryFilter newFilterModel) - { - filterModel = newFilterModel; - await gridComponent.RefreshDataAsync(); - } - - private async Task HandleIncompleteOnlyValueChanged(bool newValue) - { - filterModel.IncompleteOnly = newValue; - await gridComponent.RefreshDataAsync(); - } -} \ No newline at end of file +//using Havit.Collections; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; + +//namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; +//public partial class StudentWithSigningRuleList +//{ +// [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } +// [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } +// [Inject] protected ISubjectRegistrationsManagerFacade SubjectRegistrationsManagerFacade { get; set; } + +// private StudentWithSigningRuleGrid gridComponent; +// private StudentWithSigningRuleListQueryFilter filterModel = new() { IncompleteOnly = true }; + +// protected override async Task OnInitializedAsync() +// { +// await StudentsDataStore.EnsureDataAsync(); +// await SigningRulesDataStore.EnsureDataAsync(); +// } + +// private async Task> GetGridData(GridDataProviderRequest request) +// { +// var facadeRequest = new DataFragmentRequest() +// { +// Filter = filterModel, +// StartIndex = request.StartIndex, +// Count = request.Count, +// Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() +// }; + +// var signingRuleListResult = await SubjectRegistrationsManagerFacade.GetStudentWithSigningRuleListAsync(facadeRequest, request.CancellationToken); + +// return new() +// { +// Data = signingRuleListResult.Data ?? new(), +// TotalCount = signingRuleListResult.TotalCount +// }; +// } + +// private async Task HandleFilterModelChanged(StudentWithSigningRuleListQueryFilter newFilterModel) +// { +// filterModel = newFilterModel; +// await gridComponent.RefreshDataAsync(); +// } + +// private async Task HandleIncompleteOnlyValueChanged(bool newValue) +// { +// filterModel.IncompleteOnly = newValue; +// await gridComponent.RefreshDataAsync(); +// } +//} \ No newline at end of file diff --git a/Web.Client/Pages/Electives/SubjectList.razor.cs b/Web.Client/Pages/Electives/SubjectList.razor.cs index 23bf587a..2c129ed2 100644 --- a/Web.Client/Pages/Electives/SubjectList.razor.cs +++ b/Web.Client/Pages/Electives/SubjectList.razor.cs @@ -26,7 +26,7 @@ public partial class SubjectList private HxGrid subjectsGrid; private SubjectListItemDto subjectSelected; private SubjectEdit subjectEditComponent; - private List studentRegistrations; + //private List studentRegistrations; private static int? LastSigningRuleId { get; set; } @@ -39,20 +39,24 @@ protected override async Task OnInitializedAsync() if ((await ClientAuthService.GetCurrentClaimsPrincipal()).IsInRole(nameof(Role.Student))) { - studentRegistrations = await SubjectRegistrationsManagerFacade.GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)null)); + //Todo : RETHERE + //studentRegistrations = await SubjectRegistrationsManagerFacade.GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)null)); } } protected bool IsStudentRegistered(int subjectId, StudentRegistrationType registrationType) { - if (studentRegistrations == null) - { - return false; - } - return studentRegistrations - .Where(ssr => (this.subjectListFilter.SigningRuleId is null) || (ssr.Id == this.subjectListFilter.SigningRuleId)) - .SelectMany(sr => sr.Registrations) - .Any(r => (r.SubjectId == subjectId) && (r.RegistrationType == registrationType)); + //Todo : RETHERE + return false; + + //if (studentRegistrations == null) + //{ + // return false; + //} + //return studentRegistrations + // .Where(ssr => (this.subjectListFilter.SigningRuleId is null) || (ssr.Id == this.subjectListFilter.SigningRuleId)) + // .SelectMany(sr => sr.Registrations) + // .Any(r => (r.SubjectId == subjectId) && (r.RegistrationType == registrationType)); } protected string GetRowCssClass(SubjectListItemDto item) diff --git a/Web.Server/Web.Server.csproj b/Web.Server/Web.Server.csproj index 15d77ecb..c2c284c1 100644 --- a/Web.Server/Web.Server.csproj +++ b/Web.Server/Web.Server.csproj @@ -6,6 +6,7 @@ true MensaGymnazium.IntranetGen3.Web.Server MensaGymnazium.IntranetGen3.Web.Server + d785f9e1-fb2e-4c35-834c-a3d637d688db From 7f43e4bca42a099c9734cf6fd3bdd04018b1d80e Mon Sep 17 00:00:00 2001 From: Xopabyteh <70832276+Xopabyteh@users.noreply.github.com> Date: Sun, 7 Apr 2024 13:47:27 +0200 Subject: [PATCH 2/7] Got rid of all signing rules, thus removing a huge portion of the logic. Now students can register anywhere without any validation. --- Contracts/ISigningRuleFacade.cs | 24 ++-- .../ISubjectRegistrationsManagerFacade.cs | 12 +- ...egistrationsDto.cs => RegistrationsDto.cs} | 2 +- ...tionsDto.cs => StudentRegistrationsDto.cs} | 2 +- .../StudentSubjectRegistrationCreateDto.cs | 6 +- Contracts/StudentSubjectRegistrationDto.cs | 2 +- .../Queries/IStudentRegistrationsQuery.cs | 10 ++ ...udentSigningRulesWithRegistrationsQuery.cs | 10 -- ...sQuery.cs => StudentRegistrationsQuery.cs} | 36 ++--- .../IStudentSubjectRegistrationRepository.cs | 12 +- .../StudentSubjectRegistrationDbRepository.cs | 31 +++-- Facades/SubjectRegistrationsManagerFacade.cs | 40 +++++- .../Components/Pickers/SigningRulePicker.cs | 86 ++++++------ .../Pages/Electives/SigningRuleList.razor | 4 +- .../Pages/Electives/SigningRuleList.razor.cs | 124 ++++++++--------- .../StudentSubjectRegistrationComponent.razor | 25 +++- ...udentSubjectRegistrationComponent.razor.cs | 131 ++++++++++-------- .../StudentSubjectRegistrationEdit.razor | 2 +- .../StudentSubjectRegistrationList.razor | 2 +- .../StudentSubjectRegistrationsGrid.razor | 4 +- .../StudentSubjectRegistrationsGrid.razor.cs | 4 +- .../StudentWithSigningRuleGrid.razor | 6 +- .../StudentWithSigningRuleGrid.razor.cs | 38 ++--- .../Pages/Electives/SubjectDetail.razor | 1 + Web.Client/Pages/Electives/SubjectList.razor | 4 +- Web.Client/Program.cs | 2 +- .../DataStores/ISigningRulesDataStore.cs | 12 +- .../DataStores/SigningRulesDataStore.cs | 38 ++--- 28 files changed, 378 insertions(+), 292 deletions(-) rename Contracts/{SigningRuleWithRegistrationsDto.cs => RegistrationsDto.cs} (68%) rename Contracts/{SigningRuleStudentRegistrationsDto.cs => StudentRegistrationsDto.cs} (91%) create mode 100644 DataLayer/Queries/IStudentRegistrationsQuery.cs delete mode 100644 DataLayer/Queries/IStudentSigningRulesWithRegistrationsQuery.cs rename DataLayer/Queries/{StudentSigningRulesWithRegistrationsQuery.cs => StudentRegistrationsQuery.cs} (53%) diff --git a/Contracts/ISigningRuleFacade.cs b/Contracts/ISigningRuleFacade.cs index c6ebe9a5..850a880c 100644 --- a/Contracts/ISigningRuleFacade.cs +++ b/Contracts/ISigningRuleFacade.cs @@ -1,14 +1,14 @@ -using Havit.ComponentModel; +//using Havit.ComponentModel; -namespace MensaGymnazium.IntranetGen3.Contracts; +//namespace MensaGymnazium.IntranetGen3.Contracts; -[ApiContract] -public interface ISigningRuleFacade -{ - Task> GetAllSigningRuleReferencesAsync(CancellationToken cancellationToken = default); - Task> GetSigningRuleListAsync(DataFragmentRequest signingRuleListRequest, CancellationToken cancellationToken = default); - Task DeleteSigningRuleAsync(Dto SigningRuleId, CancellationToken cancellationToken = default); - Task> CreateSigningRuleAsync(SigningRuleDto SigningRuleEditDto, CancellationToken cancellationToken = default); - Task UpdateSigningRuleAsync(SigningRuleDto SigningRuleEditDto, CancellationToken cancellationToken = default); - Task GetSigningRuleDetailAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default); -} +//[ApiContract] +//public interface ISigningRuleFacade +//{ +// Task> GetAllSigningRuleReferencesAsync(CancellationToken cancellationToken = default); +// Task> GetSigningRuleListAsync(DataFragmentRequest signingRuleListRequest, CancellationToken cancellationToken = default); +// Task DeleteSigningRuleAsync(Dto SigningRuleId, CancellationToken cancellationToken = default); +// Task> CreateSigningRuleAsync(SigningRuleDto SigningRuleEditDto, CancellationToken cancellationToken = default); +// Task UpdateSigningRuleAsync(SigningRuleDto SigningRuleEditDto, CancellationToken cancellationToken = default); +// Task GetSigningRuleDetailAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default); +//} diff --git a/Contracts/ISubjectRegistrationsManagerFacade.cs b/Contracts/ISubjectRegistrationsManagerFacade.cs index 4288e3d2..c0ed4a8d 100644 --- a/Contracts/ISubjectRegistrationsManagerFacade.cs +++ b/Contracts/ISubjectRegistrationsManagerFacade.cs @@ -3,8 +3,16 @@ [ApiContract] public interface ISubjectRegistrationsManagerFacade { - //Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default); - //Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default); + //Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default); + + /// + /// Returns the users registration for a subject + /// // TODO: Change to query that can be cached inside data store + /// + /// + /// + /// Always returns a registration. If there is no registration, it returns the DTO with no data set + Task GetCurrentUserRegistrationForSubject(Dto subjectId, CancellationToken cancellationToken = default); Task CancelRegistrationAsync(Dto studentSubjectRegistrationId, CancellationToken cancellationToken = default); Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto studentSubjectRegistrationCreateDto, CancellationToken cancellationToken = default); //Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken); diff --git a/Contracts/SigningRuleWithRegistrationsDto.cs b/Contracts/RegistrationsDto.cs similarity index 68% rename from Contracts/SigningRuleWithRegistrationsDto.cs rename to Contracts/RegistrationsDto.cs index 0f5055d0..af2547bf 100644 --- a/Contracts/SigningRuleWithRegistrationsDto.cs +++ b/Contracts/RegistrationsDto.cs @@ -1,6 +1,6 @@ namespace MensaGymnazium.IntranetGen3.Contracts; -public record SigningRuleWithRegistrationsDto : SigningRuleDto +public record RegistrationsDto : SigningRuleDto { public List Registrations { get; set; } = new(); } \ No newline at end of file diff --git a/Contracts/SigningRuleStudentRegistrationsDto.cs b/Contracts/StudentRegistrationsDto.cs similarity index 91% rename from Contracts/SigningRuleStudentRegistrationsDto.cs rename to Contracts/StudentRegistrationsDto.cs index 67521cba..8aba5710 100644 --- a/Contracts/SigningRuleStudentRegistrationsDto.cs +++ b/Contracts/StudentRegistrationsDto.cs @@ -1,6 +1,6 @@ namespace MensaGymnazium.IntranetGen3.Contracts; -public record SigningRuleStudentRegistrationsDto +public record StudentRegistrationsDto { public int Id { get; set; } public string Name { get; set; } diff --git a/Contracts/StudentSubjectRegistrationCreateDto.cs b/Contracts/StudentSubjectRegistrationCreateDto.cs index 7f50d58b..14966aaf 100644 --- a/Contracts/StudentSubjectRegistrationCreateDto.cs +++ b/Contracts/StudentSubjectRegistrationCreateDto.cs @@ -6,13 +6,13 @@ namespace MensaGymnazium.IntranetGen3.Contracts; public record StudentSubjectRegistrationCreateDto { public int? SubjectId { get; set; } - public int? SigningRuleId { get; set; } + //public int? SigningRuleId { get; set; } public StudentRegistrationType? RegistrationType { get; set; } public virtual void UpdateFrom(StudentSubjectRegistrationDto model) { this.SubjectId = model.SubjectId; - this.SigningRuleId = model.SigningRuleId; + //this.SigningRuleId = model.SigningRuleId; this.RegistrationType = model.RegistrationType; } @@ -21,7 +21,7 @@ public class StudentSubjectRegistrationCreateDtoValidator : AbstractValidator x.SubjectId).NotNull(); - RuleFor(x => x.SigningRuleId).NotNull(); + //RuleFor(x => x.SigningRuleId).NotNull(); RuleFor(x => x.RegistrationType).NotNull(); } } diff --git a/Contracts/StudentSubjectRegistrationDto.cs b/Contracts/StudentSubjectRegistrationDto.cs index 197fc452..a2f593fd 100644 --- a/Contracts/StudentSubjectRegistrationDto.cs +++ b/Contracts/StudentSubjectRegistrationDto.cs @@ -22,7 +22,7 @@ public class StudentSubjectRegistrationDtoValidator : AbstractValidator x.SubjectId).NotNull().WithName("Předmět"); - RuleFor(x => x.SigningRuleId).NotNull().WithName("Zápisové pravidlo"); + //RuleFor(x => x.SigningRuleId).NotNull().WithName("Zápisové pravidlo"); RuleFor(x => x.RegistrationType).NotNull().WithName("Typ zápisu"); RuleFor(x => x.StudentId).NotNull().WithName("Student"); } diff --git a/DataLayer/Queries/IStudentRegistrationsQuery.cs b/DataLayer/Queries/IStudentRegistrationsQuery.cs new file mode 100644 index 00000000..2913e385 --- /dev/null +++ b/DataLayer/Queries/IStudentRegistrationsQuery.cs @@ -0,0 +1,10 @@ +using MensaGymnazium.IntranetGen3.Contracts; +using MensaGymnazium.IntranetGen3.Model; +using MensaGymnazium.IntranetGen3.Model.Security; + +namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; + +public interface IStudentRegistrationsQuery +{ + Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/DataLayer/Queries/IStudentSigningRulesWithRegistrationsQuery.cs b/DataLayer/Queries/IStudentSigningRulesWithRegistrationsQuery.cs deleted file mode 100644 index e87b9660..00000000 --- a/DataLayer/Queries/IStudentSigningRulesWithRegistrationsQuery.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Model; -using MensaGymnazium.IntranetGen3.Model.Security; - -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -public interface IStudentSigningRulesWithRegistrationsQuery -{ - Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs b/DataLayer/Queries/StudentRegistrationsQuery.cs similarity index 53% rename from DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs rename to DataLayer/Queries/StudentRegistrationsQuery.cs index 092c69bf..37eef2c2 100644 --- a/DataLayer/Queries/StudentSigningRulesWithRegistrationsQuery.cs +++ b/DataLayer/Queries/StudentRegistrationsQuery.cs @@ -8,36 +8,30 @@ //namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; //[Service] -//public class StudentSigningRulesWithRegistrationsQuery : QueryBase, IStudentSigningRulesWithRegistrationsQuery +//public class StudentRegistrationsQuery : QueryBase, IStudentRegistrationsQuery //{ -// private readonly ISigningRuleDataSource signingRuleDataSource; - // protected Student Student { get; set; } // protected Subject SubjectFilter { get; set; } -// public StudentSigningRulesWithRegistrationsQuery( -// ISigningRuleDataSource signingRuleDataSource) -// { -// this.signingRuleDataSource = signingRuleDataSource; -// } - -// protected override IQueryable Query() +// protected override IQueryable Query() // { // Contract.Requires(Student is not null); -// var studentNextGrade = ((GradeEntry)this.Student.GradeId).NextGrade(); +// //var studentNextGrade = ((GradeEntry)this.Student.GradeId).NextGrade(); + +// //var signingRulesData = signingRuleDataSource.Data +// //.Where(x => x.GradeId == (int)studentNextGrade); + +// //if (this.SubjectFilter is not null) +// //{ +// // signingRulesData = signingRulesData.Where(sr => this.SubjectFilter.GradeRelations.Select(gr => gr.GradeId).Contains(sr.GradeId)); +// // signingRulesData = signingRulesData.Where(sr => sr.SubjectTypeRelations.Any(str => this.SubjectFilter.TypeRelations.Select(tr => tr.SubjectTypeId).Contains(str.SubjectTypeId))); +// // signingRulesData = signingRulesData.Where(sr => sr.SubjectCategoryRelations.Any(scr => scr.SubjectCategoryId == this.SubjectFilter.CategoryId)); +// //} -// var data = signingRuleDataSource.Data -// .Where(x => x.GradeId == (int)studentNextGrade); -// if (this.SubjectFilter is not null) -// { -// data = data.Where(sr => this.SubjectFilter.GradeRelations.Select(gr => gr.GradeId).Contains(sr.GradeId)); -// data = data.Where(sr => sr.SubjectTypeRelations.Any(str => this.SubjectFilter.TypeRelations.Select(tr => tr.SubjectTypeId).Contains(str.SubjectTypeId))); -// data = data.Where(sr => sr.SubjectCategoryRelations.Any(scr => scr.SubjectCategoryId == this.SubjectFilter.CategoryId)); -// } -// return data.Select(sr => new SigningRuleWithRegistrationsDto() +// return signingRulesData.Select(sr => new RegistrationsDto() // { // Id = sr.Id, // GradeId = (GradeEntry)sr.GradeId, @@ -59,7 +53,7 @@ // }); // } -// public Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default) +// public Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default) // { // Contract.Requires(student is not null); diff --git a/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs b/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs index 64217048..429992d3 100644 --- a/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs +++ b/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs @@ -5,9 +5,15 @@ namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; public partial interface IStudentSubjectRegistrationRepository { - Task> GetBySubjectAsync(int id, CancellationToken cancellationToken = default); + public Task GetByStudentForSubject( + int studentId, + int subjectId, + CancellationToken cancellationToken); + public Task> GetBySubjectAsync( + int id, + CancellationToken cancellationToken = default); - public Task CountBySubjectAndTypeAsync(int subjectId, StudentRegistrationType type, CancellationToken cancellationToken = default); + //public Task CountBySubjectAndTypeAsync(int subjectId, StudentRegistrationType type, CancellationToken cancellationToken = default); - public Task> GetByStudentAndTimeAsync(int studentId, DayOfWeek day, ScheduleSlotInDay slot, CancellationToken cancellationToken = default); + //public Task> GetByStudentAndTimeAsync(int studentId, DayOfWeek day, ScheduleSlotInDay slot, CancellationToken cancellationToken = default); } diff --git a/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs b/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs index 8d46a15a..b5f1f93d 100644 --- a/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs +++ b/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs @@ -5,22 +5,29 @@ namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; public partial class StudentSubjectRegistrationDbRepository : IStudentSubjectRegistrationRepository { + public Task GetByStudentForSubject( + int studentId, + int subjectId, + CancellationToken cancellationToken = default) + { + return Data.FirstOrDefaultAsync(ssr => ssr.StudentId == studentId && ssr.SubjectId == subjectId, cancellationToken); + } public Task> GetBySubjectAsync(int subjectId, CancellationToken cancellationToken = default) { return Data.Where(ssr => ssr.SubjectId == subjectId).ToListAsync(cancellationToken); } - public Task CountBySubjectAndTypeAsync(int subjectId, StudentRegistrationType type, CancellationToken cancellationToken = default) - { - return Data.Where(ssr => ssr.SubjectId == subjectId && ssr.RegistrationType == type).LongCountAsync(); - } + //public Task CountBySubjectAndTypeAsync(int subjectId, StudentRegistrationType type, CancellationToken cancellationToken = default) + //{ + // return Data.Where(ssr => ssr.SubjectId == subjectId && ssr.RegistrationType == type).LongCountAsync(); + //} - public Task> GetByStudentAndTimeAsync(int studentId, DayOfWeek day, ScheduleSlotInDay slot, CancellationToken cancellationToken = default) - { - return Data.Where(ssr => - ssr.StudentId == studentId && - ssr.Subject.ScheduleDayOfWeek == day && - ssr.Subject.ScheduleSlotInDay == slot - ).ToListAsync(); - } + //public Task> GetByStudentAndTimeAsync(int studentId, DayOfWeek day, ScheduleSlotInDay slot, CancellationToken cancellationToken = default) + //{ + // return Data.Where(ssr => + // ssr.StudentId == studentId && + // ssr.Subject.ScheduleDayOfWeek == day && + // ssr.Subject.ScheduleSlotInDay == slot + // ).ToListAsync(); + //} } diff --git a/Facades/SubjectRegistrationsManagerFacade.cs b/Facades/SubjectRegistrationsManagerFacade.cs index 87c3d50f..9ddb8baf 100644 --- a/Facades/SubjectRegistrationsManagerFacade.cs +++ b/Facades/SubjectRegistrationsManagerFacade.cs @@ -54,6 +54,34 @@ private bool RegistrationIsWithinValidDate() return true; } + [Authorize(Roles = nameof(Role.Student))] + public async Task GetCurrentUserRegistrationForSubject(Dto subjectId, CancellationToken cancellationToken = default) + { + var user = applicationAuthenticationService.GetCurrentUser(); + Contract.Requires(user.StudentId is not null); + + // Todo: change to query? + var registration = await studentSubjectRegistrationRepository.GetByStudentForSubject( + studentId: user.Id, + subjectId: subjectId.Value, + cancellationToken: cancellationToken); + + if (registration is null) // No registration + { + return new(); + } + + // Map + return new StudentSubjectRegistrationDto() + { + RegistrationType = registration.RegistrationType, + Created = registration.Created, + Id = registration.Id, + StudentId = registration.StudentId, // Should be same as input + SubjectId = registration.SubjectId // Should be same as input + }; + } + [Authorize(Roles = nameof(Role.Student))] public async Task CancelRegistrationAsync(Dto studentSubjectRegistrationId, CancellationToken cancellationToken = default) { @@ -77,7 +105,7 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st { // Verify request Contract.Requires(studentSubjectRegistrationCreateDto is not null); - Contract.Requires(studentSubjectRegistrationCreateDto.SigningRuleId != default); + //Contract.Requires(studentSubjectRegistrationCreateDto.SigningRuleId != default); Contract.Requires(studentSubjectRegistrationCreateDto.SubjectId != default); Contract.Requires(studentSubjectRegistrationCreateDto.RegistrationType != default); @@ -117,12 +145,14 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st await unitOfWork.CommitAsync(cancellationToken); } + + //[Authorize(Roles = nameof(Role.Student))] - //public async Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default) + //public async Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default) //{ // var signingRulesWithRegistrations = await GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)subjectId.Value), cancellationToken); - // List result = new(); + // List result = new(); // var subjectRegistered = signingRulesWithRegistrations.SelectMany(x => x.Registrations).Any(ssr => ssr.SubjectId == subjectId.Value); // var subject = await subjectRepository.GetObjectAsync(subjectId.Value, cancellationToken); @@ -135,7 +165,7 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st // foreach (var item in signingRulesWithRegistrations) // { - // var resultItem = new SigningRuleStudentRegistrationsDto(); + // var resultItem = new StudentRegistrationsDto(); // resultItem.Id = item.Id; // resultItem.Name = item.Name; @@ -201,7 +231,7 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st //} //[Authorize(Roles = nameof(Role.Student))] - //public async Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default) + //public async Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default) //{ // var user = applicationAuthenticationService.GetCurrentUser(); // Contract.Assert(user.Student is not null); diff --git a/Web.Client/Components/Pickers/SigningRulePicker.cs b/Web.Client/Components/Pickers/SigningRulePicker.cs index 5af7f598..5466788c 100644 --- a/Web.Client/Components/Pickers/SigningRulePicker.cs +++ b/Web.Client/Components/Pickers/SigningRulePicker.cs @@ -1,43 +1,43 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Primitives; -using MensaGymnazium.IntranetGen3.Web.Client.Services; -using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -namespace MensaGymnazium.IntranetGen3.Web.Client.Components.Pickers; - -public class SigningRulePicker : HxSelectBase -{ - [Parameter] public string NullText { get => NullTextImpl; set => NullTextImpl = value; } - [Parameter] public bool RestrictStudentGrade { get; set; } = false; - - [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } - [Inject] protected IClientAuthService ClientAuthService { get; set; } - - public SigningRulePicker() - { - this.NullableImpl = true; - this.NullDataTextImpl = "načítám"; - this.NullTextImpl = "-vyberte-"; - this.ValueSelectorImpl = (c => c.Id); - this.TextSelectorImpl = (c => c.Name); - this.AutoSortImpl = false; - } - - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - var data = (await SigningRulesDataStore.GetAllAsync()); - - if (RestrictStudentGrade) // not expected to change during component lifecycle - { - var gradeId = await ClientAuthService.GetCurrentStudentGradeIdAsync(); - if (gradeId is not null) - { - data = data.Where(c => c.GradeId == gradeId.Value.NextGrade()); - } - } - - DataImpl = data.ToList(); - } -} +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Primitives; +//using MensaGymnazium.IntranetGen3.Web.Client.Services; +//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; + +//namespace MensaGymnazium.IntranetGen3.Web.Client.Components.Pickers; + +//public class SigningRulePicker : HxSelectBase +//{ +// [Parameter] public string NullText { get => NullTextImpl; set => NullTextImpl = value; } +// [Parameter] public bool RestrictStudentGrade { get; set; } = false; + +// [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } +// [Inject] protected IClientAuthService ClientAuthService { get; set; } + +// public SigningRulePicker() +// { +// this.NullableImpl = true; +// this.NullDataTextImpl = "načítám"; +// this.NullTextImpl = "-vyberte-"; +// this.ValueSelectorImpl = (c => c.Id); +// this.TextSelectorImpl = (c => c.Name); +// this.AutoSortImpl = false; +// } + +// protected override async Task OnInitializedAsync() +// { +// await base.OnInitializedAsync(); + +// var data = (await SigningRulesDataStore.GetAllAsync()); + +// if (RestrictStudentGrade) // not expected to change during component lifecycle +// { +// var gradeId = await ClientAuthService.GetCurrentStudentGradeIdAsync(); +// if (gradeId is not null) +// { +// data = data.Where(c => c.GradeId == gradeId.Value.NextGrade()); +// } +// } + +// DataImpl = data.ToList(); +// } +//} diff --git a/Web.Client/Pages/Electives/SigningRuleList.razor b/Web.Client/Pages/Electives/SigningRuleList.razor index 60b2e00b..985b9182 100644 --- a/Web.Client/Pages/Electives/SigningRuleList.razor +++ b/Web.Client/Pages/Electives/SigningRuleList.razor @@ -1,4 +1,4 @@ -@attribute [Route(Routes.Electives.SigningRuleList)] +@* @attribute [Route(Routes.Electives.SigningRuleList)] @@ -16,4 +16,4 @@ - \ No newline at end of file + *@ \ No newline at end of file diff --git a/Web.Client/Pages/Electives/SigningRuleList.razor.cs b/Web.Client/Pages/Electives/SigningRuleList.razor.cs index 492bae4a..6fc94efa 100644 --- a/Web.Client/Pages/Electives/SigningRuleList.razor.cs +++ b/Web.Client/Pages/Electives/SigningRuleList.razor.cs @@ -1,62 +1,62 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using Microsoft.AspNetCore.Components; -using Havit.Collections; -using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; - -public partial class SigningRuleList -{ - [Inject] protected IHxMessengerService Messenger { get; set; } - [Inject] protected ISigningRuleFacade SigningRuleFacade { get; set; } - [Inject] protected NavigationManager NavigationManager { get; set; } - [Inject] protected IGradesDataStore GradesDataStore { get; set; } - [Inject] protected ISubjectCategoriesDataStore SubjectCategoriesDataStore { get; set; } - [Inject] protected ISubjectTypesDataStore SubjectTypesDataStore { get; set; } - - private SigningRuleListQueryFilter signingRuleListFilter = new SigningRuleListQueryFilter(); - private HxGrid gridComponent; - - protected override async Task OnInitializedAsync() - { - await GradesDataStore.EnsureDataAsync(); - await SubjectCategoriesDataStore.EnsureDataAsync(); - await SubjectTypesDataStore.EnsureDataAsync(); - } - - private async Task> LoadSigningRules(GridDataProviderRequest request) - { - var SigningRuleRequest = new DataFragmentRequest() - { - Filter = signingRuleListFilter, - StartIndex = request.StartIndex, - Count = request.Count, - Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() - }; - - var signingRuleListResult = await SigningRuleFacade.GetSigningRuleListAsync(SigningRuleRequest, request.CancellationToken); - - return new() - { - Data = signingRuleListResult.Data ?? new(), - TotalCount = signingRuleListResult.TotalCount - }; - } - - private string GetSubjectTypes(List subjectTypesIds) - { - if (subjectTypesIds.Count == SubjectTypesDataStore.GetAll()?.Count()) - { - return "všechny"; - } - - return String.Join(", ", subjectTypesIds.Select(id => SubjectTypesDataStore.GetByKey(id)?.Name)) - .Trim(',', ' '); - } - - private string GetSubjectCategories(List subjectCategoriesIds) - { - return String.Join(", ", subjectCategoriesIds.Select(id => SubjectCategoriesDataStore.GetByKey(id)?.Name)) - .Trim(',', ' '); - } -} +//using MensaGymnazium.IntranetGen3.Contracts; +//using Microsoft.AspNetCore.Components; +//using Havit.Collections; +//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; + +//namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; + +//public partial class SigningRuleList +//{ +// [Inject] protected IHxMessengerService Messenger { get; set; } +// [Inject] protected ISigningRuleFacade SigningRuleFacade { get; set; } +// [Inject] protected NavigationManager NavigationManager { get; set; } +// [Inject] protected IGradesDataStore GradesDataStore { get; set; } +// [Inject] protected ISubjectCategoriesDataStore SubjectCategoriesDataStore { get; set; } +// [Inject] protected ISubjectTypesDataStore SubjectTypesDataStore { get; set; } + +// private SigningRuleListQueryFilter signingRuleListFilter = new SigningRuleListQueryFilter(); +// private HxGrid gridComponent; + +// protected override async Task OnInitializedAsync() +// { +// await GradesDataStore.EnsureDataAsync(); +// await SubjectCategoriesDataStore.EnsureDataAsync(); +// await SubjectTypesDataStore.EnsureDataAsync(); +// } + +// private async Task> LoadSigningRules(GridDataProviderRequest request) +// { +// var SigningRuleRequest = new DataFragmentRequest() +// { +// Filter = signingRuleListFilter, +// StartIndex = request.StartIndex, +// Count = request.Count, +// Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() +// }; + +// var signingRuleListResult = await SigningRuleFacade.GetSigningRuleListAsync(SigningRuleRequest, request.CancellationToken); + +// return new() +// { +// Data = signingRuleListResult.Data ?? new(), +// TotalCount = signingRuleListResult.TotalCount +// }; +// } + +// private string GetSubjectTypes(List subjectTypesIds) +// { +// if (subjectTypesIds.Count == SubjectTypesDataStore.GetAll()?.Count()) +// { +// return "všechny"; +// } + +// return String.Join(", ", subjectTypesIds.Select(id => SubjectTypesDataStore.GetByKey(id)?.Name)) +// .Trim(',', ' '); +// } + +// private string GetSubjectCategories(List subjectCategoriesIds) +// { +// return String.Join(", ", subjectCategoriesIds.Select(id => SubjectCategoriesDataStore.GetByKey(id)?.Name)) +// .Trim(',', ' '); +// } +//} diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor index 307cc1f6..8934dbad 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor @@ -1,7 +1,28 @@ - @* Todo : RETHERE *@ +@* Todo : RETHERE *@ + + +@if (studentsRegistrationForThisSubject?.RegistrationType is not null) +{ + -@* gridComponent; + /// + /// If registration type is null there is no registration, no registration was made by current user (student) for this subject + /// //TODO: Replace with data from data store? This is now messy + /// + private StudentSubjectRegistrationDto studentsRegistrationForThisSubject; -// private async Task> GetGridData(GridDataProviderRequest request) -// { -// Contract.Assert(SubjectId is not null); + protected override async Task OnInitializedAsync() + { + studentsRegistrationForThisSubject = await SubjectRegistrationsManagerFacade.GetCurrentUserRegistrationForSubject( + Dto.FromValue(SubjectId!.Value)); + } -// var data = await SubjectRegistrationsManagerFacade.GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(SubjectId.Value)); + //private HxGrid gridComponent; -// return request.ApplyTo(data); -// } + //private async Task> GetGridData(GridDataProviderRequest request) + //{ + // Contract.Assert(SubjectId is not null); -// private async Task HandleCancelRegistrationClicked(int registrationId) -// { -// if (await MessageBox.ConfirmAsync("Opravdu chcete zrušit zápis?")) -// { -// try -// { -// await SubjectRegistrationsManagerFacade.CancelRegistrationAsync(Dto.FromValue(registrationId)); + // var data = await SubjectRegistrationsManagerFacade.GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(SubjectId.Value)); -// await gridComponent.RefreshDataAsync(); -// await OnRegistrationChanged.InvokeAsync(); -// } -// catch (OperationFailedException) -// { -// //NOOP -// } -// } -// } + // return request.ApplyTo(data); + //} -// private async Task HandleCreateRegistrationClicked(int signingRuleId, StudentRegistrationType registrationType) -// { -// if (await MessageBox.ConfirmAsync("Opravdu chcete vytvořit zápis?")) -// { -// try -// { -// await SubjectRegistrationsManagerFacade.CreateRegistrationAsync( -// new StudentSubjectRegistrationCreateDto() -// { -// SubjectId = SubjectId.Value, -// SigningRuleId = signingRuleId, -// RegistrationType = registrationType -// }); + private async Task HandleCancelRegistrationClicked() + { + if (studentsRegistrationForThisSubject is null) + { + throw new InvalidOperationException("No registration was made by current user (student) for this subject."); + } -// await gridComponent.RefreshDataAsync(); -// await OnRegistrationChanged.InvokeAsync(); -// } -// catch (OperationFailedException) -// { -// //NOOP -// } -// } -// } -//} \ No newline at end of file + if (await MessageBox.ConfirmAsync("Opravdu chcete zrušit zápis?")) + { + try + { + await SubjectRegistrationsManagerFacade.CancelRegistrationAsync(Dto.FromValue(studentsRegistrationForThisSubject.Id)); + + //await gridComponent.RefreshDataAsync(); + await OnRegistrationChanged.InvokeAsync(); + } + catch (OperationFailedException) + { + //NOOP + } + } + } + + private async Task HandleCreateRegistrationClicked(StudentRegistrationType registrationType) + { + if (await MessageBox.ConfirmAsync("Opravdu chcete vytvořit zápis?")) + { + try + { + await SubjectRegistrationsManagerFacade.CreateRegistrationAsync( + new StudentSubjectRegistrationCreateDto() + { + SubjectId = SubjectId!.Value, + //SigningRuleId = signingRuleId, + RegistrationType = registrationType + }); + + //await gridComponent.RefreshDataAsync(); + await OnRegistrationChanged.InvokeAsync(); + } + catch (OperationFailedException) + { + //NOOP + } + } + } +} \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor index 706b312e..80b14227 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor @@ -6,7 +6,7 @@ - + @* *@ diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor index c7de1b3c..18ff3d35 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor @@ -13,7 +13,7 @@ - + @* *@ diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor index bd9e2096..41bfe8d8 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor @@ -23,10 +23,10 @@ ItemTextSelector="i => i.RegistrationType.AsEnumValueDescription()" SortString="@nameof(StudentSubjectRegistrationDto.RegistrationType)" TItem="StudentSubjectRegistrationDto" /> - + TItem="StudentSubjectRegistrationDto" /> *@ diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs index 6e42fabe..435b9db5 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs @@ -15,7 +15,7 @@ public partial class StudentSubjectRegistrationsGrid [Inject] protected IStudentSubjectRegistrationFacade StudentSubjectRegistrationFacade { get; set; } [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } [Inject] protected ISubjectsDataStore SubjectsDataStore { get; set; } - [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } + //[Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } [Inject] protected IGradesDataStore GradesDataStore { get; set; } [Inject] protected IHxMessengerService Messenger { get; set; } @@ -25,7 +25,7 @@ protected override async Task OnInitializedAsync() { await StudentsDataStore.EnsureDataAsync(); await SubjectsDataStore.EnsureDataAsync(); - await SigningRulesDataStore.EnsureDataAsync(); + //await SigningRulesDataStore.EnsureDataAsync(); await GradesDataStore.EnsureDataAsync(); } diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor index dd13fd25..36bc754c 100644 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor +++ b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor @@ -1,4 +1,6 @@ -StudentWithSigningRuleGrid.razor

+ +@* - \ No newline at end of file +
*@ \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs index 77685294..2d2b2f7c 100644 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs +++ b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs @@ -1,25 +1,25 @@ -using Havit.Collections; -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; +//using Havit.Collections; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; -namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; -public partial class StudentWithSigningRuleGrid -{ - [Parameter] public GridDataProviderDelegate DataProvider { get; set; } +//namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; +//public partial class StudentWithSigningRuleGrid +//{ +// [Parameter] public GridDataProviderDelegate DataProvider { get; set; } - [Parameter] public bool StudentColumnVisible { get; set; } = true; +// [Parameter] public bool StudentColumnVisible { get; set; } = true; - [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } - [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } +// [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } +// [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } - private HxGrid gridComponent; - private StudentWithSigningRuleListQueryFilter filterModel = new(); +// private HxGrid gridComponent; +// private StudentWithSigningRuleListQueryFilter filterModel = new(); - protected override async Task OnInitializedAsync() - { - await StudentsDataStore.EnsureDataAsync(); - await SigningRulesDataStore.EnsureDataAsync(); - } +// protected override async Task OnInitializedAsync() +// { +// await StudentsDataStore.EnsureDataAsync(); +// await SigningRulesDataStore.EnsureDataAsync(); +// } - public Task RefreshDataAsync() => gridComponent.RefreshDataAsync(); -} \ No newline at end of file +// public Task RefreshDataAsync() => gridComponent.RefreshDataAsync(); +//} \ No newline at end of file diff --git a/Web.Client/Pages/Electives/SubjectDetail.razor b/Web.Client/Pages/Electives/SubjectDetail.razor index bf245bd4..39dc6a93 100644 --- a/Web.Client/Pages/Electives/SubjectDetail.razor +++ b/Web.Client/Pages/Electives/SubjectDetail.razor @@ -49,6 +49,7 @@ Zápis předmětu + @* Todo: RETHERE *@ diff --git a/Web.Client/Pages/Electives/SubjectList.razor b/Web.Client/Pages/Electives/SubjectList.razor index 7f8a1c3d..16749092 100644 --- a/Web.Client/Pages/Electives/SubjectList.razor +++ b/Web.Client/Pages/Electives/SubjectList.razor @@ -7,14 +7,14 @@ TFilterModel="SubjectListQueryFilter" FilterModel="subjectListFilter" FilterModelChanged="HandleFilterModelChanged"> - + @* Zápisové pravidlo: - + *@ diff --git a/Web.Client/Program.cs b/Web.Client/Program.cs index 00b4ef09..3d60d8e9 100644 --- a/Web.Client/Program.cs +++ b/Web.Client/Program.cs @@ -49,7 +49,7 @@ public static async Task Main(string[] args) builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); - builder.Services.AddScoped(); + //builder.Services.AddScoped(); builder.Services.AddScoped(); diff --git a/Web.Client/Services/DataStores/ISigningRulesDataStore.cs b/Web.Client/Services/DataStores/ISigningRulesDataStore.cs index 820617b7..4816b4b3 100644 --- a/Web.Client/Services/DataStores/ISigningRulesDataStore.cs +++ b/Web.Client/Services/DataStores/ISigningRulesDataStore.cs @@ -1,8 +1,8 @@ -using Havit.Blazor.Components.Web.Services.DataStores; -using MensaGymnazium.IntranetGen3.Contracts; +//using Havit.Blazor.Components.Web.Services.DataStores; +//using MensaGymnazium.IntranetGen3.Contracts; -namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; +//namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; -public interface ISigningRulesDataStore : IDictionaryStaticDataStore -{ -} +//public interface ISigningRulesDataStore : IDictionaryStaticDataStore +//{ +//} diff --git a/Web.Client/Services/DataStores/SigningRulesDataStore.cs b/Web.Client/Services/DataStores/SigningRulesDataStore.cs index 63d8b04e..8a8bbf5e 100644 --- a/Web.Client/Services/DataStores/SigningRulesDataStore.cs +++ b/Web.Client/Services/DataStores/SigningRulesDataStore.cs @@ -1,24 +1,24 @@ -using Havit.Blazor.Components.Web.Services.DataStores; -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Contracts.Security; +//using Havit.Blazor.Components.Web.Services.DataStores; +//using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Contracts.Security; -namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; +//namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; -public class SigningRulesDataStore : DictionaryStaticDataStore, ISigningRulesDataStore -{ - private readonly ISigningRuleFacade signingRuleFacade; +//public class SigningRulesDataStore : DictionaryStaticDataStore, ISigningRulesDataStore +//{ +// private readonly ISigningRuleFacade signingRuleFacade; - public SigningRulesDataStore(ISigningRuleFacade signingRuleFacade) - { - this.signingRuleFacade = signingRuleFacade; - } +// public SigningRulesDataStore(ISigningRuleFacade signingRuleFacade) +// { +// this.signingRuleFacade = signingRuleFacade; +// } - protected override Func KeySelector => (s) => s.Id; - protected override bool ShouldRefresh() => false; // just hit F5 :-D +// protected override Func KeySelector => (s) => s.Id; +// protected override bool ShouldRefresh() => false; // just hit F5 :-D - protected async override Task> LoadDataAsync() - { - var dto = await signingRuleFacade.GetAllSigningRuleReferencesAsync(); - return dto ?? new List(); - } -} +// protected async override Task> LoadDataAsync() +// { +// var dto = await signingRuleFacade.GetAllSigningRuleReferencesAsync(); +// return dto ?? new List(); +// } +//} From 68a6a2a1f8e43997347311bcc01b605ddf2b4f79 Mon Sep 17 00:00:00 2001 From: Xopabyteh <70832276+Xopabyteh@users.noreply.github.com> Date: Sun, 7 Apr 2024 14:40:52 +0200 Subject: [PATCH 3/7] Subject registration (from students view) simplified with data store --- .../IStudentSubjectRegistrationFacade.cs | 7 +++- .../IStudentSubjectRegistrationRepository.cs | 1 + .../StudentSubjectRegistrationDbRepository.cs | 17 ++------ Facades/StudentSubjectRegistrationFacade.cs | 28 ++++++++++++- Facades/SubjectRegistrationsManagerFacade.cs | 18 -------- .../StudentSubjectRegistrationComponent.razor | 22 +++++----- ...udentSubjectRegistrationComponent.razor.cs | 42 +++++++++++-------- .../Pages/Electives/SubjectDetail.razor | 1 - Web.Client/Pages/Electives/SubjectList.razor | 8 ---- .../Pages/Electives/SubjectList.razor.cs | 40 +++++++----------- Web.Client/Program.cs | 2 +- .../IStudentSubjectRegistrationsDataStore.cs | 12 ++++++ .../StudentSubjectRegistrationsDataStore.cs | 34 +++++++++++++++ 13 files changed, 134 insertions(+), 98 deletions(-) create mode 100644 Web.Client/Services/DataStores/IStudentSubjectRegistrationsDataStore.cs create mode 100644 Web.Client/Services/DataStores/StudentSubjectRegistrationsDataStore.cs diff --git a/Contracts/IStudentSubjectRegistrationFacade.cs b/Contracts/IStudentSubjectRegistrationFacade.cs index 0fc2ede1..fb006fad 100644 --- a/Contracts/IStudentSubjectRegistrationFacade.cs +++ b/Contracts/IStudentSubjectRegistrationFacade.cs @@ -1,10 +1,13 @@ -namespace MensaGymnazium.IntranetGen3.Contracts; +using MensaGymnazium.IntranetGen3.Contracts.Security; + +namespace MensaGymnazium.IntranetGen3.Contracts; [ApiContract] public interface IStudentSubjectRegistrationFacade { - Task> GetStudentSubjectRegistrationListAsync(DataFragmentRequest studentSubjectRegistrationListRequest, CancellationToken cancellationToken = default); Task> CreateRegistrationAsync(StudentSubjectRegistrationDto registrationDto, CancellationToken cancellationToken = default); Task UpdateRegistrationAsync(StudentSubjectRegistrationDto registrationDto, CancellationToken cancellationToken = default); Task DeleteRegistrationAsync(Dto registrationIdDto, CancellationToken cancellationToken = default); + Task> GetStudentSubjectRegistrationListAsync(DataFragmentRequest studentSubjectRegistrationListRequest, CancellationToken cancellationToken = default); + Task> GetAllRegistrationsOfCurrentStudent(); } \ No newline at end of file diff --git a/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs b/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs index 429992d3..afa152ac 100644 --- a/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs +++ b/DataLayer/Repositories/IStudentSubjectRegistrationRepository.cs @@ -16,4 +16,5 @@ public Task> GetBySubjectAsync( //public Task CountBySubjectAndTypeAsync(int subjectId, StudentRegistrationType type, CancellationToken cancellationToken = default); //public Task> GetByStudentAndTimeAsync(int studentId, DayOfWeek day, ScheduleSlotInDay slot, CancellationToken cancellationToken = default); + Task> GetRegistrationsByStudent(int studentId); } diff --git a/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs b/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs index b5f1f93d..ae025be7 100644 --- a/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs +++ b/DataLayer/Repositories/StudentSubjectRegistrationDbRepository.cs @@ -17,17 +17,8 @@ public Task> GetBySubjectAsync(int subjectId, C return Data.Where(ssr => ssr.SubjectId == subjectId).ToListAsync(cancellationToken); } - //public Task CountBySubjectAndTypeAsync(int subjectId, StudentRegistrationType type, CancellationToken cancellationToken = default) - //{ - // return Data.Where(ssr => ssr.SubjectId == subjectId && ssr.RegistrationType == type).LongCountAsync(); - //} - - //public Task> GetByStudentAndTimeAsync(int studentId, DayOfWeek day, ScheduleSlotInDay slot, CancellationToken cancellationToken = default) - //{ - // return Data.Where(ssr => - // ssr.StudentId == studentId && - // ssr.Subject.ScheduleDayOfWeek == day && - // ssr.Subject.ScheduleSlotInDay == slot - // ).ToListAsync(); - //} + public Task> GetRegistrationsByStudent(int studentId) + { + return Data.Where(ssr => ssr.StudentId == studentId).ToListAsync(); + } } diff --git a/Facades/StudentSubjectRegistrationFacade.cs b/Facades/StudentSubjectRegistrationFacade.cs index 1fc288c5..d85506ce 100644 --- a/Facades/StudentSubjectRegistrationFacade.cs +++ b/Facades/StudentSubjectRegistrationFacade.cs @@ -1,6 +1,8 @@ -using MensaGymnazium.IntranetGen3.Contracts; +using System.Security; +using MensaGymnazium.IntranetGen3.Contracts; using MensaGymnazium.IntranetGen3.DataLayer.Queries; using MensaGymnazium.IntranetGen3.DataLayer.Repositories; +using MensaGymnazium.IntranetGen3.Facades.Infrastructure.Security.Authentication; using MensaGymnazium.IntranetGen3.Model; using MensaGymnazium.IntranetGen3.Primitives; using MensaGymnazium.IntranetGen3.Services; @@ -14,15 +16,17 @@ public class StudentSubjectRegistrationFacade : IStudentSubjectRegistrationFacad private readonly IStudentSubjectRegistrationListQuery studentSubjectRegistrationListQuery; private readonly IStudentSubjectRegistrationRepository studentSubjectRegistrationRepository; private readonly IUnitOfWork unitOfWork; + private readonly IApplicationAuthenticationService applicationAuthenticationService; public StudentSubjectRegistrationFacade( IStudentSubjectRegistrationListQuery studentSubjectRegistrationListQuery, IStudentSubjectRegistrationRepository studentSubjectRegistrationRepository, - IUnitOfWork unitOfWork) + IUnitOfWork unitOfWork, IApplicationAuthenticationService applicationAuthenticationService) { this.studentSubjectRegistrationListQuery = studentSubjectRegistrationListQuery; this.studentSubjectRegistrationRepository = studentSubjectRegistrationRepository; this.unitOfWork = unitOfWork; + this.applicationAuthenticationService = applicationAuthenticationService; } public async Task> GetStudentSubjectRegistrationListAsync(DataFragmentRequest studentSubjectRegistrationListRequest, CancellationToken cancellationToken = default) @@ -35,6 +39,26 @@ public async Task> GetStudentS return await studentSubjectRegistrationListQuery.GetDataFragmentAsync(studentSubjectRegistrationListRequest.StartIndex, studentSubjectRegistrationListRequest.Count, cancellationToken); } + [Authorize(Roles = nameof(Role.Student))] + public async Task> GetAllRegistrationsOfCurrentStudent() + { + var currentUser = applicationAuthenticationService.GetCurrentUser(); + Contract.Requires(currentUser.StudentId is not null); + + var registrations = await studentSubjectRegistrationRepository.GetRegistrationsByStudent(currentUser.StudentId.Value); + + // Map + var response = registrations.Select(r => new StudentSubjectRegistrationDto() + { + SubjectId = r.SubjectId, + StudentId = r.StudentId, + RegistrationType = r.RegistrationType, + Id = r.Id + }).ToList(); + + return response; + } + [Authorize(Roles = nameof(Role.Administrator))] public async Task> CreateRegistrationAsync(StudentSubjectRegistrationDto registrationDto, CancellationToken cancellationToken = default) { diff --git a/Facades/SubjectRegistrationsManagerFacade.cs b/Facades/SubjectRegistrationsManagerFacade.cs index 9ddb8baf..57006f20 100644 --- a/Facades/SubjectRegistrationsManagerFacade.cs +++ b/Facades/SubjectRegistrationsManagerFacade.cs @@ -112,23 +112,6 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st // Verify registration date Contract.Requires(RegistrationIsWithinValidDate(), "Přihlášku není možné založit. Je před, nebo již po termínu přihlašování"); - //// Verify registration requirements - //var signingRulesForRegistration = await GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(studentSubjectRegistrationCreateDto.SubjectId.Value), cancellationToken); - //var signingRuleForRegistrationDto = signingRulesForRegistration.Single(sr => sr.Id == studentSubjectRegistrationCreateDto.SigningRuleId); - //Contract.Requires(signingRuleForRegistrationDto is not null); - - //switch (studentSubjectRegistrationCreateDto.RegistrationType) - //{ - // case StudentRegistrationType.Main: - // Contract.Requires(signingRuleForRegistrationDto.MainRegistrationAllowed, signingRuleForRegistrationDto.MainRegistrationNotAllowedReason); - // break; - // case StudentRegistrationType.Secondary: - // Contract.Requires(signingRuleForRegistrationDto.SecondaryRegistrationAllowed, signingRuleForRegistrationDto.SecondaryRegistrationNotAllowedReason); - // break; - // default: - // throw new InvalidOperationException($"Unknown {nameof(StudentRegistrationType)} value: {studentSubjectRegistrationCreateDto.RegistrationType}."); - //} - // create registration var currentUser = applicationAuthenticationService.GetCurrentUser(); Contract.Requires(currentUser.StudentId is not null); @@ -136,7 +119,6 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st var studentSubjectRegistration = new StudentSubjectRegistration { StudentId = currentUser.StudentId.Value, - //UsedSigningRuleId = studentSubjectRegistrationCreateDto.SigningRuleId.Value, SubjectId = studentSubjectRegistrationCreateDto.SubjectId.Value, RegistrationType = studentSubjectRegistrationCreateDto.RegistrationType.Value }; diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor index 8934dbad..6fd8f7c4 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor @@ -1,14 +1,15 @@ -@* Todo : RETHERE *@ - - - -@if (studentsRegistrationForThisSubject?.RegistrationType is not null) +@if (studentsRegistrationForThisSubject is null) { + // No registration + +} else +{ + // Registered already - } diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs index e3816417..23a32398 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs @@ -1,6 +1,7 @@ using Havit; using MensaGymnazium.IntranetGen3.Contracts; using MensaGymnazium.IntranetGen3.Primitives; +using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; @@ -13,30 +14,27 @@ public partial class StudentSubjectRegistrationComponent [Inject] protected IHxMessageBoxService MessageBox { get; set; } [Inject] protected IHxMessengerService Messenger { get; set; } [Inject] protected ISubjectRegistrationsManagerFacade SubjectRegistrationsManagerFacade { get; set; } + [Inject] protected IStudentSubjectRegistrationsDataStore StudentSubjectRegistrationsDataStore { get; set; } /// - /// If registration type is null there is no registration, no registration was made by current user (student) for this subject - /// //TODO: Replace with data from data store? This is now messy + /// Registration was made by current user (student) for this subject + /// If null: no registration /// - private StudentSubjectRegistrationDto studentsRegistrationForThisSubject; + private StudentSubjectRegistrationDto studentsRegistrationForThisSubject = null; protected override async Task OnInitializedAsync() { - studentsRegistrationForThisSubject = await SubjectRegistrationsManagerFacade.GetCurrentUserRegistrationForSubject( - Dto.FromValue(SubjectId!.Value)); + await LoadStudentRegistrationAsync(); } - //private HxGrid gridComponent; - - //private async Task> GetGridData(GridDataProviderRequest request) - //{ - // Contract.Assert(SubjectId is not null); - - // var data = await SubjectRegistrationsManagerFacade.GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto.FromValue(SubjectId.Value)); - - // return request.ApplyTo(data); - //} + private async Task LoadStudentRegistrationAsync() + { + await StudentSubjectRegistrationsDataStore.EnsureDataAsync(); + studentsRegistrationForThisSubject = + await StudentSubjectRegistrationsDataStore.GetByKeyOrDefaultAsync(SubjectId!.Value); + StateHasChanged(); + } private async Task HandleCancelRegistrationClicked() { if (studentsRegistrationForThisSubject is null) @@ -50,7 +48,12 @@ private async Task HandleCancelRegistrationClicked() { await SubjectRegistrationsManagerFacade.CancelRegistrationAsync(Dto.FromValue(studentsRegistrationForThisSubject.Id)); - //await gridComponent.RefreshDataAsync(); + // Invalidate data store + StudentSubjectRegistrationsDataStore.RegistrationsChanged(); + + // Reload from cache (Xopa: maybe unnecessarily expensive?) + await LoadStudentRegistrationAsync(); + await OnRegistrationChanged.InvokeAsync(); } catch (OperationFailedException) @@ -74,7 +77,12 @@ await SubjectRegistrationsManagerFacade.CreateRegistrationAsync( RegistrationType = registrationType }); - //await gridComponent.RefreshDataAsync(); + //Invalidate data store + StudentSubjectRegistrationsDataStore.RegistrationsChanged(); + + // Reload from cache (Xopa: maybe unnecessarily expensive?) + await LoadStudentRegistrationAsync(); + await OnRegistrationChanged.InvokeAsync(); } catch (OperationFailedException) diff --git a/Web.Client/Pages/Electives/SubjectDetail.razor b/Web.Client/Pages/Electives/SubjectDetail.razor index 39dc6a93..bf245bd4 100644 --- a/Web.Client/Pages/Electives/SubjectDetail.razor +++ b/Web.Client/Pages/Electives/SubjectDetail.razor @@ -49,7 +49,6 @@ Zápis předmětu - @* Todo: RETHERE *@ diff --git a/Web.Client/Pages/Electives/SubjectList.razor b/Web.Client/Pages/Electives/SubjectList.razor index 16749092..49d360f7 100644 --- a/Web.Client/Pages/Electives/SubjectList.razor +++ b/Web.Client/Pages/Electives/SubjectList.razor @@ -7,14 +7,6 @@ TFilterModel="SubjectListQueryFilter" FilterModel="subjectListFilter" FilterModelChanged="HandleFilterModelChanged"> - @* - Zápisové pravidlo: - - *@ diff --git a/Web.Client/Pages/Electives/SubjectList.razor.cs b/Web.Client/Pages/Electives/SubjectList.razor.cs index 2c129ed2..4c684395 100644 --- a/Web.Client/Pages/Electives/SubjectList.razor.cs +++ b/Web.Client/Pages/Electives/SubjectList.razor.cs @@ -18,16 +18,17 @@ public partial class SubjectList [Inject] protected ITeachersDataStore TeachersDataStore { get; set; } [Inject] protected IGradesDataStore GradesDataStore { get; set; } [Inject] protected IClientAuthService ClientAuthService { get; set; } + [Inject] protected IStudentSubjectRegistrationsDataStore StudentSubjectRegistrationsDataStore { get; set; } - private SubjectListQueryFilter subjectListFilter = new SubjectListQueryFilter() - { - SigningRuleId = LastSigningRuleId - }; private HxGrid subjectsGrid; private SubjectListItemDto subjectSelected; private SubjectEdit subjectEditComponent; - //private List studentRegistrations; + private List registeredSubjects = new(); // Never null, may be empty... + private SubjectListQueryFilter subjectListFilter = new SubjectListQueryFilter() + { + SigningRuleId = LastSigningRuleId //Todo remove + }; private static int? LastSigningRuleId { get; set; } protected override async Task OnInitializedAsync() @@ -39,24 +40,20 @@ protected override async Task OnInitializedAsync() if ((await ClientAuthService.GetCurrentClaimsPrincipal()).IsInRole(nameof(Role.Student))) { - //Todo : RETHERE - //studentRegistrations = await SubjectRegistrationsManagerFacade.GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)null)); + await StudentSubjectRegistrationsDataStore.EnsureDataAsync(); + registeredSubjects = (await StudentSubjectRegistrationsDataStore.GetAllAsync()).ToList(); } } protected bool IsStudentRegistered(int subjectId, StudentRegistrationType registrationType) { - //Todo : RETHERE - return false; - - //if (studentRegistrations == null) - //{ - // return false; - //} - //return studentRegistrations - // .Where(ssr => (this.subjectListFilter.SigningRuleId is null) || (ssr.Id == this.subjectListFilter.SigningRuleId)) - // .SelectMany(sr => sr.Registrations) - // .Any(r => (r.SubjectId == subjectId) && (r.RegistrationType == registrationType)); + if (registeredSubjects.Count == 0) + { + return false; + } + + // Todo: now omitting registration type, change that + return registeredSubjects.Any(reg => reg.SubjectId == subjectId); } protected string GetRowCssClass(SubjectListItemDto item) @@ -92,13 +89,6 @@ private async Task> LoadSubjects(Grid }; } - private async Task HandleSigningRuleFilterChanged(int? newSigningRuleFilterValue) - { - subjectListFilter.SigningRuleId = newSigningRuleFilterValue; - LastSigningRuleId = newSigningRuleFilterValue; - await subjectsGrid.RefreshDataAsync(); - } - private Task HandleSelectedDataItemChanged(SubjectListItemDto selection) { subjectSelected = selection; diff --git a/Web.Client/Program.cs b/Web.Client/Program.cs index 3d60d8e9..1852d2aa 100644 --- a/Web.Client/Program.cs +++ b/Web.Client/Program.cs @@ -49,7 +49,7 @@ public static async Task Main(string[] args) builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); - //builder.Services.AddScoped(); + builder.Services.AddScoped(); builder.Services.AddScoped(); diff --git a/Web.Client/Services/DataStores/IStudentSubjectRegistrationsDataStore.cs b/Web.Client/Services/DataStores/IStudentSubjectRegistrationsDataStore.cs new file mode 100644 index 00000000..845372be --- /dev/null +++ b/Web.Client/Services/DataStores/IStudentSubjectRegistrationsDataStore.cs @@ -0,0 +1,12 @@ +using Havit.Blazor.Components.Web.Services.DataStores; +using MensaGymnazium.IntranetGen3.Contracts; + +namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; + +public interface IStudentSubjectRegistrationsDataStore : IDictionaryStaticDataStore +{ + /// + /// Use this to invalidate the cache + /// + public void RegistrationsChanged(); +} \ No newline at end of file diff --git a/Web.Client/Services/DataStores/StudentSubjectRegistrationsDataStore.cs b/Web.Client/Services/DataStores/StudentSubjectRegistrationsDataStore.cs new file mode 100644 index 00000000..bef2ce3e --- /dev/null +++ b/Web.Client/Services/DataStores/StudentSubjectRegistrationsDataStore.cs @@ -0,0 +1,34 @@ +using Havit.Blazor.Components.Web.Services.DataStores; +using MensaGymnazium.IntranetGen3.Contracts; + +namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; + +/// +/// The key of the registration is actually the !! +/// +public class StudentSubjectRegistrationsDataStore : DictionaryStaticDataStore,IStudentSubjectRegistrationsDataStore +{ + private IStudentSubjectRegistrationFacade studentSubjectRegistrationFacade; + + public StudentSubjectRegistrationsDataStore(IStudentSubjectRegistrationFacade studentSubjectRegistrationFacade) + { + this.studentSubjectRegistrationFacade = studentSubjectRegistrationFacade; + } + + protected override Func KeySelector => registration => registration.SubjectId!.Value; + protected override bool ShouldRefresh() => hasUnresolvedChanges; + + protected override async Task> LoadDataAsync() + { + var dto = await studentSubjectRegistrationFacade.GetAllRegistrationsOfCurrentStudent(); + hasUnresolvedChanges = false; + + return dto ?? new(); + } + + private bool hasUnresolvedChanges = false; + public void RegistrationsChanged() + { + hasUnresolvedChanges = true; + } +} \ No newline at end of file From e5017e5b78d7e4ee06492ca0f8a45f5d0912c835 Mon Sep 17 00:00:00 2001 From: Xopabyteh <70832276+Xopabyteh@users.noreply.github.com> Date: Sun, 7 Apr 2024 14:57:25 +0200 Subject: [PATCH 4/7] Delete unnecessary SigningRule files --- Contracts/ISigningRuleFacade.cs | 14 -- Contracts/RegistrationsDto.cs | 6 - Contracts/SigningRuleDto.cs | 13 -- Contracts/SigningRuleListQueryFilter.cs | 6 - Contracts/SigningRuleReferenceDto.cs | 10 -- .../StudentWithSigningRuleListItemDto.cs | 18 +- .../StudentWithSigningRuleListQueryFilter.cs | 18 +- .../ModelMetadata/SigningRuleMetadata.cs | 16 -- DataLayer/Queries/ISigningRuleListQuery.cs | 10 -- .../Queries/IStudentRegistrationsQuery.cs | 10 -- .../IStudentWithSigningRuleListQuery.cs | 16 +- DataLayer/Queries/SigningRuleListQuery.cs | 43 ----- .../Repositories/ISigningRuleRepository.cs | 6 - ...ngRuleSubjectCategoryRelationRepository.cs | 6 - ...igningRuleSubjectTypeRelationRepository.cs | 6 - .../Repositories/SigningRuleDbRepository.cs | 13 -- ...RuleSubjectCategoryRelationDbRepository.cs | 6 - ...ningRuleSubjectTypeRelationDbRepository.cs | 6 - .../SigningRuleSubjectTypeRelationSeed.cs | 168 ------------------ .../Fakes/FakeSigningRuleDataSource.cs | 27 --- .../DataSources/ISigningRuleDataSource.cs | 15 -- .../DataSources/SigningRuleDbDataSource.cs | 21 --- .../Repositories/ISigningRuleRepository.cs | 15 -- .../Repositories/SigningRuleDbRepository.cs | 25 --- .../SigningRuleDbRepositoryBase.cs | 26 --- Facades/SigningRuleFacade.cs | 100 ----------- IntranetGen3.sln | 3 - Model/SigningRule.cs | 38 ---- Model/SigningRuleSubjectCategoryRelation.cs | 13 -- Model/SigningRuleSubjectTypeRelation.cs | 13 -- Services/ISigningRuleMapper.cs | 12 -- Services/SigningRuleMapper.cs | 38 ---- .../Components/Pickers/SigningRulePicker.cs | 43 ----- .../Pages/Electives/SigningRuleList.razor | 20 +-- .../Pages/Electives/SigningRuleList.razor.cs | 62 ------- .../StudentWithSigningRuleGrid.razor | 3 +- .../StudentWithSigningRuleList.razor | 2 +- .../Pages/Electives/SubjectList.razor.cs | 6 +- .../DataStores/ISigningRulesDataStore.cs | 8 - .../DataStores/SigningRulesDataStore.cs | 24 --- 40 files changed, 30 insertions(+), 875 deletions(-) delete mode 100644 Contracts/ISigningRuleFacade.cs delete mode 100644 Contracts/RegistrationsDto.cs delete mode 100644 Contracts/SigningRuleDto.cs delete mode 100644 Contracts/SigningRuleListQueryFilter.cs delete mode 100644 Contracts/SigningRuleReferenceDto.cs delete mode 100644 Contracts/_generated/ModelMetadata/SigningRuleMetadata.cs delete mode 100644 DataLayer/Queries/ISigningRuleListQuery.cs delete mode 100644 DataLayer/Queries/IStudentRegistrationsQuery.cs delete mode 100644 DataLayer/Queries/SigningRuleListQuery.cs delete mode 100644 DataLayer/Repositories/ISigningRuleRepository.cs delete mode 100644 DataLayer/Repositories/ISigningRuleSubjectCategoryRelationRepository.cs delete mode 100644 DataLayer/Repositories/ISigningRuleSubjectTypeRelationRepository.cs delete mode 100644 DataLayer/Repositories/SigningRuleDbRepository.cs delete mode 100644 DataLayer/Repositories/SigningRuleSubjectCategoryRelationDbRepository.cs delete mode 100644 DataLayer/Repositories/SigningRuleSubjectTypeRelationDbRepository.cs delete mode 100644 DataLayer/Seeds/Core/SigningRuleSubjectTypeRelationSeed.cs delete mode 100644 DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs delete mode 100644 DataLayer/_generated/DataSources/ISigningRuleDataSource.cs delete mode 100644 DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs delete mode 100644 DataLayer/_generated/Repositories/ISigningRuleRepository.cs delete mode 100644 DataLayer/_generated/Repositories/SigningRuleDbRepository.cs delete mode 100644 DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs delete mode 100644 Facades/SigningRuleFacade.cs delete mode 100644 Model/SigningRule.cs delete mode 100644 Model/SigningRuleSubjectCategoryRelation.cs delete mode 100644 Model/SigningRuleSubjectTypeRelation.cs delete mode 100644 Services/ISigningRuleMapper.cs delete mode 100644 Services/SigningRuleMapper.cs delete mode 100644 Web.Client/Components/Pickers/SigningRulePicker.cs delete mode 100644 Web.Client/Pages/Electives/SigningRuleList.razor.cs delete mode 100644 Web.Client/Services/DataStores/ISigningRulesDataStore.cs delete mode 100644 Web.Client/Services/DataStores/SigningRulesDataStore.cs diff --git a/Contracts/ISigningRuleFacade.cs b/Contracts/ISigningRuleFacade.cs deleted file mode 100644 index 850a880c..00000000 --- a/Contracts/ISigningRuleFacade.cs +++ /dev/null @@ -1,14 +0,0 @@ -//using Havit.ComponentModel; - -//namespace MensaGymnazium.IntranetGen3.Contracts; - -//[ApiContract] -//public interface ISigningRuleFacade -//{ -// Task> GetAllSigningRuleReferencesAsync(CancellationToken cancellationToken = default); -// Task> GetSigningRuleListAsync(DataFragmentRequest signingRuleListRequest, CancellationToken cancellationToken = default); -// Task DeleteSigningRuleAsync(Dto SigningRuleId, CancellationToken cancellationToken = default); -// Task> CreateSigningRuleAsync(SigningRuleDto SigningRuleEditDto, CancellationToken cancellationToken = default); -// Task UpdateSigningRuleAsync(SigningRuleDto SigningRuleEditDto, CancellationToken cancellationToken = default); -// Task GetSigningRuleDetailAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default); -//} diff --git a/Contracts/RegistrationsDto.cs b/Contracts/RegistrationsDto.cs deleted file mode 100644 index af2547bf..00000000 --- a/Contracts/RegistrationsDto.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.Contracts; - -public record RegistrationsDto : SigningRuleDto -{ - public List Registrations { get; set; } = new(); -} \ No newline at end of file diff --git a/Contracts/SigningRuleDto.cs b/Contracts/SigningRuleDto.cs deleted file mode 100644 index fa5a8b8e..00000000 --- a/Contracts/SigningRuleDto.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.Contracts; - -public record SigningRuleDto : SigningRuleReferenceDto -{ - public int? Quantity { get; set; } - - public List SubjectTypeIds { get; set; } - - public List SubjectCategoryIds { get; set; } - - // TODO SigningRuleDtoValidator - -} diff --git a/Contracts/SigningRuleListQueryFilter.cs b/Contracts/SigningRuleListQueryFilter.cs deleted file mode 100644 index e1896826..00000000 --- a/Contracts/SigningRuleListQueryFilter.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.Contracts; - -public class SigningRuleListQueryFilter -{ - // TODO -} diff --git a/Contracts/SigningRuleReferenceDto.cs b/Contracts/SigningRuleReferenceDto.cs deleted file mode 100644 index a40106f3..00000000 --- a/Contracts/SigningRuleReferenceDto.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MensaGymnazium.IntranetGen3.Primitives; - -namespace MensaGymnazium.IntranetGen3.Contracts; - -public record SigningRuleReferenceDto -{ - public int Id { get; set; } - public string Name { get; set; } - public GradeEntry GradeId { get; set; } -} \ No newline at end of file diff --git a/Contracts/StudentWithSigningRuleListItemDto.cs b/Contracts/StudentWithSigningRuleListItemDto.cs index 4824188a..bab49f97 100644 --- a/Contracts/StudentWithSigningRuleListItemDto.cs +++ b/Contracts/StudentWithSigningRuleListItemDto.cs @@ -1,9 +1,9 @@ -namespace MensaGymnazium.IntranetGen3.Contracts; -public record StudentWithSigningRuleListItemDto -{ - public int StudentId { get; set; } - public int SigningRuleId { get; set; } - public int MainRegistrationsCount { get; set; } - public int SecondaryRegistrationsCount { get; set; } - public int? SigningRuleQuantity { get; set; } -} +//namespace MensaGymnazium.IntranetGen3.Contracts; +//public record StudentWithSigningRuleListItemDto +//{ +// public int StudentId { get; set; } +// public int SigningRuleId { get; set; } +// public int MainRegistrationsCount { get; set; } +// public int SecondaryRegistrationsCount { get; set; } +// public int? SigningRuleQuantity { get; set; } +//} diff --git a/Contracts/StudentWithSigningRuleListQueryFilter.cs b/Contracts/StudentWithSigningRuleListQueryFilter.cs index dcdf6f66..13af2159 100644 --- a/Contracts/StudentWithSigningRuleListQueryFilter.cs +++ b/Contracts/StudentWithSigningRuleListQueryFilter.cs @@ -1,10 +1,10 @@ -namespace MensaGymnazium.IntranetGen3.Contracts; +//namespace MensaGymnazium.IntranetGen3.Contracts; -public record StudentWithSigningRuleListQueryFilter -{ - public int? GradeId { get; set; } - public int? StudentId { get; set; } - public int? SigningRuleId { get; set; } - public bool CurrentStudentOnly { get; set; } = false; - public bool IncompleteOnly { get; set; } = false; -} +//public record StudentWithSigningRuleListQueryFilter +//{ +// public int? GradeId { get; set; } +// public int? StudentId { get; set; } +// public int? SigningRuleId { get; set; } +// public bool CurrentStudentOnly { get; set; } = false; +// public bool IncompleteOnly { get; set; } = false; +//} diff --git a/Contracts/_generated/ModelMetadata/SigningRuleMetadata.cs b/Contracts/_generated/ModelMetadata/SigningRuleMetadata.cs deleted file mode 100644 index 38adc065..00000000 --- a/Contracts/_generated/ModelMetadata/SigningRuleMetadata.cs +++ /dev/null @@ -1,16 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace MensaGymnazium.IntranetGen3.Contracts.ModelMetadata; - -[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -public static class SigningRuleMetadata -{ - public const int DescriptionMaxLength = Int32.MaxValue; - public const int NameMaxLength = 100; - public const int SeedItemIdentifierMaxLength = 50; -} diff --git a/DataLayer/Queries/ISigningRuleListQuery.cs b/DataLayer/Queries/ISigningRuleListQuery.cs deleted file mode 100644 index 10d29eaf..00000000 --- a/DataLayer/Queries/ISigningRuleListQuery.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MensaGymnazium.IntranetGen3.Contracts; - -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -public interface ISigningRuleListQuery -{ - SigningRuleListQueryFilter Filter { get; set; } - - Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default); -} diff --git a/DataLayer/Queries/IStudentRegistrationsQuery.cs b/DataLayer/Queries/IStudentRegistrationsQuery.cs deleted file mode 100644 index 2913e385..00000000 --- a/DataLayer/Queries/IStudentRegistrationsQuery.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MensaGymnazium.IntranetGen3.Contracts; -using MensaGymnazium.IntranetGen3.Model; -using MensaGymnazium.IntranetGen3.Model.Security; - -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -public interface IStudentRegistrationsQuery -{ - Task> GetDataAsync(Student student, Subject subjectFilter = null, CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs b/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs index 444be823..d0ddc34e 100644 --- a/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs +++ b/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs @@ -1,11 +1,11 @@ -using MensaGymnazium.IntranetGen3.Contracts; +//using MensaGymnazium.IntranetGen3.Contracts; -namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; +//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; -public interface IStudentWithSigningRuleListQuery -{ - StudentWithSigningRuleListQueryFilter Filter { get; set; } - SortItem[] Sorting { get; set; } +//public interface IStudentWithSigningRuleListQuery +//{ +// StudentWithSigningRuleListQueryFilter Filter { get; set; } +// SortItem[] Sorting { get; set; } - Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default); -} \ No newline at end of file +// Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default); +//} \ No newline at end of file diff --git a/DataLayer/Queries/SigningRuleListQuery.cs b/DataLayer/Queries/SigningRuleListQuery.cs deleted file mode 100644 index 24b11f7d..00000000 --- a/DataLayer/Queries/SigningRuleListQuery.cs +++ /dev/null @@ -1,43 +0,0 @@ -//using Havit.Data.EntityFrameworkCore.Patterns.QueryServices; -//using Havit.Extensions.DependencyInjection.Abstractions; -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.DataLayer.DataSources; -//using MensaGymnazium.IntranetGen3.Primitives; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -//[Service] -//public class SigningRuleListQuery : QueryBase, ISigningRuleListQuery -//{ -// private readonly ISigningRuleDataSource SigningRuleDataSource; - -// public SigningRuleListQuery(ISigningRuleDataSource SigningRuleDataSource) -// { -// this.SigningRuleDataSource = SigningRuleDataSource; -// } - -// public SigningRuleListQueryFilter Filter { get; set; } - -// protected override IQueryable Query() -// { -// return SigningRuleDataSource.Data -// .Select(sr => new SigningRuleDto() -// { -// Id = sr.Id, -// Name = sr.Name, -// GradeId = (GradeEntry)sr.GradeId, -// Quantity = sr.Quantity, -// SubjectCategoryIds = sr.SubjectCategoryRelations.Select(scr => scr.SubjectCategoryId).ToList(), -// SubjectTypeIds = sr.SubjectTypeRelations.Select(str => str.SubjectTypeId).ToList(), -// }); -// } - -// public async Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default) -// { -// return new() -// { -// Data = await SelectDataFragmentAsync(startIndex, count, cancellationToken), -// TotalCount = await CountAsync(cancellationToken) -// }; -// } -//} diff --git a/DataLayer/Repositories/ISigningRuleRepository.cs b/DataLayer/Repositories/ISigningRuleRepository.cs deleted file mode 100644 index f3a18225..00000000 --- a/DataLayer/Repositories/ISigningRuleRepository.cs +++ /dev/null @@ -1,6 +0,0 @@ -//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -//public partial interface ISigningRuleRepository -//{ - -//} diff --git a/DataLayer/Repositories/ISigningRuleSubjectCategoryRelationRepository.cs b/DataLayer/Repositories/ISigningRuleSubjectCategoryRelationRepository.cs deleted file mode 100644 index 1fb99168..00000000 --- a/DataLayer/Repositories/ISigningRuleSubjectCategoryRelationRepository.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -public partial interface ISigningRuleSubjectCategoryRelationRepository -{ - -} diff --git a/DataLayer/Repositories/ISigningRuleSubjectTypeRelationRepository.cs b/DataLayer/Repositories/ISigningRuleSubjectTypeRelationRepository.cs deleted file mode 100644 index 06b0d10f..00000000 --- a/DataLayer/Repositories/ISigningRuleSubjectTypeRelationRepository.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -public partial interface ISigningRuleSubjectTypeRelationRepository -{ - -} diff --git a/DataLayer/Repositories/SigningRuleDbRepository.cs b/DataLayer/Repositories/SigningRuleDbRepository.cs deleted file mode 100644 index cfe6e7a2..00000000 --- a/DataLayer/Repositories/SigningRuleDbRepository.cs +++ /dev/null @@ -1,13 +0,0 @@ -//using System.Linq.Expressions; -//using MensaGymnazium.IntranetGen3.Model; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -//public partial class SigningRuleDbRepository : ISigningRuleRepository -//{ -// protected override IEnumerable>> GetLoadReferences() -// { -// yield return sr => sr.SubjectTypeRelations; -// yield return sr => sr.SubjectCategoryRelations; -// } -//} \ No newline at end of file diff --git a/DataLayer/Repositories/SigningRuleSubjectCategoryRelationDbRepository.cs b/DataLayer/Repositories/SigningRuleSubjectCategoryRelationDbRepository.cs deleted file mode 100644 index 30fa9fa1..00000000 --- a/DataLayer/Repositories/SigningRuleSubjectCategoryRelationDbRepository.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -public partial class SigningRuleSubjectCategoryRelationDbRepository : ISigningRuleSubjectCategoryRelationRepository -{ - -} diff --git a/DataLayer/Repositories/SigningRuleSubjectTypeRelationDbRepository.cs b/DataLayer/Repositories/SigningRuleSubjectTypeRelationDbRepository.cs deleted file mode 100644 index 28dba30b..00000000 --- a/DataLayer/Repositories/SigningRuleSubjectTypeRelationDbRepository.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -public partial class SigningRuleSubjectTypeRelationDbRepository : ISigningRuleSubjectTypeRelationRepository -{ - -} diff --git a/DataLayer/Seeds/Core/SigningRuleSubjectTypeRelationSeed.cs b/DataLayer/Seeds/Core/SigningRuleSubjectTypeRelationSeed.cs deleted file mode 100644 index 26088a64..00000000 --- a/DataLayer/Seeds/Core/SigningRuleSubjectTypeRelationSeed.cs +++ /dev/null @@ -1,168 +0,0 @@ -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Text; -//using System.Threading.Tasks; -//using Havit.Data.Patterns.DataSeeds; -//using MensaGymnazium.IntranetGen3.Model; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Seeds.Core -//{ -// public class SigningRuleSubjectTypeRelationSeed : DataSeed -// { -// public override void SeedData() -// { -// var data = new[] -// { -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.NotDefined, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.HumanHealth, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.HumanNature, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.HumanSociety, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.HumanWork, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.ArtCulture, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.Informatics, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.MathApplication, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 1, -// SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication, -// }, - - -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.NotDefined, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.HumanHealth, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.HumanNature, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.HumanSociety, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.HumanWork, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.ArtCulture, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.Informatics, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.MathApplication, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 2, -// SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication, -// }, - - -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 3, -// SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication, -// }, - - -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.NotDefined, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.HumanHealth, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.HumanNature, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.HumanSociety, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.HumanWork, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.ArtCulture, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.Informatics, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.MathApplication, -// }, -// new SigningRuleSubjectTypeRelation() -// { -// SigningRuleId = 4, -// SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication, -// }, -// }; - -// Seed(For(data).PairBy(st => new { st.SigningRuleId, st.SubjectTypeId })); -// } -// } -//} diff --git a/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs b/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs deleted file mode 100644 index 601c45dd..00000000 --- a/DataLayer/_generated/DataSources/Fakes/FakeSigningRuleDataSource.cs +++ /dev/null @@ -1,27 +0,0 @@ -////------------------------------------------------------------------------------ -//// -//// This code was generated by a tool. -//// Changes to this file will be lost if the code is regenerated. -//// -////------------------------------------------------------------------------------ - -//using Havit.Data.EntityFrameworkCore.Patterns.DataSources.Fakes; -//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -//using Havit.Data.Patterns.Attributes; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources.Fakes; - -//[Fake] -//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -//public class FakeSigningRuleDataSource : FakeDataSource, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource -//{ -// public FakeSigningRuleDataSource(params MensaGymnazium.IntranetGen3.Model.SigningRule[] data) -// : this((IEnumerable)data) -// { -// } - -// public FakeSigningRuleDataSource(IEnumerable data, ISoftDeleteManager softDeleteManager = null) -// : base(data, softDeleteManager) -// { -// } -//} diff --git a/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs b/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs deleted file mode 100644 index c92b7ce3..00000000 --- a/DataLayer/_generated/DataSources/ISigningRuleDataSource.cs +++ /dev/null @@ -1,15 +0,0 @@ -////------------------------------------------------------------------------------ -//// -//// This code was generated by a tool. -//// Changes to this file will be lost if the code is regenerated. -//// -////------------------------------------------------------------------------------ - -//using Havit.Data.Patterns.DataSources; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources; - -//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -//public interface ISigningRuleDataSource : IDataSource -//{ -//} diff --git a/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs b/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs deleted file mode 100644 index 8d07e111..00000000 --- a/DataLayer/_generated/DataSources/SigningRuleDbDataSource.cs +++ /dev/null @@ -1,21 +0,0 @@ -////------------------------------------------------------------------------------ -//// -//// This code was generated by a tool. -//// Changes to this file will be lost if the code is regenerated. -//// -////------------------------------------------------------------------------------ - -//using Havit.Data.EntityFrameworkCore; -//using Havit.Data.EntityFrameworkCore.Patterns.DataSources; -//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.DataSources; - -//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -//public partial class SigningRuleDbDataSource : DbDataSource, ISigningRuleDataSource -//{ -// public SigningRuleDbDataSource(IDbContext dbContext, ISoftDeleteManager softDeleteManager) -// : base(dbContext, softDeleteManager) -// { -// } -//} diff --git a/DataLayer/_generated/Repositories/ISigningRuleRepository.cs b/DataLayer/_generated/Repositories/ISigningRuleRepository.cs deleted file mode 100644 index bb542574..00000000 --- a/DataLayer/_generated/Repositories/ISigningRuleRepository.cs +++ /dev/null @@ -1,15 +0,0 @@ -////------------------------------------------------------------------------------ -//// -//// This code was generated by a tool. -//// Changes to this file will be lost if the code is regenerated. -//// -////------------------------------------------------------------------------------ - -//using Havit.Data.Patterns.Repositories; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -//public partial interface ISigningRuleRepository : IRepository -//{ -//} diff --git a/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs b/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs deleted file mode 100644 index eaea8fe6..00000000 --- a/DataLayer/_generated/Repositories/SigningRuleDbRepository.cs +++ /dev/null @@ -1,25 +0,0 @@ -////------------------------------------------------------------------------------ -//// -//// This code was generated by a tool. -//// Changes to this file will be lost if the code is regenerated. -//// -////------------------------------------------------------------------------------ - -//using Havit.Data.EntityFrameworkCore; -//using Havit.Data.EntityFrameworkCore.Patterns.Caching; -//using Havit.Data.EntityFrameworkCore.Patterns.Repositories; -//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -//using Havit.Data.Patterns.DataEntries; -//using Havit.Data.Patterns.DataLoaders; -//using Havit.Data.Patterns.Infrastructure; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -//public partial class SigningRuleDbRepository : SigningRuleDbRepositoryBase, ISigningRuleRepository -//{ -// public SigningRuleDbRepository(IDbContext dbContext, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource dataSource, IEntityKeyAccessor entityKeyAccessor, IDataLoader dataLoader, ISoftDeleteManager softDeleteManager, IEntityCacheManager entityCacheManager) -// : base(dbContext, dataSource, entityKeyAccessor, dataLoader, softDeleteManager, entityCacheManager) -// { -// } -//} \ No newline at end of file diff --git a/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs b/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs deleted file mode 100644 index f59e310d..00000000 --- a/DataLayer/_generated/Repositories/SigningRuleDbRepositoryBase.cs +++ /dev/null @@ -1,26 +0,0 @@ -////------------------------------------------------------------------------------ -//// -//// This code was generated by a tool. -//// Changes to this file will be lost if the code is regenerated. -//// -////------------------------------------------------------------------------------ - -//using Havit.Data.EntityFrameworkCore; -//using Havit.Data.EntityFrameworkCore.Patterns.Caching; -//using Havit.Data.EntityFrameworkCore.Patterns.Repositories; -//using Havit.Data.EntityFrameworkCore.Patterns.SoftDeletes; -//using Havit.Data.Patterns.DataEntries; -//using Havit.Data.Patterns.DataLoaders; -//using Havit.Data.Patterns.Infrastructure; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Repositories; - -//[System.CodeDom.Compiler.GeneratedCode("Havit.Data.EntityFrameworkCore.CodeGenerator", "1.0")] -//public abstract class SigningRuleDbRepositoryBase : DbRepository -//{ -// protected SigningRuleDbRepositoryBase(IDbContext dbContext, MensaGymnazium.IntranetGen3.DataLayer.DataSources.ISigningRuleDataSource dataSource, IEntityKeyAccessor entityKeyAccessor, IDataLoader dataLoader, ISoftDeleteManager softDeleteManager, IEntityCacheManager entityCacheManager) -// : base(dbContext, dataSource, entityKeyAccessor, dataLoader, softDeleteManager, entityCacheManager) -// { -// } - -//} \ No newline at end of file diff --git a/Facades/SigningRuleFacade.cs b/Facades/SigningRuleFacade.cs deleted file mode 100644 index 4eafd2e9..00000000 --- a/Facades/SigningRuleFacade.cs +++ /dev/null @@ -1,100 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.DataLayer.Queries; -//using MensaGymnazium.IntranetGen3.DataLayer.Repositories; -//using MensaGymnazium.IntranetGen3.Model; -//using MensaGymnazium.IntranetGen3.Primitives; -//using MensaGymnazium.IntranetGen3.Services; - - -//namespace MensaGymnazium.IntranetGen3.Facades; - -//[Service] -//[Authorize] -//public class SigningRuleFacade : ISigningRuleFacade -//{ -// private readonly ISigningRuleListQuery signingRuleListQuery; -// private readonly ISigningRuleRepository signingRuleRepository; -// private readonly IUnitOfWork unitOfWork; -// private readonly ISigningRuleMapper signingRuleMapper; - -// public SigningRuleFacade( -// ISigningRuleListQuery SigningRuleListQuery, -// ISigningRuleRepository SigningRuleRepository, -// IUnitOfWork unitOfWork, -// ISigningRuleMapper SigningRuleMapper) -// { -// this.signingRuleListQuery = SigningRuleListQuery; -// this.signingRuleRepository = SigningRuleRepository; -// this.unitOfWork = unitOfWork; -// this.signingRuleMapper = SigningRuleMapper; -// } - -// public async Task> GetSigningRuleListAsync(DataFragmentRequest SigningRuleListRequest, CancellationToken cancellationToken = default) -// { -// Contract.Requires(SigningRuleListRequest is not null); - -// signingRuleListQuery.Filter = SigningRuleListRequest.Filter; -// //SigningRuleListQuery.Sorting = SigningRuleListRequest.Sorting; - -// return await signingRuleListQuery.GetDataFragmentAsync(SigningRuleListRequest.StartIndex, SigningRuleListRequest.Count, cancellationToken); -// } - -// //public async Task GetSigningRuleDetailAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default) -// //{ -// // Contract.Requires(SigningRuleIdDto.Value != default); - -// // var SigningRule = await signingRuleRepository.GetObjectAsync(SigningRuleIdDto.Value, cancellationToken); - -// // return signingRuleMapper.MapToSigningRuleDto(SigningRule); -// //} - -// //[Authorize(Roles = nameof(Role.Administrator))] -// //public async Task> CreateSigningRuleAsync(SigningRuleDto SigningRuleDto, CancellationToken cancellationToken = default) -// //{ -// // Contract.Requires(SigningRuleDto != null); -// // Contract.Requires(SigningRuleDto.Id == default); - -// // var SigningRule = new SigningRule(); -// // signingRuleMapper.MapFromSigningRuleDto(SigningRuleDto, SigningRule); - -// // unitOfWork.AddForInsert(SigningRule); -// // await unitOfWork.CommitAsync(cancellationToken); - -// // return Dto.FromValue(SigningRule.Id); -// //} - -// [Authorize(Roles = nameof(Role.Administrator))] -// public async Task UpdateSigningRuleAsync(SigningRuleDto SigningRuleDto, CancellationToken cancellationToken = default) -// { -// Contract.Requires(SigningRuleDto != null); -// Contract.Requires(SigningRuleDto.Id != default); - -// var SigningRule = await signingRuleRepository.GetObjectAsync(SigningRuleDto.Id, cancellationToken); - -// SigningRule.Name = SigningRuleDto.Name; - -// unitOfWork.AddForUpdate(SigningRule); -// await unitOfWork.CommitAsync(cancellationToken); -// } - -// [Authorize(Roles = nameof(Role.Administrator))] -// public async Task DeleteSigningRuleAsync(Dto SigningRuleIdDto, CancellationToken cancellationToken = default) -// { -// var SigningRule = signingRuleRepository.GetObjectAsync(SigningRuleIdDto.Value, cancellationToken); -// unitOfWork.AddForDelete(SigningRule); - -// await unitOfWork.CommitAsync(cancellationToken); -// } - -// public async Task> GetAllSigningRuleReferencesAsync(CancellationToken cancellationToken = default) -// { -// return (await signingRuleRepository.GetAllAsync(cancellationToken)) -// .Select(sr => new SigningRuleReferenceDto() -// { -// Id = sr.Id, -// Name = sr.Name, -// GradeId = (GradeEntry)sr.GradeId -// }) -// .ToList(); -// } -//} diff --git a/IntranetGen3.sln b/IntranetGen3.sln index c604e2a3..d1a25f1c 100644 --- a/IntranetGen3.sln +++ b/IntranetGen3.sln @@ -53,9 +53,6 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contracts", "Contracts\Contracts.csproj", "{CF770CA3-11AC-42A1-9EBF-F62B274FB194}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Server", "Server", "{299B9B52-EFCA-4B17-B119-C4681DF12656}" - ProjectSection(SolutionItems) = preProject - byl tu fantomas = byl tu fantomas - EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{0E8ABFD9-D8BD-40A6-A2BE-2974A1418C03}" EndProject diff --git a/Model/SigningRule.cs b/Model/SigningRule.cs deleted file mode 100644 index 2b01e526..00000000 --- a/Model/SigningRule.cs +++ /dev/null @@ -1,38 +0,0 @@ -//using System.ComponentModel.DataAnnotations; -//using System.ComponentModel.DataAnnotations.Schema; -//using Havit.Model.Collections.Generic; - -//namespace MensaGymnazium.IntranetGen3.Model; - -//public class SigningRule -//{ -// public int Id { get; set; } - -// public Grade Grade { get; set; } -// public int GradeId { get; set; } - -// [MaxLength(100)] -// public string Name { get; set; } - -// [MaxLength(Int32.MaxValue)] -// public string Description { get; set; } - -// public List SubjectCategoryRelations { get; } = new List(); -// [NotMapped] public IEnumerable SubjectCategories => SubjectCategoryRelations.Select(m => m.SubjectCategory); - -// public List SubjectTypeRelations { get; } = new List(); -// [NotMapped] public IEnumerable SubjectTypes => SubjectTypeRelations.Select(m => m.SubjectType); - -// public int? Quantity { get; set; } - -// public List RegistrationsWithDeleted { get; } = new List(); -// [NotMapped] public ICollection Registrations { get; } - -// [MaxLength(50)] -// public string SeedItemIdentifier { get; set; } - -// public SigningRule() -// { -// Registrations = new FilteringCollection(RegistrationsWithDeleted, r => r.Deleted is null); -// } -//} diff --git a/Model/SigningRuleSubjectCategoryRelation.cs b/Model/SigningRuleSubjectCategoryRelation.cs deleted file mode 100644 index 558879ae..00000000 --- a/Model/SigningRuleSubjectCategoryRelation.cs +++ /dev/null @@ -1,13 +0,0 @@ -//namespace MensaGymnazium.IntranetGen3.Model; - -///// -///// M:N relation for SigningRule.SubjectCategories -///// -//public class SigningRuleSubjectCategoryRelation -//{ -// public SigningRule SigningRule { get; set; } -// public int SigningRuleId { get; set; } - -// public SubjectCategory SubjectCategory { get; set; } -// public int SubjectCategoryId { get; set; } -//} diff --git a/Model/SigningRuleSubjectTypeRelation.cs b/Model/SigningRuleSubjectTypeRelation.cs deleted file mode 100644 index 87119293..00000000 --- a/Model/SigningRuleSubjectTypeRelation.cs +++ /dev/null @@ -1,13 +0,0 @@ -//namespace MensaGymnazium.IntranetGen3.Model; - -///// -///// M:N relation for SigningRyle.SubjectTypes -///// -//public class SigningRuleSubjectTypeRelation -//{ -// public SigningRule SigningRule { get; set; } -// public int SigningRuleId { get; set; } - -// public SubjectType SubjectType { get; set; } -// public int SubjectTypeId { get; set; } -//} diff --git a/Services/ISigningRuleMapper.cs b/Services/ISigningRuleMapper.cs deleted file mode 100644 index 2c03448e..00000000 --- a/Services/ISigningRuleMapper.cs +++ /dev/null @@ -1,12 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.Model; - -//namespace MensaGymnazium.IntranetGen3.Services; - -//public interface ISigningRuleMapper -//{ -// SigningRuleDto MapToSigningRuleDto(SigningRule signingRule); - -// void MapFromSigningRuleDto(SigningRuleDto signingRuleDto, SigningRule signingRule); - -//} diff --git a/Services/SigningRuleMapper.cs b/Services/SigningRuleMapper.cs deleted file mode 100644 index 1b25e189..00000000 --- a/Services/SigningRuleMapper.cs +++ /dev/null @@ -1,38 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.Model; -//using MensaGymnazium.IntranetGen3.Primitives; - -//namespace MensaGymnazium.IntranetGen3.Services; - -//[Service] -//public class SigningRuleMapper : ISigningRuleMapper -//{ -// public SigningRuleDto MapToSigningRuleDto(SigningRule signingRule) -// { -// Contract.Requires(signingRule != null); - -// return new SigningRuleDto -// { -// Id = signingRule.Id, -// Name = signingRule.Name, -// Quantity = signingRule.Quantity, -// GradeId = (GradeEntry)signingRule.GradeId, -// SubjectTypeIds = new List(signingRule.SubjectTypes.Select(x => x.Id)), -// SubjectCategoryIds = new List(signingRule.SubjectCategories.Select(x => x.Id)) -// }; -// } - -// public void MapFromSigningRuleDto(SigningRuleDto signingRuleDto, SigningRule signingRule) -// { -// Contract.Requires(signingRuleDto is not null); -// Contract.Requires(signingRule is not null); - -// signingRule.Name = signingRuleDto.Name; -// signingRule.Quantity = signingRuleDto.Quantity; -// signingRule.GradeId = (int)signingRuleDto.GradeId; - -// // TODO -// // SubjectCategories, SubjectTypes - -// } -//} diff --git a/Web.Client/Components/Pickers/SigningRulePicker.cs b/Web.Client/Components/Pickers/SigningRulePicker.cs deleted file mode 100644 index 5466788c..00000000 --- a/Web.Client/Components/Pickers/SigningRulePicker.cs +++ /dev/null @@ -1,43 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.Primitives; -//using MensaGymnazium.IntranetGen3.Web.Client.Services; -//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -//namespace MensaGymnazium.IntranetGen3.Web.Client.Components.Pickers; - -//public class SigningRulePicker : HxSelectBase -//{ -// [Parameter] public string NullText { get => NullTextImpl; set => NullTextImpl = value; } -// [Parameter] public bool RestrictStudentGrade { get; set; } = false; - -// [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } -// [Inject] protected IClientAuthService ClientAuthService { get; set; } - -// public SigningRulePicker() -// { -// this.NullableImpl = true; -// this.NullDataTextImpl = "načítám"; -// this.NullTextImpl = "-vyberte-"; -// this.ValueSelectorImpl = (c => c.Id); -// this.TextSelectorImpl = (c => c.Name); -// this.AutoSortImpl = false; -// } - -// protected override async Task OnInitializedAsync() -// { -// await base.OnInitializedAsync(); - -// var data = (await SigningRulesDataStore.GetAllAsync()); - -// if (RestrictStudentGrade) // not expected to change during component lifecycle -// { -// var gradeId = await ClientAuthService.GetCurrentStudentGradeIdAsync(); -// if (gradeId is not null) -// { -// data = data.Where(c => c.GradeId == gradeId.Value.NextGrade()); -// } -// } - -// DataImpl = data.ToList(); -// } -//} diff --git a/Web.Client/Pages/Electives/SigningRuleList.razor b/Web.Client/Pages/Electives/SigningRuleList.razor index 985b9182..e0788a61 100644 --- a/Web.Client/Pages/Electives/SigningRuleList.razor +++ b/Web.Client/Pages/Electives/SigningRuleList.razor @@ -1,19 +1 @@ -@* @attribute [Route(Routes.Electives.SigningRuleList)] - - - - - - - - - - - - - - *@ \ No newline at end of file +@attribute [Route(Routes.Electives.SigningRuleList)] \ No newline at end of file diff --git a/Web.Client/Pages/Electives/SigningRuleList.razor.cs b/Web.Client/Pages/Electives/SigningRuleList.razor.cs deleted file mode 100644 index 6fc94efa..00000000 --- a/Web.Client/Pages/Electives/SigningRuleList.razor.cs +++ /dev/null @@ -1,62 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; -//using Microsoft.AspNetCore.Components; -//using Havit.Collections; -//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -//namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; - -//public partial class SigningRuleList -//{ -// [Inject] protected IHxMessengerService Messenger { get; set; } -// [Inject] protected ISigningRuleFacade SigningRuleFacade { get; set; } -// [Inject] protected NavigationManager NavigationManager { get; set; } -// [Inject] protected IGradesDataStore GradesDataStore { get; set; } -// [Inject] protected ISubjectCategoriesDataStore SubjectCategoriesDataStore { get; set; } -// [Inject] protected ISubjectTypesDataStore SubjectTypesDataStore { get; set; } - -// private SigningRuleListQueryFilter signingRuleListFilter = new SigningRuleListQueryFilter(); -// private HxGrid gridComponent; - -// protected override async Task OnInitializedAsync() -// { -// await GradesDataStore.EnsureDataAsync(); -// await SubjectCategoriesDataStore.EnsureDataAsync(); -// await SubjectTypesDataStore.EnsureDataAsync(); -// } - -// private async Task> LoadSigningRules(GridDataProviderRequest request) -// { -// var SigningRuleRequest = new DataFragmentRequest() -// { -// Filter = signingRuleListFilter, -// StartIndex = request.StartIndex, -// Count = request.Count, -// Sorting = request.Sorting?.Select(s => new SortItem(s.SortString, s.SortDirection)).ToArray() -// }; - -// var signingRuleListResult = await SigningRuleFacade.GetSigningRuleListAsync(SigningRuleRequest, request.CancellationToken); - -// return new() -// { -// Data = signingRuleListResult.Data ?? new(), -// TotalCount = signingRuleListResult.TotalCount -// }; -// } - -// private string GetSubjectTypes(List subjectTypesIds) -// { -// if (subjectTypesIds.Count == SubjectTypesDataStore.GetAll()?.Count()) -// { -// return "všechny"; -// } - -// return String.Join(", ", subjectTypesIds.Select(id => SubjectTypesDataStore.GetByKey(id)?.Name)) -// .Trim(',', ' '); -// } - -// private string GetSubjectCategories(List subjectCategoriesIds) -// { -// return String.Join(", ", subjectCategoriesIds.Select(id => SubjectCategoriesDataStore.GetByKey(id)?.Name)) -// .Trim(',', ' '); -// } -//} diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor index 36bc754c..a29e90b7 100644 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor +++ b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor @@ -1,5 +1,4 @@ -

StudentWithSigningRuleGrid.razor

- + @* registeredSubjects = new(); // Never null, may be empty... - private SubjectListQueryFilter subjectListFilter = new SubjectListQueryFilter() - { - SigningRuleId = LastSigningRuleId //Todo remove - }; - private static int? LastSigningRuleId { get; set; } + private SubjectListQueryFilter subjectListFilter = new(); protected override async Task OnInitializedAsync() { diff --git a/Web.Client/Services/DataStores/ISigningRulesDataStore.cs b/Web.Client/Services/DataStores/ISigningRulesDataStore.cs deleted file mode 100644 index 4816b4b3..00000000 --- a/Web.Client/Services/DataStores/ISigningRulesDataStore.cs +++ /dev/null @@ -1,8 +0,0 @@ -//using Havit.Blazor.Components.Web.Services.DataStores; -//using MensaGymnazium.IntranetGen3.Contracts; - -//namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -//public interface ISigningRulesDataStore : IDictionaryStaticDataStore -//{ -//} diff --git a/Web.Client/Services/DataStores/SigningRulesDataStore.cs b/Web.Client/Services/DataStores/SigningRulesDataStore.cs deleted file mode 100644 index 8a8bbf5e..00000000 --- a/Web.Client/Services/DataStores/SigningRulesDataStore.cs +++ /dev/null @@ -1,24 +0,0 @@ -//using Havit.Blazor.Components.Web.Services.DataStores; -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.Contracts.Security; - -//namespace MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -//public class SigningRulesDataStore : DictionaryStaticDataStore, ISigningRulesDataStore -//{ -// private readonly ISigningRuleFacade signingRuleFacade; - -// public SigningRulesDataStore(ISigningRuleFacade signingRuleFacade) -// { -// this.signingRuleFacade = signingRuleFacade; -// } - -// protected override Func KeySelector => (s) => s.Id; -// protected override bool ShouldRefresh() => false; // just hit F5 :-D - -// protected async override Task> LoadDataAsync() -// { -// var dto = await signingRuleFacade.GetAllSigningRuleReferencesAsync(); -// return dto ?? new List(); -// } -//} From d2cc5c6ad12822889764259d09ca0914a880f52e Mon Sep 17 00:00:00 2001 From: Xopabyteh <70832276+Xopabyteh@users.noreply.github.com> Date: Sun, 7 Apr 2024 15:01:11 +0200 Subject: [PATCH 5/7] Update possible NUGET packages --- Contracts/Contracts.csproj | 8 ++++---- DataLayer.Tests/DataLayer.Tests.csproj | 1 + DataLayer/DataLayer.csproj | 1 + DependencyInjection/DependencyInjection.csproj | 1 + Entity.Tests/Entity.Tests.csproj | 1 + Entity/Entity.csproj | 1 + Facades.Tests/Facades.Tests.csproj | 1 + Facades/Facades.csproj | 1 + IntegrationTests/IntegrationTests.csproj | 1 + Model.Tests/Model.Tests.csproj | 1 + Model/Model.csproj | 2 +- Primitives/Primitives.csproj | 2 +- Services.Tests/Services.Tests.csproj | 1 + Services/Services.csproj | 1 + TestHelpers/TestHelpers.csproj | 1 + TestsForLocalDebugging/TestsForLocalDebugging.csproj | 1 + Web.Client.Tests/Web.Client.Tests.csproj | 1 + Web.Client/Web.Client.csproj | 1 + Web.Server/Web.Server.csproj | 1 + 19 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Contracts/Contracts.csproj b/Contracts/Contracts.csproj index 0fb8970c..cb631bd8 100644 --- a/Contracts/Contracts.csproj +++ b/Contracts/Contracts.csproj @@ -8,10 +8,10 @@ - - - - + + + + diff --git a/DataLayer.Tests/DataLayer.Tests.csproj b/DataLayer.Tests/DataLayer.Tests.csproj index fdbc76c8..3630bc48 100644 --- a/DataLayer.Tests/DataLayer.Tests.csproj +++ b/DataLayer.Tests/DataLayer.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/DataLayer/DataLayer.csproj b/DataLayer/DataLayer.csproj index 0d011903..5bbc7a01 100644 --- a/DataLayer/DataLayer.csproj +++ b/DataLayer/DataLayer.csproj @@ -8,6 +8,7 @@ + diff --git a/DependencyInjection/DependencyInjection.csproj b/DependencyInjection/DependencyInjection.csproj index 012b35b3..556a6450 100644 --- a/DependencyInjection/DependencyInjection.csproj +++ b/DependencyInjection/DependencyInjection.csproj @@ -8,6 +8,7 @@ + diff --git a/Entity.Tests/Entity.Tests.csproj b/Entity.Tests/Entity.Tests.csproj index 905bbd41..43a843d1 100644 --- a/Entity.Tests/Entity.Tests.csproj +++ b/Entity.Tests/Entity.Tests.csproj @@ -21,6 +21,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Entity/Entity.csproj b/Entity/Entity.csproj index 6ee3b59b..8d01ebfa 100644 --- a/Entity/Entity.csproj +++ b/Entity/Entity.csproj @@ -12,6 +12,7 @@ + diff --git a/Facades.Tests/Facades.Tests.csproj b/Facades.Tests/Facades.Tests.csproj index b7ea279c..d66e2a1c 100644 --- a/Facades.Tests/Facades.Tests.csproj +++ b/Facades.Tests/Facades.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/Facades/Facades.csproj b/Facades/Facades.csproj index 25fa084b..b0a8e5e2 100644 --- a/Facades/Facades.csproj +++ b/Facades/Facades.csproj @@ -16,6 +16,7 @@ + diff --git a/IntegrationTests/IntegrationTests.csproj b/IntegrationTests/IntegrationTests.csproj index 3dbe4aac..624fb341 100644 --- a/IntegrationTests/IntegrationTests.csproj +++ b/IntegrationTests/IntegrationTests.csproj @@ -9,6 +9,7 @@ + diff --git a/Model.Tests/Model.Tests.csproj b/Model.Tests/Model.Tests.csproj index cc112be4..c9029193 100644 --- a/Model.Tests/Model.Tests.csproj +++ b/Model.Tests/Model.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/Model/Model.csproj b/Model/Model.csproj index ea8612e8..8d02de49 100644 --- a/Model/Model.csproj +++ b/Model/Model.csproj @@ -8,7 +8,7 @@ - + diff --git a/Primitives/Primitives.csproj b/Primitives/Primitives.csproj index 63c96f29..22c8d344 100644 --- a/Primitives/Primitives.csproj +++ b/Primitives/Primitives.csproj @@ -8,7 +8,7 @@ - + diff --git a/Services.Tests/Services.Tests.csproj b/Services.Tests/Services.Tests.csproj index 5e1c8083..c7e53bb4 100644 --- a/Services.Tests/Services.Tests.csproj +++ b/Services.Tests/Services.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/Services/Services.csproj b/Services/Services.csproj index 385cae7b..d5b933ec 100644 --- a/Services/Services.csproj +++ b/Services/Services.csproj @@ -12,6 +12,7 @@ + diff --git a/TestHelpers/TestHelpers.csproj b/TestHelpers/TestHelpers.csproj index 188cddaf..963eb0b4 100644 --- a/TestHelpers/TestHelpers.csproj +++ b/TestHelpers/TestHelpers.csproj @@ -6,6 +6,7 @@ + diff --git a/TestsForLocalDebugging/TestsForLocalDebugging.csproj b/TestsForLocalDebugging/TestsForLocalDebugging.csproj index 92d09966..872cb11d 100644 --- a/TestsForLocalDebugging/TestsForLocalDebugging.csproj +++ b/TestsForLocalDebugging/TestsForLocalDebugging.csproj @@ -11,6 +11,7 @@ + diff --git a/Web.Client.Tests/Web.Client.Tests.csproj b/Web.Client.Tests/Web.Client.Tests.csproj index 79743331..114ac74a 100644 --- a/Web.Client.Tests/Web.Client.Tests.csproj +++ b/Web.Client.Tests/Web.Client.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/Web.Client/Web.Client.csproj b/Web.Client/Web.Client.csproj index 785fc91e..cc40323b 100644 --- a/Web.Client/Web.Client.csproj +++ b/Web.Client/Web.Client.csproj @@ -18,6 +18,7 @@ + diff --git a/Web.Server/Web.Server.csproj b/Web.Server/Web.Server.csproj index c2c284c1..1d700c6c 100644 --- a/Web.Server/Web.Server.csproj +++ b/Web.Server/Web.Server.csproj @@ -11,6 +11,7 @@ + From 547c40229afa9724396dac5a6a5960b97f7df632 Mon Sep 17 00:00:00 2001 From: Xopabyteh <70832276+Xopabyteh@users.noreply.github.com> Date: Sun, 7 Apr 2024 15:18:18 +0200 Subject: [PATCH 6/7] Removed more trailing SigningRule instances (mostly from comments) --- .../IStudentSubjectRegistrationFacade.cs | 2 +- .../ISubjectRegistrationsManagerFacade.cs | 3 - .../StudentSubjectRegistrationCreateDto.cs | 3 - Contracts/StudentSubjectRegistrationDto.cs | 1 - ...udentSubjectRegistrationListQueryFilter.cs | 1 - .../StudentWithSigningRuleListItemDto.cs | 9 - .../StudentWithSigningRuleListQueryFilter.cs | 10 - Contracts/SubjectListQueryFilter.cs | 1 - .../IStudentWithSigningRuleListQuery.cs | 11 - .../StudentWithSigningRuleListQuery.cs | 60 ---- DataLayer/Queries/SubjectListQuery.cs | 22 -- DataLayer/Seeds/Core/SigningRuleSeed.cs | 310 ------------------ Facades/StudentSubjectRegistrationFacade.cs | 1 - Facades/SubjectRegistrationsManagerFacade.cs | 118 ------- Model/Grade.cs | 2 - Model/StudentSubjectRegistration.cs | 4 - .../Pages/Electives/SigningRuleList.razor | 1 - ...udentSubjectRegistrationComponent.razor.cs | 1 - .../StudentSubjectRegistrationEdit.razor | 1 - .../StudentSubjectRegistrationList.razor | 1 - .../StudentSubjectRegistrationsGrid.razor | 4 - .../StudentSubjectRegistrationsGrid.razor.cs | 2 - .../StudentWithSigningRuleGrid.razor | 35 -- .../StudentWithSigningRuleGrid.razor.cs | 25 -- .../StudentWithSigningRuleList.razor | 5 +- Web.Client/Routes.cs | 2 - Web.Client/Shared/Sidebar.razor | 2 - 27 files changed, 3 insertions(+), 634 deletions(-) delete mode 100644 Contracts/StudentWithSigningRuleListItemDto.cs delete mode 100644 Contracts/StudentWithSigningRuleListQueryFilter.cs delete mode 100644 DataLayer/Queries/IStudentWithSigningRuleListQuery.cs delete mode 100644 DataLayer/Queries/StudentWithSigningRuleListQuery.cs delete mode 100644 DataLayer/Seeds/Core/SigningRuleSeed.cs delete mode 100644 Web.Client/Pages/Electives/SigningRuleList.razor delete mode 100644 Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor delete mode 100644 Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs diff --git a/Contracts/IStudentSubjectRegistrationFacade.cs b/Contracts/IStudentSubjectRegistrationFacade.cs index fb006fad..a12773ce 100644 --- a/Contracts/IStudentSubjectRegistrationFacade.cs +++ b/Contracts/IStudentSubjectRegistrationFacade.cs @@ -9,5 +9,5 @@ public interface IStudentSubjectRegistrationFacade Task UpdateRegistrationAsync(StudentSubjectRegistrationDto registrationDto, CancellationToken cancellationToken = default); Task DeleteRegistrationAsync(Dto registrationIdDto, CancellationToken cancellationToken = default); Task> GetStudentSubjectRegistrationListAsync(DataFragmentRequest studentSubjectRegistrationListRequest, CancellationToken cancellationToken = default); - Task> GetAllRegistrationsOfCurrentStudent(); + Task> GetAllRegistrationsOfCurrentStudent(); // Xopa: Todo? Change to query? It was too entangled with signing rules, but now it could be done? } \ No newline at end of file diff --git a/Contracts/ISubjectRegistrationsManagerFacade.cs b/Contracts/ISubjectRegistrationsManagerFacade.cs index c0ed4a8d..30964ee1 100644 --- a/Contracts/ISubjectRegistrationsManagerFacade.cs +++ b/Contracts/ISubjectRegistrationsManagerFacade.cs @@ -3,8 +3,6 @@ [ApiContract] public interface ISubjectRegistrationsManagerFacade { - //Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default); - /// /// Returns the users registration for a subject /// // TODO: Change to query that can be cached inside data store @@ -15,5 +13,4 @@ public interface ISubjectRegistrationsManagerFacade Task GetCurrentUserRegistrationForSubject(Dto subjectId, CancellationToken cancellationToken = default); Task CancelRegistrationAsync(Dto studentSubjectRegistrationId, CancellationToken cancellationToken = default); Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto studentSubjectRegistrationCreateDto, CancellationToken cancellationToken = default); - //Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken); } diff --git a/Contracts/StudentSubjectRegistrationCreateDto.cs b/Contracts/StudentSubjectRegistrationCreateDto.cs index 14966aaf..f39747f8 100644 --- a/Contracts/StudentSubjectRegistrationCreateDto.cs +++ b/Contracts/StudentSubjectRegistrationCreateDto.cs @@ -6,13 +6,11 @@ namespace MensaGymnazium.IntranetGen3.Contracts; public record StudentSubjectRegistrationCreateDto { public int? SubjectId { get; set; } - //public int? SigningRuleId { get; set; } public StudentRegistrationType? RegistrationType { get; set; } public virtual void UpdateFrom(StudentSubjectRegistrationDto model) { this.SubjectId = model.SubjectId; - //this.SigningRuleId = model.SigningRuleId; this.RegistrationType = model.RegistrationType; } @@ -21,7 +19,6 @@ public class StudentSubjectRegistrationCreateDtoValidator : AbstractValidator x.SubjectId).NotNull(); - //RuleFor(x => x.SigningRuleId).NotNull(); RuleFor(x => x.RegistrationType).NotNull(); } } diff --git a/Contracts/StudentSubjectRegistrationDto.cs b/Contracts/StudentSubjectRegistrationDto.cs index a2f593fd..0cb12f60 100644 --- a/Contracts/StudentSubjectRegistrationDto.cs +++ b/Contracts/StudentSubjectRegistrationDto.cs @@ -22,7 +22,6 @@ public class StudentSubjectRegistrationDtoValidator : AbstractValidator x.SubjectId).NotNull().WithName("Předmět"); - //RuleFor(x => x.SigningRuleId).NotNull().WithName("Zápisové pravidlo"); RuleFor(x => x.RegistrationType).NotNull().WithName("Typ zápisu"); RuleFor(x => x.StudentId).NotNull().WithName("Student"); } diff --git a/Contracts/StudentSubjectRegistrationListQueryFilter.cs b/Contracts/StudentSubjectRegistrationListQueryFilter.cs index 8018215a..a08c54e3 100644 --- a/Contracts/StudentSubjectRegistrationListQueryFilter.cs +++ b/Contracts/StudentSubjectRegistrationListQueryFilter.cs @@ -6,7 +6,6 @@ public record StudentSubjectRegistrationListQueryFilter { public int? SubjectId { get; set; } public int? GradeId { get; set; } - public int? SigningRuleId { get; set; } public int? StudentId { get; set; } public StudentRegistrationType? RegistrationType { get; set; } } diff --git a/Contracts/StudentWithSigningRuleListItemDto.cs b/Contracts/StudentWithSigningRuleListItemDto.cs deleted file mode 100644 index bab49f97..00000000 --- a/Contracts/StudentWithSigningRuleListItemDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -//namespace MensaGymnazium.IntranetGen3.Contracts; -//public record StudentWithSigningRuleListItemDto -//{ -// public int StudentId { get; set; } -// public int SigningRuleId { get; set; } -// public int MainRegistrationsCount { get; set; } -// public int SecondaryRegistrationsCount { get; set; } -// public int? SigningRuleQuantity { get; set; } -//} diff --git a/Contracts/StudentWithSigningRuleListQueryFilter.cs b/Contracts/StudentWithSigningRuleListQueryFilter.cs deleted file mode 100644 index 13af2159..00000000 --- a/Contracts/StudentWithSigningRuleListQueryFilter.cs +++ /dev/null @@ -1,10 +0,0 @@ -//namespace MensaGymnazium.IntranetGen3.Contracts; - -//public record StudentWithSigningRuleListQueryFilter -//{ -// public int? GradeId { get; set; } -// public int? StudentId { get; set; } -// public int? SigningRuleId { get; set; } -// public bool CurrentStudentOnly { get; set; } = false; -// public bool IncompleteOnly { get; set; } = false; -//} diff --git a/Contracts/SubjectListQueryFilter.cs b/Contracts/SubjectListQueryFilter.cs index 2b504657..516a8e81 100644 --- a/Contracts/SubjectListQueryFilter.cs +++ b/Contracts/SubjectListQueryFilter.cs @@ -6,5 +6,4 @@ public record SubjectListQueryFilter public int? SubjectTypeId { get; set; } public int? SubjectCategoryId { get; set; } public int? TeacherId { get; set; } - public int? SigningRuleId { get; set; } } diff --git a/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs b/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs deleted file mode 100644 index d0ddc34e..00000000 --- a/DataLayer/Queries/IStudentWithSigningRuleListQuery.cs +++ /dev/null @@ -1,11 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -//public interface IStudentWithSigningRuleListQuery -//{ -// StudentWithSigningRuleListQueryFilter Filter { get; set; } -// SortItem[] Sorting { get; set; } - -// Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default); -//} \ No newline at end of file diff --git a/DataLayer/Queries/StudentWithSigningRuleListQuery.cs b/DataLayer/Queries/StudentWithSigningRuleListQuery.cs deleted file mode 100644 index 722b434d..00000000 --- a/DataLayer/Queries/StudentWithSigningRuleListQuery.cs +++ /dev/null @@ -1,60 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.DataLayer.DataSources; -//using MensaGymnazium.IntranetGen3.DataLayer.DataSources.Security; -//using MensaGymnazium.IntranetGen3.Primitives; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; - -//[Service] -//public class StudentWithSigningRuleListQuery : QueryBase, IStudentWithSigningRuleListQuery -//{ -// private readonly IStudentDataSource studentDataSource; -// private readonly ISigningRuleDataSource signingRuleDataSource; - -// public StudentWithSigningRuleListQuery( -// IStudentDataSource studentDataSource, -// ISigningRuleDataSource signingRuleDataSource) -// { -// this.studentDataSource = studentDataSource; -// this.signingRuleDataSource = signingRuleDataSource; -// } - -// public StudentWithSigningRuleListQueryFilter Filter { get; set; } -// public SortItem[] Sorting { get; set; } - -// protected override IQueryable Query() -// { -// var data = studentDataSource.Data -// .Join(signingRuleDataSource.Data, s => s.GradeId - 1, sr => sr.GradeId, (student, signingRule) => new { student, signingRule }) -// .WhereIf(Filter.GradeId.HasValue, i => i.student.GradeId == Filter.GradeId) -// .WhereIf(Filter.StudentId.HasValue, i => i.student.Id == Filter.StudentId) -// .WhereIf(Filter.SigningRuleId.HasValue, i => i.signingRule.Id == Filter.SigningRuleId) -// .OrderBy(Sorting, sortingExpression => sortingExpression switch -// { -// nameof(StudentWithSigningRuleListItemDto.StudentId) => (i => i.student.User.Name), -// nameof(StudentWithSigningRuleListItemDto.SigningRuleId) => (i => i.signingRule.Name), -// _ => throw new InvalidOperationException($"Unknown SortingItem.Expression {sortingExpression}.") -// }) -// .Select(x => new StudentWithSigningRuleListItemDto -// { -// StudentId = x.student.Id, -// SigningRuleId = x.signingRule.Id, -// SigningRuleQuantity = x.signingRule.Quantity, -// MainRegistrationsCount = x.signingRule.RegistrationsWithDeleted.Count(r => (r.Deleted == null) && (r.RegistrationType == StudentRegistrationType.Main) && (r.StudentId == x.student.Id) && (r.Subject.Deleted == null)), -// SecondaryRegistrationsCount = x.signingRule.RegistrationsWithDeleted.Count(r => (r.Deleted == null) && (r.RegistrationType == StudentRegistrationType.Secondary) && (r.StudentId == x.student.Id) && (r.Subject.Deleted == null)), -// }) -// .WhereIf(Filter.IncompleteOnly, i => i.MainRegistrationsCount != i.SigningRuleQuantity); - -// return data; -// } - -// public async Task> GetDataFragmentAsync(int startIndex, int? count, CancellationToken cancellationToken = default) -// { -// return new() -// { -// Data = await SelectDataFragmentAsync(startIndex, count, cancellationToken), -// TotalCount = await CountAsync(cancellationToken) -// }; -// } - -//} diff --git a/DataLayer/Queries/SubjectListQuery.cs b/DataLayer/Queries/SubjectListQuery.cs index 58f247e7..21bfc2d3 100644 --- a/DataLayer/Queries/SubjectListQuery.cs +++ b/DataLayer/Queries/SubjectListQuery.cs @@ -9,16 +9,13 @@ namespace MensaGymnazium.IntranetGen3.DataLayer.Queries; public class SubjectListQuery : QueryBase, ISubjectListQuery { private readonly ISubjectDataSource subjectDataSource; - //private readonly ISigningRuleRepository signingRuleRepository; private readonly IStudentSubjectRegistrationDataSource studentSubjectRegistrationDataSource; public SubjectListQuery( ISubjectDataSource subjectDataSource, - //ISigningRuleRepository signingRuleRepository, IStudentSubjectRegistrationDataSource studentSubjectRegistrationDataSource) { this.subjectDataSource = subjectDataSource; - //this.signingRuleRepository = signingRuleRepository; this.studentSubjectRegistrationDataSource = studentSubjectRegistrationDataSource; } @@ -33,25 +30,6 @@ protected override IQueryable Query() .WhereIf(Filter.SubjectCategoryId != null, s => s.CategoryId == Filter.SubjectCategoryId) .WhereIf(Filter.TeacherId != null, s => s.TeacherRelations.Any(tr => tr.TeacherId == Filter.TeacherId)); - //if (Filter.SigningRuleId is not null) - //{ - // var signingRule = signingRuleRepository.GetObject(Filter.SigningRuleId.Value); - - // data = data.Where(s => s.GradeRelations.Any(gr => gr.GradeId == signingRule.GradeId)); - - // var subjectTypesIds = signingRule.SubjectTypeRelations.Select(str => str.SubjectTypeId); - // if (subjectTypesIds.Any()) - // { - // data = data.Where(s => s.TypeRelations.Any(tr => subjectTypesIds.Contains(tr.SubjectTypeId))); - // } - - // var subjectCategoriesIds = signingRule.SubjectCategoryRelations.Select(str => str.SubjectCategoryId); - // if (subjectCategoriesIds.Any()) - // { - // data = data.Where(s => subjectCategoriesIds.Contains(s.CategoryId)); - // } - //} - data = data .OrderByMultiple(Sorting, sortingExpression => sortingExpression switch { diff --git a/DataLayer/Seeds/Core/SigningRuleSeed.cs b/DataLayer/Seeds/Core/SigningRuleSeed.cs deleted file mode 100644 index c364b068..00000000 --- a/DataLayer/Seeds/Core/SigningRuleSeed.cs +++ /dev/null @@ -1,310 +0,0 @@ -//using MensaGymnazium.IntranetGen3.Model; -//using MensaGymnazium.IntranetGen3.Primitives; - -//namespace MensaGymnazium.IntranetGen3.DataLayer.Seeds.Core; - -//public class SigningRuleSeed : DataSeed -//{ -// public override void SeedData() -// { -// var data = new[] -// { -// new SigningRule() { -// SeedItemIdentifier = "Sekunda", -// Name = "sekunda - specializační seminář nebo jazyk", -// Description = "Je potřeba si zvolit jeden specializační seminář nebo jazyk.", -// GradeId = (int) GradeEntry.Sekunda, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ForeignLanguage }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() { -// SeedItemIdentifier = "TercieSpecSem", -// Name = "tercie - specializační seminář", -// Description = "Je potřeba si zvolit jeden specializační seminář.", -// GradeId = (int) GradeEntry.Tercie, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "TercieJazyk", -// Name = "tercie - jazyk", -// Description = "Je potřeba si zvolit jeden jazyk (pokud již nebyl zvolen v sekundě).", -// GradeId = (int) GradeEntry.Tercie, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ForeignLanguage }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, - -// new SigningRule() -// { -// SeedItemIdentifier = "KvartaSpecSem", -// Name = "kvarta - specializační seminář", -// Description = "Je potřeba si zvolit jeden specializační seminář.", -// GradeId = (int) GradeEntry.Kvarta, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, - -// new SigningRule() -// { -// SeedItemIdentifier = "KvintaExtSem", -// Name = "kvinta - nadstavbový seminář", -// Description = "Je potřeba si zvolit jeden nadstavbový seminář.", -// GradeId = (int) GradeEntry.Kvinta, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "KvintaSpecExtSem", -// Name = "kvinta - specializační/nadstavbový seminář", -// Description = "Je potřeba si zvolit jeden specializační nebo nadstavbový seminář.", -// GradeId = (int) GradeEntry.Kvinta, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "SextaExtSem", -// Name = "sexta - nadstavbový seminář", -// Description = "Je potřeba si zvolit jeden nadstavbový seminář.", -// GradeId = (int) GradeEntry.Sexta, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "SextaSpecExtSem", -// Name = "sexta - specializační/nadstavbový seminář", -// Description = "Je potřeba si zvolit jeden specializační nebo nadstavbový seminář.", -// GradeId = (int) GradeEntry.Sexta, -// Quantity = 1, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "SeptimaGradSem", -// Name = "septima - dva maturitní semináře", -// Description = "Je potřeba si zvolit dva maturitní semináře z oblastí Člověk a společnost nebo Člověk a příroda.", -// GradeId = (int) GradeEntry.Septima, -// Quantity = 2, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// }, -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "SeptimaOther", -// Name = "septima - další tři semináře", -// Description = "Je potřeba si zvolit další tři specializační/nadstavbonvé/maturitní semináře.", -// GradeId = (int) GradeEntry.Septima, -// Quantity = 3, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "OktavaGradSem", -// Name = "oktáva - dva maturitní semináře", -// Description = "Je potřeba si zvolit dva maturitní semináře z oblastí Člověk a společnost nebo Člověk a příroda.", -// GradeId = (int) GradeEntry.Oktava, -// Quantity = 2, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// }, -// }, -// new SigningRule() -// { -// SeedItemIdentifier = "OktavaOther", -// Name = "oktáva - další čtyři semináře", -// Description = "Je potřeba si zvolit další čtyři specializační/nadstavbonvé/maturitní semináře.", -// GradeId = (int) GradeEntry.Oktava, -// Quantity = 4, -// SubjectCategoryRelations = -// { -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.SpecialisationSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.ExtensionSeminar }, -// new SigningRuleSubjectCategoryRelation() { SubjectCategoryId = (int)SubjectCategory.Entry.GraduationSeminar }, -// }, -// SubjectTypeRelations = -// { -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanHealth }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanNature }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanSociety }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.HumanWork }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.ArtCulture }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.Informatics }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.MathApplication }, -// new SigningRuleSubjectTypeRelation() { SubjectTypeId = (int)SubjectType.Entry.LanguageCommunication }, -// } -// }, -// }; - -// Seed(For(data).PairBy(sr => sr.SeedItemIdentifier) -// // TODO .WithoutUpdate() + relations -// .AfterSave(item => -// { -// item.SeedEntity.SubjectCategoryRelations.ForEach(cr => cr.SigningRuleId = item.PersistedEntity.Id); -// item.SeedEntity.SubjectTypeRelations.ForEach(tr => tr.SigningRuleId = item.PersistedEntity.Id); -// }) -// .AndForAll(sr => sr.SubjectCategoryRelations, -// categoryRelationSeed => categoryRelationSeed.PairBy(cr => cr.SigningRuleId, cr => cr.SubjectCategoryId)) -// .AndForAll(sr => sr.SubjectTypeRelations, -// typeRelationSeed => typeRelationSeed.PairBy(tr => tr.SigningRuleId, tr => tr.SubjectTypeId)) -// ); -// } - -// public override IEnumerable GetPrerequisiteDataSeeds() -// { -// yield return typeof(GradeSeed); -// yield return typeof(SubjectCategorySeed); -// yield return typeof(SubjectTypeSeed); -// } -//} diff --git a/Facades/StudentSubjectRegistrationFacade.cs b/Facades/StudentSubjectRegistrationFacade.cs index d85506ce..2d0b76a5 100644 --- a/Facades/StudentSubjectRegistrationFacade.cs +++ b/Facades/StudentSubjectRegistrationFacade.cs @@ -93,7 +93,6 @@ private void MapRegistrationFromDto(StudentSubjectRegistrationDto registrationDt registration.SubjectId = registrationDto.SubjectId.Value; registration.StudentId = registrationDto.StudentId.Value; registration.RegistrationType = registrationDto.RegistrationType.Value; - //registration.UsedSigningRuleId = registrationDto.SigningRuleId.Value; } [Authorize(Roles = nameof(Role.Administrator))] diff --git a/Facades/SubjectRegistrationsManagerFacade.cs b/Facades/SubjectRegistrationsManagerFacade.cs index 57006f20..b807b237 100644 --- a/Facades/SubjectRegistrationsManagerFacade.cs +++ b/Facades/SubjectRegistrationsManagerFacade.cs @@ -105,7 +105,6 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st { // Verify request Contract.Requires(studentSubjectRegistrationCreateDto is not null); - //Contract.Requires(studentSubjectRegistrationCreateDto.SigningRuleId != default); Contract.Requires(studentSubjectRegistrationCreateDto.SubjectId != default); Contract.Requires(studentSubjectRegistrationCreateDto.RegistrationType != default); @@ -126,121 +125,4 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st unitOfWork.AddForInsert(studentSubjectRegistration); await unitOfWork.CommitAsync(cancellationToken); } - - - - //[Authorize(Roles = nameof(Role.Student))] - //public async Task> GetCurrentUserSubjectSigningRulesForRegistrationAsync(Dto subjectId, CancellationToken cancellationToken = default) - //{ - // var signingRulesWithRegistrations = await GetCurrentUserSigningRulesWithRegistrationsAsync(Dto.FromValue((int?)subjectId.Value), cancellationToken); - - // List result = new(); - - // var subjectRegistered = signingRulesWithRegistrations.SelectMany(x => x.Registrations).Any(ssr => ssr.SubjectId == subjectId.Value); - // var subject = await subjectRepository.GetObjectAsync(subjectId.Value, cancellationToken); - // var registrationCount = await studentSubjectRegistrationRepository.CountBySubjectAndTypeAsync(subjectId.Value, StudentRegistrationType.Main, cancellationToken); - - // var user = applicationAuthenticationService.GetCurrentUser(); - // Contract.Assert(user.Student is not null); - - // var collisions = await studentSubjectRegistrationRepository.GetByStudentAndTimeAsync(user.Student.Id, subject.ScheduleDayOfWeek, subject.ScheduleSlotInDay, cancellationToken); - - // foreach (var item in signingRulesWithRegistrations) - // { - // var resultItem = new StudentRegistrationsDto(); - // resultItem.Id = item.Id; - // resultItem.Name = item.Name; - - // // main - // resultItem.MainRegistration = item.Registrations.FirstOrDefault(r => (r.SubjectId == subjectId.Value) - // && (r.RegistrationType == StudentRegistrationType.Main)); - // if (resultItem.MainRegistration is not null) - // { - // resultItem.MainRegistrationAllowed = false; - // resultItem.MainRegistrationNotAllowedReason = "Primární registrace tohoto předmětu k tomu pravidlu již existuje."; - // } - // else if (item.Registrations.Count(r => r.RegistrationType == StudentRegistrationType.Main) >= item.Quantity) - // { - // resultItem.MainRegistrationAllowed = false; - // resultItem.MainRegistrationNotAllowedReason = "Počet primárních registrací tohoto pravidla vyčerpán."; - // } - // else if (subjectRegistered) - // { - // resultItem.MainRegistrationAllowed = false; - // resultItem.MainRegistrationNotAllowedReason = "Předmět je již registrován."; - // } - // else if (subject.Capacity != null && registrationCount >= subject.Capacity) - // { - // resultItem.MainRegistrationAllowed = false; - // resultItem.MainRegistrationNotAllowedReason = "Kapacita předmětu je naplněna."; - // } - // else if (collisions.Count > 0) - // { - // resultItem.MainRegistrationAllowed = false; - // resultItem.MainRegistrationNotAllowedReason = "Předmět koliduje časově s jiným předmětem."; - // } - // else - // { - // resultItem.MainRegistrationAllowed = true; - // } - - // // secondary - // resultItem.SecondaryRegistration = item.Registrations.FirstOrDefault(r => (r.SubjectId == subjectId.Value) && (r.RegistrationType == StudentRegistrationType.Secondary)); - // if (resultItem.SecondaryRegistration is not null) - // { - // resultItem.SecondaryRegistrationAllowed = false; - // resultItem.SecondaryRegistrationNotAllowedReason = "Náhradní registrace tohoto předmětu k tomu pravidlu již existuje."; - // } - // else if (item.Registrations.Count(r => r.RegistrationType == StudentRegistrationType.Secondary) >= item.Quantity) - // { - // resultItem.SecondaryRegistrationAllowed = false; - // resultItem.SecondaryRegistrationNotAllowedReason = "Počet náhradních registrací tohoto pravidla vyčerpán."; - // } - // else if (subjectRegistered) - // { - // resultItem.SecondaryRegistrationAllowed = false; - // resultItem.SecondaryRegistrationNotAllowedReason = "Předmět je již registrován."; - // } - // else - // { - // resultItem.SecondaryRegistrationAllowed = true; - // } - - // result.Add(resultItem); - // } - - // return result; - //} - - //[Authorize(Roles = nameof(Role.Student))] - //public async Task> GetCurrentUserSigningRulesWithRegistrationsAsync(Dto onlySubjectId, CancellationToken cancellationToken = default) - //{ - // var user = applicationAuthenticationService.GetCurrentUser(); - // Contract.Assert(user.Student is not null); - - // Subject subjectFilter = null; - // if (onlySubjectId.Value.HasValue) - // { - // subjectFilter = await subjectRepository.GetObjectAsync(onlySubjectId.Value.Value, cancellationToken); - // await dataLoader.LoadAsync(subjectFilter, s => s.GradeRelations, cancellationToken); - // await dataLoader.LoadAsync(subjectFilter, s => s.TypeRelations, cancellationToken); - // } - - // return await studentSigningRulesWithRegistrationsQuery.GetDataAsync(user.Student, subjectFilter, cancellationToken); - //} - - //public async Task> GetStudentWithSigningRuleListAsync(DataFragmentRequest facadeRequest, CancellationToken cancellationToken) - //{ - // if (facadeRequest.Filter.CurrentStudentOnly) - // { - // var user = applicationAuthenticationService.GetCurrentUser(); - // Contract.Requires(user.StudentId is not null); - // facadeRequest.Filter.StudentId = user.StudentId; - // } - - // studentWithSigningRuleListQuery.Filter = facadeRequest.Filter; - // studentWithSigningRuleListQuery.Sorting = facadeRequest.Sorting; - - // return await studentWithSigningRuleListQuery.GetDataFragmentAsync(facadeRequest.StartIndex, facadeRequest.Count, cancellationToken); - //} } diff --git a/Model/Grade.cs b/Model/Grade.cs index 20d36a4f..2a530793 100644 --- a/Model/Grade.cs +++ b/Model/Grade.cs @@ -16,6 +16,4 @@ public class Grade public string AadGroupId { get; set; } public ICollection Students { get; } = new List(); - - //public List SigningRules { get; } = new List(); } diff --git a/Model/StudentSubjectRegistration.cs b/Model/StudentSubjectRegistration.cs index 83b593c5..6066a64d 100644 --- a/Model/StudentSubjectRegistration.cs +++ b/Model/StudentSubjectRegistration.cs @@ -14,10 +14,6 @@ public class StudentSubjectRegistration public int SubjectId { get; set; } public StudentRegistrationType RegistrationType { get; set; } - - //public SigningRule UsedSigningRule { get; set; } - //public int UsedSigningRuleId { get; set; } - public DateTime Created { get; set; } public DateTime? Deleted { get; set; } } diff --git a/Web.Client/Pages/Electives/SigningRuleList.razor b/Web.Client/Pages/Electives/SigningRuleList.razor deleted file mode 100644 index e0788a61..00000000 --- a/Web.Client/Pages/Electives/SigningRuleList.razor +++ /dev/null @@ -1 +0,0 @@ -@attribute [Route(Routes.Electives.SigningRuleList)] \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs index 23a32398..84d51dc4 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationComponent.razor.cs @@ -73,7 +73,6 @@ await SubjectRegistrationsManagerFacade.CreateRegistrationAsync( new StudentSubjectRegistrationCreateDto() { SubjectId = SubjectId!.Value, - //SigningRuleId = signingRuleId, RegistrationType = registrationType }); diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor index 80b14227..7e673e75 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationEdit.razor @@ -6,7 +6,6 @@ - @* *@ diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor index 18ff3d35..2524fc61 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationList.razor @@ -13,7 +13,6 @@ - @* *@ diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor index 41bfe8d8..82a692be 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor @@ -23,10 +23,6 @@ ItemTextSelector="i => i.RegistrationType.AsEnumValueDescription()" SortString="@nameof(StudentSubjectRegistrationDto.RegistrationType)" TItem="StudentSubjectRegistrationDto" /> - @* *@ diff --git a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs index 435b9db5..cc70ec6d 100644 --- a/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs +++ b/Web.Client/Pages/Electives/StudentSubjectRegistrationsGrid.razor.cs @@ -15,7 +15,6 @@ public partial class StudentSubjectRegistrationsGrid [Inject] protected IStudentSubjectRegistrationFacade StudentSubjectRegistrationFacade { get; set; } [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } [Inject] protected ISubjectsDataStore SubjectsDataStore { get; set; } - //[Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } [Inject] protected IGradesDataStore GradesDataStore { get; set; } [Inject] protected IHxMessengerService Messenger { get; set; } @@ -25,7 +24,6 @@ protected override async Task OnInitializedAsync() { await StudentsDataStore.EnsureDataAsync(); await SubjectsDataStore.EnsureDataAsync(); - //await SigningRulesDataStore.EnsureDataAsync(); await GradesDataStore.EnsureDataAsync(); } diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor deleted file mode 100644 index a29e90b7..00000000 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor +++ /dev/null @@ -1,35 +0,0 @@ - -@* - - - - - - @if (item.SigningRuleQuantity > item.MainRegistrationsCount) - { - - } - else - { - - } - @item.MainRegistrationsCount / @item.SigningRuleQuantity - - - - - *@ \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs b/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs deleted file mode 100644 index 2d2b2f7c..00000000 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleGrid.razor.cs +++ /dev/null @@ -1,25 +0,0 @@ -//using Havit.Collections; -//using MensaGymnazium.IntranetGen3.Contracts; -//using MensaGymnazium.IntranetGen3.Web.Client.Services.DataStores; - -//namespace MensaGymnazium.IntranetGen3.Web.Client.Pages.Electives; -//public partial class StudentWithSigningRuleGrid -//{ -// [Parameter] public GridDataProviderDelegate DataProvider { get; set; } - -// [Parameter] public bool StudentColumnVisible { get; set; } = true; - -// [Inject] protected IStudentsDataStore StudentsDataStore { get; set; } -// [Inject] protected ISigningRulesDataStore SigningRulesDataStore { get; set; } - -// private HxGrid gridComponent; -// private StudentWithSigningRuleListQueryFilter filterModel = new(); - -// protected override async Task OnInitializedAsync() -// { -// await StudentsDataStore.EnsureDataAsync(); -// await SigningRulesDataStore.EnsureDataAsync(); -// } - -// public Task RefreshDataAsync() => gridComponent.RefreshDataAsync(); -//} \ No newline at end of file diff --git a/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor b/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor index 7d08bb7f..1918261a 100644 --- a/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor +++ b/Web.Client/Pages/Electives/StudentWithSigningRuleList.razor @@ -1,6 +1,5 @@ -@attribute [Route(Routes.Electives.StudentWithSigningRuleList)] - -@* Todo : Move to homepage (or subject list page), where complete model validation will be shown *@ +@* Todo : Move to homepage (or subject list page), where complete model validation will be shown *@ +@* @attribute [Route(Routes.Electives.StudentWithSigningRuleList)] *@ @* $"/electives/subjects/{subjectId}"; } diff --git a/Web.Client/Shared/Sidebar.razor b/Web.Client/Shared/Sidebar.razor index 999d60a0..de3e04ec 100644 --- a/Web.Client/Shared/Sidebar.razor +++ b/Web.Client/Shared/Sidebar.razor @@ -12,8 +12,6 @@ - - From 976e66c6067b5711da665ab95f719fcc9a345070 Mon Sep 17 00:00:00 2001 From: Xopabyteh Date: Tue, 9 Apr 2024 14:20:51 +0200 Subject: [PATCH 7/7] Removed unnecessary trailing code made when refactoring --- .../ISubjectRegistrationsManagerFacade.cs | 8 ----- Facades/StudentSubjectRegistrationFacade.cs | 3 +- Facades/SubjectRegistrationsManagerFacade.cs | 29 +------------------ 3 files changed, 3 insertions(+), 37 deletions(-) diff --git a/Contracts/ISubjectRegistrationsManagerFacade.cs b/Contracts/ISubjectRegistrationsManagerFacade.cs index 30964ee1..38cdea1e 100644 --- a/Contracts/ISubjectRegistrationsManagerFacade.cs +++ b/Contracts/ISubjectRegistrationsManagerFacade.cs @@ -3,14 +3,6 @@ [ApiContract] public interface ISubjectRegistrationsManagerFacade { - /// - /// Returns the users registration for a subject - /// // TODO: Change to query that can be cached inside data store - /// - /// - /// - /// Always returns a registration. If there is no registration, it returns the DTO with no data set - Task GetCurrentUserRegistrationForSubject(Dto subjectId, CancellationToken cancellationToken = default); Task CancelRegistrationAsync(Dto studentSubjectRegistrationId, CancellationToken cancellationToken = default); Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto studentSubjectRegistrationCreateDto, CancellationToken cancellationToken = default); } diff --git a/Facades/StudentSubjectRegistrationFacade.cs b/Facades/StudentSubjectRegistrationFacade.cs index 2d0b76a5..2ad61b02 100644 --- a/Facades/StudentSubjectRegistrationFacade.cs +++ b/Facades/StudentSubjectRegistrationFacade.cs @@ -1,4 +1,5 @@ -using System.Security; + +using System.Security; using MensaGymnazium.IntranetGen3.Contracts; using MensaGymnazium.IntranetGen3.DataLayer.Queries; using MensaGymnazium.IntranetGen3.DataLayer.Repositories; diff --git a/Facades/SubjectRegistrationsManagerFacade.cs b/Facades/SubjectRegistrationsManagerFacade.cs index b807b237..7e3b3d30 100644 --- a/Facades/SubjectRegistrationsManagerFacade.cs +++ b/Facades/SubjectRegistrationsManagerFacade.cs @@ -54,34 +54,6 @@ private bool RegistrationIsWithinValidDate() return true; } - [Authorize(Roles = nameof(Role.Student))] - public async Task GetCurrentUserRegistrationForSubject(Dto subjectId, CancellationToken cancellationToken = default) - { - var user = applicationAuthenticationService.GetCurrentUser(); - Contract.Requires(user.StudentId is not null); - - // Todo: change to query? - var registration = await studentSubjectRegistrationRepository.GetByStudentForSubject( - studentId: user.Id, - subjectId: subjectId.Value, - cancellationToken: cancellationToken); - - if (registration is null) // No registration - { - return new(); - } - - // Map - return new StudentSubjectRegistrationDto() - { - RegistrationType = registration.RegistrationType, - Created = registration.Created, - Id = registration.Id, - StudentId = registration.StudentId, // Should be same as input - SubjectId = registration.SubjectId // Should be same as input - }; - } - [Authorize(Roles = nameof(Role.Student))] public async Task CancelRegistrationAsync(Dto studentSubjectRegistrationId, CancellationToken cancellationToken = default) { @@ -108,6 +80,7 @@ public async Task CreateRegistrationAsync(StudentSubjectRegistrationCreateDto st Contract.Requires(studentSubjectRegistrationCreateDto.SubjectId != default); Contract.Requires(studentSubjectRegistrationCreateDto.RegistrationType != default); + // Xopa: Todo: Maybe these two operations belong to the application layer? // Verify registration date Contract.Requires(RegistrationIsWithinValidDate(), "Přihlášku není možné založit. Je před, nebo již po termínu přihlašování");