public async Task <IBaseDTO> Update(IBaseDTO newDto) { EmployeeDTO newEmp = (EmployeeDTO)newDto; EmployeeDTO oldEmp = (EmployeeDTO)await _employeeRep.GetById(newDto.Id); if (oldEmp.DepartmentId != newEmp.DepartmentId) { if (newEmp.Probation) { newDto.SetError("Нельзя переводить сотрудника на исп. сроке!"); return(newEmp); } var department = (CatalogDepartmentDTO)await _departmentRep.GetById(newEmp.DepartmentId); if (department.IsFull() && newEmp.TransferHeadAssent == false) { newDto.SetError("Нельзя переводить сотрудника в отдел с максимальным кол-ом сотрудников, без согласия руководства!"); return(newEmp); } EmployeeTransferDTO transfer = new EmployeeTransferDTO() { Confirm = true, ConfirmDate = DateTime.Now, EmployeeId = newEmp.Id, ToDepartmentId = newEmp.DepartmentId }; await _transferRep.Add(transfer); } return(await _employeeRep.Update(newDto)); }
public async Task <IBaseDTO> Add(IBaseDTO dto) { EmployeeDTO newEmp = (EmployeeDTO)dto; if (newEmp.QualificationId > (int)QualificationNames.Инженер) { newEmp.SetError("Новый сотрудник не должен быть выше по квалификации, чем 'Инженер'."); return(newEmp); } if (newEmp.Probation == false) { newEmp.SetError("Новый сотрудник должен быть на испытательном сроке."); return(newEmp); } if (new int[] { 1, 2, 3 }.Contains(newEmp.ProbationDays) == false) { newEmp.SetError("У нового сотрудника должен быть задан исп. срок (1, 2 или 3 месяца)!"); return(newEmp); } EmployeeTransferDTO transfer = new EmployeeTransferDTO() { Confirm = true, ConfirmDate = DateTime.Now, EmployeeId = newEmp.Id, ToDepartmentId = newEmp.DepartmentId }; await _transferRep.Add(transfer); return(await _employeeRep.Add(dto)); }