diff --git a/DepartmentPortal/Common/CoreModels/ModelsDepartment/IEmployeeModel.cs b/DepartmentPortal/Common/CoreModels/ModelsDepartment/IEmployeeModel.cs new file mode 100644 index 0000000..f473e6e --- /dev/null +++ b/DepartmentPortal/Common/CoreModels/ModelsDepartment/IEmployeeModel.cs @@ -0,0 +1,40 @@ +using CoreModels.Tools; +using ModuleTools.Attributes; +using System; + +namespace CoreModels.ModelsDepartment +{ + [EntityDescription("Employee", "Сотрудника кафедры")] + [EntityDependency("User", "UserId", "К какому пользователю относится сотрудник")] + public interface IEmployeeModel : IId + { + Guid UserId { get; } + + string FirstName { get; } + + string LastName { get; } + + string Patronymic { get; } + + [CheckRigthForMap] + DateTime DateBirth { get; } + + [CheckRigthForMap] + string Address { get; } + + [CheckRigthForMap] + string Email { get; } + + [CheckRigthForMap] + string MobileNumber { get; } + + [CheckRigthForMap] + string HomeNumber { get; } + + string Description { get; } + + byte[] Photo { get; } + + string GroupElectricalSafety { get; } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Common/CoreModels/ModelsDepartment/IEmployeePostModel.cs b/DepartmentPortal/Common/CoreModels/ModelsDepartment/IEmployeePostModel.cs new file mode 100644 index 0000000..3fab840 --- /dev/null +++ b/DepartmentPortal/Common/CoreModels/ModelsDepartment/IEmployeePostModel.cs @@ -0,0 +1,23 @@ +using CoreModels.Tools; +using ModuleTools.Attributes; +using System; + +namespace CoreModels.ModelsDepartment +{ + [EntityDescription("EmployeeEmployeePost", "Связь сотрудника и должность кафедры")] + [EntityDependency("Post", "PostId", "К какой должности относится сотрудник")] + [EntityDependency("Employee", "EmployeeId", "К какой должности относится сотрудник")] + public interface IEmployeePostModel : IId + { + [CheckRigthForMap] + Guid EmployeeId { get; } + + Guid PostId { get; } + + decimal Rate { get; } + + bool IsInternalCombination { get; } + + bool IsExternalCombination { get; } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Common/CoreModels/ModelsDepartment/IPostModel.cs b/DepartmentPortal/Common/CoreModels/ModelsDepartment/IPostModel.cs new file mode 100644 index 0000000..9b1c9a8 --- /dev/null +++ b/DepartmentPortal/Common/CoreModels/ModelsDepartment/IPostModel.cs @@ -0,0 +1,15 @@ +using CoreModels.Tools; +using ModuleTools.Attributes; + +namespace CoreModels.ModelsDepartment +{ + [EntityDescription("Post", "Должность на кафедры")] + public interface IPostModel : IId + { + string PostName { get; } + + int? Hours { get; } + + int Order { get; } + } +} \ No newline at end of file diff --git a/DepartmentPortal/Common/DatabaseCore/Models/Department/Employee.cs b/DepartmentPortal/Common/DatabaseCore/Models/Department/Employee.cs index 2c5ae2f..c44d01e 100644 --- a/DepartmentPortal/Common/DatabaseCore/Models/Department/Employee.cs +++ b/DepartmentPortal/Common/DatabaseCore/Models/Department/Employee.cs @@ -1,5 +1,5 @@ -using DatabaseCore.Models.Security; -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; +using DatabaseCore.Models.Security; using ModuleTools.Extensions; using ModuleTools.Interfaces; using System; @@ -9,60 +9,43 @@ using System.Runtime.Serialization; namespace DatabaseCore.Models.Department { - /// - /// Класс, описывающий сотрудника кафедры - /// [DataContract] - [EntityDescription("Employee", "Сотрудника кафедры")] - [EntityDependency("User", "UserId", "К какому пользователю относится сотрудник")] - public class Employee : BaseEntity, IEntitySecurityExtenstion + public class Employee : BaseEntity, IEntitySecurityExtenstion, IEmployeeModel { [DataMember] - [MapConfiguration("UserId")] public Guid UserId { get; set; } [DataMember] - [MapConfiguration("FirstName")] public string FirstName { get; set; } [DataMember] - [MapConfiguration("LastName")] public string LastName { get; set; } [DataMember] - [MapConfiguration("Patronymic")] public string Patronymic { get; set; } [DataMember] - [MapConfiguration("DateBirth")] public DateTime DateBirth { get; set; } [DataMember] - [MapConfiguration("Address")] public string Address { get; set; } [DataMember] - [MapConfiguration("Email")] public string Email { get; set; } [DataMember] - [MapConfiguration("MobileNumber")] public string MobileNumber { get; set; } [DataMember] - [MapConfiguration("HomeNumber")] public string HomeNumber { get; set; } [DataMember] - [MapConfiguration("Description")] public string Description { get; set; } [DataMember] - [MapConfiguration("Photo")] public byte[] Photo { get; set; } [DataMember] - [MapConfiguration("GroupElectricalSafety")] public string GroupElectricalSafety { get; set; } //------------------------------------------------------------------------- diff --git a/DepartmentPortal/Common/DatabaseCore/Models/Department/EmployeePost.cs b/DepartmentPortal/Common/DatabaseCore/Models/Department/EmployeePost.cs index 216961d..8409a7e 100644 --- a/DepartmentPortal/Common/DatabaseCore/Models/Department/EmployeePost.cs +++ b/DepartmentPortal/Common/DatabaseCore/Models/Department/EmployeePost.cs @@ -1,37 +1,26 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; using ModuleTools.Interfaces; using System; using System.Runtime.Serialization; namespace DatabaseCore.Models.Department { - /// - /// Класс, описывающий связь сотрудника и должность кафедры - /// - [DataContract] - [EntityDescription("EmployeeEmployeePost", "Связь сотрудника и должность кафедры")] - [EntityDependency("Post", "PostId", "К какой должности относится сотрудник")] - [EntityDependency("Employee", "EmployeeId", "К какой должности относится сотрудник")] - public class EmployeePost : BaseEntity, IEntitySecurityExtenstion + [DataContract] + public class EmployeePost : BaseEntity, IEntitySecurityExtenstion, IEmployeePostModel { [DataMember] - [MapConfiguration("EmployeeId")] public Guid EmployeeId { get; set; } [DataMember] - [MapConfiguration("PostId")] public Guid PostId { get; set; } [DataMember] - [MapConfiguration("Rate")] public decimal Rate { get; set; } [DataMember] - [MapConfiguration("IsInternalCombination")] public bool IsInternalCombination { get; set; } [DataMember] - [MapConfiguration("IsExternalCombination")] public bool IsExternalCombination { get; set; } //------------------------------------------------------------------------- diff --git a/DepartmentPortal/Common/DatabaseCore/Models/Department/Post.cs b/DepartmentPortal/Common/DatabaseCore/Models/Department/Post.cs index 2ea3b32..66faceb 100644 --- a/DepartmentPortal/Common/DatabaseCore/Models/Department/Post.cs +++ b/DepartmentPortal/Common/DatabaseCore/Models/Department/Post.cs @@ -1,4 +1,4 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; using ModuleTools.Interfaces; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; @@ -6,23 +6,16 @@ using System.Runtime.Serialization; namespace DatabaseCore.Models.Department { - /// - /// Класс, описывающий должность на кафедры - /// - [DataContract] - [EntityDescription("Post", "Должность на кафедры")] - public class Post : BaseEntity, IEntitySecurityExtenstion + [DataContract] + public class Post : BaseEntity, IEntitySecurityExtenstion, IPostModel { [DataMember] - [MapConfiguration("PostName")] public string PostName { get; set; } [DataMember] - [MapConfiguration("Hours")] public int? Hours { get; set; } [DataMember] - [MapConfiguration("Order")] public int Order { get; set; } //------------------------------------------------------------------------- diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeeBindingModels.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeeBindingModels.cs index 101afb8..692a9aa 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeeBindingModels.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeeBindingModels.cs @@ -1,4 +1,4 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; using ModuleTools.BindingModels; using System; using System.ComponentModel.DataAnnotations; @@ -16,50 +16,38 @@ namespace DepartmentBusinessLogic.BindingModels /// /// Сохранение сотрудника /// - public class EmployeeSetBindingModel : SetBindingModel + public class EmployeeSetBindingModel : SetBindingModel, IEmployeeModel { [Required(ErrorMessage = "required")] - [MapConfiguration("UserId")] public Guid UserId { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("LastName")] public string LastName { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("FirstName")] public string FirstName { get; set; } - [MapConfiguration("Patronymic")] public string Patronymic { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("DateBirth")] public DateTime DateBirth { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("Address")] public string Address { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("Email")] public string Email { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("MobileNumber")] public string MobileNumber { get; set; } - [MapConfiguration("HomeNumber")] public string HomeNumber { get; set; } - [MapConfiguration("Description")] public string Description { get; set; } - [MapConfiguration("Photo")] public byte[] Photo { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("GroupElectricalSafety")] public string GroupElectricalSafety { get; set; } } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeePostBindingModels.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeePostBindingModels.cs index d2aec24..554f520 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeePostBindingModels.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/EmployeePostBindingModels.cs @@ -1,14 +1,14 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; using ModuleTools.BindingModels; using System; using System.ComponentModel.DataAnnotations; namespace DepartmentBusinessLogic.BindingModels { - /// - /// Получение связи сотрудника с должностью - /// - public class EmployeePostGetBindingModel : GetBindingModel + /// + /// Получение связи сотрудника с должностью + /// + public class EmployeePostGetBindingModel : GetBindingModel { public Guid? EmployeeId { get; set; } @@ -18,24 +18,19 @@ namespace DepartmentBusinessLogic.BindingModels /// /// Сохранение связи сотрудника с должностью /// - public class EmployeePostSetBindingModel : SetBindingModel + public class EmployeePostSetBindingModel : SetBindingModel, IEmployeePostModel { [Required(ErrorMessage = "required")] - [MapConfiguration("EmployeeId")] public Guid EmployeeId { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("PostId")] public Guid PostId { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("Rate")] public decimal Rate { get; set; } - [MapConfiguration("IsInternalCombination")] public bool IsInternalCombination { get; set; } - [MapConfiguration("IsExternalCombination")] public bool IsExternalCombination { get; set; } } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/PostBindingModels.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/PostBindingModels.cs index 7288944..a84c018 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/PostBindingModels.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BindingModels/PostBindingModels.cs @@ -1,4 +1,4 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; using ModuleTools.BindingModels; using System.ComponentModel.DataAnnotations; @@ -14,18 +14,15 @@ namespace DepartmentBusinessLogic.BindingModels /// /// Сохранение должности сотрудника /// - public class PostSetBindingModel : SetBindingModel + public class PostSetBindingModel : SetBindingModel, IPostModel { [Required(ErrorMessage = "required")] - [MapConfiguration("PostName")] public string PostName { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("Hours")] public int? Hours { get; set; } [Required(ErrorMessage = "required")] - [MapConfiguration("Order")] public int Order { get; set; } } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeePostViewModels.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeePostViewModels.cs index e0cafd9..6697105 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeePostViewModels.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeePostViewModels.cs @@ -1,4 +1,5 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; +using ModuleTools.Attributes; using ModuleTools.Enums; using ModuleTools.ViewModels; using System; @@ -14,10 +15,9 @@ namespace DepartmentBusinessLogic.ViewModels /// Связь сотрудника и должности /// [ViewModelControlElementClass()] - public class EmployeePostViewModel : ElementViewModel + public class EmployeePostViewModel : ElementViewModel, IEmployeePostModel { [ViewModelControlElementProperty("Сотрудник", ControlType.ControlGuid, MustHaveValue = true, ReadOnly = false, ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlEmployeeList, DepartmentWindowsDesktop")] - [MapConfiguration("EmployeeId", AllowCopyWithoutRigth = false)] public Guid EmployeeId { get; set; } [ViewModelControlListProperty("Сотрудник")] @@ -25,7 +25,6 @@ namespace DepartmentBusinessLogic.ViewModels public string EmployeeName { get; set; } [ViewModelControlElementProperty("Должность", ControlType.ControlGuid, MustHaveValue = true, ReadOnly = false, ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlPostList, DepartmentWindowsDesktop")] - [MapConfiguration("PostId")] public Guid PostId { get; set; } [ViewModelControlListProperty("Должность")] @@ -34,18 +33,15 @@ namespace DepartmentBusinessLogic.ViewModels [ViewModelControlListProperty("Ставка", ColumnWidth = 80, DefaultCellStyleFormat = "N1")] [ViewModelControlElementProperty("Ставка", ControlType.ControlDecimal, DecimalPlaces = 1, MustHaveValue = true)] - [MapConfiguration("Rate")] public decimal Rate { get; set; } [ViewModelControlElementProperty("Внутр. совм.", ControlType.ControlBool, MustHaveValue = true)] - [MapConfiguration("IsInternalCombination")] public bool IsInternalCombination { get; set; } [ViewModelControlListProperty("Внутр. совм.", ColumnWidth = 80)] public string InternalCombination => IsInternalCombination ? "Да" : "Нет"; [ViewModelControlElementProperty("Внеш. совм.", ControlType.ControlBool, MustHaveValue = true)] - [MapConfiguration("IsExternalCombination")] public bool IsExternalCombination { get; set; } [ViewModelControlListProperty("Внеш. совм.", ColumnWidth = 80)] diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeeViewModels.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeeViewModels.cs index ea98cb8..7dfcf04 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeeViewModels.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/EmployeeViewModels.cs @@ -1,14 +1,15 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; +using ModuleTools.Attributes; using ModuleTools.Enums; using ModuleTools.ViewModels; using System; namespace DepartmentBusinessLogic.ViewModels { - /// - /// Список сотрудников - /// - public class EmployeeListViewModel : ListViewModel { } + /// + /// Список сотрудников + /// + public class EmployeeListViewModel : ListViewModel { } /// /// Элемент сотрудник @@ -18,63 +19,51 @@ namespace DepartmentBusinessLogic.ViewModels ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlEmployeePostList, DepartmentWindowsDesktop")] [ViewModelControlElementDependenceEntity(Title = "Аудитории", Order = 1, ParentPropertyName = "EmployeeId", ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlClassroomList, DepartmentWindowsDesktop")] - public class EmployeeViewModel : ElementViewModel + public class EmployeeViewModel : ElementViewModel, IEmployeeModel { [ViewModelControlElementProperty("Пользователь", ControlType.ControlGuid, MustHaveValue = true, ReadOnly = false, ControlTypeObject = "SecurityWindowsDesktop.EntityControls.ControlUserList, SecurityWindowsDesktop")] - [MapConfiguration("UserId")] public Guid UserId { get; set; } [ViewModelControlListProperty("Фамилия")] [ViewModelControlElementProperty("Фамилия", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("LastName")] public string LastName { get; set; } [ViewModelControlListProperty("Имя")] [ViewModelControlElementProperty("Имя", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("FirstName")] public string FirstName { get; set; } [ViewModelControlListProperty("Отчество")] [ViewModelControlElementProperty("Отчество", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("Patronymic")] public string Patronymic { get; set; } [ViewModelControlListProperty("Дата рожд.", ColumnWidth = 100, DefaultCellStyleFormat = "dd.MM.yyyy")] [ViewModelControlElementProperty("Дата рожд.", ControlType.ControlDateTime, MustHaveValue = true )] - [MapConfiguration("DateBirth", AllowCopyWithoutRigth = false)] public DateTime DateBirth { get; set; } [ViewModelControlListProperty("Адрес", ColumnWidth = 90)] [ViewModelControlElementProperty("Адрес", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("Address", AllowCopyWithoutRigth = false)] public string Address { get; set; } [ViewModelControlListProperty("Эл. почта", ColumnWidth = 90)] [ViewModelControlElementProperty("Эл. почта", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("Email", AllowCopyWithoutRigth = false)] public string Email { get; set; } [ViewModelControlListProperty("Моб. номер", ColumnWidth = 100)] [ViewModelControlElementProperty("Моб. номер", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("MobileNumber", AllowCopyWithoutRigth = false)] public string MobileNumber { get; set; } [ViewModelControlListProperty("Дом. номер", ColumnWidth = 100)] [ViewModelControlElementProperty("Дом. номер", ControlType.ControlString)] - [MapConfiguration("HomeNumber", AllowCopyWithoutRigth = false)] public string HomeNumber { get; set; } [ViewModelControlElementProperty("Описание", ControlType.ControlText)] - [MapConfiguration("Description")] public string Description { get; set; } [ViewModelControlElementProperty("Фото", ControlType.ControlImage, Width = 200, Height = 200)] - [MapConfiguration("Photo")] public byte[] Photo { get; set; } [ViewModelControlListProperty("Гр. эл.без.", ColumnWidth = 90)] [ViewModelControlElementProperty("Группа эл.безоп", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("GroupElectricalSafety")] public string GroupElectricalSafety { get; set; } } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/PostViewModels.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/PostViewModels.cs index b55d6e3..5cb9cae 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/PostViewModels.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/ViewModels/PostViewModels.cs @@ -1,4 +1,5 @@ -using ModuleTools.Attributes; +using CoreModels.ModelsDepartment; +using ModuleTools.Attributes; using ModuleTools.Enums; using ModuleTools.ViewModels; @@ -17,15 +18,13 @@ namespace DepartmentBusinessLogic.ViewModels ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlEmployeePostList, DepartmentWindowsDesktop")] [ViewModelControlElementDependenceEntity(Title = "Преподаватели", Order = 1, ParentPropertyName = "PostId", ControlTypeObject = "DepartmentWindowsDesktop.EntityControls.ControlLecturerPostList, DepartmentWindowsDesktop")] - public class PostViewModel : ElementViewModel + public class PostViewModel : ElementViewModel, IPostModel { [ViewModelControlListProperty("Название должности")] [ViewModelControlElementProperty("Название должности", ControlType.ControlString, MustHaveValue = true)] - [MapConfiguration("PostName")] public string PostName { get; set; } [ViewModelControlElementProperty("Часы", ControlType.ControlInt, MustHaveValue = false)] - [MapConfiguration("Hours")] public int? Hours { get; set; } [ViewModelControlListProperty("Часы", ColumnWidth = 100)] @@ -33,7 +32,6 @@ namespace DepartmentBusinessLogic.ViewModels [ViewModelControlListProperty("Порядок", ColumnWidth = 100)] [ViewModelControlElementProperty("Порядок", ControlType.ControlInt, MustHaveValue = true)] - [MapConfiguration("Order")] public int Order { get; set; } } } \ No newline at end of file