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));
        }
Beispiel #4
0
        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/>");
            }
        }
Beispiel #5
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);
        }
Beispiel #6
0
        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);
        }