public async Task <IActionResult> Create(Commisioner commisioner)
        {
            if (ModelState.IsValid)
            {
                var commisionerUser = new IdentityUser {
                    Email    = commisioner.Email,
                    UserName = commisioner.Nic
                };

                try
                {
                    commisioner.CommisionerPassword = _hash.EncryptString(commisioner.CommisionerPassword);
                    _context.Add(commisioner);
                    await _context.SaveChangesAsync();

                    await _usuarios._userManager.CreateAsync(commisionerUser, commisioner.CommisionerPassword);

                    var RoleName      = _context.Role.FirstOrDefault(v => v.RoleId.Equals(commisioner.RoleId)).RoleValue;
                    var addRoleToUser = await _usuarios._userManager.FindByEmailAsync(commisioner.Email);

                    await _usuarios._userManager.AddToRoleAsync(addRoleToUser, RoleName);
                }
                catch (Exception)
                {
                    return(View(commisioner));
                }

                return(RedirectToAction(nameof(Index)));
            }
            return(View(commisioner));
        }
        public async Task <IActionResult> Edit(int id, [Bind("CommisionerId,FirstName,LastName,SecondLastName,Nic,ContractNumber,Email,CommisionerPassword")] Commisioner commisioner)
        {
            if (id != commisioner.CommisionerId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(commisioner);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CommisionerExists(commisioner.CommisionerId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(commisioner));
        }
        public async Task <IActionResult> Create([Bind("CommisionerId,FirstName,LastName,SecondLastName,Nic,ContractNumber,Email,CommisionerPassword")] Commisioner commisioner)
        {
            if (ModelState.IsValid)
            {
                _context.Add(commisioner);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(commisioner));
        }
        public async Task <IActionResult> Edit(int id, Commisioner commisioner)
        {
            if (id != commisioner.CommisionerId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (string.IsNullOrEmpty(commisioner.CommisionerPassword) && string.IsNullOrWhiteSpace(commisioner.CommisionerPassword))
                    {
                        var dataCommisioner = _context.Commisioner.FirstOrDefault(v => v.CommisionerId.Equals(id));
                        commisioner.CommisionerPassword = dataCommisioner.CommisionerPassword;
                    }

                    var      user     = HttpContext.Session.GetString("User");
                    UserData dataItem = JsonConvert.DeserializeObject <UserData>(user.ToString());

                    var userObtainedById = await _usuarios._userManager.FindByIdAsync(dataItem.Id);

                    await _usuarios._userManager.ChangePasswordAsync(userObtainedById, userObtainedById.PasswordHash, commisioner.CommisionerPassword);

                    userObtainedById.Email           = commisioner.Email;
                    userObtainedById.NormalizedEmail = commisioner.Email.ToUpper();

                    commisioner.CommisionerPassword = _hash.EncryptString(commisioner.CommisionerPassword);
                    _context.Update(commisioner);
                    _context.Update(userObtainedById);

                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CommisionerExists(commisioner.CommisionerId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(commisioner));
        }