Синхронизация студентов, доработка
This commit is contained in:
parent
df73a0d314
commit
074fc405ed
@ -128,6 +128,10 @@ namespace CoreDatabase
|
|||||||
}
|
}
|
||||||
if (entity.IsDeleted)
|
if (entity.IsDeleted)
|
||||||
{
|
{
|
||||||
|
if (model.IgnoreDeleted)
|
||||||
|
{
|
||||||
|
return OperationResultModel.Success(Mapper.MapToClass<T, E>(entity, model.HaveRight));
|
||||||
|
}
|
||||||
return OperationResultModel.Error("Error:", "Элемент удален", ResultServiceStatusCode.WasDelete);
|
return OperationResultModel.Error("Error:", "Элемент удален", ResultServiceStatusCode.WasDelete);
|
||||||
}
|
}
|
||||||
return OperationResultModel.Success(Mapper.MapToClass<T, E>(entity, model.HaveRight));
|
return OperationResultModel.Success(Mapper.MapToClass<T, E>(entity, model.HaveRight));
|
||||||
|
@ -32,5 +32,10 @@ namespace ToolsModule.ManagmentEntity
|
|||||||
/// Иной признак, по которму отбираем записи (для списка)
|
/// Иной признак, по которму отбираем записи (для списка)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PageName { get; set; }
|
public string PageName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Игнорировать признак убдаленности записи и все равно ее возвращать
|
||||||
|
/// </summary>
|
||||||
|
public bool IgnoreDeleted { get; set; } = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -26,7 +26,7 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
{
|
{
|
||||||
var studentLogic = DependencyManager.Instance.Resolve<IStudentLogic>();
|
var studentLogic = DependencyManager.Instance.Resolve<IStudentLogic>();
|
||||||
var userLogic = DependencyManager.Instance.Resolve<IUserLogic>();
|
var userLogic = DependencyManager.Instance.Resolve<IUserLogic>();
|
||||||
var student = studentLogic.GetElement(new StudentGetBindingModel { Id = result.StudentId });
|
var student = model.StudentModel;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
@ -36,28 +36,17 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
// изменять студента
|
// изменять студента
|
||||||
var st = Mapper.MapToClass<StudentViewModel, StudentSetBindingModel>(student, true);
|
var st = Mapper.MapToClass<StudentViewModel, StudentSetBindingModel>(student, true);
|
||||||
var studentName = student.ToString();
|
var studentName = student.ToString();
|
||||||
|
|
||||||
|
bool haveChages = false;
|
||||||
if (student.StudentGroupId != result.StudentGroupToId)
|
if (student.StudentGroupId != result.StudentGroupToId)
|
||||||
{
|
{
|
||||||
st.StudentGroupId = result.StudentGroupToId;
|
st.StudentGroupId = result.StudentGroupToId;
|
||||||
student = studentLogic.Update(st);
|
haveChages = true;
|
||||||
if (student == null)
|
|
||||||
{
|
|
||||||
Errors.AddRange(studentLogic.Errors);
|
|
||||||
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить группу у студента {studentName}"));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (student.Description != model.Info)
|
if (student.Description != model.Info)
|
||||||
{
|
{
|
||||||
st.Description = model.Info;
|
st.Description = model.Info;
|
||||||
student = studentLogic.Update(st);
|
haveChages = true;
|
||||||
if (student == null)
|
|
||||||
{
|
|
||||||
Errors.AddRange(studentLogic.Errors);
|
|
||||||
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить описание у студента {studentName}"));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((result.OrderStudentMoveType == OrderStudentMoveType.ЗачислитьПоПриказу ||
|
if ((result.OrderStudentMoveType == OrderStudentMoveType.ЗачислитьПоПриказу ||
|
||||||
@ -69,6 +58,7 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
{
|
{
|
||||||
st.StudentState = StudentState.Учится;
|
st.StudentState = StudentState.Учится;
|
||||||
student = studentLogic.Update(st);
|
student = studentLogic.Update(st);
|
||||||
|
haveChages = false;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
@ -83,6 +73,7 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
{
|
{
|
||||||
st.StudentState = StudentState.Академ;
|
st.StudentState = StudentState.Академ;
|
||||||
student = studentLogic.Update(st);
|
student = studentLogic.Update(st);
|
||||||
|
haveChages = false;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
@ -95,6 +86,7 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
{
|
{
|
||||||
st.StudentState = StudentState.Учится;
|
st.StudentState = StudentState.Учится;
|
||||||
student = studentLogic.Update(st);
|
student = studentLogic.Update(st);
|
||||||
|
haveChages = false;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
@ -112,6 +104,7 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
{
|
{
|
||||||
st.StudentState = result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьПоЗавершению ? StudentState.Завершил : StudentState.Отчислен;
|
st.StudentState = result.OrderStudentMoveType == OrderStudentMoveType.ОтчислитьПоЗавершению ? StudentState.Завершил : StudentState.Отчислен;
|
||||||
student = studentLogic.Update(st);
|
student = studentLogic.Update(st);
|
||||||
|
haveChages = false;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
@ -136,8 +129,23 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
|
|
||||||
if (result.OrderStudentMoveType == OrderStudentMoveType.Восстановить && student.StudentState != StudentState.Учится)
|
if (result.OrderStudentMoveType == OrderStudentMoveType.Восстановить && student.StudentState != StudentState.Учится)
|
||||||
{
|
{
|
||||||
|
var deletedStudent = studentLogic.Restore(new StudentGetBindingModel { NumberOfBook = student.NumberOfBook });
|
||||||
|
if (deletedStudent == null)
|
||||||
|
{
|
||||||
|
Errors.AddRange(studentLogic.Errors);
|
||||||
|
Errors.Add(("Ошибка при восстановлении студента", $"Не удалось восстановить студента {studentName}"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var deletedUser = userLogic.Restore(new UserGetBindingModel { Id = deletedStudent.UserId });
|
||||||
|
if (deletedUser == null)
|
||||||
|
{
|
||||||
|
Errors.AddRange(userLogic.Errors);
|
||||||
|
Errors.Add(("Ошибка при восстановлении пользователя студента", $"Не удалось восстановить пользователя студента {studentName}"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
st.StudentState = StudentState.Учится;
|
st.StudentState = StudentState.Учится;
|
||||||
student = studentLogic.Update(st);
|
student = studentLogic.Update(st);
|
||||||
|
haveChages = false;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
@ -150,12 +158,38 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
{
|
{
|
||||||
st.StudentState = StudentState.Ушел;
|
st.StudentState = StudentState.Ушел;
|
||||||
student = studentLogic.Update(st);
|
student = studentLogic.Update(st);
|
||||||
|
haveChages = false;
|
||||||
if (student == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
Errors.AddRange(studentLogic.Errors);
|
Errors.AddRange(studentLogic.Errors);
|
||||||
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить статус у студента {studentName}"));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
var delete = studentLogic.Delete(new StudentGetBindingModel { Id = student.Id });
|
||||||
|
if (!delete)
|
||||||
|
{
|
||||||
|
Errors.AddRange(studentLogic.Errors);
|
||||||
|
Errors.Add(("Ошибка удаления студента", $"Не удалось удалить студента {studentName}"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
delete = userLogic.Delete(new UserGetBindingModel { Id = student.UserId });
|
||||||
|
if (!delete)
|
||||||
|
{
|
||||||
|
Errors.AddRange(studentLogic.Errors);
|
||||||
|
Errors.Add(("Ошибка удаления пользователя по студенту", $"Не удалось удалить пользователя по студенту {studentName}"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (haveChages)
|
||||||
|
{
|
||||||
|
student = studentLogic.Update(st);
|
||||||
|
if (student == null)
|
||||||
|
{
|
||||||
|
Errors.AddRange(studentLogic.Errors);
|
||||||
|
Errors.Add(("Ошибка изменения по студенту", $"Не удалось изменить данные у студента {studentName}"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -122,7 +122,7 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
// новые студенты и восстановленцы
|
// новые студенты и восстановленцы
|
||||||
foreach (var student in studentFromServer.CurrentStudentsList)
|
foreach (var student in studentFromServer.CurrentStudentsList)
|
||||||
{
|
{
|
||||||
var deletedStudent = TryRestoreStudent(student);
|
var deletedStudent = _studentLogic.GetElement(new StudentGetBindingModel { NumberOfBook = student.recordBookName, IgnoreDeleted = true });
|
||||||
if (deletedStudent != null)
|
if (deletedStudent != null)
|
||||||
{
|
{
|
||||||
await SyncStudentOrders(deletedStudent, groups.List, client, address.Value);
|
await SyncStudentOrders(deletedStudent, groups.List, client, address.Value);
|
||||||
@ -241,29 +241,6 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
private StudentViewModel TryRestoreStudent(StudentSyncModel student)
|
|
||||||
{
|
|
||||||
var deletedStudent = _studentLogic.GetElement(new StudentGetBindingModel { NumberOfBook = student.recordBookName });
|
|
||||||
if (deletedStudent == null && _studentLogic.Errors.FirstOrDefault(x => x.Message == "Элемент удален") != default)
|
|
||||||
{
|
|
||||||
// восстановленец
|
|
||||||
deletedStudent = _studentLogic.Restore(new StudentGetBindingModel { NumberOfBook = student.recordBookName });
|
|
||||||
if (deletedStudent == null)
|
|
||||||
{
|
|
||||||
SaveErrors(_studentLogic.Errors, "Ошибка при восстановлении студента", $"Не удалось восстановить студента {student.lastName} {student.firstName} {student.patronymicName}");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var deletedUser = _userLogic.Restore(new UserGetBindingModel { Id = deletedStudent.UserId });
|
|
||||||
if (deletedUser == null)
|
|
||||||
{
|
|
||||||
SaveErrors(_userLogic.Errors, "Ошибка при восстановлении пользователя студента", $"Не удалось восстановить пользователя студента {student.lastName} {student.firstName} {student.patronymicName}");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return deletedStudent;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private UserViewModel WorkWithUser(StudentSyncModel student)
|
private UserViewModel WorkWithUser(StudentSyncModel student)
|
||||||
{
|
{
|
||||||
var userName = $"{student.lastName}{(student.firstName.IsNotEmpty() ? $" {student.firstName[0]}." : string.Empty)}{(student.patronymicName.IsNotEmpty() ? $"{student.patronymicName[0]}." : string.Empty)}";
|
var userName = $"{student.lastName}{(student.firstName.IsNotEmpty() ? $" {student.firstName[0]}." : string.Empty)}{(student.patronymicName.IsNotEmpty() ? $"{student.patronymicName[0]}." : string.Empty)}";
|
||||||
@ -453,6 +430,8 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetYearFinish(student, studentGroupTo, order, orderStudentMoveType);
|
||||||
|
|
||||||
// создаем, если не нашли
|
// создаем, если не нашли
|
||||||
var studentOrder = _orderStudentRecordLogic.Create(new OrderStudentRecordSetBindingModel
|
var studentOrder = _orderStudentRecordLogic.Create(new OrderStudentRecordSetBindingModel
|
||||||
{
|
{
|
||||||
@ -461,7 +440,8 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
Info = info,
|
Info = info,
|
||||||
OrderStudentMoveType = orderStudentMoveType,
|
OrderStudentMoveType = orderStudentMoveType,
|
||||||
StudentGroupFromId = studentGroupFrom?.Id,
|
StudentGroupFromId = studentGroupFrom?.Id,
|
||||||
StudentGroupToId = studentGroupTo?.Id
|
StudentGroupToId = studentGroupTo?.Id,
|
||||||
|
StudentModel = student
|
||||||
});
|
});
|
||||||
if (studentOrder == null)
|
if (studentOrder == null)
|
||||||
{
|
{
|
||||||
@ -469,8 +449,6 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetYearFinish(student, studentGroupTo, order, studentOrder);
|
|
||||||
|
|
||||||
SaveLog($"Добавили запись к приказу {order.OrderNumber} по студенту {student} с формулировкой {info}");
|
SaveLog($"Добавили запись к приказу {order.OrderNumber} по студенту {student} с формулировкой {info}");
|
||||||
|
|
||||||
if (orderStudentMoveType == OrderStudentMoveType.ОтчислитьВСвязиСПереводом ||
|
if (orderStudentMoveType == OrderStudentMoveType.ОтчислитьВСвязиСПереводом ||
|
||||||
@ -595,14 +573,14 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetYearFinish(StudentViewModel student, StudentGroupViewModel group, OrderViewModel order, OrderStudentRecordViewModel studentOrder)
|
private void SetYearFinish(StudentViewModel student, StudentGroupViewModel group, OrderViewModel order, OrderStudentMoveType studentOrderType)
|
||||||
{
|
{
|
||||||
if (student == null || studentOrder == null)
|
if (student == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int year = DateTime.Now.Year;
|
int year = DateTime.Now.Year;
|
||||||
switch (studentOrder.OrderStudentMoveType)
|
switch (studentOrderType)
|
||||||
{
|
{
|
||||||
// у студента не меняется год зачисления
|
// у студента не меняется год зачисления
|
||||||
case OrderStudentMoveType.ПродлитьАкадем:
|
case OrderStudentMoveType.ПродлитьАкадем:
|
||||||
@ -617,7 +595,6 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
case OrderStudentMoveType.ОтчислитьПоСобственному:
|
case OrderStudentMoveType.ОтчислитьПоСобственному:
|
||||||
case OrderStudentMoveType.УбратьПоПереводу:
|
case OrderStudentMoveType.УбратьПоПереводу:
|
||||||
student.EnrollmentYearId = null;
|
student.EnrollmentYearId = null;
|
||||||
UpdateStudent(student);
|
|
||||||
return;
|
return;
|
||||||
// проблема с разными направлениями групп на разных курсах
|
// проблема с разными направлениями групп на разных курсах
|
||||||
case OrderStudentMoveType.ПеревестиНаСтаршийКурс:
|
case OrderStudentMoveType.ПеревестиНаСтаршийКурс:
|
||||||
@ -700,27 +677,6 @@ namespace DepartmentBusinessLogic.BusinessLogics.GenericBusinessLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
student.EnrollmentYearId = yearEnrollment.Id;
|
student.EnrollmentYearId = yearEnrollment.Id;
|
||||||
UpdateStudent(student);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateStudent(StudentViewModel student)
|
|
||||||
{
|
|
||||||
if (student == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var updateStudent = _studentLogic.GetElement(new StudentGetBindingModel { Id = student.Id });
|
|
||||||
if (updateStudent == null)
|
|
||||||
{
|
|
||||||
SaveErrors(_studentLogic.Errors, "Ошибка обновления данных студента", $"Не удалось найти данные студента {student.LastName} {student.FirstName} {student.Patronymic}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
updateStudent.EnrollmentYearId = student.EnrollmentYearId;
|
|
||||||
updateStudent = _studentLogic.Update(Mapper.MapToClass<StudentViewModel, StudentSetBindingModel>(updateStudent, true));
|
|
||||||
if (updateStudent == null)
|
|
||||||
{
|
|
||||||
SaveErrors(_studentLogic.Errors, "Ошибка обновления данных студента", $"Не удалось обновить данные студента {student?.LastName} {student?.FirstName} {student?.Patronymic}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SaveErrors(List<(string Title, string Message)> errors, string title, string message)
|
private void SaveErrors(List<(string Title, string Message)> errors, string title, string message)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using CoreModels.Enums.Department;
|
using CoreModels.Enums.Department;
|
||||||
using CoreModels.ModelsDepartment;
|
using CoreModels.ModelsDepartment;
|
||||||
|
using DepartmentContract.ViewModels;
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using ToolsModule.ManagmentEntity;
|
using ToolsModule.ManagmentEntity;
|
||||||
@ -39,5 +40,7 @@ namespace DepartmentContract.BindingModels
|
|||||||
public OrderStudentMoveType OrderStudentMoveType { get; set; }
|
public OrderStudentMoveType OrderStudentMoveType { get; set; }
|
||||||
|
|
||||||
public string Info { get; set; }
|
public string Info { get; set; }
|
||||||
|
|
||||||
|
public StudentViewModel StudentModel { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user