private void UpdateTargets(DiscountCode discountCode, DiscountCodeEdit discountCodeEdit) { if (discountCode.Tours == null) { discountCode.Tours = new List <Tour>(); } discountCode.Tours.Clear(); if (!discountCode.IsGlobal && discountCodeEdit.TourId != null) { discountCode.Tours = discountCodeEdit.TourId.Select(i => _tourQueryService.FindTour(Convert.ToInt32(i))).ToList(); } if (discountCode.Products == null) { discountCode.Products = new List <Product>(); } discountCode.Products.Clear(); if (!discountCode.IsGlobal && discountCodeEdit.ProductId != null) { discountCode.Products = discountCodeEdit.ProductId.Select(i => _productQueryService.FindProduct(Convert.ToInt32(i))).ToList(); } if (discountCode.ProductVariants == null) { discountCode.ProductVariants = new List <ProductVariant>(); } discountCode.ProductVariants.Clear(); if (!discountCode.IsGlobal && discountCodeEdit.ProductVariantId != null) { discountCode.ProductVariants = discountCodeEdit.ProductVariantId.Select(i => _productQueryService.FindProductVariant(Convert.ToInt32(i))).ToList(); } }
public ActionResult Create(DiscountCodeEdit discountCodeEdit) { var discountCode = Mapper.Map <DiscountCode>(discountCodeEdit); if (ModelState.IsValid) { UpdateTargets(discountCode, discountCodeEdit); _discountCodeService.Add(discountCode); return(RedirectToRoute("admin-discount-codes")); } return(View(BuildEditModel(discountCodeEdit, discountCode))); }
public ActionResult Edit(DiscountCodeEdit discountCodeEdit) { var discountCode = _discountCodeService.FindDiscountCode(discountCodeEdit.Id); if (!ModelState.IsValid) { return(View(BuildEditModel(discountCodeEdit, discountCode))); } Mapper.Map(discountCodeEdit, discountCode); UpdateTargets(discountCode, discountCodeEdit); _discountCodeService.Update(discountCode); return(RedirectToRoute("admin-discount-codes")); }
private DiscountCodeEdit BuildEditModel(DiscountCodeEdit discountCodeEdit, DiscountCode discountCode) { var tours = _tourQueryService.Tours().ToList(); discountCodeEdit.TourItems = tours.Select( t => new SelectListItem { Text = string.Format("{0} - {1}", t.Code, t.Name), Value = t.Id.ToString(CultureInfo.InvariantCulture) }); var firstTour = tours.FirstOrDefault(); if (firstTour != null && firstTour.Departures.Any()) { discountCodeEdit.ProductItems = firstTour.Departures.Select(d => d.Product) .Select( p => new SelectListItem { Text = string.Format("{0} - {1}", p.Departure.Code, p.Name), Value = p.Id.ToString(CultureInfo.InvariantCulture) }); var firstProduct = firstTour.Departures.First().Product; if (firstProduct != null) { discountCodeEdit.ProductVariantItems = firstProduct.ProductVariants.Select( pv => new SelectListItem { Text = string.Format("{0} - {1}", pv.Product.Departure.Code, pv.DisplayName), Value = pv.Id.ToString(CultureInfo.InvariantCulture) }); } } if (discountCode.Tours != null) { discountCodeEdit.ToursJson = new JavaScriptSerializer().Serialize( discountCode.Tours.Select( t => new { id = t.Id, name = string.Format("{0} - {1}", t.Code, t.Name), targetType = "TourId" })); } if (discountCode.Products != null) { discountCodeEdit.ProductsJson = new JavaScriptSerializer().Serialize( discountCode.Products.Select( p => new { id = p.Id, name = string.Format("{0} - {1}", p.Departure.Code, p.Name), targetType = "ProductId" })); } if (discountCode.ProductVariants != null) { discountCodeEdit.ProductVariantsJson = new JavaScriptSerializer().Serialize( discountCode.ProductVariants.Select( v => new { id = v.Id, name = string.Format("{0} - {1}", v.Product.Departure.Code, v.DisplayName), targetType = "ProductVariantId" })); } return(discountCodeEdit); }