public PageEditViewModel(Page page) { this.Page_ID = page.Page_ID; this.Page_Name = page.Page_Name; this.URL = page.URL; this.Title_Text = page.Title_Text; this.Is_Default = page.Is_Default; this.Parent_Page_ID = page.Parent_Page_ID; this.banner = page.Banner; this.Display_In_Menu = page.Display_In_Menu; this.Redirect = page.Redirect; this.Redirect_URL = page.Redirect_URL; this.Allow_Feedback = page.Allow_Feedback; this.Recipients_Temp = ""; this.allFeedback = page.Feedbacks.ToList(); this.collections = new List <Collection>(); this.galleries = new List <Gallery>(); this.libraries = new List <Library>(); this.calenders = new List <Calender>(); this.videoGalleries = new List <VideoGallery>(); this.availablePages = new List <Page>(); this.recipients = new List <NotificationRecipent>(); this.quickLinkLists = new List <QuickLinkList>(); this.assColls = page.PageCollectionAssigns.Where(x => x.Archived == false).ToList(); this.assVidGals = page.PageVideoGalleryAssigns.Where(x => x.Archived == false).ToList(); this.assCals = page.PageCalenderAssigns.Where(x => x.Archived == false).ToList(); this.assLibs = page.PageLibraryAssigns.Where(x => x.Archived == false).ToList(); this.assPhotoGals = page.PageGalleryAssigns.Where(x => x.Archived == false).ToList(); this.assQuickLinkLists = page.PageQuickLinkListsAssigns.Where(x => x.Archived == false).ToList(); this.assRecipients = page.PageRecipientAssigns.ToList(); availablePages = (List <Page>)(from pg in db.Pages where pg.Archived == false select pg).ToList(); availableBanners = (List <Banner>)(from b in db.Banners select b).ToList(); availableContentTypes = (List <ContentType>)(from c in db.ContentTypes select c).ToList(); foreach (var collIDAss in assColls.OrderBy(x => x.Sequence_No)) { Collection curColl = (from res in db.Collections where res.Collection_ID == collIDAss.Collection_ID select res).FirstOrDefault(); this.collections.Add(curColl); } foreach (var calIDAss in this.assCals) { Calender curCal = (from res in db.Calenders where res.Calender_ID == calIDAss.Calender_ID select res).FirstOrDefault(); this.calenders.Add(curCal); } foreach (var vidGalIDAss in this.assVidGals) { VideoGallery curVidGal = (from res in db.VideoGalleries where res.Video_Gallery_ID == vidGalIDAss.Video_Gallery_ID select res).FirstOrDefault(); this.videoGalleries.Add(curVidGal); } foreach (var libIDAss in this.assLibs) { Library curLib = (from res in db.Libraries where res.Library_ID == libIDAss.Library_ID select res).FirstOrDefault(); this.libraries.Add(curLib); } foreach (var photoGalIDAss in this.assPhotoGals) { Gallery photoGal = (from res in db.Galleries where res.Gallery_ID == photoGalIDAss.Gallery_ID select res).FirstOrDefault(); this.galleries.Add(photoGal); } foreach (var quickLinkListIDAss in this.assQuickLinkLists) { QuickLinkList qList = (from res in db.QuickLinkLists where res.Link_List_ID == quickLinkListIDAss.Link_List_ID select res).FirstOrDefault(); this.quickLinkLists.Add(qList); } foreach (var recipientsIDAss in this.assRecipients) { NotificationRecipent rec = (from res in db.NotificationRecipents where res.Recipient_ID == recipientsIDAss.Recipient_ID select res).FirstOrDefault(); this.recipients.Add(rec); this.Recipients_Temp += rec.Recipient_ID + "," + rec.Recipient_Name + "," + rec.Recipient_Email + "|"; } if (this.Recipients_Temp.Length > 0) { this.Recipients_Temp = this.Recipients_Temp.Substring(0, this.Recipients_Temp.Length - 1); } }
public ActionResult Edit(PageEditViewModel pageViewMod) { Page page = db.Pages.Find(pageViewMod.Page_ID); if (db.Pages.Where(x => x.URL.ToLower() == pageViewMod.URL.ToLower() && x.Page_ID != pageViewMod.Page_ID).Count() <= 0) { if (db.Pages.Where(x => x.Page_Name.ToLower() == pageViewMod.Page_Name.ToLower() && x.Page_ID != pageViewMod.Page_ID).Count() <= 0) { //if (ModelState.IsValid) //{ page.Page_Name = pageViewMod.Page_Name; page.URL = pageViewMod.URL; page.Title_Text = pageViewMod.Title_Text; if (pageViewMod.Is_Default) { List <Page> pages = (List <Page>)db.Pages.Where(x => x.Page_ID != page.Page_ID).ToList(); foreach (Page p in pages) { p.Is_Default = false; } } page.Is_Default = pageViewMod.Is_Default; page.Display_In_Menu = pageViewMod.Display_In_Menu; page.Redirect = pageViewMod.Redirect; page.Redirect_URL = pageViewMod.Redirect_URL; page.Allow_Feedback = pageViewMod.Allow_Feedback; if (page.Allow_Feedback) { if (pageViewMod.Recipients_Temp == null) { pageViewMod.Recipients_Temp = ""; } string[] recipients = pageViewMod.Recipients_Temp.Split('|'); int pageID = page.Page_ID; List <NotificationRecipent> existingRecip = db.NotificationRecipents.Where(x => x.PageRecipientAssigns.Any(y => y.Page_ID == pageID)).ToList(); foreach (NotificationRecipent rec in existingRecip) { bool onPage = false; foreach (string recip in recipients) { string[] parts = recip.Split(','); if (parts.Length == 3) { if (rec.Recipient_Name == parts[1] && rec.Recipient_Email == parts[2]) { onPage = true; break; } } } if (!onPage) { int recID = rec.Recipient_ID; int page_ID = page.Page_ID; PageRecipientAssign recDelTemp = db.PageRecipientAssigns.Where(x => x.Page_ID == page_ID && x.Recipient_ID == recID).FirstOrDefault(); db.PageRecipientAssigns.Remove(recDelTemp); if (db.PageRecipientAssigns.Where(x => x.Recipient_ID == recID && x.Page_ID != page_ID).Count() == 0) { NotificationRecipent delTemp = db.NotificationRecipents.Where(x => x.Recipient_ID == recID).FirstOrDefault(); db.NotificationRecipents.Remove(delTemp); } } } foreach (string recip in recipients) { string[] parts = recip.Split(','); if (parts.Length == 3) { string recName = parts[1]; string recEmail = parts[2]; if (existingRecip.Where(x => x.Recipient_Name == recName && x.Recipient_Email == recEmail).Count() == 0) { if (db.NotificationRecipents.Where(x => x.Recipient_Email == recEmail && x.Recipient_Name == recName).Count() > 0) { NotificationRecipent tempRec = db.NotificationRecipents.Where(x => x.Recipient_Name == recName && x.Recipient_Email == recEmail).FirstOrDefault(); PageRecipientAssign recAss = new PageRecipientAssign(); recAss.Page = page; recAss.NotificationRecipent = tempRec; recAss.Date_Added = DateTime.Now; recAss.Added_By = User.Identity.Name.ToString(); db.PageRecipientAssigns.Add(recAss); } else { NotificationRecipent newRec = new NotificationRecipent(); newRec.Recipient_Name = recName; newRec.Recipient_Email = recEmail; newRec.Date_Added = DateTime.Now; newRec.Added_By = User.Identity.Name.ToString(); db.NotificationRecipents.Add(newRec); PageRecipientAssign recAss = new PageRecipientAssign(); recAss.Page = page; recAss.NotificationRecipent = newRec; recAss.Date_Added = DateTime.Now; recAss.Added_By = User.Identity.Name.ToString(); db.PageRecipientAssigns.Add(recAss); } } } } } if (pageViewMod.Parent_Page_ID != null) { page.Is_Top = false; Page parentPage = db.Pages.Find(pageViewMod.Parent_Page_ID); parentPage.Has_Children = true; } else if (pageViewMod.Parent_Page_ID == null && page.Parent_Page_ID != null) { if (db.Pages.Where(x => x.Page_ID != page.Page_ID && x.Parent_Page_ID == page.Parent_Page_ID).Count() == 0) { Page parentPage = db.Pages.Find(page.Parent_Page_ID); parentPage.Has_Children = false; db.SaveChanges(); } page.Is_Top = true; } page.Parent_Page_ID = pageViewMod.Parent_Page_ID; page.Date_Modified = DateTime.Now; page.Modified_By = User.Identity.Name; db.SaveChanges(); ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); return(RedirectToAction("Edit", new { id = page.Page_ID })); } else { ModelState.AddModelError("", "A Page with the Page Name '" + pageViewMod.Page_Name + "' already exists"); ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); return(View("Edit", pageViewMod)); } } else { ModelState.AddModelError("", "A Page with the URL '" + pageViewMod.URL + "' already exists"); ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); return(View("Edit", pageViewMod)); } //} //ModelState.AddModelError("", "An unexpectced error occurred. Invalid Model State. Please try again."); //return View(pageViewMod); }