public async Task <ActionResult> PutSecretary(long secretaryId, UpdateSecretaryDto secretaryDto) { var updatedSecretary = await _secretaryService.UpdateSecretaryAsync(secretaryId, secretaryDto); return(updatedSecretary.ToActionResult()); }
public async Task <Result <SecretaryDto> > UpdateSecretaryAsync(long secretaryId, UpdateSecretaryDto secretaryDto) { try { var foundSecretary = await _unitOfWork.SecretaryRepository .GetByIdAsync(secretaryId); if (foundSecretary == null) { return(Result <SecretaryDto> .GetError(ErrorCode.NotFound, "Secretary not found")); } var isEmailChangableTo = await _accountService .IsEmailChangableToAsync((long)foundSecretary.AccountId, secretaryDto.Email); if (!isEmailChangableTo) { return(Result <SecretaryDto> .GetError(ErrorCode.Conflict, "Email is already taken")); } foundSecretary.Account.Email = secretaryDto.Email ?? foundSecretary.Account.Email; foundSecretary.Account.FirstName = secretaryDto.FirstName ?? foundSecretary.Account.FirstName; foundSecretary.Account.LastName = secretaryDto.LastName ?? foundSecretary.Account.LastName; await _unitOfWork.CommitAsync(); return(Result <SecretaryDto> .GetSuccess(_mapper.Map <SecretaryDto>(foundSecretary))); } catch { _unitOfWork.Rollback(); return(Result <SecretaryDto> .GetError(ErrorCode.InternalServerError, "Cannot update mentor.")); } }