Exemplo n.º 1
0
        private async Task CheckUserAsync(string firstName, string lastName, string email, string phone, string pwd, string role)
        {
            var userLogin = await _userHelper.GetUserByEmailAsync(email);

            if (userLogin == null)
            {
                userLogin = new UserLogin {
                    Email = email, PhoneNumber = phone, UserName = email
                };
                var user = new Usuario   {
                    FirstName = firstName, LastName = lastName, UserLogin = userLogin
                };

                await _userHelper.AddUserAsync(userLogin, pwd);

                await _userHelper.AddUserToRoleAsync(userLogin, role);

                _context.Usuarios.Add(user);
                await _context.SaveChangesAsync();

                var defaultToken = await _userHelper.GenerateEmailConfirmationTokenAsync(userLogin);

                await _userHelper.ConfirmEmailAsync(userLogin, defaultToken);
            }
        }
Exemplo n.º 2
0
        private async Task <User> AddUserAsync(AddUserViewModel model)
        {
            User user = new User
            {
                Address     = model.Address,
                RFC         = model.RFC,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username,
                Latitude    = model.Latitude,
                Longitude   = model.Longitude
            };

            IdentityResult result = await _userHelper.AddUserAsync(user, model.Password);

            if (result != IdentityResult.Success)
            {
                return(null);
            }

            User newUser = await _userHelper.GetUserByEmailAsync(model.Username);

            await _userHelper.AddUserToRoleAsync(newUser, "Customer");

            return(newUser);
        }
Exemplo n.º 3
0
        private async Task <User> CreateUserAsync(AddUserViewModel model)
        {
            var user = new User
            {
                Address     = model.Address,
                Document    = model.Document,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username
            };

            var result = await _userHelper.AddUserAsync(user, model.Password);

            if (result.Succeeded)
            {
                user = await _userHelper.GetUserByEmailAsync(model.Username);

                await _userHelper.AddUserToRoleAsync(user, "Owner");

                return(user);
            }

            return(null);
        }
Exemplo n.º 4
0
        private async Task <User> CheckUserAsync(
            string document,
            string firstName,
            string lastName,
            string email,
            string phone,
            string address,
            string role)
        {
            var user = await _userHelper.GetUserByEmailAsync(email);

            if (user == null)
            {
                user = new User
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Address     = address,
                    Document    = document
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, role);

                var token = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                await _userHelper.ConfirmEmailAsync(user, token);
            }

            return(user);
        }
Exemplo n.º 5
0
        private async Task <User> AddUser(string userName, string firstName, string lastName, string role)
        {
            var user = new User
            {
                FirstName = firstName,
                LastName  = lastName,
                Email     = userName,
                UserName  = userName,
                Address   = "Quito"
            };

            var result = await _userHelper.AddUserAsync(user, "Pwd1234");

            if (result != IdentityResult.Success)
            {
                throw new InvalidOperationException("Could not create the user in seeder");
            }

            await _userHelper.AddUserToRoleAsync(user, role);

            var token = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

            await _userHelper.ConfirmEmailAsync(user, token);

            return(user);
        }
Exemplo n.º 6
0
        private async Task <User> AddUser(AddUserViewModel view)
        {
            var user = new User
            {
                Address     = view.Address,
                Document    = view.Document,
                Email       = view.Username,
                FirstName   = view.FirstName,
                LastName    = view.LastName,
                PhoneNumber = view.PhoneNumber,
                UserName    = view.Username,
                Latitude    = view.Latitude,
                Longitude   = view.Longitude
            };

            var result = await _userHelper.AddUserAsync(user, view.Password);

            if (result != IdentityResult.Success)
            {
                return(null);
            }

            var newUser = await _userHelper.GetUserByEmailAsync(view.Username);

            await _userHelper.AddUserToRoleAsync(newUser, "Customer");

            return(newUser);
        }
Exemplo n.º 7
0
        private async Task <UserEntity> CheckUserAsync(string document, string firstName, string lastName, string email, string phone,
                                                       string address, UserType userType)
        {
            UserEntity user = await _userHelper.GetUserAsync(email); //busca email

            if (user == null)
            {
                user = new UserEntity //crea el user
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Address     = address,
                    Document    = document,
                    Team        = _context.Teams.FirstOrDefault(), //coge el primer equipo
                    UserType    = userType
                };

                await _userHelper.AddUserAsync(user, "123456");                  //crea el usuario

                await _userHelper.AddUserToRoleAsync(user, userType.ToString()); //añade el role indicado

                var token = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                await _userHelper.ConfirmEmailAsync(user, token);
            }

            return(user);
        }
