コード例 #1
0
ファイル: SiteBLL.cs プロジェクト: ansarbek/thewall9-CMS
 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
ファイル: SiteBLL.cs プロジェクト: ansarbek/thewall9-CMS
        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;
            }
        }