diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkPassedDisciplineBusinessLogic.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkPassedDisciplineBusinessLogic.cs new file mode 100644 index 0000000..3ab771c --- /dev/null +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkPassedDisciplineBusinessLogic.cs @@ -0,0 +1,17 @@ +using DepartmentContract.BindingModels; +using DepartmentContract.Logics.IGenericEntityLogic; +using DepartmentContract.Services.IGenericEntityService; +using DepartmentContract.ViewModels; +using ToolsModule.ManagmentEntity; +using ToolsModule.ManagmentSecurity; + +namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic +{ + /// + /// Логика работы с оценками студентов за дисциплины + /// + public class StudentMarkPassedDisciplineBusinessLogic : GenericBusinessLogic, IStudentMarkPassedDisciplineLogic + { + public StudentMarkPassedDisciplineBusinessLogic(IStudentMarkPassedDisciplineService service) : base(service, "Оценки студентов", AccessOperation.ОценкиСтудентов) { } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkPassedDisciplineLogic.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkPassedDisciplineLogic.cs deleted file mode 100644 index c59ee42..0000000 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkPassedDisciplineLogic.cs +++ /dev/null @@ -1,17 +0,0 @@ -using DepartmentContract.BindingModels; -using DepartmentContract.Logics.IGenericEntityLogic; -using DepartmentContract.Services.IGenericEntityService; -using DepartmentContract.ViewModels; -using ToolsModule.ManagmentEntity; -using ToolsModule.ManagmentSecurity; - -namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic -{ - /// - /// Логика работы с оценками студентов за дисциплины - /// - public class StudentMarkPassedDisciplineLogic : GenericBusinessLogic, IStudentMarkPassedDisciplineLogic - { - public StudentMarkPassedDisciplineLogic(IStudentMarkPassedDisciplineService service) : base(service, "Оценки студентов", AccessOperation.ОценкиСтудентов) { } - } -} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkSyncHistoryBusinessLogic.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkSyncHistoryBusinessLogic.cs new file mode 100644 index 0000000..a406ee5 --- /dev/null +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkSyncHistoryBusinessLogic.cs @@ -0,0 +1,28 @@ +using DepartmentContract.BindingModels; +using DepartmentContract.Logics.IGenericEntityLogic; +using DepartmentContract.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ToolsModule.ManagmentEntity; + +namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic +{ + /// + /// Логика работы с историями синхронизации оценок + /// + public class StudentMarkSyncHistoryBusinessLogic : GenericBusinessLogic, IStudentMarkSyncHistoryLogic + { + public Task SyncMarks() + { + throw new NotImplementedException(); + } + + public Task SyncStudentMarks(Guid studentId) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkSyncHistoryRecordBusinessLogic.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkSyncHistoryRecordBusinessLogic.cs new file mode 100644 index 0000000..3dea5bb --- /dev/null +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/GenericBusinessLogic/StudentMarkSyncHistoryRecordBusinessLogic.cs @@ -0,0 +1,17 @@ +using DepartmentContract.BindingModels; +using DepartmentContract.Logics.IGenericEntityLogic; +using DepartmentContract.Services.IGenericEntityService; +using DepartmentContract.ViewModels; +using ToolsModule.ManagmentEntity; +using ToolsModule.ManagmentSecurity; + +namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic +{ + /// + /// Логика работы с записями историй синхронизации оценок + /// + public class StudentMarkSyncHistoryRecordBusinessLogic : GenericBusinessLogic, IStudentMarkSyncHistoryRecordLogic + { + public StudentMarkSyncHistoryRecordBusinessLogic(IStudentMarkSyncHistoryRecordService service) : base(service, "Синхронизация Оценок", AccessOperation.ОценкиСтудентов) { } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/DepartmentLogicDependencyRegistration.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/DepartmentLogicDependencyRegistration.cs index 8120242..9a2a9cb 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/DepartmentLogicDependencyRegistration.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/DepartmentLogicDependencyRegistration.cs @@ -45,7 +45,9 @@ namespace DepartmentBusinessLogic DependencyManager.Instance.RegisterType(); - DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); diff --git a/DepartmentPortal/Department/DepartmentContract/BindingModels/StudentMarkSyncHistoryBindingModels.cs b/DepartmentPortal/Department/DepartmentContract/BindingModels/StudentMarkSyncHistoryBindingModels.cs new file mode 100644 index 0000000..2ff25a0 --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/BindingModels/StudentMarkSyncHistoryBindingModels.cs @@ -0,0 +1,23 @@ +using CoreModels.ModelsDepartment; +using System; +using System.ComponentModel.DataAnnotations; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.BindingModels +{ + /// + /// Получение истории синхронизации оценок + /// + public class StudentMarkSyncHistoryGetBindingModel : GetBindingModel + { + } + + /// + /// Сохранение истории синхронизации оценок + /// + public class StudentMarkSyncHistorySetBindingModel : SetBindingModel, IStudentMarkSyncHistoryModel + { + [Required(ErrorMessage = "required")] + public DateTime SyncDate { get; set; } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/BindingModels/StudentMarkSyncHistoryRecordBindingModels.cs b/DepartmentPortal/Department/DepartmentContract/BindingModels/StudentMarkSyncHistoryRecordBindingModels.cs new file mode 100644 index 0000000..3596e49 --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/BindingModels/StudentMarkSyncHistoryRecordBindingModels.cs @@ -0,0 +1,27 @@ +using CoreModels.ModelsDepartment; +using System; +using System.ComponentModel.DataAnnotations; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.BindingModels +{ + /// + /// Получение записи истории синхронизации оценок + /// + public class StudentMarkSyncHistoryRecordGetBindingModel : GetBindingModel + { + public Guid? StudentMarkSyncHistoryId { get; set; } + } + + /// + /// Сохранение записи истории синхронизации оценок + /// + public class StudentMarkSyncHistoryRecordSetBindingModel : SetBindingModel, IStudentMarkSyncHistoryRecordModel + { + [Required(ErrorMessage = "required")] + public Guid StudentMarkSyncHistoryId { get; set; } + + [Required(ErrorMessage = "required")] + public string Information { get; set; } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/Logics/IGenericEntityLogic/IStudentMarkSyncHistoryLogic.cs b/DepartmentPortal/Department/DepartmentContract/Logics/IGenericEntityLogic/IStudentMarkSyncHistoryLogic.cs new file mode 100644 index 0000000..cf4ba1a --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/Logics/IGenericEntityLogic/IStudentMarkSyncHistoryLogic.cs @@ -0,0 +1,18 @@ +using DepartmentContract.BindingModels; +using DepartmentContract.ViewModels; +using System; +using System.Threading.Tasks; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.Logics.IGenericEntityLogic +{ + /// + /// Логика работы с историями синхронизации оценок + /// + public interface IStudentMarkSyncHistoryLogic : IGenericEntityLogic + { + Task SyncMarks(); + + Task SyncStudentMarks(Guid studentId); + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/Logics/IGenericEntityLogic/IStudentMarkSyncHistoryRecordLogic.cs b/DepartmentPortal/Department/DepartmentContract/Logics/IGenericEntityLogic/IStudentMarkSyncHistoryRecordLogic.cs new file mode 100644 index 0000000..9349c2d --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/Logics/IGenericEntityLogic/IStudentMarkSyncHistoryRecordLogic.cs @@ -0,0 +1,11 @@ +using DepartmentContract.BindingModels; +using DepartmentContract.ViewModels; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.Logics.IGenericEntityLogic +{ + /// + /// Логика работы с записями историй синхронизации оценок + /// + public interface IStudentMarkSyncHistoryRecordLogic : IGenericEntityLogic { } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/Services/IGenericEntityService/IStudentMarkSyncHistoryRecordService.cs b/DepartmentPortal/Department/DepartmentContract/Services/IGenericEntityService/IStudentMarkSyncHistoryRecordService.cs new file mode 100644 index 0000000..b920166 --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/Services/IGenericEntityService/IStudentMarkSyncHistoryRecordService.cs @@ -0,0 +1,10 @@ +using DepartmentContract.BindingModels; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.Services.IGenericEntityService +{ + /// + /// Хранение записей историй синхронизации оценок + /// + public interface IStudentMarkSyncHistoryRecordService : IGenericEntityService { } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/Services/IGenericEntityService/IStudentMarkSyncHistoryService.cs b/DepartmentPortal/Department/DepartmentContract/Services/IGenericEntityService/IStudentMarkSyncHistoryService.cs new file mode 100644 index 0000000..1e0299e --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/Services/IGenericEntityService/IStudentMarkSyncHistoryService.cs @@ -0,0 +1,10 @@ +using DepartmentContract.BindingModels; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.Services.IGenericEntityService +{ + /// + /// Хранение историй синхронизации оценок + /// + public interface IStudentMarkSyncHistoryService : IGenericEntityService { } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/ViewModels/OrderSyncHistoryViewModels.cs b/DepartmentPortal/Department/DepartmentContract/ViewModels/OrderSyncHistoryViewModels.cs index 9dc83a4..fe47ed2 100644 --- a/DepartmentPortal/Department/DepartmentContract/ViewModels/OrderSyncHistoryViewModels.cs +++ b/DepartmentPortal/Department/DepartmentContract/ViewModels/OrderSyncHistoryViewModels.cs @@ -21,6 +21,6 @@ namespace DepartmentContract.ViewModels public DateTime SyncDate { get; set; } [ViewModelControlListProperty("Дата")] - public string SyncDateTitle => $"Синхронизация данных от {SyncDate.ToString("dd.MM.yyyy HH:mm")}"; + public string SyncDateTitle => $"Синхронизация данных от {SyncDate:dd.MM.yyyy HH:mm}"; } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/ViewModels/StudentMarkSyncHistoryRecordViewModels.cs b/DepartmentPortal/Department/DepartmentContract/ViewModels/StudentMarkSyncHistoryRecordViewModels.cs new file mode 100644 index 0000000..fdbaafa --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/ViewModels/StudentMarkSyncHistoryRecordViewModels.cs @@ -0,0 +1,30 @@ +using CoreModels.ModelsDepartment; +using System; +using ToolsModule.ManagmentEntity; +using ToolsModule.ManagmentMapping; + +namespace DepartmentContract.ViewModels +{ + /// + /// Список записей историй синхронизации оценок + /// + public class StudentMarkSyncHistoryRecordListViewModel : ListViewModel { } + + /// + /// Элемент записи историй синхронизации оценок + /// + [ViewModelControlElementClass(HaveDependenceEntities = false, Width = 800, Height = 500)] + public class StudentMarkSyncHistoryRecordViewModel : ElementViewModel, IStudentMarkSyncHistoryRecordModel + { + [ViewModelControlElementProperty("История", ControlType.ControlGuid, MustHaveValue = true, ReadOnly = false, ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlStudentMarkSyncHistoryList, DepartmentWindowsDesktop")] + public Guid StudentMarkSyncHistoryId { get; set; } + + [ViewModelControlListProperty("Дата", ColumnWidth = 100, DefaultCellStyleFormat = "dd.MM.yyyy")] + [MapConfiguration("StudentMarkSyncHistory.SyncDate")] + public DateTime SyncDate { get; set; } + + [ViewModelControlListProperty("Описание")] + [ViewModelControlElementProperty("Описание", ControlType.ControlText, Height = 200, MustHaveValue = true)] + public string Information { get; set; } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentContract/ViewModels/StudentMarkSyncHistoryViewModels.cs b/DepartmentPortal/Department/DepartmentContract/ViewModels/StudentMarkSyncHistoryViewModels.cs new file mode 100644 index 0000000..128f6b4 --- /dev/null +++ b/DepartmentPortal/Department/DepartmentContract/ViewModels/StudentMarkSyncHistoryViewModels.cs @@ -0,0 +1,26 @@ +using CoreModels.ModelsDepartment; +using System; +using ToolsModule.ManagmentEntity; + +namespace DepartmentContract.ViewModels +{ + /// + /// Список историй синхронизации оценок + /// + public class StudentMarkSyncHistoryListViewModel : ListViewModel { } + + /// + /// Элемент история синхронизации оценок + /// + [ViewModelControlElementClass(HaveDependenceEntities = true, Width = 800, Height = 500)] + [ViewModelControlElementDependenceEntity(Title = "Записи", Order = 1, ParentPropertyName = "StudentMarkSyncHistoryId", + ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlStudentMarkSyncHistoryRecordList, DepartmentWindowsDesktop")] + public class StudentMarkSyncHistoryViewModel : ElementViewModel, IStudentMarkSyncHistoryModel + { + [ViewModelControlElementProperty("Дата", ControlType.ControlDateTime, MustHaveValue = true, ReadOnly = true)] + public DateTime SyncDate { get; set; } + + [ViewModelControlListProperty("Дата")] + public string SyncDateTitle => $"Синхронизация данных от {SyncDate:dd.MM.yyyy HH:mm}"; + } +} diff --git a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/DepartmentImplementationDependencyRegistration.cs b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/DepartmentImplementationDependencyRegistration.cs index 4c7f861..a755c98 100644 --- a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/DepartmentImplementationDependencyRegistration.cs +++ b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/DepartmentImplementationDependencyRegistration.cs @@ -45,6 +45,8 @@ namespace DepartmentDatabaseImplementation DependencyManager.Instance.RegisterType(); DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); } } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/AbstractGenerticEntityService/StudentMarkSyncHistoryRecordService.cs b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/AbstractGenerticEntityService/StudentMarkSyncHistoryRecordService.cs new file mode 100644 index 0000000..a16be4c --- /dev/null +++ b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/AbstractGenerticEntityService/StudentMarkSyncHistoryRecordService.cs @@ -0,0 +1,107 @@ +using CoreDatabase; +using CoreDatabase.Models.Department; +using DepartmentContract.BindingModels; +using DepartmentContract.Services.IGenericEntityService; +using DepartmentContract.ViewModels; +using Microsoft.EntityFrameworkCore; +using System; +using System.Linq; +using ToolsModule.ManagmentEntity; +using ToolsModule.ManagmentMapping; + +namespace DepartmentDatabaseImplementation.Implementations.AbstractGenerticEntityService +{ + /// + /// Реализация IStudentMarkSyncHistoryRecordService + /// + public class StudentMarkSyncHistoryRecordService : IStudentMarkSyncHistoryRecordService + { + public OperationResultModel Create(StudentMarkSyncHistoryRecordSetBindingModel model) + { + using var context = DatabaseManager.GetContext; + + var entity = Mapper.MapToClass(model, true); + context.StudentMarkSyncHistoryRecords.Add(entity); + context.SaveChanges(); + return OperationResultModel.Success(Mapper.MapToClass(entity, true)); + } + + public OperationResultModel Delete(StudentMarkSyncHistoryRecordGetBindingModel model) + { + using var context = DatabaseManager.GetContext; + var entity = context.StudentMarkSyncHistoryRecords.FirstOrDefault(x => x.Id == model.Id); + if (entity == null) + { + return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); + } + context.StudentMarkSyncHistoryRecords.Remove(entity); + context.SaveChanges(); + + return OperationResultModel.Success(true); + } + + public OperationResultModel Read(StudentMarkSyncHistoryRecordGetBindingModel model) + { + int countPages = 0; + using var context = DatabaseManager.GetContext; + + // для одной записи + if (model.Id.HasValue) + { + var entity = context.StudentMarkSyncHistoryRecords.FirstOrDefault(x => x.Id == model.Id.Value); + if (entity == null) + { + return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); + } + return OperationResultModel.Success(Mapper.MapToClass(entity, model.HaveRight)); + } + + var query = context.StudentMarkSyncHistoryRecords.AsQueryable(); + + if (model.StudentMarkSyncHistoryId.HasValue) + { + query = query.Where(x => x.StudentMarkSyncHistoryId == model.StudentMarkSyncHistoryId.Value); + } + + query = query.OrderByDescending(x => x.Information); + + query = query.Include(x => x.StudentMarkSyncHistory); + + if (model.PageNumber.HasValue && model.PageSize.HasValue) + { + countPages = (int)Math.Ceiling((double)query.Count() / model.PageSize.Value); + query = query + .Skip(model.PageSize.Value * model.PageNumber.Value) + .Take(model.PageSize.Value); + } + var result = new StudentMarkSyncHistoryRecordListViewModel + { + MaxCount = countPages, + List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() + }; + + return OperationResultModel.Success(result); + } + + public OperationResultModel Restore(StudentMarkSyncHistoryRecordGetBindingModel model) + { + throw new NotImplementedException(); + } + + public OperationResultModel Update(StudentMarkSyncHistoryRecordSetBindingModel model) + { + using var context = DatabaseManager.GetContext; + + var entity = context.StudentMarkSyncHistoryRecords.FirstOrDefault(x => x.Id == model.Id); + if (entity == null) + { + return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); + } + entity = Mapper.MapToClass(model, entity, true); + + context.SaveChanges(); + + return OperationResultModel.Success(Mapper.MapToClass(entity, true)); + } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/AbstractGenerticEntityService/StudentMarkSyncHistoryService.cs b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/AbstractGenerticEntityService/StudentMarkSyncHistoryService.cs new file mode 100644 index 0000000..b93d828 --- /dev/null +++ b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/AbstractGenerticEntityService/StudentMarkSyncHistoryService.cs @@ -0,0 +1,115 @@ +using CoreDatabase; +using CoreDatabase.Models.Department; +using DepartmentContract.BindingModels; +using DepartmentContract.Services.IGenericEntityService; +using DepartmentContract.ViewModels; +using System; +using System.Linq; +using ToolsModule.ManagmentEntity; +using ToolsModule.ManagmentMapping; + +namespace DepartmentDatabaseImplementation.Implementations.AbstractGenerticEntityService +{ + /// + /// Реализация IStudentMarkSyncHistoryService + /// + public class StudentMarkSyncHistoryService : IStudentMarkSyncHistoryService + { + public OperationResultModel Create(StudentMarkSyncHistorySetBindingModel model) + { + using var context = DatabaseManager.GetContext; + + var entity = Mapper.MapToClass(model, true); + context.StudentMarkSyncHistories.Add(entity); + context.SaveChanges(); + return OperationResultModel.Success(Mapper.MapToClass(entity, true)); + } + + public OperationResultModel Delete(StudentMarkSyncHistoryGetBindingModel model) + { + using var context = DatabaseManager.GetContext; + using var transaction = context.Database.BeginTransaction(); + try + { + var entity = context.StudentMarkSyncHistories.FirstOrDefault(x => x.Id == model.Id); + if (entity == null) + { + return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); + } + + context.StudentMarkSyncHistories.Remove(entity); + context.SaveChanges(); + + var records = context.StudentMarkSyncHistoryRecords.Where(x => x.StudentMarkSyncHistoryId == model.Id); + context.StudentMarkSyncHistoryRecords.RemoveRange(records); + context.SaveChanges(); + + transaction.Commit(); + } + catch (Exception) + { + transaction.Rollback(); + throw; + } + + return OperationResultModel.Success(true); + } + + public OperationResultModel Read(StudentMarkSyncHistoryGetBindingModel model) + { + int countPages = 0; + using var context = DatabaseManager.GetContext; + + // для одной записи + if (model.Id.HasValue) + { + var entity = context.StudentMarkSyncHistories.FirstOrDefault(x => x.Id == model.Id.Value); + if (entity == null) + { + return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); + } + return OperationResultModel.Success(Mapper.MapToClass(entity, model.HaveRight)); + } + + var query = context.StudentMarkSyncHistories.AsQueryable(); + + query = query.OrderByDescending(x => x.SyncDate); + + if (model.PageNumber.HasValue && model.PageSize.HasValue) + { + countPages = (int)Math.Ceiling((double)query.Count() / model.PageSize.Value); + query = query + .Skip(model.PageSize.Value * model.PageNumber.Value) + .Take(model.PageSize.Value); + } + var result = new StudentMarkSyncHistoryListViewModel + { + MaxCount = countPages, + List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() + }; + + return OperationResultModel.Success(result); + } + + public OperationResultModel Restore(StudentMarkSyncHistoryGetBindingModel model) + { + throw new NotImplementedException(); + } + + public OperationResultModel Update(StudentMarkSyncHistorySetBindingModel model) + { + using var context = DatabaseManager.GetContext; + + var entity = context.StudentMarkSyncHistories.FirstOrDefault(x => x.Id == model.Id); + if (entity == null) + { + return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); + } + entity = Mapper.MapToClass(model, entity, true); + + context.SaveChanges(); + + return OperationResultModel.Success(Mapper.MapToClass(entity, true)); + } + } +} \ No newline at end of file