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."));
            }
        }