Exemple #1
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public ContentVersion GetVersionInfo(SiteAlert model)
 {
     return(_contentManager.GetVersionInfo(CONTENT_TYPE_SITEALERTS, model.Id, model.VersionCode).Result);
 }