public ActionResult Edit(EditViewModelClientsManager model,
                                 IEnumerable <string> selectedCurrentUsers,
                                 IEnumerable <string> SelectedOtherUsers)
        {
            if (ModelState.IsValid)
            {
                //Remove users from clients
                if (selectedCurrentUsers != null)
                {
                    foreach (var selectedCurrentUser in selectedCurrentUsers)
                    {
                        int selectedCurrentUserID = Convert.ToInt32(selectedCurrentUser);

                        var selectedCurrentUserLicense = db.Licenses.Where(s => s.ClientID == model.ID)
                                                         .Where(s => s.UserID == selectedCurrentUserID).FirstOrDefault();

                        selectedCurrentUserLicense.ClientID = null;
                        selectedCurrentUserLicense.UserID   = null;
                        db.SaveChanges();
                    }
                }

                //Add users to clients
                if (SelectedOtherUsers != null)
                {
                    List <License> unassignedLicenses        = db.Licenses.Where(s => s.UserID == null).ToList();
                    int            unassignedLicensesCounter = 0;

                    foreach (var SelectedOtherUser in SelectedOtherUsers)
                    {
                        if (unassignedLicenses.Count() <= 5)
                        {
                            NewLicenseMaker(5);
                            unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList();
                        }

                        int SelectedOtherUserID = Convert.ToInt32(SelectedOtherUser);

                        var selectedCurrentUserLicense = db.Licenses
                                                         .Where(s => s.UserID == SelectedOtherUserID)
                                                         .FirstOrDefault();

                        int selectedCurrentUserRightsID;

                        if (selectedCurrentUserLicense != null)
                        {
                            selectedCurrentUserRightsID = selectedCurrentUserLicense.RightsID;
                        }

                        else
                        {
                            selectedCurrentUserRightsID = 4;
                        }

                        unassignedLicenses[unassignedLicensesCounter].ClientID = model.ID;
                        unassignedLicenses[unassignedLicensesCounter].RightsID = selectedCurrentUserRightsID;
                        unassignedLicenses[unassignedLicensesCounter].UserID   = SelectedOtherUserID;
                        unassignedLicensesCounter++;
                        db.SaveChanges();
                    }
                }

                //Create new user for client. Then you need to give License to  new user via email
                if (model.LicenseID != null && model.RightID != null)
                {
                    List <License> unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList();

                    if (unassignedLicenses.Count() <= 5)
                    {
                        NewLicenseMaker(5);
                        unassignedLicenses = db.Licenses.Where(s => s.UserID == null).ToList();
                    }
                    unassignedLicenses[0].ClientID = model.ID;
                    unassignedLicenses[0].RightsID = model.RightID.Value;
                    db.SaveChanges();
                }


                return(RedirectToAction("Index"));
            }
            else
            {
                return(null);
            }
        }
        // GET: CCS/Clients/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Client client = await db.Clients.FindAsync(id);

            if (client == null)
            {
                return(HttpNotFound());
            }
            else
            {
                var users = db.Users.ToList();

                List <SelectListItem> currentUsers = new List <SelectListItem>();
                List <SelectListItem> otherUsers   = new List <SelectListItem>();

                List <int> currentUsersID = new List <int>();

                foreach (var user in users)
                {
                    var userLicenses = db.Licenses.Where(s => s.UserID == user.ID).ToList();
                    int userClientID = 0;

                    foreach (var userLicense in userLicenses)
                    {
                        try
                        {
                            userClientID = userLicense.ClientID.Value;
                        }
                        catch
                        {
                        }
                        var item = new SelectListItem
                        {
                            Value    = user.ID.ToString(),
                            Text     = user.UserName,
                            Selected = false
                        };

                        if (userClientID == client.ID)
                        {
                            currentUsers.Add(item);
                            currentUsersID.Add(user.ID);
                        }
                    }

                    if (!currentUsersID.Contains(user.ID))
                    {
                        var item = new SelectListItem
                        {
                            Value    = user.ID.ToString(),
                            Text     = user.UserName,
                            Selected = false
                        };
                        otherUsers.Add(item);
                    }
                }

                EditViewModelClientsManager model = new EditViewModelClientsManager();

                var dbRightsData   = db.Rights.ToList();
                var dbLicensesData = db.Licenses.ToList();
                model.Rights   = GetSelectRightsListItems(dbRightsData);
                model.Licenses = GetSelectLicensesListItems(dbLicensesData);

                model.CurrentUsers  = currentUsers.OrderBy(s => s.Text);
                model.OtherUsers    = otherUsers.OrderBy(s => s.Text);
                model.ID            = client.ID;
                model.ClientName    = client.Name;
                model.Active        = client.Active;
                model.ClientNumber  = client.ClientNumber.Value;
                model.NumberOfUsers = db.Licenses.Where(s => s.ClientID == client.ID).Where(s => s.UserID != null).Count();

                return(View(model));
            }
        }