Exemplo n.º 8
0
        private async Task <Usuario> CheckUserAsync(string Nombres, string Apellidos, string email, string telefono, string rol)
        {
            var usuario = await _userHelper.GetUserByEmailAsync(email);

            if (usuario == null)
            {
                usuario = new Usuario
                {
                    Nombres     = Nombres,
                    Apellidos   = Apellidos,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = telefono
                };

                await _userHelper.AddUserAsync(usuario, "12345678");

                await _userHelper.AddUserToRoleAsync(usuario, rol);
            }
            var token = await _userHelper.GenerateEmailConfirmationTokenAsync(usuario);

            await _userHelper.ConfirmEmailAsync(usuario, token);


            return(usuario);
        }
Exemplo n.º 9
0
        public async Task SeedAsync()
        {
            await context.Database.EnsureCreatedAsync();

            var user = await userHelper.GetUserByEmailAsync("*****@*****.**");

            if (user == null)
            {
                user = new User
                {
                    FirstName   = "Raúl",
                    LastName    = "Grados",
                    Email       = "*****@*****.**",
                    UserName    = "******",
                    PhoneNumber = "+51961819297"
                };

                var result = await userHelper.AddUserAsync(user, "mejorando");

                if (result != IdentityResult.Success)
                {
                    throw new InvalidOperationException("Could not create the user in seeder");
                }
            }

            if (!context.Products.Any())
            {
                AddProduct("iPhone X", user);
                AddProduct("Magic Mouse", user);
                AddProduct("Keyboard Logitech", user);
                await context.SaveChangesAsync();
            }
        }
Exemplo n.º 10
0
        private async Task <UserEntity> CheckUserAsync(
            string document,
            string firstName,
            string lastName,
            string email,
            string phone,
            UserType userType)
        {
            var user = await _userHelper.GetUserAsync(email);

            if (user == null)
            {
                user = new UserEntity
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Document    = document,
                    UserType    = userType,
                    PicturePath = $"~/images/Users/CaraFeliz.png",
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());

                var token = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                await _userHelper.ConfirmEmailAsync(user, token);
            }

            return(user);
        }
Exemplo n.º 11
0
        public async Task SeedAsync()
        {
            await context.Database.EnsureCreatedAsync();

            var user = await userHelper.GetUserByEmailAsync("*****@*****.**");

            if (user == null)
            {
                user = new User
                {
                    FirstName   = "Carlos",
                    LastName    = "Montoya",
                    Email       = "*****@*****.**",
                    UserName    = "******",
                    PhoneNumber = "1234567"
                };

                var result = await userHelper.AddUserAsync(user, "123");

                if (result != IdentityResult.Success)
                {
                    throw new InvalidOperationException("Could not create the user in seeder");
                }
            }

            if (!context.Products.Any())
            {
                AddProduct("iPhone X", user);
                AddProduct("Magic Mouse", user);
                AddProduct("iWatch Series 4", user);
                await context.SaveChangesAsync();
            }
        }
Exemplo n.º 12
0
        private async Task <User> AddUser(AddUserViewModel view)
        {
            var user = new User
            {
                Address     = view.Address,
                Document    = view.Document,
                Email       = view.Username,
                FirstName   = view.FirstName,
                LastName    = view.LastName,
                PhoneNumber = view.PhoneNumber,
                UserName    = view.Username
            };

            var result = await _userHelper.AddUserAsync(user, view.Password);

            if (result != IdentityResult.Success)
            {
                ModelState.AddModelError(string.Empty, result.Errors.FirstOrDefault().Description);
                return(null);
            }

            var newUser = await _userHelper.GetUserByEmailAsync(view.Username);

            await _userHelper.AddUserToRoleAsync(newUser, "Customer");

            return(newUser);
        }
Exemplo n.º 13
0
        public async Task SeedAsync()
        {
            await _context.Database.EnsureCreatedAsync();

            var user = await _userHelper.GetUserByEmailAsync("*****@*****.**");

            if (user == null)
            {
                user = new User
                {
                    FirstName = "rafael",
                    LastName  = "jesus",
                    Email     = "*****@*****.**",
                    UserName  = "******",
                };

                var result = await _userHelper.AddUserAsync(user, "123456");

                if (result != IdentityResult.Success)
                {
                    throw new InvalidOperationException("could not creat the user in seeder");
                }
            }

            if (!_context.Products.Any())
            {
                this.AddProduct("iPhone X", user);
                this.AddProduct("Rato Mickey", user);
                this.AddProduct("iWatch serie 4", user);
                this.AddProduct("millennium falcon", user);
                await _context.SaveChangesAsync();
            }
        }
