Example #1
0
        private ReturnPrice GetPriceEncarte(ReturnPrice returnPrice, CustomerScore customerScore, long storeId)
        {
            MedalCode medalCode;

            if (customerScore.Score == null)
            {
                medalCode = MedalCode.NotRegistered;
            }
            else
            {
                medalCode = (MedalCode)int.Parse(customerScore.Score.Id);
            }

            PriceEncarte priceEncarte = _precoRepository.GetPriceEncarte(returnPrice.ProductId, storeId, medalCode);

            ReturnPrice price = new ReturnPrice();

            if (priceEncarte.SalePrice > 0)
            {
                price = new ReturnPrice
                {
                    ProductId          = returnPrice.ProductId,
                    SalePrice          = priceEncarte.SalePrice,
                    MaximumPrice       = returnPrice.SalePrice,
                    DiscountType       = DiscountType.Encarte,
                    PercentageDiscount = Math.Round(((returnPrice.SalePrice - priceEncarte.SalePrice) / returnPrice.SalePrice) * 100, 2)
                };
            }

            return(price);
        }
Example #2
0
        private async Task <ReturnPrice> GetPriceAzulAsync(string productId, string storeId, bool customerRegistered)
        {
            PriceModel priceModel = await new RequestService <PriceModel>(httpClient).SendResquest($"https://dev.apipmenos.com/price/v1/" + productId + "?subsidiaryId=" + storeId, "vhubPbOuqb7X5ZEuflnJN1c3GlR03K2x4KzAt6d1");
            Decimal    SalePrice;

            if (customerRegistered)
            {
                SalePrice = Decimal.Parse(priceModel.price.everBluePrice);
            }
            else
            {
                SalePrice = Decimal.Parse(priceModel.price.salePrice);
            }


            ReturnPrice returnPrice = new ReturnPrice
            {
                DiscountType       = DiscountType.Azul,
                MaximumPrice       = Decimal.Parse(priceModel.price.salePrice),
                PercentageDiscount = Math.Round(((Decimal.Parse(priceModel.price.salePrice) - SalePrice) / Decimal.Parse(priceModel.price.salePrice)) * 100, 2),
                ProductId          = int.Parse(productId),
                SalePrice          = SalePrice
            };

            return(returnPrice);
        }
Example #3
0
        private BestPriceReturn GetBestPrice(List <ReturnPrice> priceList)
        {
            ReturnPrice priceReturn = priceList.OrderBy(x => x.SalePrice).ToList()[0];

            return(new BestPriceReturn
            {
                Bestprice = Math.Round(priceReturn.SalePrice, 2),
                DiscountType = priceReturn.DiscountType,
                FromPrice = Math.Round(priceReturn.MaximumPrice, 2),
                ProductId = priceReturn.ProductId,
                DiscountPercentage = priceReturn.PercentageDiscount
            });
        }
Example #4
0
        private ReturnPrice GetPriceNotRegistered(ReturnPrice baseReturnPrice)
        {
            ReturnPrice returnPrice = new ReturnPrice
            {
                DiscountType       = DiscountType.NaoCadastrado,
                MaximumPrice       = baseReturnPrice.SalePrice,
                PercentageDiscount = 0,
                ProductId          = baseReturnPrice.ProductId,
                SalePrice          = baseReturnPrice.SalePrice
            };

            return(returnPrice);
        }
Example #5
0
        public List <BestPriceReturn> GetPrice(RequisitionData request)
        {
            List <BestPriceReturn> bestPriceReturnList = new List <BestPriceReturn>();

            CustomerScore customerScore = GetCustomerScoreAsync(request.CpfCnpjCustomer).Result;

            foreach (Product product in request.Products)
            {
                List <ReturnPrice> returnPriceList = new List <ReturnPrice>();

                ReturnPrice baseReturnprice = GetPriceAzulAsync(product.Id.ToString(), request.StoreId.ToString(), customerScore.Score != null).Result;

                ReturnPrice priceEncarte = GetPriceEncarte(baseReturnprice, customerScore, request.StoreId);

                if (priceEncarte.SalePrice > 0)
                {
                    returnPriceList.Add(priceEncarte);
                }

                if (customerScore.Score != null)
                {
                    switch ((MedalCode)Enum.Parse(typeof(MedalCode), customerScore.Score.Id))
                    {
                    case MedalCode.Ouro:
                        returnPriceList.Add(GetPriceOuro(baseReturnprice, request.StoreId, MedalCode.Ouro));
                        break;

                    case MedalCode.Senior:
                        returnPriceList.Add(GetPriceSenior(baseReturnprice, request.StoreId, MedalCode.Senior));
                        break;

                    case MedalCode.Hapvida:
                        returnPriceList.Add(GetPriceHapvida(baseReturnprice, request.StoreId, MedalCode.Senior));
                        break;

                    default:
                        returnPriceList.Add(baseReturnprice);
                        break;
                    }
                }
                else
                {
                    returnPriceList.Add(GetPriceNotRegistered(baseReturnprice));
                }

                bestPriceReturnList.Add(GetBestPrice(returnPriceList));
            }

            return(bestPriceReturnList);
        }
Example #6
0
        private ReturnPrice GetPriceSenior(ReturnPrice baseReturnPrice, long storeId, MedalCode medalCode)
        {
            MedalDiscount medalDiscount = GetMedalDiscount(baseReturnPrice.ProductId, storeId, medalCode);

            ReturnPrice returnPrice = new ReturnPrice
            {
                DiscountType       = DiscountType.Senior,
                MaximumPrice       = baseReturnPrice.MaximumPrice,
                PercentageDiscount = medalDiscount.PercentualDesconto,
                ProductId          = baseReturnPrice.ProductId,
                SalePrice          = baseReturnPrice.MaximumPrice - Decimal.Multiply(baseReturnPrice.MaximumPrice, medalDiscount.PercentualDesconto / 100)
            };

            return(returnPrice);
        }
        public async Task <ActionResult> PriceProductEdit(ReturnPrice data, int precioId)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", "¡Error! Datos Incompletos.");
                return(View(data));
            }

            var result = await _updateMethods.UpdateProductPrice(new ProductPrice()
            {
                Price = precioId, Amount = data.Amount
            });

            if (result)
            {
                return(await Task.FromResult <ActionResult>(RedirectToAction("ProductList")));
            }
            ModelState.AddModelError("", "Ha ocurrido un error.\n");
            return(View(data));
        }
Example #8
0
        public Task <ReturnPrice> ReturnPrice(int pkPrice)
        {
            try
            {
                ReturnPrice price = new ReturnPrice();
                using (var conn = _settings.GetConnection())
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }

                    string query = $"SELECT * FROM RETORNA_PRECIO({pkPrice});";
                    using (var cmd = new SqlCommand(query, conn))
                    {
                        cmd.CommandType = CommandType.Text;
                        var dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                            price.PkCode  = dr.GetInt32(0);
                            price.Type    = dr.GetString(1);
                            price.TypeCod = dr.GetInt32(2);
                            price.Product = dr.GetInt32(3);
                            price.Amount  = dr.GetDecimal(4);
                        }
                    }
                }

                return(Task.FromResult(price));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(null);
            }
        }