示例#1
0
        public static string GetPriceList(this InsiderEntity i)
        {
            string overridePriceList = i.OverridePriceList();

            if (overridePriceList != "")
            {
                return(overridePriceList);
            }
            string userPriceList = i.PriceList;
            string prefix        = Functions.GetIntlPrefix(userPriceList);

            if (prefix == "SA")
            {
                userPriceList = userPriceList.Substring(3);
                prefix        = "";
            }
            string companyNo = i.GetCompanyNo();

            if (i.IsConsultant() && (companyNo == Constants.COMPANY_NO.ASIA || companyNo == Constants.COMPANY_NO.MIDDLE_EAST))
            {
                return(prefix + "EU");
            }
            else if (i.MSRP == 1)
            {
                return(prefix + "EU");
            }
            else if (i.GetLoginType() == Constants.LOGIN.EDUCATOR && i.ECC == "US" && i.PriceList == "EU")
            {
                return("GOVS");
            }
            return(userPriceList);
        }
示例#2
0
 public static bool IsAussieDistributor(this InsiderEntity i)
 {
     if (i.AccountNo == "03*AS0612" || i.Email.EndsWith("@extron.com.au"))
     {
         return(true);
     }
     return(false);
 }
示例#3
0
        public PartialViewResult EmbeddedArticle(string articlehandle)
        {
            ExtronWeb.Models.Article article        = new ExtronWeb.Models.Article();
            InsiderEntity            currentInsider = Insider.GetCurrentInsider();
            var model = article.GetArticle(articlehandle, currentInsider);

            return(PartialView("../Widgets/EmbeddedArticle", model));
        }
示例#4
0
 public static string GetDefaultHome(this InsiderEntity i)
 {
     Constants.LOGIN loginType = i.GetLoginType();
     switch (loginType)
     {
     }
     return("/");
 }
示例#5
0
 // TODO: need to enable role manager
 public static string GetUserRoles(this InsiderEntity i)
 {
     string[] roles = System.Web.Security.Roles.GetRolesForUser(i.Email);
     for (int r = 0; r < roles.Length; r++)
     {
         roles[r] = GetRole(roles[r]).ToString();
     }
     return(String.Join(",", roles));
 }
示例#6
0
 public static string GetPriceClassDescription(this InsiderEntity i)
 {
     using (var db = DBConn.Open("DB_WEB"))
     {
         string qry  = "SELECT Description FROM tbl_PriceClass_L WHERE PriceClass = @PriceClass";
         var    desc = db.Query(qry, new { PriceClass = i.PriceClass }).FirstOrDefault().ToString();
         return(desc);
     }
 }
示例#7
0
 public static bool CanViewEdContractPricing(this InsiderEntity i)
 {
     if (i.GetLoginType() == Constants.LOGIN.DEALER && (PRICING)i.MSRP == PRICING.PRICE_LIST_CONTRACT_PRICE &&
         i.PriceList != "GOVS" && i.Country == "UNITED STATES")
     {
         return(true);
     }
     return(false);
 }
示例#8
0
        public IHttpActionResult Get()
        {
            InsiderEntity insider = Insider.GetCurrentInsider();

            if (insider == null)
            {
                return(NotFound());
            }
            return(Ok(insider));
        }
示例#9
0
        public static Constants.LOGIN GetLoginType(this InsiderEntity i)
        {
            var type = i.FKAccountTypeID;

            if (Enum.IsDefined(typeof(Constants.LOGIN), type))
            {
                return((Constants.LOGIN)type);
            }
            return(Constants.LOGIN.NONE);
        }
示例#10
0
        public static string GetAddressLabel(this InsiderEntity i)
        {
            string addressBlock = i.GetFullName() + "<br>" +
                                  i.Address1 + "<br>" +
                                  i.Address2 + "<br>" +
                                  i.Address3 + "<br>" +
                                  i.GetCityStateZip() + "<br>" +
                                  i.Country;

            return(addressBlock);
        }
