Ejemplo n.º 1
0
        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);
        }