public ActionResult Create(AddEditContentViewModel model)
        {
            model.Validate(db, ModelState);
            if (ModelState.IsValid)
            {
                var content = model.ToEntity(db);
                if (content.ContentId == 0)
                {
                    db.Contents.Add(content);
                }
                db.SaveChanges();
                ContentCache.Remove(model.Path, model.UserContext);
                ShowGenericSavedMessage();
                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
Esempio n. 2
0
        /// <summary>
        /// Backend routine for saving, archiving, publishing and updating content availability new and existing content.
        /// </summary>
        /// <param name="db">The database.</param>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public static List <KeyValuePair <string, string> > HandleContentEdit(ProviderPortalEntities db, AddEditContentViewModel model)
        {
            var errors = new List <KeyValuePair <string, string> >();

            var invalidOperation = AppGlobal.Language.GetText("SiteContent_Edit_InvalidOperation",
                                                              "That operation is invalid for the current content.");
            var notFound = AppGlobal.Language.GetText("SiteContent_Edit_NotFound",
                                                      "This content is no longer available.");

            if (String.IsNullOrWhiteSpace(model.SubmitAction))
            {
                errors.Add(new KeyValuePair <string, string>("", invalidOperation));
                return(errors);
            }

            // Save
            if (model.SubmitAction.Equals("Save", StringComparison.CurrentCultureIgnoreCase))
            {
                var content = model.ToEntity(db);
                if (content.ContentId == 0)
                {
                    db.Contents.Add(content);
                }
                return(errors);
            }

            var item = db.Contents.FirstOrDefault(x => x.ContentId == model.ContentId);

            if (item == null)
            {
                errors.Add(new KeyValuePair <string, string>("", notFound));
                return(errors);
            }

            if (model.SubmitAction.Equals("UpdateAvailability", StringComparison.CurrentCultureIgnoreCase) &&
                item.RecordStatusId == (int)Constants.RecordStatus.Live)
            {
                EnsureContextAvailability(db, model.ContentId, model.Path, model.UserContext);
                item.UserContext         = (int)model.UserContext;
                item.ModifiedByUserId    = Permission.GetCurrentUserId();
                item.ModifiedDateTimeUtc = DateTime.UtcNow;
                db.SaveChanges();
                return(errors);
            }

            if (model.SubmitAction.Equals("Publish", StringComparison.CurrentCultureIgnoreCase) &&
                item.RecordStatusId != (int)Constants.RecordStatus.Live)
            {
                EnsureContextAvailability(db, model.ContentId, model.Path, model.UserContext);
                item.RecordStatusId      = (int)Constants.RecordStatus.Live;
                item.ModifiedByUserId    = Permission.GetCurrentUserId();
                item.ModifiedDateTimeUtc = DateTime.UtcNow;
                db.SaveChanges();
                return(errors);
            }

            if (model.SubmitAction.Equals("Archive", StringComparison.CurrentCultureIgnoreCase) &&
                item.RecordStatusId != (int)Constants.RecordStatus.Archived)
            {
                item.RecordStatusId      = (int)Constants.RecordStatus.Archived;
                item.ModifiedByUserId    = Permission.GetCurrentUserId();
                item.ModifiedDateTimeUtc = DateTime.UtcNow;
                db.SaveChanges();
                return(errors);
            }

            errors.Add(new KeyValuePair <string, string>("", invalidOperation));
            return(errors);
        }