示例#11
0
        public static string GetBillingAddressLabel(this InsiderEntity i)
        {
            string addressBlock = i.BillingName + "<br>" +
                                  i.BillingAddress1 + "<br>" +
                                  i.BillingAddress2 + "<br>" +
                                  i.BillingAddress3 + "<br>" +
                                  i.GetBillingCityStateZip() + "<br>" +
                                  i.BillingCountry;

            return(addressBlock);
        }
示例#12
0
        // GET: Article
        public ActionResult Index(string articlehandle)
        {
            ExtronWeb.Models.Article article        = new ExtronWeb.Models.Article();
            InsiderEntity            currentInsider = Insider.GetCurrentInsider();
            var model = article.GetArticle(articlehandle, currentInsider);

            if (model != null)
            {
                return(View(model));
            }
            return(Redirect("/"));
        }
示例#13
0
        public IHttpActionResult GetPricing(string partnum)
        {
            InsiderEntity       insider = Insider.GetCurrentInsider();
            AvantePricingEntity pricing = Price.GetInsiderPrice(partnum, insider);
            ProdPricing         result  = new ProdPricing()
            {
                YourPrice = pricing.DealerPrice.GetPrice(),
                MSRP      = pricing.ListPrice.GetPrice()
            };

            return(Ok(result));
        }
示例#14
0
        public static bool HasMsrpPricingException(this InsiderEntity i)
        {
            if (!i.CanViewPricing())
            {
                return(true);
            }

            // Per Minnie Tan: do not show MSRP to Asia resellers
            if (Functions.TerritoryInAsia(i.Territory) &&
                !i.IsAussieDistributor() &&
                i.PriceList != "EU")
            {
                return(true);
            }

            return(false);
        }
示例#15
0
 private static InsiderEntity GetInsiderEntity(string email)
 {
     using (var db = DBConn.Open("DB_WEB_STG"))
     {
         string qry = "SELECT tbl_DealerOnly.*" +
                      " from tbl_DealerOnly where Email = @Email";
         InsiderEntity model = db.Query <InsiderEntity>(qry, new { Email = email }).FirstOrDefault();
         if (model != null)
         {
             GetAvanteData(model);
             if (model.FirstName != null)
             {
                 return(model);
             }
         }
     }
     return(null);
 }
示例#16
0
 public static string OverridePriceList(this InsiderEntity i)
 {
     if (i.Email.EndsWith("@extron.com"))
     {
         int recording;
         int.TryParse(HttpContext.Current.Response.Cookies["recording"].Value, out recording);
         if (recording > 0)
         {
             using (var db = DBConn.Open("DB_WEB"))
             {
                 string qry = "SELECT ISNULL(PriceList, '') AS OverridePriceList, WantMsrp FROM tbl_DeckSession WHERE PKSessionID = @SessionId";
                 string overridePriceList = db.Query(qry, new { SessionId = recording }).FirstOrDefault().ToString();
                 return(overridePriceList);
             }
         }
     }
     return("");
 }
示例#17
0
        public static AvantePricingEntity GetInsiderPrice(string partnum, InsiderEntity insider, bool applyDiscounts = true)
        {
            if (insider.AccountNo == "")
            {
                return(null);                        // new PriceEntity() { value = NO_ACCESS };
            }
            AvantePricingEntity p = GetAvantePricing(partnum, insider, applyDiscounts);

            if (insider.IsMSRPOnly())
            {
                p.DealerPrice = CALL_PRICING;
            }
            if (insider.HasMsrpPricingException())
            {
                p.ListPrice = CALL_PRICING;
            }
            return(p);
        }
示例#18
0
        public static PRICING GetPricingAccess(this InsiderEntity i)
        {
            switch (i.MSRP)
            {
            case 0:
                return(PRICING.PRICE_LIST);

            case 1:
                return(PRICING.MSRP_ONLY);

            case 2:
                return(PRICING.NO_PRICING);

            case 3:
                return(PRICING.PRICE_LIST_CONTRACT_PRICE);

            default:
                return(PRICING.NO_PRICING);
            }
        }
