/// <summary> /// Проверяем, существует ли сотрудник, чью запись хотят обновить, и заменяем в ней данные. /// </summary> /// <param name="request"></param> /// <returns>Обновленная запись сотрудника</returns> protected override UpdateEmployeeUseCaseResult Handler(UpdateEmployeeUseCaseRequest request) { Employee employee = _employeeGateway.Find(e => e.Id == request.Id).First(); if (employee == null) { throw new Exception("Сотрудник не найден"); } employee.PositionId = request.PositionId; UserProfile profile = _profileGateway.Find(p => p.UserId == employee.UserId).First(); profile.FirstName = request.FirstName; profile.LastName = request.LastName; profile.MiddleName = request.MiddleName; profile.Birthdate = request.Birthdate; profile.Phone = Phone.For(request.Phone); profile.Gender = (ProfileGender)request.Gender; _employeeGateway.FillEmployee(employee); return(new UpdateEmployeeUseCaseResult { Employee = _mapper.Map <EmployeeModel>(employee) }); }
/// <summary> /// Удаляем запись сотрудника и связанные с ней записи пользователя и пользовательской информации /// </summary> /// <param name="request"></param> /// <returns></returns> protected override EmptyUseCaseResult Handler(RemoveEmployeeUseCaseRequest request) { Employee employee = _employeeGateway.Find(e => e.Id == request.Id).First(); if (employee == null) { throw new Exception($"Сотрудник не может быть удален, т.к. не существует сотрудника с ID {request.Id}"); } int userId = employee.UserId; _employeeGateway.Remove(employee); _profileGateway.Remove(p => p.UserId == userId); _userGateway.Remove(user => user.Id == userId); return(new EmptyUseCaseResult()); }