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