public JsonResult _UpdateAgencyRolesF(AgencyRoleViewModel agencyroleviewmodel)
        {
            if (ModelState.IsValid)
            {
                // Need to remove agency level contacts from all clinics in agency - then add them back later

                // Check for Agency Level Role Type
                var rolelist     = (from B in db.RoleBins select B).ToList();
                var roletypelist = (from B in context.DDAgencyRoleTypeBins select B).ToList();

                var rolecheck1 = (from x in rolelist
                                  join y in roletypelist
                                  on x.AgencyTypeRoleBinID equals y.AgencyRoleTypeBinID
                                  where x.RoleBinID == agencyroleviewmodel.AgencyRoleBinID
                                  select y.AgencyRoleTypeBinID).SingleOrDefault();

                if (rolecheck1 == 5)
                {
                    // Get Agency
                    var agencyid1 = (from y in db.AgencySiteProgramSites
                                     where y.SiteID == agencyroleviewmodel.SiteID
                                     select y.AgencySiteID).First();


                    // Get List of Clinics
                    //var cliniclist1 = (from y in db.AgencySiteProgramSites
                    //                   where y.AgencySiteID == agencyid1
                    //                   select y).ToList();
                    var cliniclist1 = (from x in db.Sites
                                       join z in db.AgencySiteProgramSites
                                       on x.SiteID equals z.SiteID
                                       where x.Active == true && z.ProgramID == agencyroleviewmodel.ProgramID && z.AgencySiteID == agencyid1
                                       select z).ToList();


                    foreach (AgencySiteProgramSites cas in cliniclist1)
                    {
                        // Remove all personnel
                        var agencycontactlist = (from x in db.AgencyContactClinics
                                                 where x.ClinicID == cas.SiteID && x.ProgramBinID == agencyroleviewmodel.ProgramID && x.AgencyRoleBinID == agencyroleviewmodel.AgencyRoleBinID
                                                 //where x.ProgramBinID == agencyroleviewmodel.ProgramID && x.AgencyRoleBinID == agencyroleviewmodel.AgencyRoleBinID
                                                 select x).ToList();


                        foreach (AgencyContactClinics acc in agencycontactlist)
                        {
                            db.AgencyContactClinics.Remove(acc);
                            db.SaveChanges();
                        }
                    }
                }
                else
                {
                    // Remove all personnel
                    var agencycontactlist = (from x in db.AgencyContactClinics
                                             where x.ClinicID == agencyroleviewmodel.SiteID && x.ProgramBinID == agencyroleviewmodel.ProgramID && x.AgencyRoleBinID == agencyroleviewmodel.AgencyRoleBinID
                                             //where x.ProgramBinID == agencyroleviewmodel.ProgramID && x.AgencyRoleBinID == agencyroleviewmodel.AgencyRoleBinID
                                             select x).ToList();


                    foreach (AgencyContactClinics acc in agencycontactlist)
                    {
                        db.AgencyContactClinics.Remove(acc);
                        db.SaveChanges();
                    }
                }


                if (agencyroleviewmodel.UserList != null)
                {
                    // Agency Contacts

                    var stringToSplit = agencyroleviewmodel.UserList;

                    var query = from val in stringToSplit.Split(',')
                                select Convert.ToInt32(val);

                    foreach (int val in query)
                    {
                        var rolecheck = (from x in rolelist
                                         join y in roletypelist
                                         on x.AgencyTypeRoleBinID equals y.AgencyRoleTypeBinID
                                         where x.RoleBinID == agencyroleviewmodel.AgencyRoleBinID
                                         select y.AgencyRoleTypeBinID).SingleOrDefault();

                        if (rolecheck == 5)
                        {
                            // Loop through clinics and add agency level contacts to all clinics


                            // Get Agency
                            var agencyid = (from y in db.AgencySiteProgramSites
                                            where y.SiteID == agencyroleviewmodel.SiteID
                                            select y.AgencySiteID).First();


                            // Get List of Clinics
                            //var cliniclist = (from y in db.AgencySiteProgramSites
                            //                  where y.AgencySiteID == agencyid
                            //                  select y).ToList();
                            var cliniclist = (from x in db.Sites
                                              join z in db.AgencySiteProgramSites
                                              on x.SiteID equals z.SiteID
                                              where x.Active == true && z.ProgramID == agencyroleviewmodel.ProgramID && z.AgencySiteID == agencyid
                                              select z).ToList();


                            foreach (AgencySiteProgramSites cas in cliniclist)
                            {
                                var arout = (from x in db.AgencyContacts
                                             where x.AgencyContactID == val
                                             select x.AgencyContactID).FirstOrDefault();


                                AgencyContactClinics accl = new AgencyContactClinics
                                {
                                    AgencyContactID = arout,
                                    ClinicID        = cas.SiteID,
                                    ProgramBinID    = Convert.ToInt32(agencyroleviewmodel.ProgramID),
                                    AgencyRoleBinID = Convert.ToInt32(agencyroleviewmodel.AgencyRoleBinID)
                                };

                                db.AgencyContactClinics.Add(accl);
                                db.SaveChanges();
                            }
                        }
                        else
                        {
                            var arout = (from x in db.AgencyContacts
                                         where x.AgencyContactID == val
                                         select x.AgencyContactID).FirstOrDefault();


                            AgencyContactClinics accl = new AgencyContactClinics
                            {
                                AgencyContactID = arout,
                                ClinicID        = Convert.ToInt32(agencyroleviewmodel.SiteID),
                                ProgramBinID    = Convert.ToInt32(agencyroleviewmodel.ProgramID),
                                AgencyRoleBinID = Convert.ToInt32(agencyroleviewmodel.AgencyRoleBinID)
                            };

                            db.AgencyContactClinics.Add(accl);
                            db.SaveChanges();
                        }
                    }
                }



                return(Json(new { Status = "Success", Modified = agencyroleviewmodel.SiteID }, JsonRequestBehavior.AllowGet));
            }


            return(Json(new { Status = "Success", Modified = agencyroleviewmodel.SiteID }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult _AddAgencyContactF(AgencyContactViewModel agencycontactviewmodel)
        {
            if (ModelState.IsValid)
            {
                // Set Record Info
                string   UserNameInit = @User.Identity.Name.ToString();
                DateTime CreatedInit  = DateTime.Now;

                var userid = (from x in db.AspNetUsers
                              where x.UserName == UserNameInit
                              select x).FirstOrDefault();



                if (agencycontactviewmodel.AgencyContactID != null)
                {
                    // Update Contact
                    AgencyContact agcontact = db.AgencyContacts.Single(x => x.AgencyContactID == agencycontactviewmodel.AgencyContactID);
                    agcontact.FirstName      = agencycontactviewmodel.FirstName;
                    agcontact.LastName       = agencycontactviewmodel.LastName;
                    agcontact.Title          = agencycontactviewmodel.Title;
                    agcontact.Phone          = agencycontactviewmodel.Phone;
                    agcontact.Fax            = agencycontactviewmodel.Fax;
                    agcontact.Email          = agencycontactviewmodel.Email;
                    agcontact.MITrainingDate = agencycontactviewmodel.MITrainingDate;
                    agcontact.DateUpdated    = CreatedInit;
                    agcontact.UpdatedBy      = UserNameInit;
                    db.SaveChanges();


                    return(Json(new { Status = "Success", Modified = agencycontactviewmodel.AgencyContactID }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    // Create Agency Contact

                    AgencyContact ac = new AgencyContact
                    {
                        FirstName      = agencycontactviewmodel.FirstName,
                        LastName       = agencycontactviewmodel.LastName,
                        Title          = agencycontactviewmodel.Title,
                        Phone          = agencycontactviewmodel.Phone,
                        Fax            = agencycontactviewmodel.Fax,
                        Email          = agencycontactviewmodel.Email,
                        Active         = true,
                        MITrainingDate = agencycontactviewmodel.MITrainingDate,
                        DateCreated    = CreatedInit,
                        CreatedBy      = UserNameInit,
                        DateUpdated    = CreatedInit,
                        UpdatedBy      = UserNameInit
                    };


                    try
                    {
                        db.AgencyContacts.Add(ac);
                        db.SaveChanges();
                    }
                    catch (DbEntityValidationException dbEx)
                    {
                        foreach (var validationErrors in dbEx.EntityValidationErrors)
                        {
                            foreach (var validationError in validationErrors.ValidationErrors)
                            {
                                Debug.WriteLine("Property: {0} Error: {1}",
                                                validationError.PropertyName, validationError.ErrorMessage);
                            }
                        }
                    }


                    // Agency Contact ID
                    var ACID = ac.AgencyContactID;

                    // If Agency Wide Role, Get list of all sites for agency and add to them

                    if (agencycontactviewmodel.AgencyRoleTypeBinID == 5)
                    {
                        // get agency id
                        var agencyid = (from x in db.AgencySiteProgramSites
                                        where x.SiteID == agencycontactviewmodel.SiteID
                                        select x.AgencySiteID).First();


                        // get list of all sites for this agency
                        //var sitelist = (from x in db.AgencySiteProgramSites
                        //                where x.ProgramID == agencycontactviewmodel.ProgramBinID && x.AgencySiteID == agencyid
                        //                select x.SiteID).ToList();

                        var sitelist = (from x in db.Sites
                                        join z in db.AgencySiteProgramSites
                                        on x.SiteID equals z.SiteID
                                        where x.Active == true && z.ProgramID == agencycontactviewmodel.ProgramBinID && z.AgencySiteID == agencyid
                                        select x.SiteID).ToList();

                        foreach (int val in sitelist)
                        {
                            if (agencycontactviewmodel.AgencyRoleName != null)
                            {
                                // Roles

                                var stringToSplitA = agencycontactviewmodel.AgencyRoleName;

                                var queryA = from valA in stringToSplitA.Split(',')
                                             select Convert.ToInt32(valA);

                                foreach (int valA in queryA)
                                {
                                    // Add to AgencyContactClinics

                                    AgencyContactClinics agencycontactclinics = new AgencyContactClinics
                                    {
                                        AgencyContactID = ACID,
                                        ClinicID        = val,
                                        //  AgencyRoleBinID = Convert.ToInt32(agencycontactviewmodel.AgencyRoleBinID),
                                        AgencyRoleBinID = valA,
                                        ProgramBinID    = Convert.ToInt32(agencycontactviewmodel.ProgramBinID)
                                    };

                                    db.AgencyContactClinics.Add(agencycontactclinics);
                                    db.SaveChanges();
                                }
                            }
                        }
                    }
                    else
                    {
                        if (agencycontactviewmodel.SiteName != null)
                        {
                            // Sites

                            var stringToSplit = agencycontactviewmodel.SiteName;

                            var query = from val in stringToSplit.Split(',')
                                        select Convert.ToInt32(val);

                            foreach (int val in query)
                            {
                                // Add to AgencyContactClinics

                                AgencyContactClinics agencycontactclinics = new AgencyContactClinics
                                {
                                    AgencyContactID = ACID,
                                    ClinicID        = val,
                                    AgencyRoleBinID = Convert.ToInt32(agencycontactviewmodel.AgencyRoleBinID),
                                    ProgramBinID    = Convert.ToInt32(agencycontactviewmodel.ProgramBinID)
                                };

                                db.AgencyContactClinics.Add(agencycontactclinics);
                                db.SaveChanges();
                            }
                        }
                    }

                    return(Json(new { Status = "Success", Modified = ACID }, JsonRequestBehavior.AllowGet));
                }
            }


            return(Json(new { Status = "Success" }, JsonRequestBehavior.AllowGet));
        }