public async Task <SiteAlert> SaveAsync(SiteAlert siteAlert) { siteAlert.Posted = DateTime.Now; var model = _db.SiteAlerts.FirstOrDefault(x => x.Id == siteAlert.Id); if (model != null) { model.Title = siteAlert.Title; model.Posted = siteAlert.Posted; model.Status = siteAlert.Status; model.StartDate = siteAlert.StartDate; model.EndDate = siteAlert.EndDate; model.VersionCode = siteAlert.VersionCode; model.ContentTreeId = siteAlert.ContentTreeId; _db.SiteAlerts.Update(model); } else { //_db.Entry(siteAlert).State = EntityState.Added; _db.SiteAlerts.Add(siteAlert); } await _db.SaveChangesAsync(); return(siteAlert); }
public async Task <IActionResult> Save(SiteAlert model, [FromForm] bool ShouldPublish = false, [FromForm] string NewVersionLabel = null) { if (model != null && ModelState.IsValid) { model = await _siteAlertsManager.UpdateSiteAlertAsync(model, ShouldPublish, NewVersionLabel); return(Ok(model)); } return(BadRequest(ModelState)); }
public async Task <SiteAlert> UpdateSiteAlertAsync(SiteAlert model, bool MustPublish, string NewVersionLabel) { var replaceWithPublishedVersionModel = false; var currentAlert = Get(model.Id); // Get the draft version info var versionInfo = _contentManager.GetVersionInfo(CONTENT_TYPE_SITEALERTS, model.Id, model.VersionCode).Result; if (versionInfo == null) { throw new Exception($"Cannot publish Site Alerts. SiteAlert {model.Id} does not have a draft version to publish."); } if (!string.IsNullOrEmpty(NewVersionLabel)) { _contentManager.UpdateVersionLabel(CONTENT_TYPE_SITEALERTS, model.Id, model.VersionCode, NewVersionLabel).Wait(); } if (MustPublish) { model.Posted = DateTime.Now; model.Status = ContentStatus.Published; // Publish the new version / archive old version _contentManager.PublishDraftVersion(versionInfo).Wait(); replaceWithPublishedVersionModel = true; } else { model.Status = ContentStatus.Draft; } await _contentManager.SetVersionModelData(versionInfo, model); if (model.VersionCode == currentAlert.VersionCode || replaceWithPublishedVersionModel) { await SaveAsync(model); } return(model); }
public SiteAlert Clone(SiteAlert model, string userId) { var versionInfo = _contentManager.CreateDraftVersion(CONTENT_TYPE_SITEALERTS, model.Id, userId).Result; var clonedContentTree = _contentManager.CloneContentTree(model.ContentTreeId, versionInfo.VersionCode).Result; var clone = new SiteAlert() { Id = model.Id, SiteId = model.SiteId, UserId = model.UserId, StartDate = model.StartDate, EndDate = model.EndDate, Posted = model.Posted, Title = model.Title, Status = ContentStatus.Draft, VersionCode = versionInfo.VersionCode, ContentTreeId = clonedContentTree.Id }; _contentManager.SetVersionModelData(versionInfo, clone).Wait(); return(clone); }
public ContentVersion GetVersionInfo(SiteAlert model) { return(_contentManager.GetVersionInfo(CONTENT_TYPE_SITEALERTS, model.Id, model.VersionCode).Result); }