private ActionResult Details(RouteEntity entity, string category, string slug)
        {
            if (entity is Photoshop)
            {
                var data = new ProductViewData
                {
                    Menu = ObjectExtension.As <IList <MenuItemViewModel> >(_context.AbstractMenuItem.Where(x => x.RouteID == entity.ID))
                };
                this.SetTheme(entity);
                var link = entity as Photoshop;
                data.Route = ObjectExtension.As <PhotoshopViewModel.Summary>(entity);

                data.PhototechnicsViewModel = ObjectExtension.As <PhototechnicsViewModel.Details>(_context.PricePositions.Where(x => x.PhotoshopID == entity.ID && x.Phototechnics.Shortcut == slug)
                                                                                                  .Include(x => x.Phototechnics.ParameterValues).Include(x => x.Phototechnics.ParameterValues.Select(y => y.Parameter)).FirstOrDefault());
                return(View("Details", data));
            }
            if (entity is Photorent)
            {
                var data = new ProductViewData
                {
                    Menu = ObjectExtension.As <IList <MenuItemViewModel> >(_context.AbstractMenuItem.Where(x => x.RouteID == entity.ID))
                };
                this.SetTheme(entity);
                var link = entity as Photorent;
                data.Route = ObjectExtension.As <PhotorentViewModel.Details>(entity);

                data.Categorieses = ObjectExtension.As <IList <CategoryViewModel> >(_context.Categories.ToList());

                data.PhototechnicsViewModel = ObjectExtension.As <PhototechnicsViewModel.Details>(link.RentCalendars.SingleOrDefault(x => x.Phototechnics.Shortcut == slug));
                return(View("Details", data));
            }
            return(View("Details"));
        }
Пример #2
0
        public Product ProductFromProductViewData(
            ProductViewData productViewData,
            ModelStateDictionary modelStateDictionary,
            HttpRequestBase httpRequestBase)
        {
            if (productViewData == null)
            {
                throw new ArgumentNullException("productViewData");
            }
            if (modelStateDictionary == null)
            {
                throw new ArgumentNullException("modelStateDictionary");
            }

            var context = new ProductBuildingContext(productViewData, modelStateDictionary, httpRequestBase);

            foreach (var contributor in contributors.OrderBy(x => x.Order))
            {
                if (!context.ModelStateDictionary.IsValid)
                {
                    continue;
                }
                contributor.ContributeTo(context);
            }

            return(context.Product);
        }
Пример #3
0
        public ActionResult Edit(ProductViewData productViewData)
        {
            var product = productBuilder.ProductFromProductViewData(productViewData, ModelState, Request);

            if (ModelState.IsValid)
            {
                return(this.RedirectToAction(x => x.Edit(product.Id)));
            }
            return(View("Edit", productViewData.WithErrorMessage("There were errors, please correct them and resubmit.")));
        }
Пример #4
0
        public ActionResult New(ProductViewData productViewData)
        {
            var product = productBuilder.ProductFromProductViewData(productViewData, ModelState, Request);

            if (ModelState.IsValid)
            {
                productRepository.SaveOrUpdate(product);
                uow.Commit();                 //Need explicit commit in order to get the product id.
                return(this.RedirectToAction(x => x.Edit(product.Id)));
            }
            return(View("Edit", productViewData.WithErrorMessage("There were errors, please correct them and resubmit.")));
        }
Пример #5
0
    	public void EditWithPost_ShouldRedirectOnSucessfulBinding()
    	{
			var product = new Product { Id = 5};
            var productViewData = new ProductViewData();
            productBuilder.Stub(
    	        x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request))
                .Return(product);

			productController.Edit(productViewData)
				.ReturnsRedirectToRouteResult()
				.ToAction("Edit")
				.WithRouteValue("id", "5");
    	}
Пример #6
0
    	public void NewWithPost_ShouldRenderViewWhenThereAreBindingErrors()
    	{
    		productController.ModelState.AddModelError("foo", "bar");
    		var product = new Product();
            var productViewData = new ProductViewData();
            productBuilder.Stub(
                x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request))
                .Return(product);

			productController.New(productViewData)
				.ReturnsViewResult()
				.ForView("Edit")
                .WithModel<ProductViewData>();
    	}
Пример #7
0
    	public void EditWithPost_ShouldRenderViewWhenBindingFails()
    	{
			productController.ModelState.AddModelError("foo", "bar");
			var product = new Product();
            var productViewData = new ProductViewData();
            productBuilder.Stub(
                x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request))
                .Return(product);

			productController.Edit(productViewData)
				.ReturnsViewResult()
				.ForView("Edit")
                .WithModel<ProductViewData>()
				.AssertAreSame(productViewData, x => x);
    	}
Пример #8
0
    	public void NewWithPost_ShouldInsertNewProduct()
    	{
			var product = new Product { Id = 5};

            var productViewData = new ProductViewData();
            productBuilder.Stub(
                x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request))
                .Return(product);

			productController.New(productViewData)
				.ReturnsRedirectToRouteResult()
				.ToAction("Edit")
				.WithRouteValue("id", "5");

			productRepository.AssertWasCalled(x => x.SaveOrUpdate(product));
    	}
Пример #9
0
        public ProductBuildingContext(
            ProductViewData productViewData,
            ModelStateDictionary modelStateDictionary,
            HttpRequestBase httpRequestBase)
        {
            if (productViewData == null)
            {
                throw new ArgumentNullException("productViewData");
            }
            if (modelStateDictionary == null)
            {
                throw new ArgumentNullException("modelStateDictionary");
            }
            if (httpRequestBase == null)
            {
                throw new ArgumentNullException("httpRequestBase");
            }

            ProductViewData      = productViewData;
            ModelStateDictionary = modelStateDictionary;
            HttpRequestBase      = httpRequestBase;
        }
Пример #10
0
 public void SetUp()
 {
     productViewData      = new ProductViewData();
     modelStateDictionary = new ModelStateDictionary();
 }