public List <ConfPage> GetAllConfiguredPages()
        {
            var list  = new List <ConfPage>();
            var pages = _operationalDataContext.ConfigurationViews.ToList();

            if (pages != null && pages.Any())
            {
                foreach (var item in pages)
                {
                    bool addPage    = true;
                    bool addDetails = true;
                    var  pge        = new ConfPage();
                    pge.PageId      = (int)item.PageId;
                    pge.PageName    = item.Name;
                    pge.LayoutId    = item.LayoutId;
                    pge.PageDetails = new ObservableCollection <ConfPageDetails>();
                    if (list.Any(x => x.PageId == item.PageId))
                    {
                        pge     = list.FirstOrDefault(x => x.PageId == item.PageId);
                        addPage = false;
                    }
                    var pgeDetail = new ConfPageDetails();
                    pgeDetail.PlaceHolderLayoutId         = (int)item.LayoutPlaceHolderId;
                    pgeDetail.UserControl                 = new ConfPageDetailsControl();
                    pgeDetail.UserControl.UserControlId   = item.UserControlId;
                    pgeDetail.UserControl.UserControlName = item.UserControlName;
                    pgeDetail.PlaceHolderName             = item.PlaceHolderName;
                    if (pge.PageDetails.Any(x => x.PlaceHolderLayoutId == (int)item.LayoutPlaceHolderId))
                    {
                        pgeDetail  = pge.PageDetails.FirstOrDefault(x => x.PlaceHolderLayoutId == (int)item.LayoutPlaceHolderId);
                        addDetails = false;
                    }

                    if (item.MessageTypeId > -1 && !pgeDetail.UserControl.SubscriberMessages.Any(x => x.UserControlMessageTypeId == item.MessageTypeId))
                    {
                        pgeDetail.UserControl.SubscriberMessages.Add(new MessageTypes()
                        {
                            UserControlMessageTypeId = item.MessageTypeId, MessageTypeName = item.SubscriberMessage, IsSelected = true
                        });
                    }
                    if (item.PublisherMessageTypeId > -1 && !pgeDetail.UserControl.PublisherMessages.Any(x => x.UserControlMessageTypeId == item.PublisherMessageTypeId))
                    {
                        pgeDetail.UserControl.PublisherMessages.Add(new MessageTypes()
                        {
                            UserControlMessageTypeId = item.PublisherMessageTypeId, MessageTypeName = item.PublisherMessage, IsSelected = true, Expression = item.PublisherExpression
                        });
                    }
                    if (addDetails)
                    {
                        pge.PageDetails.Add(pgeDetail);
                    }
                    if (addPage)
                    {
                        list.Add(pge);
                    }
                }
            }
            return(list);
        }
        public bool SaveConfiguration(ConfPage page)
        {
            var pageEntity = new Conf_Pages();

            if (page.PageId.HasValue)
            {
                pageEntity = _operationalDataContext.Conf_Pages.FirstOrDefault(x => x.PageId == page.PageId.Value);
            }
            if (pageEntity != null)
            {
                pageEntity.Name = page.PageName;
                if (pageEntity.Conf_UsersPages == null)
                {
                    pageEntity.Conf_UsersPages = new Collection <Conf_UsersPages>();
                }
                if (pageEntity.Conf_UsersPages.FirstOrDefault(x => x.UserId == 1) == null)
                {
                    pageEntity.Conf_UsersPages.Add(new Conf_UsersPages {
                        UserId = 1
                    });
                }
                if (page.PageId.HasValue)
                {
                    var oldDetails         = _operationalDataContext.Conf_PageDetails.Where(x => x.PageId == page.PageId.Value);
                    var oldSubsMessages    = _operationalDataContext.Conf_ControlPageMessages.Where(x => oldDetails.Any(y => y.PageDetailsId == x.PageDetailsId));
                    var oldPublishMessages = _operationalDataContext.Conf_ControlPagePublisherMessages.Where(x => oldDetails.Any(y => y.PageDetailsId == x.PageDetailsId));
                    _operationalDataContext.Conf_ControlPageMessages.RemoveRange(oldSubsMessages);
                    _operationalDataContext.Conf_ControlPagePublisherMessages.RemoveRange(oldPublishMessages);
                    _operationalDataContext.Conf_PageDetails.RemoveRange(oldDetails);
                }
                pageEntity.Conf_PageDetails = new Collection <Conf_PageDetails>();

                foreach (var item in page.PageDetails)
                {
                    var pageDetail = new Conf_PageDetails();
                    pageDetail.UserControlId                     = item.UserControl.UserControlId;
                    pageDetail.LayoutPlaceHolderId               = item.PlaceHolderLayoutId;
                    pageDetail.Conf_ControlPageMessages          = new Collection <Conf_ControlPageMessages>();
                    pageDetail.Conf_ControlPagePublisherMessages = new Collection <Conf_ControlPagePublisherMessages>();
                    if (item.UserControl.SubscriberMessages != null && item.UserControl.SubscriberMessages.Any(x => x.IsSelected))
                    {
                        foreach (var msg in item.UserControl.SubscriberMessages.Where(x => x.IsSelected))
                        {
                            pageDetail.Conf_ControlPageMessages.Add(new Conf_ControlPageMessages()
                            {
                                UserControlMessageId = msg.UserControlMessageTypeId
                            });
                        }
                    }
                    if (item.UserControl.PublisherMessages != null && item.UserControl.PublisherMessages.Any(x => x.IsSelected))
                    {
                        foreach (var msg in item.UserControl.PublisherMessages.Where(x => x.IsSelected))
                        {
                            pageDetail.Conf_ControlPagePublisherMessages.Add(new Conf_ControlPagePublisherMessages()
                            {
                                UserControlPublisherMessageId = msg.UserControlMessageTypeId, PublisherExpression = msg.Expression
                            });
                        }
                    }
                    pageEntity.Conf_PageDetails.Add(pageDetail);
                    if (!page.PageId.HasValue)
                    {
                        _operationalDataContext.Conf_Pages.Add(pageEntity);
                    }
                }
            }
            var count = _operationalDataContext.SaveChanges();

            return(count > 0);
        }
 public bool SaveConfiguration(ConfPage Page)
 {
     return(new ConfigurationDAL().SaveConfiguration(Page));
 }