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);
            }
        }
Beispiel #2
0
        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);
        }