From d79be9a8dc1752752eebd0d5545d563f11a00e37 Mon Sep 17 00:00:00 2001 From: kotcheshir73 Date: Tue, 15 Mar 2022 22:02:13 +0400 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=D0=B8=20=D0=B0?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20+=20=D0=B4=D0=BB=D1=8F=20=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=20=D0=BD=D0=B5=20guid,=20=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5,=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B0=D0=B2=D0=B1=D0=B8=D0=BB=D0=B8=20=D1=83=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D0=B5=20=D0=B2=20GenericControlEntityList,?= =?UTF-8?q?=20LaunchControl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractGenerticEntityService.cs | 59 +- .../GenericControlEntityElement.cs | 714 +++++++++--------- .../MainControls/GenericControlEntityList.cs | 72 +- .../BusinessLogics/GenericBusinessLogic.cs | 41 +- .../Interfaces/IGenerticEntityService.cs | 19 +- .../OrderStudentRecordBusinessLogic.cs | 35 +- .../OrderSyncHistoryBusinessLogic.cs | 101 ++- .../OrderSyncHistoryRecordService.cs | 54 +- .../OrderSyncHistoryService.cs | 60 +- .../Discipline/ControlDisciplineList.cs | 91 +-- .../Employee/ControlEmployeeElement.cs | 25 +- .../Lecturer/ControlLecturerElement.cs | 25 +- .../ControlOrderSyncHistoryList.cs | 15 +- .../Student/ControlStudentElement.cs | 25 +- .../Access/ControlAccessList.cs | 2 +- 15 files changed, 661 insertions(+), 677 deletions(-) diff --git a/DepartmentPortal/Common/DatabaseCore/AbstractGenerticEntityService.cs b/DepartmentPortal/Common/DatabaseCore/AbstractGenerticEntityService.cs index 9c996b8..57564da 100644 --- a/DepartmentPortal/Common/DatabaseCore/AbstractGenerticEntityService.cs +++ b/DepartmentPortal/Common/DatabaseCore/AbstractGenerticEntityService.cs @@ -8,18 +8,17 @@ using ModuleTools.Models; using ModuleTools.ViewModels; using System; using System.Linq; -using System.Threading.Tasks; namespace DatabaseCore { - public abstract class AbstractGenerticEntityService : IGenerticEntityService + public abstract class AbstractGenerticEntityService : IGenerticEntityService where G : GetBindingModel where S : SetBindingModel where T : BaseEntity where L : ListViewModel, new() where E : ElementViewModel { - public async Task CreateAsync(S model) + public OperationResultModel Create(S model) { using var context = DatabaseManager.GetContext; @@ -33,8 +32,8 @@ namespace DatabaseCore if (exsistEntity == null) { var entity = Mapper.MapToClass(model, true); - await context.Set().AddAsync(entity); - await context.SaveChangesAsync(); + context.Set().Add(entity); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } else @@ -43,7 +42,7 @@ namespace DatabaseCore { exsistEntity = Mapper.MapToClass(model, exsistEntity, true); exsistEntity.IsDeleted = false; - await context.SaveChangesAsync(); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(exsistEntity, true)); } else @@ -53,13 +52,13 @@ namespace DatabaseCore } } - public async Task DeleteAsync(G model) + public OperationResultModel Delete(G model) { using var context = DatabaseManager.GetContext; using var transaction = context.Database.BeginTransaction(); try { - var entity = await context.Set().FirstOrDefaultAsync(x => x.Id == model.Id); + var entity = context.Set().FirstOrDefault(x => x.Id == model.Id); if (entity == null) { return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); @@ -78,22 +77,22 @@ namespace DatabaseCore entity.IsDeleted = true; entity.DateDelete = DateTime.Now; - await context.SaveChangesAsync(); + context.SaveChanges(); AdditionalDeleting(context, entity, model); - await transaction.CommitAsync(); + transaction.Commit(); } catch (Exception) { - await transaction.RollbackAsync(); + transaction.Rollback(); throw; } return OperationResultModel.Success(true); } - public async Task RestoreAsync(G model) + public OperationResultModel Restore(G model) { if (model.Id.HasValue || AdditionalCheckForSingleGet(model)) { @@ -110,14 +109,14 @@ namespace DatabaseCore } entity.IsDeleted = false; - await context.SaveChangesAsync(); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); } - public async Task ReadAsync(G model) + public OperationResultModel Read(G model) { int countPages = 0; using var context = DatabaseManager.GetContext; @@ -146,27 +145,23 @@ namespace DatabaseCore query = IncludingWhenReading(query); - return await Task.Run(() => + 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 L + { + MaxCount = countPages, + List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() + }; - 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 L - { - MaxCount = countPages, - List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() - }; - - return OperationResultModel.Success(result); - }); + return OperationResultModel.Success(result); } - public async Task UpdateAsync(S model) + public OperationResultModel Update(S model) { using var context = DatabaseManager.GetContext; @@ -193,7 +188,7 @@ namespace DatabaseCore } entity = Mapper.MapToClass(model, entity, true); - await context.SaveChangesAsync(); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } diff --git a/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityElement.cs b/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityElement.cs index 37f8d8d..e1baccc 100644 --- a/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityElement.cs +++ b/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityElement.cs @@ -18,396 +18,396 @@ using System.Xml.Linq; namespace DesktopTools.Controls { - public partial class GenericControlEntityElement : MainControlViewEntityElement, IControlViewEntityElement - where G : GetBindingModel, new() - where S : SetBindingModel, new() - where L : ListViewModel - where E : ElementViewModel - where BL : GenericBusinessLogic - { - /// - /// Объект бизнес-логики для получения данных - /// - protected readonly BL _businessLogic; + public partial class GenericControlEntityElement : MainControlViewEntityElement, IControlViewEntityElement + where G : GetBindingModel, new() + where S : SetBindingModel, new() + where L : ListViewModel + where E : ElementViewModel + where BL : GenericBusinessLogic + { + /// + /// Объект бизнес-логики для получения данных + /// + protected readonly BL _businessLogic; - /// - /// Методы для реализации в generic-контроле - /// - protected IGenericControlEntityElement _genericControlViewEntityElement; + /// + /// Методы для реализации в generic-контроле + /// + protected IGenericControlEntityElement _genericControlViewEntityElement; - /// - /// Признак налиичия изменений - /// - private bool _haveChages = false; + /// + /// Признак налиичия изменений + /// + private bool _haveChages = false; - /// - /// Ширина контрола по умолчанию - /// - private readonly int _defaultControlWidth = 350; + /// + /// Ширина контрола по умолчанию + /// + private readonly int _defaultControlWidth = 350; - protected E _element = null; + protected E _element = null; - /// - /// Событие, вызываемое при закрытии контрола - /// - private event Action CloseElementEvent; + /// + /// Событие, вызываемое при закрытии контрола + /// + private event Action CloseElementEvent; - /// - /// События установки одинаковой ширины для заголовков контролов - /// - private event Action SetTitleWidth; + /// + /// События установки одинаковой ширины для заголовков контролов + /// + private event Action SetTitleWidth; - /// - /// Событие установки значения - /// - private event Action SetValues; + /// + /// Событие установки значения + /// + private event Action SetValues; - /// - /// Событие сброса значения в исходное состояние - /// - private event Action DropValues; + /// + /// Событие сброса значения в исходное состояние + /// + private event Action DropValues; - /// - /// Событие проверки заполненности контрола - /// - private event Func CheckValues; + /// + /// Событие проверки заполненности контрола + /// + private event Func CheckValues; - /// - /// Событие получения значения из контрола - /// - private event Action GetValues; + /// + /// Событие получения значения из контрола + /// + private event Action GetValues; - private E Element - { - get { return _element; } - set - { - try - { - _element = value; - if (_element != null) - { - SetValues?.Invoke(_element); - if (tabControl.Visible) - { - foreach (TabPage page in tabControl.TabPages) - { - if (page.Name == tabPageMain.Name) - { - continue; - } - if (page.Controls[0] is IControlChildEntity cntrl) - { - cntrl.ParentId = _element.Id; - cntrl.Open(new ControlOpenModel { OpenMode = ControlOpenMode.Child }); - } - } - } - } - _haveChages = false; - } - catch (Exception ex) - { - DialogHelper.MessageException(ex.Message, $"{Title}. Ошибка при установки значений"); - } - } - } + private E Element + { + get { return _element; } + set + { + try + { + _element = value; + if (_element != null) + { + SetValues?.Invoke(_element); + if (tabControl.Visible) + { + foreach (TabPage page in tabControl.TabPages) + { + if (page.Name == tabPageMain.Name) + { + continue; + } + if (page.Controls[0] is IControlChildEntity cntrl) + { + cntrl.ParentId = _element.Id; + cntrl.Open(new ControlOpenModel { OpenMode = ControlOpenMode.Child }); + } + } + } + } + _haveChages = false; + } + catch (Exception ex) + { + DialogHelper.MessageException(ex.Message, $"{Title}. Ошибка при установки значений"); + } + } + } - public GenericControlEntityElement() - { - InitializeComponent(); - InitEvents(); - _businessLogic = DependencyManager.Instance.Resolve(); - _controlViewEntityElement = this; - } + public GenericControlEntityElement() + { + InitializeComponent(); + InitEvents(); + _businessLogic = DependencyManager.Instance.Resolve(); + _controlViewEntityElement = this; + } - public async void OpenControl(ControlOpenModel model) - { - if (model.CloseElement != null) - { - CloseElementEvent += model.CloseElement; - } - if (panelContainer.Controls.Count == 0) - { - try - { - Configurate(GetConfig()); - } - catch (Exception ex) - { - DialogHelper.MessageException(ex.Message, $"{Title}. Ошибка при конфигурации"); - } - } - if (model.ElementId.HasValue) - { - Element = await _businessLogic.GetElementAsync(new G { Id = model.ElementId }); - if (Element == null) - { - DialogHelper.MessageException(_businessLogic.Errors, $"{Title}. Ошибки при получении элемента"); - } - } - Dock = DockStyle.Fill; - } + public void OpenControl(ControlOpenModel model) + { + if (model.CloseElement != null) + { + CloseElementEvent += model.CloseElement; + } + if (panelContainer.Controls.Count == 0) + { + try + { + Configurate(GetConfig()); + } + catch (Exception ex) + { + DialogHelper.MessageException(ex.Message, $"{Title}. Ошибка при конфигурации"); + } + } + if (model.ElementId.HasValue) + { + Element = _businessLogic.GetElement(new G { Id = model.ElementId }); + if (Element == null) + { + DialogHelper.MessageException(_businessLogic.Errors, $"{Title}. Ошибки при получении элемента"); + } + } + Dock = DockStyle.Fill; + } - public IControl GetInstanceControl() => _genericControlViewEntityElement?.GetInstanceGenericControl(); + public IControl GetInstanceControl() => _genericControlViewEntityElement?.GetInstanceGenericControl(); - public string SaveControlToXml() => new XElement("Control", - new XAttribute("Type", GetType().FullName), - new XAttribute("ControlId", ControlId), - new XAttribute("Title", Title)).ToString(); + public string SaveControlToXml() => new XElement("Control", + new XAttribute("Type", GetType().FullName), + new XAttribute("ControlId", ControlId), + new XAttribute("Title", Title)).ToString(); - public void LoadControlFromXml(string xml) - { - var control = XElement.Parse(xml).Element("Control"); - ControlId = new Guid(control.Attribute("ControlId").Value.ToString()); - Title = control.Attribute("Title").Value.ToString(); - } + public void LoadControlFromXml(string xml) + { + var control = XElement.Parse(xml).Element("Control"); + ControlId = new Guid(control.Attribute("ControlId").Value.ToString()); + Title = control.Attribute("Title").Value.ToString(); + } - private void InitEvents() - { - toolStripButtonSave.Click += async (object sender, EventArgs e) => { await SaveAsync(); }; - toolStripButtonReload.Click += (object sender, EventArgs e) => - { - if (DialogHelper.MessageQuestion("Отменить все внесенные изменения?") == DialogResult.Yes) - { - try - { - DropValues?.Invoke(); - } - catch (Exception ex) - { - DialogHelper.MessageException(ex.Message, $"{Title}. Ошибка при сбросе значений"); - } - } - }; - toolStripButtonClose.Click += async (object sender, EventArgs e) => - { - if (_haveChages && DialogHelper.MessageQuestion("Имеется несохраненные данные, вы действительно хотите закрыть элемент?", "Закрытие элемента") == DialogResult.Yes) - { - if (!(await SaveAsync())) - { - return; - } - } - CloseElementEvent?.Invoke(ControlId); - Dispose(); - }; - } + private void InitEvents() + { + toolStripButtonSave.Click += (object sender, EventArgs e) => { Save(); }; + toolStripButtonReload.Click += (object sender, EventArgs e) => + { + if (DialogHelper.MessageQuestion("Отменить все внесенные изменения?") == DialogResult.Yes) + { + try + { + DropValues?.Invoke(); + } + catch (Exception ex) + { + DialogHelper.MessageException(ex.Message, $"{Title}. Ошибка при сбросе значений"); + } + } + }; + toolStripButtonClose.Click += (object sender, EventArgs e) => + { + if (_haveChages && DialogHelper.MessageQuestion("Имеется несохраненные данные, вы действительно хотите закрыть элемент?", "Закрытие элемента") == DialogResult.Yes) + { + if (!Save()) + { + return; + } + } + CloseElementEvent?.Invoke(ControlId); + Dispose(); + }; + } - private void Configurate(ControlViewEntityElementConfiguration config) - { - // Загрузка подпунктов в контекстное меню и в пункт меню "Действие" - if (config.ControlOnMoveElem != null) - { - foreach (var elem in config.ControlOnMoveElem) - { - ToolStripMenuItem item = new() { Text = elem.Value.Title, Name = elem.Key }; - item.Click += elem.Value.Event; - toolStripSplitButtonActions.DropDownItems.Add(item); - ToolStripMenuItem itemContext = new() { Text = elem.Value.Title, Name = elem.Key }; - itemContext.Click += elem.Value.Event; - contextMenuStripElement.Items.Add(itemContext); - } - } - // либо скрытие пункта, если не предусмотренно подпунктов - else - { - toolStripSplitButtonActions.Visible = false; - toolStripSeparator1.Visible = false; - } - var attributeClass = typeof(E).GetCustomAttribute(); - if (attributeClass == null) - { - return; - } - tabControl.Visible = attributeClass.HaveDependenceEntities; - panelContainer.Visible = !attributeClass.HaveDependenceEntities; - Width = attributeClass.Width != 0 ? attributeClass.Width : _defaultControlWidth; + private void Configurate(ControlViewEntityElementConfiguration config) + { + // Загрузка подпунктов в контекстное меню и в пункт меню "Действие" + if (config.ControlOnMoveElem != null) + { + foreach (var elem in config.ControlOnMoveElem) + { + ToolStripMenuItem item = new() { Text = elem.Value.Title, Name = elem.Key }; + item.Click += elem.Value.Event; + toolStripSplitButtonActions.DropDownItems.Add(item); + ToolStripMenuItem itemContext = new() { Text = elem.Value.Title, Name = elem.Key }; + itemContext.Click += elem.Value.Event; + contextMenuStripElement.Items.Add(itemContext); + } + } + // либо скрытие пункта, если не предусмотренно подпунктов + else + { + toolStripSplitButtonActions.Visible = false; + toolStripSeparator1.Visible = false; + } + var attributeClass = typeof(E).GetCustomAttribute(); + if (attributeClass == null) + { + return; + } + tabControl.Visible = attributeClass.HaveDependenceEntities; + panelContainer.Visible = !attributeClass.HaveDependenceEntities; + Width = attributeClass.Width != 0 ? attributeClass.Width : _defaultControlWidth; - int positionY = 5; - int positionX = 5; - int interval = 15; + int positionY = 5; + int positionX = 5; + int interval = 15; - int titleWidth = 0; + int titleWidth = 0; - foreach (var property in typeof(E).GetProperties()) - { - var attribute = property.GetCustomAttribute(); - if (attribute != null) - { - AbstractBaseControl control = null; - switch (attribute.ControlType) - { - case ControlType.ControlString: - control = new BaseControlString(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MaxLength); - break; - case ControlType.ControlText: - control = new BaseControlText(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MaxLength, attribute.Height); - break; - case ControlType.ControlInt: - control = new BaseControlInt(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MinValue, attribute.MaxValue); - break; - case ControlType.ControlDecimal: - control = new BaseControlDecimal(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MinValue, - attribute.MaxValue, attribute.DecimalPlaces); - break; - case ControlType.ControlBool: - control = new BaseControlBool(property.Name, attribute.MustHaveValue, attribute.ReadOnly); - break; - case ControlType.ControlDateTime: - control = new BaseControlDateTime(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MinDate, - attribute.MaxDate, attribute.CustomDateFormat); - break; - case ControlType.ControlImage: - control = new BaseControlImage(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.Width, attribute.Height); - break; - case ControlType.ControlEnum: - control = new BaseControlEnum(property.Name, attribute.MustHaveValue, attribute.ReadOnly, property.PropertyType); - break; - case ControlType.ControlGuid: - if (attribute.ControlTypeObject.IsNotEmpty() && Type.GetType(attribute.ControlTypeObject) != null) - { - control = new BaseControlGuid(property.Name, attribute.MustHaveValue, attribute.ReadOnly, - DependencyManager.Instance.Resolve(Type.GetType(attribute.ControlTypeObject)) as IControlEntitySelectable, - property.Name == ParentPropertyName ? ParentId : null); - } - break; - } - if (control == null) - { - continue; - } + foreach (var property in typeof(E).GetProperties()) + { + var attribute = property.GetCustomAttribute(); + if (attribute != null) + { + AbstractBaseControl control = null; + switch (attribute.ControlType) + { + case ControlType.ControlString: + control = new BaseControlString(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MaxLength); + break; + case ControlType.ControlText: + control = new BaseControlText(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MaxLength, attribute.Height); + break; + case ControlType.ControlInt: + control = new BaseControlInt(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MinValue, attribute.MaxValue); + break; + case ControlType.ControlDecimal: + control = new BaseControlDecimal(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MinValue, + attribute.MaxValue, attribute.DecimalPlaces); + break; + case ControlType.ControlBool: + control = new BaseControlBool(property.Name, attribute.MustHaveValue, attribute.ReadOnly); + break; + case ControlType.ControlDateTime: + control = new BaseControlDateTime(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.MinDate, + attribute.MaxDate, attribute.CustomDateFormat); + break; + case ControlType.ControlImage: + control = new BaseControlImage(property.Name, attribute.MustHaveValue, attribute.ReadOnly, attribute.Width, attribute.Height); + break; + case ControlType.ControlEnum: + control = new BaseControlEnum(property.Name, attribute.MustHaveValue, attribute.ReadOnly, property.PropertyType); + break; + case ControlType.ControlGuid: + if (attribute.ControlTypeObject.IsNotEmpty() && Type.GetType(attribute.ControlTypeObject) != null) + { + control = new BaseControlGuid(property.Name, attribute.MustHaveValue, attribute.ReadOnly, + DependencyManager.Instance.Resolve(Type.GetType(attribute.ControlTypeObject)) as IControlEntitySelectable, + property.Name == ParentPropertyName ? ParentId : null); + } + break; + } + if (control == null) + { + continue; + } - var widthTitle = control.SetTitle(attribute.DisplayName); - if (widthTitle > titleWidth) - { - titleWidth = widthTitle; - } + var widthTitle = control.SetTitle(attribute.DisplayName); + if (widthTitle > titleWidth) + { + titleWidth = widthTitle; + } - control.OnValueChangeEvent += () => { _haveChages = true; }; - SetValues += control.SetValue; - DropValues += control.DropValue; - CheckValues += control.CheckValue; - SetTitleWidth += control.SetTitleWidth; - GetValues += control.GetValue; + control.OnValueChangeEvent += () => { _haveChages = true; }; + SetValues += control.SetValue; + DropValues += control.DropValue; + CheckValues += control.CheckValue; + SetTitleWidth += control.SetTitleWidth; + GetValues += control.GetValue; - control.Location = new System.Drawing.Point(positionX, positionY); - control.Width = Width - positionX * 2 - (tabControl.Visible ? 10 : 0); - control.Anchor = AnchorStyles.Top | AnchorStyles.Left; - if (panelContainer.Visible) - { - control.Anchor |= AnchorStyles.Right; - } - positionY += control.Height + interval; + control.Location = new System.Drawing.Point(positionX, positionY); + control.Width = Width - positionX * 2 - (tabControl.Visible ? 10 : 0); + control.Anchor = AnchorStyles.Top | AnchorStyles.Left; + if (panelContainer.Visible) + { + control.Anchor |= AnchorStyles.Right; + } + positionY += control.Height + interval; - if (panelContainer.Visible) - { - panelContainer.Controls.Add(control); - } - if (tabControl.Visible) - { - tabPageMain.Controls.Add(control); - } - } - } + if (panelContainer.Visible) + { + panelContainer.Controls.Add(control); + } + if (tabControl.Visible) + { + tabPageMain.Controls.Add(control); + } + } + } - SetTitleWidth(titleWidth); - Height = attributeClass.Height != 0 ? attributeClass.Height : positionY; + SetTitleWidth(titleWidth); + Height = attributeClass.Height != 0 ? attributeClass.Height : positionY; - if (attributeClass.HaveDependenceEntities) - { - var attrDependences = typeof(E).GetCustomAttributes(); - if (attrDependences != null) - { - foreach (var attr in attrDependences) - { - if (DependencyManager.Instance.Resolve(Type.GetType(attr.ControlTypeObject)) is IControlChildEntity control) - { - var cntrl = control.GetInstance() as IControlChildEntity; - cntrl.ParentPropertyName = attr.ParentPropertyName; - //cntrl.Open(null); - var tabPage = new TabPage - { - Location = new System.Drawing.Point(4, 24), - Name = "tabPage", - Padding = new Padding(3), - Size = new System.Drawing.Size(122, 99), - TabIndex = 0, - Text = attr.Title, - UseVisualStyleBackColor = true - }; - tabPage.Controls.Add(cntrl as UserControl); + if (attributeClass.HaveDependenceEntities) + { + var attrDependences = typeof(E).GetCustomAttributes(); + if (attrDependences != null) + { + foreach (var attr in attrDependences) + { + if (DependencyManager.Instance.Resolve(Type.GetType(attr.ControlTypeObject)) is IControlChildEntity control) + { + var cntrl = control.GetInstance() as IControlChildEntity; + cntrl.ParentPropertyName = attr.ParentPropertyName; + //cntrl.Open(null); + var tabPage = new TabPage + { + Location = new System.Drawing.Point(4, 24), + Name = "tabPage", + Padding = new Padding(3), + Size = new System.Drawing.Size(122, 99), + TabIndex = 0, + Text = attr.Title, + UseVisualStyleBackColor = true + }; + tabPage.Controls.Add(cntrl as UserControl); - tabControl.TabPages.Add(tabPage); - if (attr.IsActive) - { - tabPage.Select(); - } - } - } - } - } - } + tabControl.TabPages.Add(tabPage); + if (attr.IsActive) + { + tabPage.Select(); + } + } + } + } + } + } - private async Task SaveAsync() - { - if (CheckValues.GetInvocationList().Select(x => (bool)x.DynamicInvoke()).ToList().Any(x => !x)) - { - return false; - } - var model = Element == null ? new S() : Mapper.MapToClass(Element, true); - try - { - GetValues(model); - } - catch (Exception ex) - { - DialogHelper.MessageException(ex.Message, "Ошибка при получении значений"); - } + private bool Save() + { + if (CheckValues.GetInvocationList().Select(x => (bool)x.DynamicInvoke()).ToList().Any(x => !x)) + { + return false; + } + var model = Element == null ? new S() : Mapper.MapToClass(Element, true); + try + { + GetValues(model); + } + catch (Exception ex) + { + DialogHelper.MessageException(ex.Message, "Ошибка при получении значений"); + } - if (model != null) - { - if (Element == null) - { - Element = await _businessLogic.CreateAsync(model); - } - else - { - Element = await _businessLogic.UpdateAsync(model); - } + if (model != null) + { + if (Element == null) + { + Element = _businessLogic.Create(model); + } + else + { + Element = _businessLogic.Update(model); + } - if (Element == null) - { - DialogHelper.MessageException(_businessLogic.Errors, "Ошибки при сохранении элемента"); - return false; - } + if (Element == null) + { + DialogHelper.MessageException(_businessLogic.Errors, "Ошибки при сохранении элемента"); + return false; + } - _haveChages = false; - DialogHelper.MessageInformation("Сохранение прошло успешно", "Сообщение"); - return true; - } + _haveChages = false; + DialogHelper.MessageInformation("Сохранение прошло успешно", "Сообщение"); + return true; + } - return false; - } + return false; + } - private ControlViewEntityElementConfiguration GetConfig() => _genericControlViewEntityElement?.GetConfigControl(); + private ControlViewEntityElementConfiguration GetConfig() => _genericControlViewEntityElement?.GetConfigControl(); - protected bool FillModel(S model) - { - if (CheckValues.GetInvocationList().Select(x => (bool)x.DynamicInvoke()).ToList().Any(x => !x)) - { - return false; - } - try - { - GetValues(model); - return true; - } - catch (Exception ex) - { - DialogHelper.MessageException(ex.Message, "Ошибка при получении значений"); - } - return false; - } - } + protected bool FillModel(S model) + { + if (CheckValues.GetInvocationList().Select(x => (bool)x.DynamicInvoke()).ToList().Any(x => !x)) + { + return false; + } + try + { + GetValues(model); + return true; + } + catch (Exception ex) + { + DialogHelper.MessageException(ex.Message, "Ошибка при получении значений"); + } + return false; + } + } } diff --git a/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityList.cs b/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityList.cs index 26a1151..288af03 100644 --- a/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityList.cs +++ b/DepartmentPortal/Common/DesktopTools/MainControls/GenericControlEntityList.cs @@ -12,13 +12,12 @@ using System; using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Linq; namespace DesktopTools.Controls { - public partial class GenericControlEntityList : MainControlViewEntityList, IControlViewEntityList + public partial class GenericControlEntityList : MainControlViewEntityList, IControlViewEntityList where G : GetBindingModel, new() where S : SetBindingModel, new() where L : ListViewModel @@ -68,7 +67,7 @@ namespace DesktopTools.Controls } #region IControlViewEntityList - public async void OpenControl(ControlOpenModel model) + public void OpenControl(ControlOpenModel model) { _openMode = model.OpenMode; if (model.CloseList != null) @@ -93,13 +92,13 @@ namespace DesktopTools.Controls } if (!model.LazyLoading) { - await LoadListAsync(); + LoadList(); } } public IControl GetInstanceControl() => _genericControlViewEntityList?.GetInstanceGenericControl(); - public string GetTitleFromIdControl(Guid id) => _businessLogic.GetElementAsync(new G { Id = id }).Result?.ToString(); + public string GetTitleFromIdControl(Guid id) => _businessLogic.GetElement(new G { Id = id })?.ToString(); public string SaveControlToXml() => new XElement("Control", new XAttribute("Type", GetType().FullName), @@ -114,7 +113,7 @@ namespace DesktopTools.Controls new XElement("Value", ((toolStripComboBoxPageNames.SelectedItem as PageNamesForPaginationModel)?.Value ?? "-"))), new XElement("ParentId", ParentId?.ToString() ?? "-"))).ToString(); - public async void LoadControlFromXml(string xml) + public void LoadControlFromXml(string xml) { var control = XElement.Parse(xml); ControlId = new Guid(control.Attribute("ControlId").Value.ToString()); @@ -142,7 +141,7 @@ namespace DesktopTools.Controls { ParentId = new Guid(config.Element("ParentId").Value.ToString()); } - await LoadListAsync(); + LoadList(); } #endregion @@ -290,10 +289,10 @@ namespace DesktopTools.Controls { toolStripButtonAdd.Click += (object sender, EventArgs e) => { AddElement(); }; toolStripButtonUpd.Click += (object sender, EventArgs e) => { UpdElement(); }; - toolStripButtonDel.Click += async (object sender, EventArgs e) => { await DelElementAsync(); }; + toolStripButtonDel.Click += (object sender, EventArgs e) => { DelElement(); }; toolStripButtonSearch.Click += (object sender, EventArgs e) => { panelSearch.Visible = !panelSearch.Visible; }; - toolStripButtonRef.Click += async (object sender, EventArgs e) => { await LoadListAsync(); }; - toolStripButtonSelect.Click += async (object sender, EventArgs e) => { await SelectElement(); }; + toolStripButtonRef.Click += (object sender, EventArgs e) => { LoadList(); }; + toolStripButtonSelect.Click += (object sender, EventArgs e) => { SelectElement(); }; toolStripButtonClose.Click += (object sender, EventArgs e) => { CloseListEvent?.Invoke(ControlId); @@ -301,10 +300,10 @@ namespace DesktopTools.Controls Dispose(); }; - buttonSearch.Click += async (object sender, EventArgs e) => { await LoadListAsync(); }; - buttonCancelSearch.Click += async (object sender, EventArgs e) => { panelSearch.Visible = false; await LoadListAsync(); }; + buttonSearch.Click += (object sender, EventArgs e) => { LoadList(); }; + buttonCancelSearch.Click += (object sender, EventArgs e) => { panelSearch.Visible = false; LoadList(); }; - dataGridViewList.KeyDown += async (object sender, KeyEventArgs e) => + dataGridViewList.KeyDown += (object sender, KeyEventArgs e) => { switch (e.KeyCode) { @@ -323,41 +322,41 @@ namespace DesktopTools.Controls case Keys.Delete: if (toolStripButtonDel.Visible) { - await DelElementAsync(); + DelElement(); } break; } }; - dataGridViewList.CellDoubleClick += async (object sender, DataGridViewCellEventArgs e) => + dataGridViewList.CellDoubleClick += (object sender, DataGridViewCellEventArgs e) => { if (_openMode == ControlOpenMode.Select && dataGridViewList.SelectedRows.Count > 0) { - await SelectElement(); + SelectElement(); } UpdElement(); }; - toolStripButtonPrev.Click += async (object sender, EventArgs e) => + toolStripButtonPrev.Click += (object sender, EventArgs e) => { if (int.TryParse(toolStripTextBoxPage.Text, out int page)) { toolStripTextBoxPage.Text = (page - 1).ToString(); - await LoadListAsync(); + LoadList(); } }; - toolStripButtonNext.Click += async (object sender, EventArgs e) => + toolStripButtonNext.Click += (object sender, EventArgs e) => { if (int.TryParse(toolStripTextBoxPage.Text, out int page)) { toolStripTextBoxPage.Text = (page + 1).ToString(); - await LoadListAsync(); + LoadList(); } }; - toolStripTextBoxPage.KeyDown += async (object sender, KeyEventArgs e) => + toolStripTextBoxPage.KeyDown += (object sender, KeyEventArgs e) => { if (e.KeyData == Keys.Enter) { - await LoadListAsync(); + LoadList(); } }; @@ -369,12 +368,12 @@ namespace DesktopTools.Controls /// /// /// - private async void ToolStripComboBoxPageNamesSelectedIndexChanged(object sender, EventArgs e) => await LoadListAsync(); + private void ToolStripComboBoxPageNamesSelectedIndexChanged(object sender, EventArgs e) => LoadList(); /// /// Вызов события загрузки данных на datagrid /// - private async Task LoadListAsync() + private void LoadList() { var cursor = Cursor.Current; @@ -440,7 +439,7 @@ namespace DesktopTools.Controls } } } - data = await _businessLogic.GetListAsync(model); + data = _businessLogic.GetList(model); if (data == null && _businessLogic.Errors.Count > 0) { DialogHelper.MessageException(_businessLogic.Errors, $"{Title}. Ошибки при получении данных"); @@ -463,14 +462,14 @@ namespace DesktopTools.Controls { Cursor.Current = cursor; } - FillDataOnGridAsync(data?.List, selectedGuids); + FillDataOnGrid(data?.List, selectedGuids); } /// /// Заполнение таблицы /// /// - private void FillDataOnGridAsync(List data, List selectedGuids) + private void FillDataOnGrid(List data, List selectedGuids) { if (data == null) { @@ -513,7 +512,7 @@ namespace DesktopTools.Controls /// /// Вызов события при удалении элемента /// - private async Task DelElementAsync() + private void DelElement() { if (MessageBox.Show("Удалить выбранные записи?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { @@ -523,7 +522,7 @@ namespace DesktopTools.Controls Cursor.Current = Cursors.WaitCursor; foreach (DataGridViewRow selected in dataGridViewList.SelectedRows) { - await _businessLogic.DeleteAsync(new G { Id = new Guid(selected.Cells[0].Value.ToString()) }); + _businessLogic.Delete(new G { Id = new Guid(selected.Cells[0].Value.ToString()) }); } } catch (Exception ex) @@ -540,7 +539,7 @@ namespace DesktopTools.Controls finally { Cursor.Current = cursor; - await LoadListAsync(); + LoadList(); } } } @@ -548,12 +547,12 @@ namespace DesktopTools.Controls /// /// Вызов события при выборе элемента /// - private async Task SelectElement() + private void SelectElement() { try { SelectedId = new Guid(dataGridViewList.SelectedRows[0].Cells[0].Value.ToString()); - SelectedText = (await _businessLogic.GetElementAsync(new G { Id = SelectedId }))?.ToString(); + SelectedText = _businessLogic.GetElement(new G { Id = SelectedId })?.ToString(); CloseSelectEvent?.Invoke(true); Dispose(); } @@ -581,7 +580,10 @@ namespace DesktopTools.Controls { if (toolStripComboBoxPageNames.SelectedItem is PageNamesForPaginationModel key) { - control.ParentId = new Guid(key.Key.ToString()); + if (key.Key.GetType().Name == "Guid") + { + control.ParentId = new Guid(key.Key.ToString()); + } control.ParentPropertyName = toolStripComboBoxPageNames.Tag?.ToString(); } } @@ -596,9 +598,9 @@ namespace DesktopTools.Controls { OpenMode = ControlOpenMode.List, ElementId = id, - CloseElement = async (Guid id) => + CloseElement = (Guid id) => { - await LoadListAsync(); + LoadList(); form.Close(); } }); diff --git a/DepartmentPortal/Common/ModuleTools/BusinessLogics/GenericBusinessLogic.cs b/DepartmentPortal/Common/ModuleTools/BusinessLogics/GenericBusinessLogic.cs index 35dfd08..76e828b 100644 --- a/DepartmentPortal/Common/ModuleTools/BusinessLogics/GenericBusinessLogic.cs +++ b/DepartmentPortal/Common/ModuleTools/BusinessLogics/GenericBusinessLogic.cs @@ -3,18 +3,17 @@ using ModuleTools.Enums; using ModuleTools.Interfaces; using ModuleTools.ViewModels; using System; -using System.Threading.Tasks; namespace ModuleTools.BusinessLogics { - /// - /// Базовый класс для логики сущности - /// - /// - /// - /// - /// - public class GenericBusinessLogic : CoreBusinessLogic + /// + /// Базовый класс для логики сущности + /// + /// + /// + /// + /// + public class GenericBusinessLogic : CoreBusinessLogic where G : GetBindingModel where S : SetBindingModel where L : ListViewModel @@ -42,7 +41,7 @@ namespace ModuleTools.BusinessLogics /// /// /// - public async Task GetListAsync(G model) + public L GetList(G model) { Errors.Clear(); try @@ -52,7 +51,7 @@ namespace ModuleTools.BusinessLogics { throw new MethodAccessException("Нет прав на получение списка"); } - var result = await Service.ReadAsync(model); + var result = Service.Read(model); if (!result.IsSucceeded) { Errors.AddRange(result.Errors); @@ -73,7 +72,7 @@ namespace ModuleTools.BusinessLogics /// /// /// - public async Task GetElementAsync(G model) + public E GetElement(G model) { Errors.Clear(); try @@ -83,7 +82,7 @@ namespace ModuleTools.BusinessLogics { throw new MethodAccessException("Нет прав на получение списка"); } - var result = await Service.ReadAsync(model); + var result = Service.Read(model); if (!result.IsSucceeded) { Errors.AddRange(result.Errors); @@ -103,7 +102,7 @@ namespace ModuleTools.BusinessLogics /// /// /// - public virtual async Task CreateAsync(S model) + public virtual E Create(S model) { Errors.Clear(); try @@ -112,7 +111,7 @@ namespace ModuleTools.BusinessLogics { return null; } - var result = await Service.CreateAsync(model); + var result = Service.Create(model); if (!result.IsSucceeded) { Errors.AddRange(result.Errors); @@ -133,7 +132,7 @@ namespace ModuleTools.BusinessLogics /// /// /// - public virtual async Task UpdateAsync(S model) + public virtual E Update(S model) { Errors.Clear(); try @@ -142,7 +141,7 @@ namespace ModuleTools.BusinessLogics { return null; } - var result = await Service.UpdateAsync(model); + var result = Service.Update(model); if (!result.IsSucceeded) { Errors.AddRange(result.Errors); @@ -163,7 +162,7 @@ namespace ModuleTools.BusinessLogics /// /// /// - public virtual async Task DeleteAsync(G model) + public virtual bool Delete(G model) { Errors.Clear(); try @@ -172,7 +171,7 @@ namespace ModuleTools.BusinessLogics { return false; } - var result = await Service.DeleteAsync(model); + var result = Service.Delete(model); if (!result.IsSucceeded) { Errors.AddRange(result.Errors); @@ -193,7 +192,7 @@ namespace ModuleTools.BusinessLogics /// /// /// - public virtual async Task RestoreAsync(G model) + public virtual E Restore(G model) { Errors.Clear(); try @@ -202,7 +201,7 @@ namespace ModuleTools.BusinessLogics { return null; } - var result = await Service.RestoreAsync(model); + var result = Service.Restore(model); if (!result.IsSucceeded) { Errors.AddRange(result.Errors); diff --git a/DepartmentPortal/Common/ModuleTools/Interfaces/IGenerticEntityService.cs b/DepartmentPortal/Common/ModuleTools/Interfaces/IGenerticEntityService.cs index d9bc285..c85f1c3 100644 --- a/DepartmentPortal/Common/ModuleTools/Interfaces/IGenerticEntityService.cs +++ b/DepartmentPortal/Common/ModuleTools/Interfaces/IGenerticEntityService.cs @@ -1,13 +1,12 @@ using ModuleTools.BindingModels; using ModuleTools.Models; -using System.Threading.Tasks; namespace ModuleTools.Interfaces { - /// - /// Описание логики для хранилища сущности - /// - public interface IGenerticEntityService + /// + /// Описание логики для хранилища сущности + /// + public interface IGenerticEntityService where G : GetBindingModel where S : SetBindingModel { @@ -16,34 +15,34 @@ namespace ModuleTools.Interfaces /// /// /// - Task ReadAsync(G model); + OperationResultModel Read(G model); /// /// Создание новой сущности /// /// /// - Task CreateAsync(S model); + OperationResultModel Create(S model); /// /// Изменение сущности /// /// /// - Task UpdateAsync(S model); + OperationResultModel Update(S model); /// /// Удаление сущности /// /// /// - Task DeleteAsync(G model); + OperationResultModel Delete(G model); /// /// Восстановление сущности /// /// /// - Task RestoreAsync(G model); + OperationResultModel Restore(G model); } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderStudentRecordBusinessLogic.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderStudentRecordBusinessLogic.cs index 60ccbe3..e4adfc7 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderStudentRecordBusinessLogic.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderStudentRecordBusinessLogic.cs @@ -6,25 +6,24 @@ using ModuleTools.BusinessLogics; using ModuleTools.Enums; using SecurityBusinessLogic.BindingModels; using SecurityBusinessLogic.BusinessLogics; -using System.Threading.Tasks; namespace DepartmentBusinessLogic.BusinessLogics { - /// - /// Логика работы с записями приказов - /// - public class OrderStudentRecordBusinessLogic : GenericBusinessLogic + /// + /// Логика работы с записями приказов + /// + public class OrderStudentRecordBusinessLogic : GenericBusinessLogic { public OrderStudentRecordBusinessLogic(IOrderStudentRecordService service) : base(service, "Приказы", AccessOperation.Приказы) { } - public override async Task CreateAsync(OrderStudentRecordSetBindingModel model) + public override OrderStudentRecordViewModel Create(OrderStudentRecordSetBindingModel model) { - var result = await base.CreateAsync(model); + var result = base.Create(model); if (result != null) { var studentLogic = DependencyManager.Instance.Resolve(); var userLogic = DependencyManager.Instance.Resolve(); - var student = await studentLogic.GetElementAsync(new StudentGetBindingModel { Id = result.StudentId }); + var student = studentLogic.GetElement(new StudentGetBindingModel { Id = result.StudentId }); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -37,7 +36,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (student.StudentGroupId != result.StudentGroupToId) { st.StudentGroupId = result.StudentGroupToId; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -49,7 +48,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (student.Description != model.Info) { st.Description = model.Info; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -65,7 +64,7 @@ namespace DepartmentBusinessLogic.BusinessLogics && student.StudentState != StudentState.Учится) { st.StudentState = StudentState.Учится; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -79,7 +78,7 @@ namespace DepartmentBusinessLogic.BusinessLogics && student.StudentState != StudentState.Академ) { st.StudentState = StudentState.Академ; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -91,7 +90,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (result.OrderStudentMoveType == OrderStudentMoveType.ВосстановитьИзАкадема && student.StudentState != StudentState.Учится) { st.StudentState = StudentState.Учится; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -108,21 +107,21 @@ namespace DepartmentBusinessLogic.BusinessLogics student.StudentState != StudentState.Отчислен) { st.StudentState = result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьПоЗавершению ? StudentState.Завершил : StudentState.Отчислен; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}")); return null; } - var delete = await studentLogic.DeleteAsync(new StudentGetBindingModel { Id = student.Id }); + var delete = studentLogic.Delete(new StudentGetBindingModel { Id = student.Id }); if (!delete) { Errors.AddRange(studentLogic.Errors); Errors.Add(("Ошибка удаления студента", $"Не удалось удалить студента {studentName}")); return null; } - delete = await userLogic.DeleteAsync(new UserGetBindingModel { Id = student.UserId }); + delete = userLogic.Delete(new UserGetBindingModel { Id = student.UserId }); if (!delete) { Errors.AddRange(studentLogic.Errors); @@ -134,7 +133,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (result.OrderStudentMoveType == OrderStudentMoveType.Восстановить && student.StudentState != StudentState.Учится) { st.StudentState = StudentState.Учится; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); @@ -146,7 +145,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (result.OrderStudentMoveType == OrderStudentMoveType.УбратьПоПереводу && student.StudentState != StudentState.Ушел) { st.StudentState = StudentState.Ушел; - student = await studentLogic.UpdateAsync(st); + student = studentLogic.Update(st); if (student == null) { Errors.AddRange(studentLogic.Errors); diff --git a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderSyncHistoryBusinessLogic.cs b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderSyncHistoryBusinessLogic.cs index 766c4d2..a1bc96b 100644 --- a/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderSyncHistoryBusinessLogic.cs +++ b/DepartmentPortal/Department/DepartmentBusinessLogic/BusinessLogics/OrderSyncHistoryBusinessLogic.cs @@ -15,14 +15,13 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Text.Json; -using System.Threading.Tasks; namespace DepartmentBusinessLogic.BusinessLogics { - /// - /// Логика работы с историями синхронизации приказов - /// - public class OrderSyncHistoryBusinessLogic : GenericBusinessLogic + /// + /// Логика работы с историями синхронизации приказов + /// + public class OrderSyncHistoryBusinessLogic : GenericBusinessLogic { private OrderSyncHistoryRecordBusinessLogic _recordLogic; @@ -40,9 +39,9 @@ namespace DepartmentBusinessLogic.BusinessLogics public OrderSyncHistoryBusinessLogic(IOrderSyncHistoryService service) : base(service, "Синхронизация Приказов", AccessOperation.СинхронизацияПриказов) { } - public async Task SyncOrders() + public bool SyncOrders() { - var history = await CreateAsync(new OrderSyncHistorySetBindingModel { SyncDate = DateTime.Now }); + var history = Create(new OrderSyncHistorySetBindingModel { SyncDate = DateTime.Now }); if (history == null) { Errors.Add(("Ошибка создание истории", "Не удалось создать историю")); @@ -57,12 +56,12 @@ namespace DepartmentBusinessLogic.BusinessLogics _orderStudentRecordLogic = DependencyManager.Instance.Resolve(); _userLogic = DependencyManager.Instance.Resolve(); - var address = (await _enviromentSettingLogic.GetListAsync(new EnviromentSettingGetBindingModel { Key = "SyncStudentOrderIpAddress" }))?.List?.FirstOrDefault(); + var address = _enviromentSettingLogic.GetList(new EnviromentSettingGetBindingModel { Key = "SyncStudentOrderIpAddress" })?.List?.FirstOrDefault(); if (address == null || address.Value.IsEmpty()) { Errors = _enviromentSettingLogic.Errors; Errors.Add(("Ошибка получения данных", "Не удалось получить адрес серверая для получения приказов по студентам")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -70,12 +69,12 @@ namespace DepartmentBusinessLogic.BusinessLogics return false; } - var username = (await _enviromentSettingLogic.GetListAsync(new EnviromentSettingGetBindingModel { Key = "SyncStudentOrderUserName" }))?.List?.FirstOrDefault(); + var username = _enviromentSettingLogic.GetList(new EnviromentSettingGetBindingModel { Key = "SyncStudentOrderUserName" })?.List?.FirstOrDefault(); if (username == null || username.Value.IsEmpty()) { Errors = _enviromentSettingLogic.Errors; Errors.Add(("Ошибка получения данных", "Не удалось получить имя пользователя для получения приказов по студентам")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -83,12 +82,12 @@ namespace DepartmentBusinessLogic.BusinessLogics return false; } - var password = (await _enviromentSettingLogic.GetListAsync(new EnviromentSettingGetBindingModel { Key = "SyncStudentOrderPassword" }))?.List?.FirstOrDefault(); + var password = _enviromentSettingLogic.GetList(new EnviromentSettingGetBindingModel { Key = "SyncStudentOrderPassword" })?.List?.FirstOrDefault(); if (password == null || password.Value.IsEmpty()) { Errors = _enviromentSettingLogic.Errors; Errors.Add(("Ошибка получения данных", "Не удалось получить пароль для получения приказов по студентам")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -107,11 +106,11 @@ namespace DepartmentBusinessLogic.BusinessLogics // авторизация // получение списка студентов - HttpResponseMessage response = await client.GetAsync($"{address.Value}/univer/hs/Ulstu_StudentsInfo/v1/GetCurrentStudentsOfDepartment"); + HttpResponseMessage response = client.GetAsync($"{address.Value}/univer/hs/Ulstu_StudentsInfo/v1/GetCurrentStudentsOfDepartment").Result; if (!response.IsSuccessStatusCode) { Errors.Add(("Ошибка получения данных", "Не удалось получить список студентов с сервера")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -121,7 +120,7 @@ namespace DepartmentBusinessLogic.BusinessLogics var studentFromServer = JsonSerializer.Deserialize(response.Content.ReadAsStringAsync().Result); if (studentFromServer.CurrentStudentsList.Count == 0) { - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = "Полученный список студентов пустой" @@ -129,12 +128,12 @@ namespace DepartmentBusinessLogic.BusinessLogics return true; } - var groups = await _groupsLogic.GetListAsync(new StudentGroupGetBindingModel()); + var groups = _groupsLogic.GetList(new StudentGroupGetBindingModel()); if (groups == null || groups.List == null) { Errors = _groupsLogic.Errors; Errors.Add(("Ошибка получения данных", "Не удалось получить список групп")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -142,12 +141,12 @@ namespace DepartmentBusinessLogic.BusinessLogics return false; } - var students = await _studentLogic.GetListAsync(new StudentGetBindingModel()); + var students = _studentLogic.GetList(new StudentGetBindingModel()); if (students == null || students.List == null) { Errors = _studentLogic.Errors; Errors.Add(("Ошибка получения данных", "Не удалось получить список студентов")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -161,12 +160,12 @@ namespace DepartmentBusinessLogic.BusinessLogics // студент не найден, значит он ушел с кафедры, выясняем почему if (studentSync == null) { - await SyncStudentOrders(history, student, groups.List, client, address.Value); + SyncStudentOrders(history, student, groups.List, client, address.Value); } // не совпадение групп else if (student.StudentGroupName != studentSync.groupName) { - await SyncStudentOrders(history, student, groups.List, client, address.Value); + SyncStudentOrders(history, student, groups.List, client, address.Value); } studentFromServer.CurrentStudentsList.Remove(studentSync); @@ -174,39 +173,39 @@ namespace DepartmentBusinessLogic.BusinessLogics // новые студенты и восстановленцы foreach (var student in studentFromServer.CurrentStudentsList) { - var deletedStudent = await _studentLogic.GetElementAsync(new StudentGetBindingModel { NumberOfBook = student.recordBookName }); + var deletedStudent = _studentLogic.GetElement(new StudentGetBindingModel { NumberOfBook = student.recordBookName }); if (deletedStudent == null && _studentLogic.Errors.FirstOrDefault(x => x.Message == "Элемент удален") != default) { // восстановленец - deletedStudent = await _studentLogic.RestoreAsync(new StudentGetBindingModel { NumberOfBook = student.recordBookName }); + deletedStudent = _studentLogic.Restore(new StudentGetBindingModel { NumberOfBook = student.recordBookName }); if (deletedStudent == null) { var errors = _studentLogic.Errors; errors.Add(("Ошибка при восстановлении студента", $"Не удалось восстановить студента {student.lastName} {student.firstName} {student.patronymicName}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) }); continue; } - var deletedUser = await _userLogic.RestoreAsync(new UserGetBindingModel { Id = deletedStudent.UserId }); + var deletedUser = _userLogic.Restore(new UserGetBindingModel { Id = deletedStudent.UserId }); if (deletedUser == null) { var errors = _userLogic.Errors; errors.Add(("Ошибка при восстановлении пользователя студента", $"Не удалось восстановить пользователя студента {student.lastName} {student.firstName} {student.patronymicName}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) }); continue; } - await SyncStudentOrders(history, deletedStudent, groups.List, client, address.Value); + SyncStudentOrders(history, deletedStudent, groups.List, client, address.Value); continue; } - var user = await _userLogic.GetElementAsync(new UserGetBindingModel + var user = _userLogic.GetElement(new UserGetBindingModel { Login = student.recordBookName }); @@ -216,7 +215,7 @@ namespace DepartmentBusinessLogic.BusinessLogics { var errors = _userLogic.Errors; errors.Add(("Ошибка получения пользователя под студента", $"Не удалось получить пользователя под студента {student.lastName} {student.firstName} {student.patronymicName}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) @@ -225,7 +224,7 @@ namespace DepartmentBusinessLogic.BusinessLogics } var userName = $"{student.lastName}{(student.firstName.IsNotEmpty() ? $" {student.firstName[0]}." : string.Empty)}{(student.patronymicName.IsNotEmpty() ? $"{student.patronymicName[0]}." : string.Empty)}"; - user = await _userLogic.CreateAsync(new UserSetBindingModel + user = _userLogic.Create(new UserSetBindingModel { Login = student.recordBookName, Password = userName @@ -235,7 +234,7 @@ namespace DepartmentBusinessLogic.BusinessLogics { var errors = _userLogic.Errors; errors.Add(("Ошибка создания пользователя под студента", $"Не удалось создать пользователя под студента {student.lastName} {student.firstName} {student.patronymicName}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) @@ -244,7 +243,7 @@ namespace DepartmentBusinessLogic.BusinessLogics } } - var newStudent = await _studentLogic.CreateAsync(new StudentSetBindingModel + var newStudent = _studentLogic.Create(new StudentSetBindingModel { Iduniv = student.iduniv, NumberOfBook = student.recordBookName, @@ -260,7 +259,7 @@ namespace DepartmentBusinessLogic.BusinessLogics { var errors = _studentLogic.Errors; errors.Add(("Ошибка добавления студента", $"Не удалось добавить студента {student.lastName} {student.firstName} {student.patronymicName}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) @@ -268,13 +267,13 @@ namespace DepartmentBusinessLogic.BusinessLogics continue; } - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Добавлен студент {newStudent}" }); - await SyncStudentOrders(history, newStudent, groups.List, client, address.Value); + SyncStudentOrders(history, newStudent, groups.List, client, address.Value); } return true; } @@ -288,13 +287,13 @@ namespace DepartmentBusinessLogic.BusinessLogics /// /// /// - private async Task SyncStudentOrders(OrderSyncHistoryViewModel history, StudentViewModel student, List groups, HttpClient client, string address) + private void SyncStudentOrders(OrderSyncHistoryViewModel history, StudentViewModel student, List groups, HttpClient client, string address) { - HttpResponseMessage response = await client.GetAsync($"{address}/univer/hs/Ulstu_StudentsInfo/v1/GetStudentOrdersByIdAndRecordBook?iduniv={student.Iduniv}&recordBookName={student.NumberOfBook}&allOrders=sppd"); + HttpResponseMessage response = client.GetAsync($"{address}/univer/hs/Ulstu_StudentsInfo/v1/GetStudentOrdersByIdAndRecordBook?iduniv={student.Iduniv}&recordBookName={student.NumberOfBook}&allOrders=sppd").Result; if (!response.IsSuccessStatusCode) { Errors.Add(("Ошибка получения данных", "Не удалось получить список приказов по студенту")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, Errors.Select(x => x.Message)) @@ -306,7 +305,7 @@ namespace DepartmentBusinessLogic.BusinessLogics { if (syncOrder.markOfApprove.ToLower() != "true") { - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Приказ {syncOrder.clericNumber} от {syncOrder.clericDate} ({syncOrder.orderTypeName}) по студенту {student} не утврежден " @@ -315,7 +314,7 @@ namespace DepartmentBusinessLogic.BusinessLogics } if (syncOrder.clericNumber.IsEmpty()) { - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Приказ без номера от {syncOrder.clericDate} ({student})" @@ -324,7 +323,7 @@ namespace DepartmentBusinessLogic.BusinessLogics } if (syncOrder.clericDate.IsEmpty()) { - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Приказ {syncOrder.clericNumber} - неизвестная дата ({student})" @@ -339,7 +338,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (syncOrder.orderTypeName != "Корректировка" && syncOrder.orderTypeName != "Назначение стипендии" && syncOrder.orderTypeName != "Утверждение тем курсовых работ" && syncOrder.orderTypeName != "Утверждение тем работ" && syncOrder.orderTypeName != "Смена ФИО") - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Приказ {syncOrder.clericNumber} неопределенного типа {syncOrder.orderTypeName}" @@ -348,14 +347,14 @@ namespace DepartmentBusinessLogic.BusinessLogics } // пытаемся найти приказ - var order = await _orderLogic.GetElementAsync(new OrderGetBindingModel + var order = _orderLogic.GetElement(new OrderGetBindingModel { OrderNumber = syncOrder.clericNumber }); if (order == null) { // если не нашли - пытаемся создать - order = await _orderLogic.CreateAsync(new OrderSetBindingModel + order = _orderLogic.Create(new OrderSetBindingModel { OrderNumber = syncOrder.clericNumber, OrderDate = Convert.ToDateTime(syncOrder.clericDate), @@ -365,7 +364,7 @@ namespace DepartmentBusinessLogic.BusinessLogics { var errors = _orderLogic.Errors; errors.Add(("Ошибка добавления приказа", $"Не удалось добавить приказ {syncOrder.clericNumber} {syncOrder.clericDate}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) @@ -478,7 +477,7 @@ namespace DepartmentBusinessLogic.BusinessLogics if (orderStudentMoveType == OrderStudentMoveType.Неопределено) { - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Неизветсный приказ {syncOrder.orderTypeName} ({syncOrder.reason}) по студенту {student}" @@ -487,7 +486,7 @@ namespace DepartmentBusinessLogic.BusinessLogics } // ищем в приказе запись по студенту - var studentOrder = await _orderStudentRecordLogic.GetElementAsync(new OrderStudentRecordGetBindingModel + var studentOrder = _orderStudentRecordLogic.GetElement(new OrderStudentRecordGetBindingModel { OrderId = order.Id, StudentId = student.Id, @@ -501,7 +500,7 @@ namespace DepartmentBusinessLogic.BusinessLogics } // создаем, если не нашли - studentOrder = await _orderStudentRecordLogic.CreateAsync(new OrderStudentRecordSetBindingModel + studentOrder = _orderStudentRecordLogic.Create(new OrderStudentRecordSetBindingModel { OrderId = order.Id, StudentId = student.Id, @@ -514,7 +513,7 @@ namespace DepartmentBusinessLogic.BusinessLogics { var errors = _orderStudentRecordLogic.Errors; errors.Add(("Ошибка добавления записи приказа по студенту", $"Не удалось добавить запись приказа {syncOrder.orderSubTypeName} по студенту {student}")); - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = string.Join(Environment.NewLine, errors.Select(x => x.Message)) @@ -522,7 +521,7 @@ namespace DepartmentBusinessLogic.BusinessLogics continue; } - await _recordLogic.CreateAsync(new OrderSyncHistoryRecordSetBindingModel + _recordLogic.Create(new OrderSyncHistoryRecordSetBindingModel { OrderSyncHistoryId = history.Id, Information = $"Добавили запись к приказу {order.OrderNumber} по студенту {student} с формулировкой {info}" diff --git a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryRecordService.cs b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryRecordService.cs index 557742c..75f5161 100644 --- a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryRecordService.cs +++ b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryRecordService.cs @@ -9,26 +9,25 @@ using ModuleTools.Enums; using ModuleTools.Models; using System; using System.Linq; -using System.Threading.Tasks; namespace DepartmentDatabaseImplementation.Implementations { - /// - /// Реализация IOrderSyncHistoryRecordService - /// - public class OrderSyncHistoryRecordService : IOrderSyncHistoryRecordService + /// + /// Реализация IOrderSyncHistoryRecordService + /// + public class OrderSyncHistoryRecordService : IOrderSyncHistoryRecordService { - public async Task CreateAsync(OrderSyncHistoryRecordSetBindingModel model) + public OperationResultModel Create(OrderSyncHistoryRecordSetBindingModel model) { using var context = DatabaseManager.GetContext; var entity = Mapper.MapToClass(model, true); - await context.OrderSyncHistoryRecords.AddAsync(entity); - await context.SaveChangesAsync(); + context.OrderSyncHistoryRecords.Add(entity); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } - public async Task DeleteAsync(OrderSyncHistoryRecordGetBindingModel model) + public OperationResultModel Delete(OrderSyncHistoryRecordGetBindingModel model) { using var context = DatabaseManager.GetContext; var entity = context.OrderSyncHistoryRecords.FirstOrDefault(x => x.Id == model.Id); @@ -37,12 +36,12 @@ namespace DepartmentDatabaseImplementation.Implementations return OperationResultModel.Error("Error:", "Элемент не найден", ResultServiceStatusCode.NotFound); } context.OrderSyncHistoryRecords.Remove(entity); - await context.SaveChangesAsync(); + context.SaveChanges(); return OperationResultModel.Success(true); } - public async Task ReadAsync(OrderSyncHistoryRecordGetBindingModel model) + public OperationResultModel Read(OrderSyncHistoryRecordGetBindingModel model) { int countPages = 0; using var context = DatabaseManager.GetContext; @@ -69,31 +68,28 @@ namespace DepartmentDatabaseImplementation.Implementations query = query.Include(x => x.OrderSyncHistory); - return await Task.Run(() => + if (model.PageNumber.HasValue && model.PageSize.HasValue) { - 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 OrderSyncHistoryRecordListViewModel - { - MaxCount = countPages, - List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() - }; + 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 OrderSyncHistoryRecordListViewModel + { + MaxCount = countPages, + List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() + }; - return OperationResultModel.Success(result); - }); + return OperationResultModel.Success(result); } - public Task RestoreAsync(OrderSyncHistoryRecordGetBindingModel model) + public OperationResultModel Restore(OrderSyncHistoryRecordGetBindingModel model) { throw new NotImplementedException(); } - public async Task UpdateAsync(OrderSyncHistoryRecordSetBindingModel model) + public OperationResultModel Update(OrderSyncHistoryRecordSetBindingModel model) { using var context = DatabaseManager.GetContext; @@ -104,7 +100,7 @@ namespace DepartmentDatabaseImplementation.Implementations } entity = Mapper.MapToClass(model, entity, true); - await context.SaveChangesAsync(); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } diff --git a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryService.cs b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryService.cs index 3d9a5d3..99637f9 100644 --- a/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryService.cs +++ b/DepartmentPortal/Department/DepartmentDatabaseImplementation.csproj/Implementations/OrderSyncHistoryService.cs @@ -8,26 +8,25 @@ using ModuleTools.Enums; using ModuleTools.Models; using System; using System.Linq; -using System.Threading.Tasks; namespace DepartmentDatabaseImplementation.Implementations { - /// - /// Реализация IOrderSyncHistoryService - /// - public class OrderSyncHistoryService : IOrderSyncHistoryService + /// + /// Реализация IOrderSyncHistoryService + /// + public class OrderSyncHistoryService : IOrderSyncHistoryService { - public async Task CreateAsync(OrderSyncHistorySetBindingModel model) + public OperationResultModel Create(OrderSyncHistorySetBindingModel model) { using var context = DatabaseManager.GetContext; var entity = Mapper.MapToClass(model, true); - await context.OrderSyncHistories.AddAsync(entity); - await context.SaveChangesAsync(); + context.OrderSyncHistories.Add(entity); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } - public async Task DeleteAsync(OrderSyncHistoryGetBindingModel model) + public OperationResultModel Delete(OrderSyncHistoryGetBindingModel model) { using var context = DatabaseManager.GetContext; using var transaction = context.Database.BeginTransaction(); @@ -40,24 +39,24 @@ namespace DepartmentDatabaseImplementation.Implementations } context.OrderSyncHistories.Remove(entity); - await context.SaveChangesAsync(); + context.SaveChanges(); var records = context.OrderSyncHistoryRecords.Where(x => x.OrderSyncHistoryId == model.Id); context.OrderSyncHistoryRecords.RemoveRange(records); - await context.SaveChangesAsync(); + context.SaveChanges(); - await transaction.CommitAsync(); + transaction.Commit(); } catch (Exception) { - await transaction.RollbackAsync(); + transaction.Rollback(); throw; } return OperationResultModel.Success(true); } - public async Task ReadAsync(OrderSyncHistoryGetBindingModel model) + public OperationResultModel Read(OrderSyncHistoryGetBindingModel model) { int countPages = 0; using var context = DatabaseManager.GetContext; @@ -77,31 +76,28 @@ namespace DepartmentDatabaseImplementation.Implementations query = query.OrderByDescending(x => x.SyncDate); - return await Task.Run(() => + if (model.PageNumber.HasValue && model.PageSize.HasValue) { - 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 OrderSyncHistoryListViewModel - { - MaxCount = countPages, - List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() - }; + 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 OrderSyncHistoryListViewModel + { + MaxCount = countPages, + List = query.Select(x => Mapper.MapToClass(x, model.HaveRight)).ToList() + }; - return OperationResultModel.Success(result); - }); + return OperationResultModel.Success(result); } - public Task RestoreAsync(OrderSyncHistoryGetBindingModel model) + public OperationResultModel Restore(OrderSyncHistoryGetBindingModel model) { throw new NotImplementedException(); } - public async Task UpdateAsync(OrderSyncHistorySetBindingModel model) + public OperationResultModel Update(OrderSyncHistorySetBindingModel model) { using var context = DatabaseManager.GetContext; @@ -112,7 +108,7 @@ namespace DepartmentDatabaseImplementation.Implementations } entity = Mapper.MapToClass(model, entity, true); - await context.SaveChangesAsync(); + context.SaveChanges(); return OperationResultModel.Success(Mapper.MapToClass(entity, true)); } diff --git a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Discipline/ControlDisciplineList.cs b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Discipline/ControlDisciplineList.cs index 40b8adc..eb7d2f8 100644 --- a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Discipline/ControlDisciplineList.cs +++ b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Discipline/ControlDisciplineList.cs @@ -12,52 +12,55 @@ using System.Linq; namespace DepartmentWindowsDesktop.EntityControls { - /// - /// Реализация контрола для списка дисциплин - /// - public partial class ControlDisciplineList : - GenericControlEntityList, - IGenericControlEntityList - { - private readonly DisciplineBlockBusinessLogic _disciplineBlockBusinessLogic; + /// + /// Реализация контрола для списка дисциплин + /// + public partial class ControlDisciplineList : + GenericControlEntityList, + IGenericControlEntityList + { + private readonly DisciplineBlockBusinessLogic _disciplineBlockBusinessLogic; - public ControlDisciplineList() - { - InitializeComponent(); - _disciplineBlockBusinessLogic = DependencyManager.Instance.Resolve(); - Title = "Дисциплины"; - ControlId = new Guid("1731f50b-b20b-44c4-aa56-b335764fae7a"); - AccessOperation = AccessOperation.Дисциплины; - ControlViewEntityElement = new ControlDisciplineElement(); - _genericControlViewEntityList = this; - FillSearchPanel(); - } + public ControlDisciplineList() + { + InitializeComponent(); + _disciplineBlockBusinessLogic = DependencyManager.Instance.Resolve(); + Title = "Дисциплины"; + ControlId = new Guid("1731f50b-b20b-44c4-aa56-b335764fae7a"); + AccessOperation = AccessOperation.Дисциплины; + ControlViewEntityElement = new ControlDisciplineElement(); + _genericControlViewEntityList = this; + FillSearchPanel(); + } - public IControl GetInstanceGenericControl() => new ControlDisciplineList() { ControlId = Guid.NewGuid() }; + public IControl GetInstanceGenericControl() => new ControlDisciplineList() { ControlId = Guid.NewGuid() }; - public ControlViewEntityListConfiguration GetConfigControl() => new() - { - PaginationOn = true, - PageNamesForPagination = _disciplineBlockBusinessLogic.GetListAsync(new DisciplineBlockGetBindingModel()).Result?.List?.Select(x => - new PageNamesForPaginationModel - { - Key = x.Id, - Value = x.Title - })?.ToList(), - ParentPropertyName = "DisciplineBlockId" - }; + public ControlViewEntityListConfiguration GetConfigControl() + { + return new ControlViewEntityListConfiguration() + { + PaginationOn = true, + PageNamesForPagination = _disciplineBlockBusinessLogic.GetList(new DisciplineBlockGetBindingModel())?.List?.Select(x => + new PageNamesForPaginationModel + { + Key = x.Id, + Value = x.Title + })?.ToList(), + ParentPropertyName = "DisciplineBlockId" + }; + } - private void FillSearchPanel() - { - var control = new BaseControlString("DisciplineNameForSearch", false, false, 0) - { - Location = new System.Drawing.Point(10, 10), - Size = new System.Drawing.Size(400, 23), - Name = "SearchDisciplineName", - TabIndex = 0 - }; - control.SetTitleWidth(control.SetTitle("Название:")); - panelSearchControls.Controls.Add(control); - } - } + private void FillSearchPanel() + { + var control = new BaseControlString("DisciplineNameForSearch", false, false, 0) + { + Location = new System.Drawing.Point(10, 10), + Size = new System.Drawing.Size(400, 23), + Name = "SearchDisciplineName", + TabIndex = 0 + }; + control.SetTitleWidth(control.SetTitle("Название:")); + panelSearchControls.Controls.Add(control); + } + } } \ No newline at end of file diff --git a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Employee/ControlEmployeeElement.cs b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Employee/ControlEmployeeElement.cs index d935658..772cde1 100644 --- a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Employee/ControlEmployeeElement.cs +++ b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Employee/ControlEmployeeElement.cs @@ -13,14 +13,13 @@ using SecurityBusinessLogic.BusinessLogics; using SecurityBusinessLogic.ViewModels; using System; using System.Collections.Generic; -using System.Threading.Tasks; namespace DepartmentWindowsDesktop.EntityControls { - /// - /// Реализация контрола для сотрудника - /// - public partial class ControlEmployeeElement : + /// + /// Реализация контрола для сотрудника + /// + public partial class ControlEmployeeElement : GenericControlEntityElement, IGenericControlEntityElement { @@ -38,22 +37,22 @@ namespace DepartmentWindowsDesktop.EntityControls { ControlOnMoveElem = new Dictionary { - { "ToolStripMenuItemAddUser", ("Добавить пользователя", async (object sender, EventArgs e) => { await AddUserAsync(); }) }, - { "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", async (object sender, EventArgs e) => { await PasswordResetAsync(); }) } + { "ToolStripMenuItemAddUser", ("Добавить пользователя", (object sender, EventArgs e) => { AddUser(); }) }, + { "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", (object sender, EventArgs e) => { PasswordReset(); }) } } }; /// /// Поиск пользователя под учетку, либо добавление нового, если не найдено /// - private async Task AddUserAsync() + private void AddUser() { var model = new EmployeeSetBindingModel(); if (FillModel(model)) { var logic = DependencyManager.Instance.Resolve(); var userName = $"{model.LastName}{(model.FirstName.IsNotEmpty() ? $" {model.FirstName[0]}." : string.Empty)}{(model.Patronymic.IsNotEmpty() ? $"{model.Patronymic[0]}." : string.Empty)}"; - var result = await logic.GetListAsync(new UserGetBindingModel { UserNameForSearch = userName }); + var result = logic.GetList(new UserGetBindingModel { UserNameForSearch = userName }); if (result != null) { if (result.List.Count > 1) @@ -67,7 +66,7 @@ namespace DepartmentWindowsDesktop.EntityControls } else { - var newuser = await logic.CreateAsync(new UserSetBindingModel + var newuser = logic.Create(new UserSetBindingModel { Login = userName, Password = model.DateBirth.ToShortDateString(), @@ -92,7 +91,7 @@ namespace DepartmentWindowsDesktop.EntityControls /// /// Сброс пароля пользователя /// - private async Task PasswordResetAsync() + private void PasswordReset() { if (_element == null) { @@ -102,14 +101,14 @@ namespace DepartmentWindowsDesktop.EntityControls if (FillModel(model)) { var logic = DependencyManager.Instance.Resolve(); - var user = await logic.GetElementAsync(new UserGetBindingModel { Id = _element.UserId }); + var user = logic.GetElement(new UserGetBindingModel { Id = _element.UserId }); if (user == null) { DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя"); return; } user.Password = model.DateBirth.ToShortDateString(); - user = await logic.UpdateAsync(Mapper.MapToClass(user, true)); + user = logic.Update(Mapper.MapToClass(user, true)); if (user == null) { DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя"); diff --git a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Lecturer/ControlLecturerElement.cs b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Lecturer/ControlLecturerElement.cs index 13e48dc..069f0e3 100644 --- a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Lecturer/ControlLecturerElement.cs +++ b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Lecturer/ControlLecturerElement.cs @@ -13,14 +13,13 @@ using SecurityBusinessLogic.BusinessLogics; using SecurityBusinessLogic.ViewModels; using System; using System.Collections.Generic; -using System.Threading.Tasks; namespace DepartmentWindowsDesktop.EntityControls { - /// - /// Реализация контрола для преподавателя - /// - public partial class ControlLecturerElement : + /// + /// Реализация контрола для преподавателя + /// + public partial class ControlLecturerElement : GenericControlEntityElement, IGenericControlEntityElement { @@ -38,22 +37,22 @@ namespace DepartmentWindowsDesktop.EntityControls { ControlOnMoveElem = new Dictionary { - { "ToolStripMenuItemAddUser", ("Добавить пользователя", async (object sender, EventArgs e) => { await AddUserAsunc(); }) }, - { "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", async (object sender, EventArgs e) => { await PasswordResetAsync(); }) } + { "ToolStripMenuItemAddUser", ("Добавить пользователя", (object sender, EventArgs e) => { AddUser(); }) }, + { "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", (object sender, EventArgs e) => { PasswordReset(); }) } } }; /// /// Поиск пользователя под учетку, либо добавление нового, если не найдено /// - private async Task AddUserAsunc() + private void AddUser() { var model = new LecturerSetBindingModel(); if (FillModel(model)) { var logic = DependencyManager.Instance.Resolve(); var userName = $"{model.LastName}{(model.FirstName.IsNotEmpty() ? $" {model.FirstName[0]}." : string.Empty)}{(model.Patronymic.IsNotEmpty() ? $"{model.Patronymic[0]}." : string.Empty)}"; - var result = await logic.GetListAsync(new UserGetBindingModel { UserNameForSearch = userName }); + var result = logic.GetList(new UserGetBindingModel { UserNameForSearch = userName }); if (result != null) { if (result.List.Count > 1) @@ -67,7 +66,7 @@ namespace DepartmentWindowsDesktop.EntityControls } else { - var newuser = await logic.CreateAsync(new UserSetBindingModel + var newuser = logic.Create(new UserSetBindingModel { Login = userName, Password = model.DateBirth.ToShortDateString(), @@ -92,7 +91,7 @@ namespace DepartmentWindowsDesktop.EntityControls /// /// Сброс пароля пользователя /// - private async Task PasswordResetAsync() + private void PasswordReset() { if (_element == null) { @@ -102,14 +101,14 @@ namespace DepartmentWindowsDesktop.EntityControls if (FillModel(model)) { var logic = DependencyManager.Instance.Resolve(); - var user = await logic.GetElementAsync(new UserGetBindingModel { Id = _element.UserId }); + var user = logic.GetElement(new UserGetBindingModel { Id = _element.UserId }); if (user == null) { DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя"); return; } user.Password = model.DateBirth.ToShortDateString(); - user = await logic.UpdateAsync(Mapper.MapToClass(user, true)); + user = logic.Update(Mapper.MapToClass(user, true)); if (user == null) { DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя"); diff --git a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/OrderSyncHistory/ControlOrderSyncHistoryList.cs b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/OrderSyncHistory/ControlOrderSyncHistoryList.cs index dc9836d..9cc2cc1 100644 --- a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/OrderSyncHistory/ControlOrderSyncHistoryList.cs +++ b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/OrderSyncHistory/ControlOrderSyncHistoryList.cs @@ -9,14 +9,13 @@ using DesktopTools.Models; using ModuleTools.Enums; using System; using System.Collections.Generic; -using System.Threading.Tasks; namespace DepartmentWindowsDesktop.EntityControls { - /// - /// Реализация контрола для списка историй синхронизации приказов - /// - public partial class ControlOrderSyncHistoryList : + /// + /// Реализация контрола для списка историй синхронизации приказов + /// + public partial class ControlOrderSyncHistoryList : GenericControlEntityList, IGenericControlEntityList { @@ -44,7 +43,7 @@ namespace DepartmentWindowsDesktop.EntityControls }, ControlOnMoveElem = new() { - { "ToolStripMenuItemSyncOrders", ("Синхронизировать студентов", async (object sender, EventArgs e) => { await SyncOrders(); }) } + { "ToolStripMenuItemSyncOrders", ("Синхронизировать студентов", (object sender, EventArgs e) => { SyncOrders(); }) } } }; @@ -52,9 +51,9 @@ namespace DepartmentWindowsDesktop.EntityControls /// Синхронизация приказов /// /// - private async Task SyncOrders() + private void SyncOrders() { - var flag = await _businessLogic.SyncOrders(); + var flag = _businessLogic.SyncOrders(); if (!flag) { DialogHelper.MessageException(_businessLogic.Errors, "Ошибки при синхронизации"); diff --git a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Student/ControlStudentElement.cs b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Student/ControlStudentElement.cs index 95edf90..f982845 100644 --- a/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Student/ControlStudentElement.cs +++ b/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Student/ControlStudentElement.cs @@ -13,14 +13,13 @@ using SecurityBusinessLogic.BusinessLogics; using SecurityBusinessLogic.ViewModels; using System; using System.Collections.Generic; -using System.Threading.Tasks; namespace DepartmentWindowsDesktop.EntityControls { - /// - /// Реализация контрола для студента - /// - public partial class ControlStudentElement : + /// + /// Реализация контрола для студента + /// + public partial class ControlStudentElement : GenericControlEntityElement, IGenericControlEntityElement { @@ -38,22 +37,22 @@ namespace DepartmentWindowsDesktop.EntityControls { ControlOnMoveElem = new Dictionary { - { "ToolStripMenuItemAddUser", ("Добавить пользователя", async (object sender, EventArgs e) => { await AddUserAsync(); }) }, - { "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", async (object sender, EventArgs e) => { await PasswordResetAsync(); }) } + { "ToolStripMenuItemAddUser", ("Добавить пользователя", (object sender, EventArgs e) => { AddUser(); }) }, + { "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", (object sender, EventArgs e) => { PasswordReset(); }) } } }; /// /// Поиск пользователя под учетку, либо добавление нового, если не найдено /// - private async Task AddUserAsync() + private void AddUser() { var model = new StudentSetBindingModel(); if (FillModel(model)) { var logic = DependencyManager.Instance.Resolve(); var userName = $"{model.LastName}{(model.FirstName.IsNotEmpty() ? $" {model.FirstName[0]}." : string.Empty)}{(model.Patronymic.IsNotEmpty() ? $"{model.Patronymic[0]}." : string.Empty)}"; - var user = await logic.GetElementAsync(new UserGetBindingModel { Login = model.NumberOfBook }); + var user = logic.GetElement(new UserGetBindingModel { Login = model.NumberOfBook }); if (user == null) { if (logic.Errors.Count > 0) @@ -61,7 +60,7 @@ namespace DepartmentWindowsDesktop.EntityControls DialogHelper.MessageException(logic.Errors, "Ошибка при создании пользователя"); return; } - user = await logic.CreateAsync(new UserSetBindingModel + user = logic.Create(new UserSetBindingModel { Login = model.NumberOfBook, Password = userName, @@ -85,7 +84,7 @@ namespace DepartmentWindowsDesktop.EntityControls /// /// Сброс пароля пользователя /// - private async Task PasswordResetAsync() + private void PasswordReset() { if (_element == null) { @@ -95,14 +94,14 @@ namespace DepartmentWindowsDesktop.EntityControls if (FillModel(model)) { var logic = DependencyManager.Instance.Resolve(); - var user = await logic.GetElementAsync(new UserGetBindingModel { Id = _element.UserId }); + var user = logic.GetElement(new UserGetBindingModel { Id = _element.UserId }); if (user == null) { DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя"); return; } user.Password = model.NumberOfBook; - user = await logic.UpdateAsync(Mapper.MapToClass(user, true)); + user = logic.Update(Mapper.MapToClass(user, true)); if (user == null) { DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя"); diff --git a/DepartmentPortal/Security/SecurityWindowsDesktop/EntityControls/Access/ControlAccessList.cs b/DepartmentPortal/Security/SecurityWindowsDesktop/EntityControls/Access/ControlAccessList.cs index 3219236..b350bc7 100644 --- a/DepartmentPortal/Security/SecurityWindowsDesktop/EntityControls/Access/ControlAccessList.cs +++ b/DepartmentPortal/Security/SecurityWindowsDesktop/EntityControls/Access/ControlAccessList.cs @@ -39,7 +39,7 @@ namespace SecurityWindowsDesktop.EntityControls public ControlViewEntityListConfiguration GetConfigControl() => new() { PaginationOn = true, - PageNamesForPagination = _roleBusinessLogic.GetListAsync(new RoleGetBindingModel()).Result?.List?.Select(x => + PageNamesForPagination = _roleBusinessLogic.GetList(new RoleGetBindingModel())?.List?.Select(x => new PageNamesForPaginationModel { Key = x.Id,