Exemplo n.º 14
0
        private async Task <User> CheckUserAsync(string document, string firstName, string lastName, string email, string phone, string address,
                                                 UserType userType)
        {
            var user = await _userHelper.GetUserAsync(email);

            if (user == null)
            {
                user = new User
                {
                    Document    = document,
                    Email       = email,
                    FirstName   = firstName,
                    LastName    = lastName,
                    Address     = address,
                    City        = _context.Cities.FirstOrDefault(),
                    UserType    = userType,
                    UserName    = email,
                    PhoneNumber = phone,
                };

                await _userHelper.AddUserAsync(user, "Eabs123.");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());

                //Aqui confirmo el usuario creado con token(este por que es el superusuario)
                var token = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                await _userHelper.ConfirmEmailAsync(user, token);
            }

            return(user);
        }
Exemplo n.º 15
0
        public async Task <IActionResult> Create(AddUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new User
                {
                    Address     = model.Address,
                    Document    = model.Document,
                    Email       = model.Username,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    PhoneNumber = model.PhoneNumber,
                    UserName    = model.Username
                };

                var response = await _userHelper.AddUserAsync(user, model.Password);

                if (response.Succeeded)
                {
                    var userInDB = await _userHelper.GetUserByEmailAsync(model.Username);

                    await _userHelper.AddUserToRoleAsync(userInDB, "Admin");

                    var admin = new Admin
                    {
                        User = userInDB
                    };

                    _dataContext.Admins.Add(admin);

                    try
                    {
                        await _dataContext.SaveChangesAsync();

                        var myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                        var tokenLink = Url.Action("ConfirmEmail", "Account", new
                        {
                            userid = user.Id,
                            token  = myToken
                        }, protocol: HttpContext.Request.Scheme);

                        _mailHelper.SendMail(model.Username, "Email confirmation", $"<h1>Email Confirmation</h1>" +
                                             $"To allow the user, " +
                                             $"plase click in this link:</br></br><a href = \"{tokenLink}\">Confirm Email</a>");

                        return(RedirectToAction(nameof(Index)));
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError(string.Empty, ex.ToString());
                        return(View(model));
                    }
                }

                ModelState.AddModelError(string.Empty, response.Errors.FirstOrDefault().Description);
            }

            return(View(model));
        }
Exemplo n.º 16
0
        private async Task <User> CheckUserAsync(
            string firstName,
            string lastName,
            string email,
            UserType userType)
        {
            User user = await _userHelper.GetUserAsyncByEmail(email);

            if (user == null)
            {
                user = new User
                {
                    FirstName = firstName,
                    LastName  = lastName,
                    IsActive  = true,
                    Email     = email,
                    UserName  = email,
                    UserType  = userType
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());
            }

            return(user);
        }
Exemplo n.º 17
0
        private async Task <User> CheckUserAsync(string lastName, string firstName, string mail, string phone, string password, string rol)
        {
            var user = await userHelper.GetUserByEmailAsync(mail);

            if (user == null)
            {
                user = new User
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = mail,
                    UserName    = mail,
                    PhoneNumber = phone,
                };

                var result = await userHelper.AddUserAsync(user, password);

                if (result != IdentityResult.Success)
                {
                    throw new InvalidOperationException("No se puede crear el usuario en la base de datos");
                }
                await userHelper.AddUserToRoleAsync(user, rol);
            }
            return(user);
        }
Exemplo n.º 18
0
        private async Task <SlaveEntity> CheckUserAsync(
            string document,
            string firstName,
            string lastName,
            string email,
            string phone,
            UserType userType)
        {
            SlaveEntity user = await _userHelper.GetUserByEmailAsync(email);

            if (user == null)
            {
                user = new SlaveEntity
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Document    = document,
                    UserType    = userType
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());
            }

            return(user);
        }
Exemplo n.º 19
0
        //implementación de método en el mismo owner pero después de se debe pasar a un helpers.
        private async Task <User> AddUser(AddUserViewModel model)
        {
            var user = new User
            {
                Address     = model.Address,
                Document    = model.Document,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username,
            };

            var response = await _userHelper.AddUserAsync(user, model.Password);

            if (response != IdentityResult.Success)
            {
                return(null);
            }

            var userInDb = await _userHelper.GetUserByEmailAsync(model.Username);

            await _userHelper.AddUserToRoleAsync(userInDb, "Customer");

            return(userInDb);
        }