示例#19
0
        public static bool IsVerticalMarketIntegrator(this InsiderEntity i)
        {
            if (i.PriceClass.Contains(PRICE_CLASS.VERTICAL_MARKET_INTEGRATOR) ||
                i.PriceClass.Contains(PRICE_CLASS.KEY_CORPORATE) ||
                i.PriceClass.Contains(PRICE_CLASS.COMPANY_O2_KEY_CORPORATE))
            {
                return(true);
            }

            switch (i.PriceClass)
            {
            case PRICE_CLASS.GOVERNMENT:
            case PRICE_CLASS.MANUFACTURER_SALES:
            case PRICE_CLASS.MANUFACTURER_SPECIAL:
                return(true);

            default:
                return(false);
            }
        }
示例#20
0
        public static InsiderEntity GetCurrentInsider()
        {
            if (!HttpContext.Current.Request.IsAuthenticated)
            {
                return(new InsiderEntity());
            }

            var           user     = HttpContext.Current.Request.GetOwinContext().Authentication.User;
            var           jwtToken = new JwtSecurityToken(user.FindFirst("id_token").Value);
            string        email    = jwtToken.Subject;
            InsiderEntity model    = MemoryCache.Default.Get(Constants.USER_CACHE_PREFIX + email) as InsiderEntity;

            if (model == null)
            {
                model = GetInsiderEntity(email);
                MemoryCache.Default.Add(Constants.USER_CACHE_PREFIX + email, model, DateTime.Now.AddMinutes(60));
            }
            if (model.Email != "*****@*****.**")
            {
                SetUserRegionLanguage(model.Territory, model.LangPref);
            }
            return(model);
        }
示例#21
0
        public JsonResult SubmitTopicFeedback(ExtronWeb.Models.Help.Help.FeedbackEntity feedback)
        {
            var model = new TopicViewModel();

            InsiderEntity currentInsider = Insider.GetCurrentInsider();

            if (currentInsider.Email == null)
            {
                feedback.Email = "NO_LOGIN";
            }
            else
            {
                feedback.Email = currentInsider.Email;
            }

            feedback.UserAgent = HttpContext.Request.UserAgent;
            feedback.IPAddress = Request.UserHostAddress;

            if (model.SubmitTopicFeedback(feedback))
            {
                return(Json(feedback));
            }
            return(null);
        }
示例#22
0
 public static bool IsEducatorK12(this InsiderEntity i)
 {
     return(i.PriceClass.Equals(PRICE_CLASS.EDUCATION_K12));
 }
示例#23
0
 public static string GetBillingCityStateZip(this InsiderEntity i)
 {
     return(i.BillingCity + ", " + i.BillingState + " " + i.BillingZip);
 }
示例#24
0
        public ActionResult Login()
        {
            InsiderEntity currentInsider = Insider.GetCurrentInsider();

            return(View(currentInsider));
        }
示例#25
0
        public static string GetSupportEmail(this InsiderEntity i)
        {
            string terr = i.Territory;
            bool   territoryInUSOrCanada = Functions.TerritoryInCanada(terr) || Functions.TerritoryInUnitedStates(terr);

            if (territoryInUSOrCanada)
            {
                if (i.IsEducatorK12())
                {
                    return("*****@*****.**");
                }
                if (i.IsEducatorUniv())
                {
                    switch (terr)
                    {
                    case "CEN": return("*****@*****.**");

                    case "MA": return("*****@*****.**");

                    case "MW": return("*****@*****.**");

                    case "NE": return("*****@*****.**");

                    case "PNW": return("*****@*****.**");

                    case "SE": return("*****@*****.**");

                    case "SW": return("*****@*****.**");

                    case "EC": return("*****@*****.**");

                    case "WC": return("*****@*****.**");
                    }
                }
            }
            if (Functions.TerritoryInAsia(terr))
            {
                if (i.IsEducatorK12() || i.IsEducatorUniv())
                {
                    return("*****@*****.**");
                }
            }
            if (Functions.TerritoryInEurope(terr))
            {
                if (i.IsEducatorK12() || i.IsEducatorUniv())
                {
                    return("edu-" + terr + "@extron.com");
                }
            }

            if (i.IsConsultant())
            {
                if (territoryInUSOrCanada)
                {
                    return("*****@*****.**");
                }
                if (Functions.TerritoryInEurope(terr))
                {
                    return("*****@*****.**");
                }
                if (Functions.TerritoryInAsia(terr))
                {
                    return("*****@*****.**");
                }
            }


            if (i.IsProgrammer())
            {
                if (territoryInUSOrCanada)
                {
                    return("*****@*****.**");
                }
            }

            if (i.IsVerticalMarketIntegrator())
            {
                if (territoryInUSOrCanada)
                {
                    return("*****@*****.**");
                }
            }

            return(terr + "*****@*****.**");
        }
