Example #1
0
        public ClientRegistrationResponse Post([FromBody] ClientRegistrationRequest request)
        {
            try
            {
                _logger.Info("register new client: ");
                _logger.Info(JsonConvert.SerializeObject(request, Formatting.Indented));

                var loginName = $"{request.FirstName[0].ToString().ToLowerInvariant()}.{request.LastName.ToLowerInvariant()}";

                var clientId = _userService.CreateClient(new RegisteredClient
                {
                    Country      = request.Country,
                    State        = RegisteredClientState.Pending,
                    CreationUser = loginName,
                    CreationDate = DateTime.Now,
                });

                var workContext = new WorkContext {
                    UserId = Guid.Empty, LoginName = loginName
                };

                var user = _userService.CreateUser(workContext, new User
                {
                    RegisteredClientId = clientId,
                    LoginName          = loginName,
                    FirstName          = request.FirstName,
                    LastName           = request.LastName,
                    Email                   = request.Email,
                    EmailIsValidated        = false,
                    Password                = request.EncryptedPassword,
                    PasswordLastChangedDate = DateTime.Now,
                    IsActive                = true,
                });

                var mailServerConfig = new MailServerConfiguration
                {
                    Hostname  = "smtp.gmail.com",
                    Port      = 587,
                    Username  = "******",
                    Password  = "******",
                    From      = "*****@*****.**",
                    EnableSsl = true,
                    IsActive  = true
                };

                var renderedMessage = _mailService.RenderMailContent("0000000000", "AppSolutions", "NewClientRegistrationUserMailAddressValidation", "EN", new
                {
                    FirstName        = request.FirstName,
                    LastName         = request.LastName,
                    MailAddress      = request.Email,
                    VerificationLink = $"http://localhost:29328/User/EmailVerification/{clientId}/{user.UserId}"
                });

                var message = new MailMessage
                {
                    From = new MailAddress {
                        Address = mailServerConfig.From
                    },
                    To = new List <MailAddress> {
                        new MailAddress {
                            Address = request.Email
                        }
                    },
                    IsBodyHtml = renderedMessage.IsBodyHtml,
                    Subject    = renderedMessage.Subject,
                    Body       = renderedMessage.Body,
                };

                _mailService.SendMail(mailServerConfig, message);

                return(ClientRegistrationResponse.Success(clientId, request.Email));
            }
            catch (Exception e)
            {
                _logger.Error(e);
                return(ClientRegistrationResponse.Error(e));
            }
        }