Exemplo n.º 20
0
        private async Task <User> CheckUserAsync(string firsName, string lastName, string email, string phone, string address, UserType userType)
        {
            User user = await _userHelper.GetUserAsync(email);

            if (user == null)
            {
                user = new User
                {
                    FirstName   = firsName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Address     = address,
                    UserType    = userType,
                    City        = _context.Cities.FirstOrDefault()
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());

                string token = await _userHelper.GenerateEmailConfirmatioTokenAsync(user);

                await _userHelper.ConfirmEmailAsync(user, token);
            }

            return(user);
        }
Exemplo n.º 21
0
        private async Task <User> CheckUserAsync(
            string document,
            string firstName,
            string lastName,
            string email,
            string phone,
            string role)
        {
            var user = await _userHelper.GetUserByEmailAsync(email);

            if (user == null)
            {
                user = new User
                {
                    Document    = document,
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, role);
            }

            return(user);
        }
Exemplo n.º 22
0
        private async Task <User> CheckUserAsync(string document,
                                                 string firstName,
                                                 string lastName,
                                                 int age,
                                                 string gender,
                                                 string nationality,
                                                 string email,
                                                 string role)
        {
            var user = await _userHelper.GetUserByEmailAsync(email);

            if (user == null)
            {
                user = new User
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    Nationality = nationality,
                    Gender      = gender,
                    Age         = age,
                    Document    = document
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, role);
            }

            return(user);
        }
Exemplo n.º 23
0
        private async Task <User> CheckUserAsync(string document, TypeDocument TypeDocument, string firstName, string lastName, string email, string phone, string address, bool state, TypeUser role)
        {
            var user = await _userHelper.GetUserByEmailAsync(email);

            if (user == null)
            {
                user = new User
                {
                    FirstName    = firstName,
                    TypeDocument = TypeDocument,
                    LastName     = lastName,
                    Email        = email,
                    UserName     = email,
                    PhoneNumber  = phone,
                    Address      = address,
                    Document     = document,
                    TypeUser     = role,
                    State        = state
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, role.Type);
            }

            return(user);
        }
Exemplo n.º 24
0
        private async Task <User> AddUser(AddUserViewModel model)
        {
            var user = new User
            {
                Address     = model.Address,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username
            };

            var result = await _userHelper.AddUserAsync(user, model.Password);

            if (result != IdentityResult.Success)
            {
                return(null);
            }

            var newUser = await _userHelper.GetUserByEmailAsync(model.Username);

            await _userHelper.AddUserToRoleAsync(newUser, "Admin");

            return(newUser);
        }
Exemplo n.º 25
0
        public async Task <IActionResult> Register(AddUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                UserEntity user = await _userHelper.AddUserAsync(model, UserType.User);

                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, "This email is already used.");
                    return(View(model));
                }

                var myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                var tokenLink = Url.Action("ConfirmEmail", "Account", new
                {
                    userid = user.Id,
                    token  = myToken
                }, protocol: HttpContext.Request.Scheme);

                var response = _mailHelper.SendMail(model.Username, "Email confirmation", $"<h1>Email Confirmation</h1>" +
                                                    $"To allow the user, " +
                                                    $"plase click in this link:</br></br><a href = \"{tokenLink}\">Confirm Email</a>");
                if (response.IsSuccess)
                {
                    ViewBag.Message = "The instructions to allow your user has been sent to email.";
                    return(View(model));
                }

                ModelState.AddModelError(string.Empty, response.Message);
            }

            return(View(model));
        }
Exemplo n.º 26
0
        private async Task <UserEntity> CheckUserAsync(
            string document,
            string firstName,
            string lastName,
            string email,
            string phone,
            string address,
            UserType userType)
        {
            var user = await _userHelper.GetUserByEmailAsync(email);

            if (user == null)
            {
                user = new UserEntity
                {
                    FirstName   = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Address     = address,
                    Document    = document,
                    Team        = _context.Teams.FirstOrDefault(),
                    UserType    = userType
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());
            }

            return(user);
        }
