public async Task <IActionResult> Validation(AccountForRegisterDTO accountRegister)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCode(400, new {
                    errors = ModelState.Select(error => error.Value.Errors).Where(c => c.Count > 0).ToList()
                }));
            }
            var validationUnique = new Dictionary <dynamic, dynamic>();

            if (_repo.Exists(accountRegister.Username))
            {
                validationUnique.Add("Username", "Username already used");
            }
            if (_repo.Exists(accountRegister.Email))
            {
                validationUnique.Add("Email", "Email already used");
            }
            if (_repo.Exists(accountRegister.PhoneNumber))
            {
                validationUnique.Add("Phone", "Phone number already used");
            }
            return(StatusCode(400, new {
                errors = validationUnique
            }));
        }
        public async Task <IActionResult> Register(AccountForRegisterDTO accountForRegister)
        {
            if (_repo.Exists(accountForRegister.Email) || _repo.Exists(accountForRegister.Username))
            {
                return(BadRequest("Username or email already registered"));
            }
            // byte[] passwordHashed, passwordSalt;
            // HashPassword(accountForRegister.Password, out passwordHashed, out passwordSalt);
            var account = new Engrisk.Models.Account()
            {
                UserName    = accountForRegister.Username,
                Fullname    = accountForRegister.Fullname,
                Address     = accountForRegister.Address,
                Email       = accountForRegister.Email,
                DateOfBirth = accountForRegister.DateOfBirth,
                PhoneNumber = accountForRegister.PhoneNumber
            };
            var accountCreated = await _userManager.CreateAsync(account, accountForRegister.Password);

            if (accountCreated.Succeeded)
            {
                foreach (var role in accountForRegister.Roles)
                {
                    await _userManager.AddToRoleAsync(account, role);
                }
                return(CreatedAtAction("GetAccountDetail", new { id = account.Id }, account));
            }
            return(BadRequest());
        }