public virtual ActionResult Submit(OpenBoxViewModel model) { LogI("Submit, model=" + model); //Save if (ModelState.IsValid) { var id = model.Apply(Db, QuantityManager, Time.GetAppNowTime(), AccessManager.UserId); Cache.RequestStyleIdUpdates(Db, new List <long>() { model.StyleId }, UpdateCacheMode.IncludeChild, AccessManager.UserId); return(Json(new UpdateRowViewModel(model, "OpenBox_" + id, null, true))); } return(View("OpenBoxViewModel", model)); }
public void Apply(IUnitOfWork db, IQuantityManager quantityManager, ILogService log, ICacheService cache, ISystemActionService actionService, DateTime when, long?by) { log.Info("AddSealedBoxWizardViewModel.Apply, StyleId=" + StyleId); if (IncomeType == (int)BoxIncomePackType.PPK) { var box = new SealedBoxViewModel(); box.StyleId = StyleId; box.BoxBarcode = BoxBarcode; box.BoxQuantity = BoxQuantity; box.Price = Price ?? 0; box.Owned = Owned; box.PolyBags = false; box.Printed = Printed; box.CreateDate = CreateDate.HasValue ? DateHelper.ConvertUtcToApp(CreateDate.Value.ToUniversalTime()) : when; box.StyleItems = new StyleItemCollection() { Items = Sizes.Select(s => new StyleItemViewModel() { Id = s.Id, Breakdown = s.Breakdown, }).ToList() }; box.Apply(db, quantityManager, when, by); } if (IncomeType == (int)BoxIncomePackType.PolyBagged) { foreach (var size in Sizes.Where(si => si.Quantity > 0)) { var box = new SealedBoxViewModel(); box.StyleId = StyleId; box.BoxBarcode = BoxBarcode; box.BoxQuantity = size.Quantity ?? 0; box.Price = Price ?? 0; box.Owned = Owned; box.PolyBags = true; box.Printed = Printed; box.CreateDate = CreateDate.HasValue ? DateHelper.ConvertUtcToApp(CreateDate.Value.ToUniversalTime()) : when; box.StyleItems = new StyleItemCollection() { Items = new List <StyleItemViewModel>() { new StyleItemViewModel() { Id = size.Id, Breakdown = UnitsPerBox } } }; box.Apply(db, quantityManager, when, by); } } if (IncomeType == (int)BoxIncomePackType.Other) { var box = new OpenBoxViewModel(); box.StyleId = StyleId; box.BoxBarcode = BoxBarcode; box.BoxQuantity = 1; box.Price = Price ?? 0; box.Owned = Owned; box.PolyBags = false; box.Printed = Printed; box.CreateDate = CreateDate.HasValue ? DateHelper.ConvertUtcToApp(CreateDate.Value.ToUniversalTime()) : when; box.StyleItems = new StyleItemCollection() { Items = Sizes.Select(s => new StyleItemViewModel() { Id = s.Id, Quantity = s.Quantity, }).ToList() }; box.Apply(db, quantityManager, when, by); } foreach (var size in Sizes) { var styleItem = db.StyleItems.Get(size.Id); if (size.UseBoxQuantity && styleItem.Quantity.HasValue) { log.Info("Switch to box quantity, styleItemId=" + size.Id); var oldQuantity = styleItem.Quantity; styleItem.Quantity = null; styleItem.QuantitySetBy = null; styleItem.QuantitySetDate = null; styleItem.RestockDate = null; db.Commit(); quantityManager.LogStyleItemQuantity(db, styleItem.Id, null, oldQuantity, QuantityChangeSourceType.UseBoxQuantity, null, null, BoxBarcode, when, by); } } cache.RequestStyleIdUpdates(db, new List <long>() { StyleId }, UpdateCacheMode.IncludeChild, by); SystemActionHelper.RequestQuantityDistribution(db, actionService, StyleId, by); }