public ProductAvailablity AddEditProductAvailablity(ProductAvailablity productavailablity) { if (productavailablity.ID > 0) { return(_productavailablity.Update(productavailablity)); } else { return(_productavailablity.Add(productavailablity)); } }
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); }