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; }
public IHttpActionResult PostSave(SiteAllBinding Model) { SiteService.Save(Model); return Ok(); }
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; } }