public ActionResult Edit(int id, ProductPricingModel model) { try { // TODO: Add update logic here bool isPricingValid = true; model.product = _service.GetProduct(id); if (model.Month_12.SalesPrice <= 0 && model.Month_24.SalesPrice <= 0 && !model.product.InternalProductCode.Equals("freessl", StringComparison.OrdinalIgnoreCase)) { isPricingValid = false; } if (ModelState.IsValid && isPricingValid) { bool isSuccess = _service.AddEditProductPricing(model, Convert.ToInt16(Request[SettingConstants.QS_ISRECOMMENDED]), Site, true); if (isSuccess) { return(RedirectToAction("Index", new { id = Request.QueryString["cid"] })); } else { return(View(model)); } } return(View(model)); } catch { return(View()); } }
public ActionResult Edit(ProductPricingModel model) { var m = ModelState.Values.Where(x => x.Errors.Count > 0); if (ModelState.IsValid) { Add(model); return(RedirectToAction("Index")); } ViewBag.Brand = _service.GetBrand(); return(View("add", model)); }
public ActionResult Add(ProductPricingModel model) { bool isPricingValid = true; if (model.Month_12.SalesPrice <= 0 && model.Month_24.SalesPrice <= 0) { isPricingValid = false; } if (!isPricingValid && model.product.InternalProductCode.Equals("freessl", StringComparison.OrdinalIgnoreCase)) { model.Month_12.NumberOfMonths = 1; isPricingValid = true; } if (ModelState.IsValid && isPricingValid) { if (model.productAvailablity == null) { model.productAvailablity = DependencyResolver.Current.GetService <ProductAvailablity>(); model.productAvailablity.isActive = true; model.productAvailablity.SiteID = Site.ID; } bool isSuccess = _service.AddEditProductPricing(model, Convert.ToInt16(Request[SettingConstants.QS_ISRECOMMENDED]), Site, false); if (isSuccess) { return(RedirectToAction("Index")); } else { ViewBag.Brand = _service.GetBrand(); return(View(model)); } } ViewBag.APIProduct = WBSSLStore.Gateways.RestAPIModels.Services.OrderService.GetAllProductPricing(Site.APIPartnerCode, Site.APIAuthToken); ViewBag.Brand = _service.GetBrand(); if (!isPricingValid) { model.Message = WBSSLStore.Resources.ErrorMessage.Message.NoPricingAdded; } return(View(model)); }
public string SetMarginalPrice(ProductPricingModel model, Gateways.RestAPIModels.Response.ALLProduct apiProduct, Site site, decimal Margin, int ContractID, bool SaveOnlyPrice) { try { if (apiProduct.ProductCode.Equals("rapidssl")) { } if (!SaveOnlyPrice) { model.Month_12 = new ProductPricing() { NumberOfMonths = (int)SettingConstants.NumberOfMonths.Month12, RecordStatusID = (int)RecordStatus.ACTIVE, SiteID = site.ID, ContractID = ContractID }; model.Month_24 = new ProductPricing() { NumberOfMonths = (int)SettingConstants.NumberOfMonths.Month24, RecordStatusID = (int)RecordStatus.ACTIVE, SiteID = site.ID, ContractID = ContractID }; } if (apiProduct.Pricings.Where(pr => pr.NumberOfMonth == 12).FirstOrDefault() != null || apiProduct.Pricings.Where(pr => pr.NumberOfMonth == 1).FirstOrDefault() != null) { var apiPrice = apiProduct.Pricings.Where(pr => pr.NumberOfMonth == 12 || pr.NumberOfMonth == 1).FirstOrDefault(); model.Month_12.AdditionalSanPrice = apiPrice.AdditionalSanPrice + ((apiPrice.AdditionalSanPrice * Margin) / 100); model.Month_12.ContractID = ContractID; model.Month_12.RecordStatusID = (int)RecordStatus.ACTIVE; model.Month_12.RetailPrice = apiPrice.SRP; if (apiPrice.Price > 0) { model.Month_12.SalesPrice = apiPrice.Price + ((apiPrice.Price * Margin) / 100); } else { model.Month_12.SalesPrice = 0; } model.Month_12.SiteID = site.ID; if (apiPrice.NumberOfMonth == 1) { model.Month_12.NumberOfMonths = 1; } } if (apiProduct.Pricings.Where(pr => pr.NumberOfMonth == 24).FirstOrDefault() != null) { var apiPrice = apiProduct.Pricings.Where(pr => pr.NumberOfMonth == 24).FirstOrDefault(); model.Month_24.AdditionalSanPrice = apiPrice.AdditionalSanPrice + ((apiPrice.AdditionalSanPrice * Margin) / 100); model.Month_24.ContractID = ContractID; model.Month_24.RecordStatusID = (int)RecordStatus.ACTIVE; model.Month_24.RetailPrice = apiPrice.SRP; if (apiPrice.Price > 0) { model.Month_24.SalesPrice = apiPrice.Price + ((apiPrice.Price * Margin) / 100); } else { model.Month_24.SalesPrice = 0; } model.Month_24.SiteID = site.ID; } int isRecommended = 24; AddEditProductPricing(model, isRecommended, site, false); //_logger.Log(model.product.ProductName + ": Imported Successfully.", Logger.LogType.INFO); return(model.product.ProductName + ": Successfully imported<br/>"); } catch (Exception ex) { _logger.Log(model.product.ProductName + ": Error While Import ErrorMessage:" + ex.Message, Logger.LogType.INFO); return(model.product.ProductName + ": Error while import<br/>"); } }
public List <StringBuilder> ImportProducts(List <Gateways.RestAPIModels.Response.ALLProduct> ProductList, Site site, decimal Margin) { ProductPricing resellerProductPricing = null; Contract ClientContract = GetClientContract(site.ID); StringBuilder SuccessProduct = new StringBuilder(); StringBuilder UnSuccessProduct = new StringBuilder(); var ProductSlugs = GeneralHelper.GetProductDetailSlugs(); Contract resellerContract = _contract.Find(cn => cn.SiteID == site.ID && cn.isAutoCalculation == false && cn.isForReseller == true && cn.ContractLevel == null && cn.RecordStatusID != (int)RecordStatus.DELETED).OrderBy(cn => cn.ID).FirstOrDefault(); if (resellerContract != null) { resellerProductPricing = _productPricing.Find(pp => pp.ContractID == resellerContract.ID && pp.SiteID == site.ID).FirstOrDefault(); } foreach (Gateways.RestAPIModels.Response.ALLProduct apiProduct in ProductList) { try { ProductPricingModel model = new ProductPricingModel(); var productavailablity = _productavailablity.Find(pro => pro.Product.InternalProductCode.Equals(apiProduct.ProductCode, StringComparison.OrdinalIgnoreCase) && pro.SiteID == site.ID && pro.Product.RecordStatusID != (int)RecordStatus.DELETED).EagerLoad(p => p.Product).FirstOrDefault(); var sl = ProductSlugs.Where(x => x.ProductCode.Equals(apiProduct.ProductCode, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (productavailablity == null) { //Create Product Row Product objProduct = new Product(); apiProduct.Brand = apiProduct.Brand.ToLower() == "verisign" ? "symantec" : apiProduct.Brand; objProduct.BrandID = GetBrand().Where(br => br.BrandName.Equals(apiProduct.Brand, StringComparison.OrdinalIgnoreCase)).FirstOrDefault().ID; objProduct.CanbeReissued = apiProduct.CanbeReissued; objProduct.InternalProductCode = apiProduct.ProductCode; objProduct.isCompetitiveUpgradeAllowed = apiProduct.IsCompetitiveUpgradeSupported; objProduct.isNoOfServerFree = apiProduct.isNoOfServerFree; objProduct.isSANEnabled = apiProduct.IsSanEnable; objProduct.isWildcard = apiProduct.IsWildCardProduct; objProduct.ProductDescription = apiProduct.ProductName; objProduct.ProductName = apiProduct.ProductName; objProduct.ProductTypeID = apiProduct.ProductType; objProduct.RecordStatusID = (int)RecordStatus.ACTIVE; objProduct.RefundDays = apiProduct.RefundDays; objProduct.ReissueDays = apiProduct.ReissueDays; objProduct.ReissueType = "Included"; objProduct.SanMax = apiProduct.SanMax; objProduct.SanMin = apiProduct.SanMin; objProduct.DetailPageslug = sl != null ? sl.SlugUrl : string.Empty; model.product = objProduct; ProductAvailablity objAvailablity = new ProductAvailablity(); objAvailablity.isActive = true; objAvailablity.Product = objProduct; objAvailablity.SiteID = site.ID; model.productAvailablity = objAvailablity; SuccessProduct.Append(SetMarginalPrice(model, apiProduct, site, Margin, ClientContract.ID, false)); //Add reseller pricing for default reseller contract if (resellerContract != null && resellerProductPricing == null) { SetMarginalPrice(model, apiProduct, site, Margin, resellerContract.ID, false); } } else { if (string.IsNullOrEmpty(productavailablity.Product.DetailPageslug)) { productavailablity.Product.DetailPageslug = sl != null ? sl.SlugUrl : string.Empty; } model.product = productavailablity.Product; model.productAvailablity = productavailablity; model.Month_12 = _productPricing.Find(pp => pp.SiteID == site.ID && pp.ProductID == productavailablity.ProductID && pp.ContractID == ClientContract.ID && (pp.NumberOfMonths < 12 ? 12 : pp.NumberOfMonths) == (int)SettingConstants.NumberOfMonths.Month12).FirstOrDefault(); model.Month_24 = _productPricing.Find(pp => pp.SiteID == site.ID && pp.ProductID == productavailablity.ProductID && pp.ContractID == ClientContract.ID && pp.NumberOfMonths == (int)SettingConstants.NumberOfMonths.Month24).FirstOrDefault(); SuccessProduct.Append(SetMarginalPrice(model, apiProduct, site, Margin, ClientContract.ID, true)); //Add reseller pricing for default reseller contract if (resellerContract != null && resellerProductPricing == null) { model.Month_12 = _productPricing.Find(pp => pp.SiteID == site.ID && pp.ContractID == resellerContract.ID && pp.ProductID == productavailablity.ProductID && pp.NumberOfMonths == (int)SettingConstants.NumberOfMonths.Month12).FirstOrDefault(); model.Month_24 = _productPricing.Find(pp => pp.SiteID == site.ID && pp.ContractID == resellerContract.ID && pp.ProductID == productavailablity.ProductID && pp.NumberOfMonths == (int)SettingConstants.NumberOfMonths.Month24).FirstOrDefault(); SetMarginalPrice(model, apiProduct, site, Margin, resellerContract.ID, true); } } } catch (Exception ex) { _logger.Log("Error while importing product : " + (apiProduct != null ? apiProduct.ProductName : string.Empty), Logger.LogType.INFO); _logger.LogException(ex); } } List <StringBuilder> lstReturn = new List <StringBuilder>(); lstReturn.Add(SuccessProduct); lstReturn.Add(UnSuccessProduct); return(lstReturn); }
public bool AddEditProductPricing(ProductPricingModel model, int isRecommended, Site site, bool SaveOnlyPrice) { if (!SaveOnlyPrice) { if (string.IsNullOrEmpty(model.product.ReissueType)) { model.product.ReissueType = "Included"; } if (model.product.RecordStatusID <= 0) { model.product.RecordStatusID = (int)RecordStatus.ACTIVE; } } if (model.Month_12 != null) { model.Month_12.Product = model.product; model.Month_12.isRecommended = false; } if (model.Month_24 != null) { model.Month_24.Product = model.product; model.Month_24.isRecommended = false; } if (isRecommended == 12) { model.Month_12.isRecommended = true; } if (isRecommended == 24) { model.Month_24.isRecommended = true; } if (model.Month_12 != null && (model.Month_12.SalesPrice > 0 || model.Month_12.ID > 0 || model.product.InternalProductCode.Equals("freessl", StringComparison.OrdinalIgnoreCase))) { if (model.Month_12.ID > 0 && model.Month_12.SalesPrice > 0) { _productPricing.Update(model.Month_12); } else if (model.Month_12.ID > 0 && model.Month_12.SalesPrice <= 0 && !model.product.InternalProductCode.Equals("freessl", StringComparison.OrdinalIgnoreCase)) { _productPricing.Delete(_productPricing.FindByID(model.Month_12.ID)); } else if (model.Month_12.ID <= 0) { _productPricing.Add(model.Month_12); } } if (model.Month_24 != null && (model.Month_24.SalesPrice > 0 || model.Month_24.ID > 0)) { if (model.Month_24.ID > 0 && model.Month_24.SalesPrice > 0) { _productPricing.Update(model.Month_24); } else if (model.Month_24.ID > 0 && model.Month_24.SalesPrice <= 0) { _productPricing.Delete(_productPricing.FindByID(model.Month_24.ID)); } else { _productPricing.Add(model.Month_24); } } if (!SaveOnlyPrice) { if (model.product.ID > 0) { _product.Update(model.product); } model.productAvailablity.Product = model.product; if (model.productAvailablity.ID > 0) { _productavailablity.Update(model.productAvailablity); } else { _productavailablity.Add(model.productAvailablity); } } _unitOfWork.Commit(); return(true); }