Example #1
0
        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);
            }
        }