public async Task <IActionResult> EditMarketingUser(EditMarketingUserViewModel viewModel)
        {
            var clientPageUser = viewModel.ClientPageUser;
            var userId         = viewModel.UserId;
            var userToEdit     = await _context.ApplicationUsers.Where(u => u.Id == userId).FirstOrDefaultAsync();

            ModelState.Remove("User.FirstName");
            ModelState.Remove("User.LastName");
            if (ModelState.IsValid)
            {
                if (clientPageUser.ClientPageId != 0)
                {
                    clientPageUser.UserId = userId;
                    _context.Update(clientPageUser);
                    await _context.SaveChangesAsync();
                }
                if (userToEdit.UserTypeId != viewModel.UserTypeId)
                {
                    userToEdit.UserTypeId = viewModel.UserTypeId;
                    _context.Update(userToEdit);
                    await _context.SaveChangesAsync();
                }
                return(RedirectToAction("MarketingUserDetails", new { Id = viewModel.UserId }));
            }
            return(View(viewModel));
        }
        public async Task <IActionResult> EditMarketingUser(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var user = await _context.ApplicationUsers
                       .Where(u => u.Id == id)
                       .FirstOrDefaultAsync();

            var userTypeOptions = await _context.UserTypes
                                  .Where(ut => ut.Id == 1 || ut.Id == 2)
                                  .Select(ut => new SelectListItem(ut.Type, ut.Id.ToString()))
                                  .ToListAsync();

            var assignedClientPages = await _context.ClientPageUsers
                                      .Where(cp => cp.UserId == id)
                                      .Select(cp => cp.ClientPage)
                                      .ToListAsync();


            List <SelectListItem> assignClientPageOptions = new List <SelectListItem>();

            using (SqlConnection conn = Connection)
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = @"SELECT DISTINCT cp.Id, cp.Name
                                FROM ClientPages cp LEFT JOIN ClientPageUsers cpu ON cpu.ClientPageId = cp.Id
                                WHERE cpu.Id IS NULL 
                                OR cpu.UserId != @id
                                AND cpu.ClientPageId NOT IN
                                (SELECT cpu.ClientPageId
                                FROM ClientPageUsers cpu WHERE cpu.UserId = @id);
                            ";

                    cmd.Parameters.Add(new SqlParameter("@id", id));

                    SqlDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        if (!reader.IsDBNull(reader.GetOrdinal("Name")))
                        {
                            var            clientPageName = reader.GetString(reader.GetOrdinal("Name"));
                            var            clientPageId   = reader.GetInt32(reader.GetOrdinal("Id"));
                            SelectListItem selectListItem = new SelectListItem(clientPageName, clientPageId.ToString());
                            assignClientPageOptions.Add(selectListItem);
                        }
                        ;
                    }

                    reader.Close();
                }
            }

            assignClientPageOptions.Insert(0, new SelectListItem
            {
                Text  = "Choose Client Page to assign....",
                Value = "0"
            });
            var viewModel = new EditMarketingUserViewModel()
            {
                User                = user,
                UserTypeId          = user.UserTypeId,
                UserTypeOptions     = userTypeOptions,
                AssignedClientPages = assignedClientPages,
                ClientPageOptions   = assignClientPageOptions,
                UserId              = id
            };

            return(View(viewModel));
        }