public async Task <IActionResult> Edit(int id, CnFProfile cnFProfile)
        {
            if (id != cnFProfile.Id)
            {
                return(NotFound());
            }

            var profile = await _context.CnFProfiles.Where(m => m.Id == id).FirstOrDefaultAsync();

            profile.Address              = cnFProfile.Address;
            profile.Name                 = cnFProfile.Name;
            profile.PhoneNumber          = cnFProfile.PhoneNumber;
            profile.VerificationNumber   = cnFProfile.VerificationNumber;
            cnFProfile.ApplicationUserId = (await _userManager.FindByNameAsync(HttpContext.User.Identity.Name)).Id; //same thing
            try
            {
                _context.Update(profile);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CnFProfileExists(cnFProfile.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(RedirectToAction(nameof(CnfAssignments)));
        }
        //[Authorize]
        public async Task <IActionResult> Register(RegisterViewModel registerViewModel)
        {
            if (ModelState.IsValid)
            {
                //var loggedInUser = await _userManager.FindByNameAsync(HttpContext.User.Identity.Name); //LoggedIn User

                //Create user
                var user = new ApplicationUser()
                {
                    UserName    = registerViewModel.UserName,
                    Email       = registerViewModel.Email,
                    UserTypeId  = 1,
                    PhoneNumber = registerViewModel.PhoneNumber
                };
                //Create user with password
                var result = await _userManager.CreateAsync(user, registerViewModel.Password);

                //Redirect User
                if (result.Succeeded)
                {
                    var newUser = await _userManager.FindByNameAsync(registerViewModel.UserName);

                    var cnFProfile = new CnFProfile
                    {
                        ApplicationUserId = newUser.Id,
                        Name               = registerViewModel.FullName,
                        Address            = registerViewModel.Address,
                        PhoneNumber        = registerViewModel.PhoneNumber,
                        VerificationNumber = registerViewModel.VerificationNumber
                                             //Balance = 5000
                    };
                    _context.Add(cnFProfile);
                    int count = await _context.SaveChangesAsync();

                    if (count == 1)
                    {
                        await _userManager.AddToRoleAsync(newUser, "Cnf");

                        //Payment payment = new Payment();
                        //payment.CnFProfileId = cnFProfile.Id;
                        //payment.Amount = 5000;
                        //payment.PaymentMethodId = 4;
                        //payment.PaymentTypeId = 1;
                        //payment.Date = DateTime.Now; ;
                        //_context.Add(payment);
                        //await _context.SaveChangesAsync();
                    }

                    return(RedirectToAction("Index", "Users"));
                }
                foreach (IdentityError error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }
            }

            return(View(registerViewModel));
        }
        public async Task <IActionResult> LoadTable([FromBody] DTParameters dtParameters)
        {
            var searchBy = dtParameters.Search?.Value;

            var orderCriteria           = string.Empty;
            var orderAscendingDirection = true;

            if (dtParameters.Order != null)
            {
                try
                {
                    orderCriteria           = dtParameters.Columns[dtParameters.Order[0].Column].Data;
                    orderAscendingDirection = dtParameters.Order[0].Dir.ToString().ToLower() == "asc";
                }
                catch (Exception)
                {
                    orderCriteria           = "Id";
                    orderAscendingDirection = true;
                }
            }
            else
            {
                orderCriteria           = "Id";
                orderAscendingDirection = true;
            }

            //here
            var result = await _context.CnFProfiles.ToListAsync();

            var cnFProfiles = new List <CnFProfile>();

            foreach (var item in result)
            {
                var cnFProfile = new CnFProfile
                {
                    Id                 = item.Id,
                    Name               = item.Name,
                    PhoneNumber        = item.PhoneNumber,
                    VerificationNumber = item.VerificationNumber,
                    Balance            = item.Balance,
                    Address            = item.Address,
                };
                cnFProfiles.Add(cnFProfile);
            }

            if (!string.IsNullOrEmpty(searchBy))
            {
                cnFProfiles = cnFProfiles.Where(r =>
                                                r.Name != null && r.Name.ToUpper().Contains(searchBy.ToUpper()) ||
                                                r.PhoneNumber != null && r.PhoneNumber.ToUpper().Contains(searchBy.ToUpper()) ||
                                                r.VerificationNumber != null && r.VerificationNumber.ToUpper().Contains(searchBy.ToUpper()) ||
                                                r.Balance.ToString().Contains(searchBy.ToUpper()) ||
                                                r.Address != null && r.Address.ToUpper().Contains(searchBy.ToUpper())
                                                ).ToList();
            }

            cnFProfiles = orderAscendingDirection ? cnFProfiles.AsQueryable().OrderByDynamic(orderCriteria, LinqExtensions.Order.Asc).ToList() : cnFProfiles.AsQueryable().OrderByDynamic(orderCriteria, LinqExtensions.Order.Desc).ToList();

            var filteredResultsCount = cnFProfiles.Count();

            //here
            var totalResultsCount = await _context.CnFProfiles.CountAsync();

            if (dtParameters.Length == -1)
            {
                return(Json(new
                {
                    draw = dtParameters.Draw,
                    recordsTotal = totalResultsCount,
                    recordsFiltered = filteredResultsCount,
                    data = cnFProfiles
                           .Skip(dtParameters.Start)
                           .ToList()
                }));
            }
            else
            {
                return(Json(new
                {
                    draw = dtParameters.Draw,
                    recordsTotal = totalResultsCount,
                    recordsFiltered = filteredResultsCount,
                    data = cnFProfiles
                           .Skip(dtParameters.Start)
                           .Take(dtParameters.Length)
                           .ToList()
                }));
            }
        }