121 lines
4.1 KiB
C#
121 lines
4.1 KiB
C#
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 SecurityBusinessLogic.ViewModels;
|
||
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(); }) },
|
||
{ "ToolStripMenuItemPasswordReset", ("Сброс пароля пользователя", (object sender, EventArgs e) => { PasswordReset(); }) }
|
||
}
|
||
};
|
||
|
||
/// <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
|
||
{
|
||
UserName = userName,
|
||
PasswordHash = 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);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Сброс пароля пользователя
|
||
/// </summary>
|
||
private void PasswordReset()
|
||
{
|
||
if (_element == null)
|
||
{
|
||
return;
|
||
}
|
||
var model = new EmployeeSetBindingModel();
|
||
if (FillModel(model))
|
||
{
|
||
var logic = DependencyManager.Instance.Resolve<UserBusinessLogic>();
|
||
var user = logic.GetElement(new UserGetBindingModel { Id = _element.UserId });
|
||
if (user == null)
|
||
{
|
||
DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя");
|
||
return;
|
||
}
|
||
user.PasswordHash = model.DateBirth.ToShortDateString();
|
||
user = logic.Update(Mapper.MapToClass<UserViewModel, UserSetBindingModel>(user, true));
|
||
if (user == null)
|
||
{
|
||
DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя");
|
||
return;
|
||
}
|
||
DialogHelper.MessageInformation("Пароль сброшен", "Успех");
|
||
}
|
||
}
|
||
}
|
||
} |