示例#1
0
        private int ImportObject(SiteExport SiteContent)
        {
            var _Site = new SiteAllBinding(SiteContent.Site, SiteContent.Cultures);

            _Site.SiteID = 0;
            var _SiteID = Save(_Site);

            ImportSavePages(SiteContent.Pages, _SiteID, 0);
            ImportSaveContent(SiteContent.Content, _SiteID, 0);
            return(_SiteID);
        }
示例#2
0
 public IHttpActionResult PostSave(SiteAllBinding Model)
 {
     SiteService.Save(Model);
     return(Ok());
 }
示例#3
0
        public int Save(SiteAllBinding Model)
        {
            using (var _c = db)
            {
                Site _Model;
                var  _SiteUrls = string.IsNullOrEmpty(Model.Url) ? new string[0] : Model.Url.Split(',');
                if (Model.SiteID == 0)
                {
                    _Model = new Site
                    {
                        SiteName    = Model.SiteName,
                        DateCreated = DateTime.Now,
                        Enabled     = false,
                        DefaultLang = Model.DefaultLang,
                        GAID        = Model.GAID
                    };
                    if (Model.Cultures == null || Model.Cultures.Count() == 0)
                    {
                        throw new RuleException("Cultures is Empty");
                    }

                    //ADD CULTURES
                    foreach (var item in Model.Cultures)
                    {
                        _Model.Cultures.Add(new Culture
                        {
                            Name = item.Name,

                            Facebook  = item.Facebook,
                            GPlus     = item.GPlus,
                            Instagram = item.Instagram,
                            Tumblr    = item.Tumblr,
                            Twitter   = item.Twitter
                        });
                    }
                    //ADD SITES
                    foreach (var item in _SiteUrls)
                    {
                        _Model.SiteUrls.Add(new SiteUrl
                        {
                            Url = item
                        });
                    }
                    _c.Sites.Add(_Model);
                }
                else
                {
                    _Model          = _c.Sites.Where(m => m.SiteID == Model.SiteID).SingleOrDefault();
                    _Model.SiteName = Model.SiteName;
                    //EDIT CULTURES
                    foreach (var item in Model.Cultures)
                    {
                        if (item.CultureID != 0)
                        {
                            var _CultureModel = _Model.Cultures.Where(m => m.CultureID == item.CultureID).SingleOrDefault();
                            _CultureModel.Name = item.Name;
                        }
                        else
                        {
                            var _CultureModel = _Model.Cultures.Where(m => m.Name.ToLower() == item.Name.ToLower() && m.SiteID == Model.SiteID).SingleOrDefault();
                            if (_CultureModel == null)
                            {
                                _Model.Cultures.Add(new Culture
                                {
                                    Name = item.Name
                                });
                            }
                        }
                    }
                    var _CulturesToDelete = _Model.Cultures.Where(m => !Model.Cultures.Select(m2 => m2.CultureID).Contains(m.CultureID)).ToList();
                    foreach (var item in _CulturesToDelete)
                    {
                        if (!_c.PageCultures.Where(m => m.CultureID == item.CultureID).Any() && !_c.ContentPropertyCultures.Where(m => m.CultureID == item.CultureID).Any())
                        {
                            _c.Cultures.Remove(item);
                        }
                        else
                        {
                            throw new RuleException("Culture: '" + item.Name + "' cannot be deleted because there is content or pages with this culture. You have to delete it first");
                        }
                    }
                    //EDIT URLs
                    var _UrlToDelete = _Model.SiteUrls.Where(m => !_SiteUrls.Contains(m.Url)).ToList();
                    _c.SiteUrls.RemoveRange(_UrlToDelete);

                    foreach (var item in _SiteUrls)
                    {
                        if (!_c.SiteUrls.Where(m => m.Url.Equals(item)).Any())
                        {
                            _Model.SiteUrls.Add(new SiteUrl
                            {
                                Url = item
                            });
                        }
                    }
                }
                _c.SaveChanges();
                return(_Model.SiteID);
            }
        }