Exemplo n.º 27
0
        private async Task <User> createUserAsync(AddUserViewModel model)//Debe retornar el usuario
        {
            //2. Creamos el objeto user con los atributos capturados del modelo
            User user = new User
            {
                Address     = model.Address,
                Document    = model.Document,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username
            };

            //3. Creamos el usuario usando el userHelper y el user que acabamos de crear
            Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.AddUserAsync(user, model.Password);

            if (result.Succeeded)//4. Si lo pudo crear lo traemos de nuevo en nuestra variable user
            {
                user = await _userHelper.GetUserByEmailAsync(model.Username);

                //5. Ahora le agregamos el rol a este usuario
                await _userHelper.AddUserToRoleAsync(user, "Owner");

                //6. retornamos el usuario
                return(user);
            }
            //7. si falla retornamos null
            return(null);
        }
Exemplo n.º 28
0
        private async Task <User> CheckUserAsync(
            string document,
            string firstName,
            string lastName,
            string email,
            string phone,
            UserType userType)
        {
            User user = await _userHelper.GetUserAsync(email);

            if (user == null)
            {
                user = new User
                {
                    Name        = firstName,
                    LastName    = lastName,
                    Email       = email,
                    UserName    = email,
                    PhoneNumber = phone,
                    Document    = document,
                    UserType    = userType
                };

                await _userHelper.AddUserAsync(user, "123456");

                await _userHelper.AddUserToRoleAsync(user, userType.ToString());

                string token = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                await _userHelper.ConfirmEmailAsync(user, token);
            }
            return(user);
        }
Exemplo n.º 29
0
        public async Task <IActionResult> Create(AddUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                var imagePath = string.Empty;

                if (model.ImageFile != null)
                {
                    imagePath = await _imageHelper.UploadImageAsync(model.ImageFile, "users");
                }

                User user = await _userHelper.AddUserAsync(model, imagePath, UserType.Admin);

                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, "Este mail ya está en uso.");
                    model.Departments   = _combosHelper.GetComboDepartments();
                    model.Cities        = _combosHelper.GetComboCities(model.DepartmentId);
                    model.Neighborhoods = _combosHelper.GetComboNeighborhoods(model.CityId);
                    return(View(model));
                }

                string myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                string tokenLink = Url.Action("ConfirmEmail", "Account", new
                {
                    userid = user.Id,
                    token  = myToken
                }, protocol: HttpContext.Request.Scheme);

                Response response = _mailHelper.SendMail(model.Username, "Confirmación de Email", $"<h1>Confirmación de Email</h1>" +
                                                         $"Para habilitar el Usuario, " +
                                                         $"por favor haga click en este link:</br></br><a href = \"{tokenLink}\">Confirmación de Email</a>");
                if (response.IsSuccess)
                {
                    ViewBag.Message = "Las instrucciones para habilitar su usuario han sido enviadas por mail.";
                    return(View(model));
                }

                ModelState.AddModelError(string.Empty, response.Message);
            }

            model.Departments   = _combosHelper.GetComboDepartments();
            model.Cities        = _combosHelper.GetComboCities(model.DepartmentId);
            model.Neighborhoods = _combosHelper.GetComboNeighborhoods(model.CityId);
            return(View(model));
        }
Exemplo n.º 30
0
        public async Task <IActionResult> Register(AddUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                Guid imageId = Guid.Empty;

                if (model.ImageFile != null)
                {
                    imageId = await _blobHelper.UploadBlobAsync(model.ImageFile, "users");
                }

                User user = await _userHelper.AddUserAsync(model, imageId, UserType.User);

                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, "This email is already used.");
                    model.Countries   = _combosHelper.GetComboCountries();
                    model.Departments = _combosHelper.GetComboDepartments(model.CountryId);
                    model.Cities      = _combosHelper.GetComboCities(model.DepartmentId);
                    return(View(model));
                }

                string myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(user);

                string tokenLink = Url.Action("ConfirmEmail", "Account", new
                {
                    userid = user.Id,
                    token  = myToken
                }, protocol: HttpContext.Request.Scheme);

                Response response = _mailHelper.SendMail(model.Username, "Email confirmation", $"<h1>Email Confirmation</h1>" +
                                                         $"To allow the user, " +
                                                         $"plase click in this link:<p><a href = \"{tokenLink}\">Confirm Email</a></p>");
                if (response.IsSuccess)
                {
                    ViewBag.Message = "The instructions to allow your user has been sent to email.";
                    return(View(model));
                }

                ModelState.AddModelError(string.Empty, response.Message);
            }

            model.Countries   = _combosHelper.GetComboCountries();
            model.Departments = _combosHelper.GetComboDepartments(model.CountryId);
            model.Cities      = _combosHelper.GetComboCities(model.DepartmentId);
            return(View(model));
        }