public CreateAccountResponse Execute(string username, CreateAccountRequest createAccountRequest)
{
if (!_authorizationService.CanExecute(username, "CreateAccounts"))
return new CreateAccountResponse
{
Success = false,
Errors = new List<string>
{
"User is not authorized to Create Accounts",
},
};
IValidator<CreateAccountRequest> createAccountValidator =
_validatorFactory.GetValidator<CreateAccountRequest>();
ValidationResult validationResult = createAccountValidator.Validate(createAccountRequest);
if (!validationResult.IsValid)
return new CreateAccountResponse
{
Success = false,
Errors = validationResult.Errors.Select(x => x.ErrorMessage),
};
if (_accountRepository.UserNameExists(createAccountRequest.Username))
return new CreateAccountResponse
{
Success = false,
Errors =
new List<string>
{"The username " + createAccountRequest.Username + " is unavailable."}
};
string tempPassword = createAccountRequest.Username + "_password";
string encryptedTempPassword = _cryptographyService.Encrypt(tempPassword);
_accountRepository.Create(createAccountRequest, encryptedTempPassword);
string loginUrl = ConfigurationManager.AppSettings["HostUrl"];
var message = new StringBuilder();
message.Append("<html><head><title></title></head><body>");
message.Append("<div style='font-size: 12px;font-weight: bold;font-style: italic;'>");
message.Append("Please login at " + loginUrl + " using the following information<br/>");
message.Append("Username: " + createAccountRequest.Username + "<br/>");
message.Append("Password: " + tempPassword);
message.Append("</div></body></html>");
_emailService.SendEmail(new SendMailRequest
{
To = createAccountRequest.EmailAddress,
Subject = "Your Brand Journalists Employee account has been created",
Message = message.ToString(),
});
return new CreateAccountResponse
{
Success = true,
};
}