DepartmentProject/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Employee/ControlEmployeeElement.cs

89 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DepartmentBusinessLogic.BindingModels;
using DepartmentBusinessLogic.BusinessLogics;
using DepartmentBusinessLogic.ViewModels;
using DesktopTools.BaseControls;
using DesktopTools.Controls;
using DesktopTools.Helpers;
using DesktopTools.Interfaces;
using DesktopTools.Models;
using ModuleTools.BusinessLogics;
using ModuleTools.Extensions;
using SecurityBusinessLogic.BindingModels;
using SecurityBusinessLogic.BusinessLogics;
using System;
using System.Collections.Generic;
namespace DepartmentWindowsDesktop.EntityControls
{
/// <summary>
/// Реализация контрола для сотрудника
/// </summary>
public partial class ControlEmployeeElement :
GenericControlEntityElement<EmployeeGetBindingModel, EmployeeSetBindingModel, EmployeeListViewModel, EmployeeViewModel, EmployeeBusinessLogic>,
IGenericControlEntityElement
{
public ControlEmployeeElement()
{
InitializeComponent();
Title = "Сотрудник";
ControlId = new Guid("9aadbb72-dde5-483f-9bba-021127b42c49");
_genericControlViewEntityElement = this;
}
public IControl GetInstanceGenericControl() => new ControlEmployeeElement() { ControlId = Guid.NewGuid() };
public ControlViewEntityElementConfiguration GetConfigControl() => new()
{
ControlOnMoveElem = new Dictionary<string, (string Title, EventHandler Event)>
{
{ "ToolStripMenuItemAddUser", ("Добавить пользователя", (object sender, EventArgs e) => { AddUser(); }) }
}
};
/// <summary>
/// Поиск пользователя под учетку, либо добавление нового, если не найдено
/// </summary>
private void AddUser()
{
var model = new EmployeeSetBindingModel();
if (FillModel(model))
{
var logic = DependencyManager.Instance.Resolve<UserBusinessLogic>();
var userName = $"{model.LastName}{(model.FirstName.IsNotEmpty() ? $" {model.FirstName[0]}." : string.Empty)}{(model.Patronymic.IsNotEmpty() ? $"{model.Patronymic[0]}." : string.Empty)}";
var result = logic.GetList(new UserGetBindingModel { UserNameForSearch = userName });
if (result != null)
{
if (result.List.Count > 1)
{
DialogHelper.MessageException("Существует несколько пользователей с такой сигнатурой", "Ошибка");
return;
}
if (result.List.Count == 1)
{
model.UserId = result.List[0].Id;
}
else
{
var newuser = logic.Create(new UserSetBindingModel
{
Login = userName,
Password = model.DateBirth.ToShortDateString(),
Avatar = model.Photo
});
if (newuser == null)
{
DialogHelper.MessageException(logic.Errors, "Ошибка при создании пользователя");
return;
}
model.UserId = newuser.Id;
}
var controls = tabPageMain.Controls.Find($"ControlUserId", true);
if (controls != null)
{
(controls[0] as AbstractBaseControl).SetValue(model);
}
}
}
}
}
}