public ActionResult Create([Bind(Exclude = "ProductImage")]Product product, HttpPostedFileBase ProductImage, string returnUrl) { if (product.ProductInitialOrderQuantity == null) { product.ProductInitialOrderQuantity = (decimal?)0; } if (product.ProductGatewayCDIMinumumOrder == null) { product.ProductGatewayCDIMinumumOrder = (decimal?)0; } if (ModelState.IsValid) { // Get product's campaign and loop though that campaigns, companies price tiers Campaign thisCampaign = db.Campaigns.Where(c => c.CampaignID == product.CampaignID).FirstOrDefault(); foreach (var tier in thisCampaign.Company.PricingTiers.Where(p => p.PricingTierStatus != MyExtensions.GetEnumDescription(Status.Archived))) { // Create a new sell price for each price tier and add to DB ProductSellPrice newSellPrice = new ProductSellPrice(product, tier.PricingTierName, tier.PricingTierLevel, (decimal)thisCampaign.Company.CompanyDefaultMargin); db.ProductSellPrices.Add(newSellPrice); // Attach fees foreach (var fee in tier.Fees.Where(f => f.FeeStatus != MyExtensions.GetEnumDescription(Status.Archived))) { Fee newFee = new Fee(fee.FeeNameID, newSellPrice, fee.FeeType, fee.FeeCalculation, fee.FeeDollarAmount, fee.FeeAmortizedCharge, fee.FeeAmortizedType, fee.FeePercent, fee.FeePercentType, fee.FeeID); db.Fees.Add(newFee); } } // Loop though Attachment Types and add a ProductAttachmentType for each Attachment Type foreach (var attachmentType in db.AttachmentTypes.Where(a => a.Status != archived).OrderBy(a => a.TypeName)) { // Create a Product Attament type ProductAttachmentType newProductAttachmentType = new ProductAttachmentType(product.ProductID, attachmentType.ID); db.ProductAttachmentTypes.Add(newProductAttachmentType); } // Product Image if (ProductImage != null && ProductImage.ContentLength > 0) { byte[] imageBinaryData = new byte[ProductImage.ContentLength]; int readresult = ProductImage.InputStream.Read(imageBinaryData, 0, ProductImage.ContentLength); product.ProductImage = imageBinaryData; product.ProductImageType = ProductImage.ContentType; } // Add Audit Entry AuditTrail audit = new AuditTrail(DateTime.Now, User.Identity.Name, product, product.ProductID, "Create"); db.AuditTrails.Add(audit); db.Products.Add(product); db.SaveChanges(); if (returnUrl == null) { return RedirectToAction("Index"); } return RedirectToAction("Edit", new { id = product.ProductID, ReturnUrl = returnUrl }); } // Sets Viewbag data for dropdowns SetViewBagData(returnUrl, product); return View(product); }
// Fee public AuditTrail(DateTime dateTime, string userName, Fee fee, int id, string comment) { this.AuditTrailTimeStamp = dateTime; this.AuditTrailUserName = userName; this.AuditTrailComment = comment; if(id > 0) { this.FeeID = id; } else { this.Fee = fee; } }
// // GET: /Fee/Create public ActionResult Create(string returnUrl, int CompanyID = 0, int CampaignID = 0, int PricingTierID = 0, int ProductSellPriceID = 0) { ViewBag.ReturnUrl = returnUrl; InstantiateEmptyViewBagLists(); // Generate Decoration method for member initialization Fee fee = new Fee(); fee.OnCreate(); return View(fee); }
private void InstantiateFullViewBagLists(Fee fee) { // Company List var companyList = db.Companies.Where(c => c.CompanyStatus != archived); ViewBag.CompanyID = new SelectList(companyList, "CompanyID", "CompanyName", fee.CompanyID); // Pricing Tier List var pricingTierList = db.PricingTiers.Where(p => p.Company.CompanyStatus != archived && p.PricingTierStatus != archived); ViewBag.PricingTierID = new SelectList(pricingTierList, "PricingTierID", "PricingTierName", fee.PricingTierID); // Campaign List var campaignList = db.Campaigns.Where(c => c.CampaignStatus != archived && c.Company.CompanyStatus != archived); ViewBag.CampaignID = new SelectList(campaignList, "CampaignID", "CampaignName", fee.CampaignID); // Product List var productList = db.Products.Where(p => p.ProductStatus != archived && p.Campaign.CampaignStatus != archived && p.Campaign.Company.CompanyStatus != archived); ViewBag.ProductID = new SelectList(productList, "ProductID", "ProductName", fee.ProductID); // Sell Price List var sellPriceList = db.ProductSellPrices.Where(p => p.SellPriceStatus != archived && p.Product.ProductStatus != archived && p.Product.Campaign.CampaignStatus != archived && p.Product.Campaign.Company.CompanyStatus != archived); ViewBag.ProductSellPriceID = new SelectList(sellPriceList, "SellPriceID", "SellPriceName", fee.ProductSellPriceID); // Fee Name List ViewBag.FeeNameID = new SelectList(db.FeeNames.Where(f => f.FeeNameStatus != archived), "FeeNameID", "FeeNameName", fee.FeeNameID); }
public ActionResult Edit(Fee fee, string returnUrl) { if(ModelState.IsValid) { var current = db.Fees.Find(fee.FeeID); db.Entry(current).CurrentValues.SetValues(fee); db.SaveChanges(); if(returnUrl == null) { return RedirectToAction("Index"); } return Redirect(returnUrl); } ViewBag.ReturnUrl = returnUrl; InstantiateFullViewBagLists(fee); return View(fee); }
public ActionResult Create(Fee fee, string returnUrl) { if(ModelState.IsValid) { db.Fees.Add(fee); db.SaveChanges(); if(returnUrl == null) { return RedirectToAction("Index"); } return Redirect(returnUrl); } ViewBag.ReturnUrl = returnUrl; InstantiateFullViewBagLists(fee); return View(fee); }
private void CalculateAmortizedFee(Fee fee) { // Determime the type of amortized fee and use the value associated if (fee.FeeAmortizedType == MyExtensions.GetEnumDescription(AmortizedTypeList.Annual_Sales_Projection)) { fee.FeeDollarAmount = fee.FeeAmortizedCharge / _product.ProductAnnualSalesProjection; } else if (fee.FeeAmortizedType == MyExtensions.GetEnumDescription(AmortizedTypeList.GatewayCDI_Minimum_Order)) { fee.FeeDollarAmount = fee.FeeAmortizedCharge / _product.ProductGatewayCDIMinumumOrder; } else if (fee.FeeAmortizedType == MyExtensions.GetEnumDescription(AmortizedTypeList.Initial_Order_Quantity)) { fee.FeeDollarAmount = fee.FeeAmortizedCharge / _product.ProductInitialOrderQuantity; } else if (fee.FeeAmortizedType == MyExtensions.GetEnumDescription(AmortizedTypeList.Vendor_Minimum)) { fee.FeeDollarAmount = fee.FeeAmortizedCharge / _product.ProductVendorMinimumOrder; } }