public ActionResult Create(string id)
        {
            var model = new AddEditContentViewModel();

            model = model.PopulateAsNew(id, db);
            //model.Validate(db, ModelState);
            return(View(model));
        }
        public ActionResult Edit(string id = null, int version = 0,
                                 UserContext.UserContextName context = UserContext.UserContextName.None)
        {
            if (id == null)
            {
                return(RedirectToAction("Create"));
            }
            var model = new AddEditContentViewModel();

            model = model.Populate(id, context, version, db, userContext);
            if (model == null)
            {
                return(HttpNotFound());
            }
            return(View(model));
        }
        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));
        }
        public ActionResult Edit(AddEditContentViewModel model)
        {
            model.Validate(db, ModelState);
            if (ModelState.IsValid ||
                model.SubmitAction.Equals("Delete", StringComparison.CurrentCultureIgnoreCase) ||
                model.SubmitAction.Equals("Archive", StringComparison.CurrentCultureIgnoreCase))
            {
                var errors = ContentManager.HandleContentEdit(db, model);
                if (errors.Any())
                {
                    foreach (var item in errors)
                    {
                        ModelState.AddModelError(item.Key, item.Value);
                    }
                    return(View(model));
                }
                db.SaveChanges();
                ContentCache.Remove(model.Path, model.UserContext);
                ShowGenericSavedMessage();
                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
Esempio n. 5
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);
        }