public async Task <OperationResult <string> > Handle(UserActivationcCodeRequestCommand request, CancellationToken cancellationToken) { var result = await unitOfWork.UsersRepository.GetUserByPhoneNumberAsync(request.PhoneNumber, cancellationToken); if (result.Result != null) { ActivationCode acCode = new ActivationCode(result.Result.Id, CodeTypes.PhoneConfirmed, Utility.Hash(result.Result.Username)); var gerateActivationCode = await unitOfWork.UsersRepository.ActivationCodeRepository.AddAsync(acCode, cancellationToken); if (gerateActivationCode.Success) { var registerSetting = await unitOfWork.SettingRepository.Get <RegisterUserSetting>(SettingEnum.RegisterUserSetting.EnumToString(), cancellationToken); if (registerSetting.Success) { SendNotif sendNotif = sendNotifs.Where(x => x.SendCodeType == registerSetting.Result.SendCodeVerifications) .FirstOrDefault(); var sendCode = await sendNotif.SendCodeAsync(gerateActivationCode.Result.Item2.ToString(), request.PhoneNumber, cancellationToken); if (sendCode.Success) { /// Save to Database await unitOfWork.CommitSaveChangeAsync(); return(OperationResult <string> .BuildSuccessResult(gerateActivationCode.Result.Item1)); } return(OperationResult <string> .BuildFailure(sendCode.ErrorMessage)); } return(OperationResult <string> .BuildFailure(registerSetting.ErrorMessage)); } return(OperationResult <string> .BuildFailure(gerateActivationCode.ErrorMessage)); } return(OperationResult <string> .BuildFailure("User Not found")); }
public async Task <OperationResult <string> > Handle(CreateUserCommand request, CancellationToken cancellationToken) { string fileName = null; if (request.Photo != null) { var uploadFile = await UploadUtiltie.UploadInCustomePath(request.Photo, ".png", request.Username, UploadFolderPath.PathUserUploadFolder(), UploadFolderPath.PathAvatarUserUploadFolder()); fileName = uploadFile.Result; } /// Register User var user = new User(request.Username, request.Password, request.Name, request.Family, request.PhoneNumber, request.Email, fileName); var addUser = await unitOfWork.UsersRepository.AddAsync(user, cancellationToken); if (addUser.Success) { try { var registerSetting = await unitOfWork.SettingRepository.Get <RegisterUserSetting>(SettingEnum.RegisterUserSetting.EnumToString(), cancellationToken); if (registerSetting.Result != null) { /// Add User Role var addUserRole = await mediator.Send(new CreateUserRoleCommand(registerSetting.Result.RegisterRoleByAdmin, user.Id)); if (addUserRole.Success) { /// Add User Generation Code ActivationCode acCode = new ActivationCode(user.Id, CodeTypes.PhoneConfirmed, Utility.Hash(user.Username)); var gerateActivationCode = await unitOfWork.UsersRepository.ActivationCodeRepository.AddAsync(acCode, cancellationToken); if (gerateActivationCode.Success) { /// Send Registration Code SendNotif sendNotif = sendNotifs.Where(x => x.SendCodeType == registerSetting.Result.SendCodeVerifications) .FirstOrDefault(); var sendCode = await sendNotif.SendCodeAsync(gerateActivationCode.Result.Item2.ToString(), user.PhoneNumber, cancellationToken); if (sendCode.Success) { /// Save to Database await unitOfWork.CommitSaveChangeAsync(); return(OperationResult <string> .BuildSuccessResult(gerateActivationCode.Result.Item1)); } } } } } catch (Exception ex) { return(OperationResult <string> .BuildFailure(ex.Message)); } } return(OperationResult <string> .BuildFailure(addUser.ErrorMessage)); }