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); }
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); }
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 }); }
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); }
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); }
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)); }
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); } }