DepartmentProject/DepartmentPortal/Department/DepartmentWindowsDesktop/EntityControls/Student/ControlStudentElement.cs

114 lines
3.9 KiB
C#
Raw Normal View History

using DepartmentContract.BindingModels;
using DepartmentContract.Logics.IGenericEntityLogic;
using DepartmentContract.ViewModels;
using SecurityContract.BindingModels;
using SecurityContract.Logics.IGenericEntityLogic;
using SecurityContract.ViewModels;
using System;
using System.Collections.Generic;
2022-03-18 22:48:14 +04:00
using ToolsDesktop.BaseControls;
using ToolsDesktop.Controls;
using ToolsDesktop.Helpers;
using ToolsDesktop.Interfaces;
using ToolsDesktop.Models;
using ToolsModule.BusinessLogics;
using ToolsModule.Extensions;
2021-04-12 16:57:29 +04:00
namespace DepartmentWindowsDesktop.EntityControls
{
/// <summary>
/// Реализация контрола для студента
/// </summary>
public partial class ControlStudentElement :
GenericControlEntityElement<StudentGetBindingModel, StudentSetBindingModel, StudentListViewModel, StudentViewModel, IStudentLogic>,
2021-04-12 16:57:29 +04:00
IGenericControlEntityElement
{
public ControlStudentElement()
{
InitializeComponent();
Title = "Студент";
ControlId = new Guid("cbddf92c-8c00-4ad2-93e8-33c0d998a899");
_genericControlViewEntityElement = this;
}
public IControl GetInstanceGenericControl() => new ControlStudentElement() { 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(); }) }
2021-04-12 16:57:29 +04:00
}
};
/// <summary>
/// Поиск пользователя под учетку, либо добавление нового, если не найдено
/// </summary>
private void AddUser()
2021-04-12 16:57:29 +04:00
{
var model = new StudentSetBindingModel();
if (FillModel(model))
{
var logic = DependencyManager.Instance.Resolve<IUserLogic>();
2021-04-12 16:57:29 +04:00
var userName = $"{model.LastName}{(model.FirstName.IsNotEmpty() ? $" {model.FirstName[0]}." : string.Empty)}{(model.Patronymic.IsNotEmpty() ? $"{model.Patronymic[0]}." : string.Empty)}";
var user = logic.GetElement(new UserGetBindingModel { Login = model.NumberOfBook });
if (user == null)
2021-04-12 16:57:29 +04:00
{
if (logic.Errors.Count > 0)
2021-04-12 16:57:29 +04:00
{
DialogHelper.MessageException(logic.Errors, "Ошибка при создании пользователя");
2021-04-12 16:57:29 +04:00
return;
}
user = logic.Create(new UserSetBindingModel
2021-04-12 16:57:29 +04:00
{
UserName = model.NumberOfBook,
PasswordHash = userName,
Avatar = model.Photo
});
if (user == null)
2021-04-12 16:57:29 +04:00
{
DialogHelper.MessageException(logic.Errors, "Ошибка при создании пользователя");
return;
2021-04-12 16:57:29 +04:00
}
}
model.UserId = user.Id;
var controls = tabPageMain.Controls.Find($"ControlUserId", true);
if (controls != null)
{
(controls[0] as AbstractBaseControl).SetValue(model);
}
2021-04-12 16:57:29 +04:00
}
}
/// <summary>
/// Сброс пароля пользователя
/// </summary>
private void PasswordReset()
2021-04-12 16:57:29 +04:00
{
if (_element == null)
{
return;
}
var model = new StudentSetBindingModel();
if (FillModel(model))
{
var logic = DependencyManager.Instance.Resolve<IUserLogic>();
var user = logic.GetElement(new UserGetBindingModel { Id = _element.UserId });
2021-04-12 16:57:29 +04:00
if (user == null)
{
DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя");
return;
}
user.PasswordHash = model.NumberOfBook;
user = logic.Update(Mapper.MapToClass<UserViewModel, UserSetBindingModel>(user, true));
2021-04-12 16:57:29 +04:00
if (user == null)
{
DialogHelper.MessageException(logic.Errors, "Ошибка при получении пользователя");
return;
}
DialogHelper.MessageInformation("Пароль сброшен", "Успех");
}
}
}
}