public async Task <ActionResult <UserDTO> > Post([FromBody] UserRegisterModel userRegisterModel) { if (!ModelState.IsValid) { return(BadRequest("Not all of the needed information is supplied.")); } userRegisterModel.Password = PasswordMethods.GeneratePassword(true, true, true, true, 16); var savedUser = await UnitOfWork.UsersRepository.CreateUser(userRegisterModel.Username, userRegisterModel.Password, userRegisterModel.FirstName, userRegisterModel.LastName); if (savedUser == null) { return(BadRequest("Error saving user to DB")); } var sendEmailResult = EmailMethods.SendEmail(userRegisterModel.Username, userRegisterModel.FirstName, userRegisterModel.LastName, userRegisterModel.Password); if (!sendEmailResult) { BadRequest("Email is not sent!"); } await UnitOfWork.SaveChangesAsync(); var userMapResult = Mapper.Map <User, UserDTO>(savedUser); return(Created(string.Empty, userMapResult)); }
private static void ValidateAndSend(MessageParams msgParams, bool useAsync) { // Validate the email objects var validator = new MessageParamsValidator(); validator.Validate(msgParams); // Send the email MailMessage mailMessage = EmailMethods.CreateMailMessage(msgParams); if (useAsync) { //Async is non-blocking but can be blocked from sending (probably as it mimics spam) -- use for notifications EmailMethods.SendEmailAsync(mailMessage); } else { //Sync is blocking but more reliable -- use for batch EmailMethods.SendEmail(mailMessage); } }