示例#26
0
        private static AvantePricingEntity GetAvantePricing(string partnum, InsiderEntity insider, bool applyDiscounts)
        {
            AvantePricingEntity model = new AvantePricingEntity();

            Constants.CURRENCY_TYPE insiderCurrency = GetEnumCurrency(Functions.GetIntlPrefix(insider.PriceList));

            RBAccess oredback = new RBAccess();

            oredback.Command = "RPC_GetPricing_II";
            oredback.SetParameter(1, "");
            oredback.SetParameter(2, "");
            oredback.SetParameter(3, insider.GetBillToAccount());
            oredback.SetParameter(4, partnum);
            oredback.SetParameter(5, insider.PriceList);
            oredback.ClearFields();
            oredback.AddField("MktngDesc", "MktngDesc");
            oredback.AddField("WebEnabled", "WebEnabled");
            oredback.AddField("PriceCode", "PriceCode");
            oredback.AddField("CustPriceList", "CustPriceList");
            oredback.AddField("PartGroup", "PartGroup");
            oredback.AddField("DealerDisc", "DealerDisc");
            oredback.AddField("DealerDiscQtyBrk", "DealerDiscQtyBrk");
            oredback.AddField("DealerPrice", "DealerPrice");
            oredback.AddField("DealerQtyBrk", "DealerQtyBrk");
            oredback.AddField("ItemDisc", "ItemDisc");
            oredback.AddField("ItemDiscQtyBrk", "ItemDiscQtyBrk");
            oredback.AddField("ListPrice", "ListPrice");
            oredback.AddField("ListQtyBrk", "ListQtyBrk");
            oredback.AddField("Active", "AvanteActive");
            oredback.AddField("ProductPhase", "ProductPhase");
            oredback.AddField("ComponentPhase", "ComponentPhase");
            oredback.AddField("TakeOrderFlag", "TakeOrder");
            oredback.AddField("StopShipFlag", "StopShip");

            DataTable avante = oredback.GetDataTable("dlrprc");

            if (oredback.ErrorMessage != "")
            {
                return(null);
            }
            if (avante.Rows.Count == 0)
            {
                return(null);
            }

            DataRow data = avante.Rows[0];

            model.MktngDesc      = data["MktngDesc"].ToString();
            model.WebEnabled     = data["WebEnabled"].ToString() == "Y" ? true : false;
            model.AvanteActive   = data["AvanteActive"].ToString() == "Y" ? true : false;
            model.TakeOrderFlag  = data["TakeOrder"].ToString() == "Y" ? true : false;
            model.StopShip       = data["StopShip"].ToString() == "Y" ? true : false;
            model.ProductPhase   = GetEnumProductPhase(data["ProductPhase"].ToString());
            model.ComponentPhase = GetEnumComponentPhase(data["ComponentPhase"].ToString());
            model.PartGroup      = data["PartGroup"].ToString();
            model.PartGroup      = model.PartGroup.Substring(model.PartGroup.IndexOf('*'), model.PartGroup.IndexOf(']'));

            model.PriceList = insider.PriceList == "" ? data["CustPriceList"].ToString() : insider.PriceList;
            if (insider.HasMsrpPricingException())
            {
                model.ListPrice = CALL_PRICING;
            }
            else
            {
                string[] listPrices = data["ListPrice"].ToString().Split(RBAccess.VM);
                model.ListPrice = new PriceEntity()
                {
                    value = Decimal.Parse(listPrices[0]), currency = insiderCurrency
                };
            }

            decimal calcPrice;
            int     qtyBrk, lineItem = 1, prevQtyBrk = 0;
            string  qtyBrkDisplay;

            string[] dealerPrices = NO_ACCESS.ToString().Split(), dealerQtyBrks = NO_ACCESS.ToString().Split();
            if (!insider.HasMsrpPricingException())
            {
                dealerPrices  = data["DealerPrice"].ToString().Split(RBAccess.VM);
                dealerQtyBrks = data["DealerQtyBrk"].ToString().Split(RBAccess.VM);
            }

            // The original pricing.vb ran through the loop, but only
            // ever returned the first price item generated.
            // Let's process only the first item to begin with.
            int i = 0;

            //for (int i = 0; i < dealerPrices.Length; i++)
            //{
            calcPrice     = Decimal.Parse(dealerPrices[i]);
            qtyBrk        = Math.Min(int.Parse(dealerQtyBrks[i]), (int)NO_ACCESS); // CINTZERO
            qtyBrkDisplay = (prevQtyBrk + 1).ToString();
            if (dealerPrices.Length == lineItem)
            {
                qtyBrkDisplay += "+";
            }
            else
            {
                qtyBrkDisplay += "-" + qtyBrk.ToString();
            }

            if (applyDiscounts && PriceExtension.IsEligible(calcPrice))
            {
                int      lineItemBrk;
                decimal  lineItemPrice;
                string[] discounts, discountQtyBrks;

                // type 1 discount - line item
                if (data["ItemDisc"].ToString() != "")
                {
                    discounts       = data["ItemDisc"].ToString().Split(RBAccess.VM);
                    discountQtyBrks = data["ItemDiscQtyBrk"].ToString().Split(RBAccess.VM);

                    for (int j = 0; j < discounts.Length; j++)
                    {
                        lineItemPrice = decimal.Parse(discounts[j]);
                        lineItemBrk   = Math.Min(int.Parse(discountQtyBrks[j]), (int)NO_ACCESS);
                        if (qtyBrk <= lineItemBrk)
                        {
                            calcPrice += lineItemPrice;
                            break;
                        }
                    }
                }

                // type 4 discount - overall percentage
                if (data["DealerDisc"].ToString() != "")
                {
                    discounts       = data["DealerDisc"].ToString().Split(RBAccess.VM);
                    discountQtyBrks = data["DealerDisc"].ToString().Split(RBAccess.VM);
                    for (int j = 0; j < discounts.Length; j++)
                    {
                        lineItemPrice = decimal.Parse(discounts[j]);
                        lineItemBrk   = Math.Min(int.Parse(discountQtyBrks[j]), (int)NO_ACCESS);
                        if (qtyBrk <= lineItemBrk)
                        {
                            calcPrice *= (1 + (lineItemPrice / 100));
                            break;
                        }
                    }
                }
                model.DealerPrice = new PriceEntity()
                {
                    value = calcPrice, currency = insiderCurrency
                };
            }
            //}
            return(model);
        }
示例#27
0
 public static bool IsProgrammer(this InsiderEntity i)
 {
     return(i.PriceClass.Contains(PRICE_CLASS.PROGRAMMER));
 }
示例#28
0
 public static bool IsMSRPOnly(this InsiderEntity i)
 {
     return(i.MSRP == 1);
 }
示例#29
0
 public static bool IsEducatorUniv(this InsiderEntity i)
 {
     return(i.PriceClass.Equals(PRICE_CLASS.EDUCATION_UNIVERSITY));
 }
示例#30
0
 public static bool IsConsultant(this InsiderEntity i)
 {
     return(i.PriceClass.Contains(PRICE_CLASS.CONSULTANT));
 }