public async Task <IdentityResult> CreateAccountAsync(UserDto newUser, string password) { IdentityResult userResult = null; using (var transaction = unitOfWork.BeginTransaction()) { try { DateTime operationTime = DateTime.UtcNow; User user = mapper.Map <User>(newUser); user.CreatedTime = operationTime; userResult = await userManager.CreateAsync(user, password); if (userResult.Succeeded) { var roleResult = await userManager.AddToRoleAsync(user, "Default User"); transaction.Commit(); unitOfWork.Complete(); await emailService.NotifyByEmail("Su cuenta ha sido creada", new List <MailAddress>() { newUser.GetMailAddress() }, "NewAccountMailTemplate", await templateFactory.NewAccountTemplateAsync(newUser)); } else { transaction.Rollback(); unitOfWork.Rollback(); } } catch (Exception exc) { log.Log(LogLevel.Fatal, exc); transaction.Rollback(); unitOfWork.Rollback(); } } return(userResult); }