2021-04-13 12:52:45 +04:00
|
|
|
|
using DepartmentBusinessLogic.BindingModels;
|
2021-08-20 18:28:34 +04:00
|
|
|
|
using DepartmentBusinessLogic.Enums;
|
2021-04-13 12:52:45 +04:00
|
|
|
|
using DepartmentBusinessLogic.Interfaces;
|
|
|
|
|
using DepartmentBusinessLogic.ViewModels;
|
|
|
|
|
using ModuleTools.BusinessLogics;
|
|
|
|
|
using ModuleTools.Enums;
|
2021-08-20 18:28:34 +04:00
|
|
|
|
using SecurityBusinessLogic.BindingModels;
|
|
|
|
|
using SecurityBusinessLogic.BusinessLogics;
|
|
|
|
|
using System.Threading.Tasks;
|
2021-04-13 12:52:45 +04:00
|
|
|
|
|
|
|
|
|
namespace DepartmentBusinessLogic.BusinessLogics
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Логика работы с записями приказов
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class OrderStudentRecordBusinessLogic : GenericBusinessLogic<OrderStudentRecordGetBindingModel, OrderStudentRecordSetBindingModel, OrderStudentRecordListViewModel, OrderStudentRecordViewModel>
|
|
|
|
|
{
|
|
|
|
|
public OrderStudentRecordBusinessLogic(IOrderStudentRecordService service) : base(service, "Приказы", AccessOperation.Приказы) { }
|
2021-08-20 18:28:34 +04:00
|
|
|
|
|
|
|
|
|
public override async Task<OrderStudentRecordViewModel> CreateAsync(OrderStudentRecordSetBindingModel model)
|
|
|
|
|
{
|
|
|
|
|
var result = await base.CreateAsync(model);
|
|
|
|
|
if (result != null)
|
|
|
|
|
{
|
|
|
|
|
var studentLogic = DependencyManager.Instance.Resolve<StudentBusinessLogic>();
|
|
|
|
|
var userLogic = DependencyManager.Instance.Resolve<UserBusinessLogic>();
|
|
|
|
|
var student = await studentLogic.GetElementAsync(new StudentGetBindingModel { Id = result.StudentId });
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка при получении студента", $"Не удалось получить студента"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
// изменять студента
|
|
|
|
|
var st = Mapper.MapToClass<StudentViewModel, StudentSetBindingModel>(student, true);
|
|
|
|
|
var studentName = student.ToString();
|
|
|
|
|
if (student.StudentGroupId != result.StudentGroupToId)
|
|
|
|
|
{
|
|
|
|
|
st.StudentGroupId = result.StudentGroupToId;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить группу у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (student.Description != model.Info)
|
|
|
|
|
{
|
|
|
|
|
st.Description = model.Info;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить описание у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((result.OrderStudentMoveType == OrderStudentMoveType.ЗачислитьПоПриказу ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ПринятьПоПереводу ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ПринятьПоПереводусДругогоВуза ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ПеревестиНаДругоеНаправлениеКафедры)
|
|
|
|
|
&& student.StudentState != StudentState.Учится)
|
|
|
|
|
{
|
|
|
|
|
st.StudentState = StudentState.Учится;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((result.OrderStudentMoveType == OrderStudentMoveType.ОтправитьВАкадем ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ПродлитьАкадем)
|
|
|
|
|
&& student.StudentState != StudentState.Академ)
|
|
|
|
|
{
|
|
|
|
|
st.StudentState = StudentState.Академ;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.OrderStudentMoveType == OrderStudentMoveType.ВосстановитьИзАкадема && student.StudentState != StudentState.Учится)
|
|
|
|
|
{
|
|
|
|
|
st.StudentState = StudentState.Учится;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьВСвязиСПереводом ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьЗаНевыходСАкадема ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьЗаНеуспевамость ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьПоСобственному ||
|
|
|
|
|
result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьПоЗавершению) &&
|
|
|
|
|
student.StudentState != StudentState.Отчислен)
|
|
|
|
|
{
|
|
|
|
|
st.StudentState = result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьПоЗавершению ? StudentState.Завершил : StudentState.Отчислен;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
var delete = await studentLogic.DeleteAsync(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 });
|
|
|
|
|
if (!delete)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка удаления пользователя по студенту", $"Не удалось удалить пользователя по студенту {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.OrderStudentMoveType == OrderStudentMoveType.Восстановить && student.StudentState != StudentState.Учится)
|
|
|
|
|
{
|
|
|
|
|
st.StudentState = StudentState.Учится;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.OrderStudentMoveType == OrderStudentMoveType.УбратьПоПереводу && student.StudentState != StudentState.Ушел)
|
|
|
|
|
{
|
|
|
|
|
st.StudentState = StudentState.Ушел;
|
|
|
|
|
student = await studentLogic.UpdateAsync(st);
|
|
|
|
|
if (student == null)
|
|
|
|
|
{
|
|
|
|
|
Errors.AddRange(studentLogic.Errors);
|
|
|
|
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
2021-04-13 12:52:45 +04:00
|
|
|
|
}
|
|
|
|
|
}
|