public ActionResult Upsert(PublicationUpsertViewModel model, bool preview = false)
        {
            if (!ModelState.IsValid)
            {
                InitUpsertBreadcrumb(model);
                return(View(model));
            }

            if (preview)
            {
                model.EnterDate = sessionStorageService.Get <PublicationUpsertViewModel>(model.UniqueId)?.EnterDate;
                sessionStorageService.Upsert(model);

                return(RedirectToAction("Preview", new { sessionId = model.UniqueId }));
            }

            using (var transaction = ContextManager.NewTransaction())
            {
                model.Id = publicationService.Upsert(Mapper.Map <Publication>(model));
                transaction.Commit();
            }

            this.ShowMessage(MessageType.Success, Resource.ChangesSuccessfullySaved);
            return(RedirectToAction("Index", new PublicationQueryModel {
                Id = model.Id
            }));
        }
 private void InitUpsertBreadcrumb(PublicationUpsertViewModel model)
 {
     this.InitAdminBreadcrumb(
         Title,
         model.Id.HasValue
             ? string.Format(Resource.Editing, model.Title)
             : model.Type != null && model.Type.Id == EnumHelper.GetPublicationType(PublicationType.Event)
                 ? Resource.CreateEvent
                 : Resource.CreateNews,
         true);
 }
        public void PostUpsertInvalidModel()
        {
            ////Arrange
            var model = new PublicationUpsertViewModel();

            ////Act
            SimulateValidation(model, publicationController);
            var result = publicationController.Upsert(model);

            ////Assert
            publicationController.ModelState.IsValid.Should().Be(false);
        }
        public ActionResult Upsert(PublicationType?type = null, Guid?id = null, string sessionId = null)
        {
            PublicationUpsertViewModel model;

            if (id.HasValue)
            {
                using (ContextManager.NewConnection())
                {
                    model = Mapper.Map <PublicationUpsertViewModel>(publicationService.Get(id.Value, true));
                }

                sessionStorageService.Upsert(model);
            }
            else if (sessionId.IsNotNullOrEmpty())
            {
                model = sessionStorageService.Get <PublicationUpsertViewModel>(sessionId);
            }
            else if (type.HasValue)
            {
                if (!EnumHelper.PublicationTypes.ContainsKey(type.Value) || type.Value == PublicationType.None)
                {
                    throw new ArgumentOutOfRangeException("type");
                }

                model = new PublicationUpsertViewModel
                {
                    Type = new Nomenclature
                    {
                        Id = EnumHelper.GetPublicationType(type.Value)
                    }
                };
            }
            else
            {
                throw new WarningException(Resource.NoDataFound);
            }

            InitUpsertBreadcrumb(model);
            return(View(model));
        }