private static decimal GetAverageCommission(SalesSummaryDashBoardItems summary, string comissionValue) { string[] listComission = comissionValue.Split('#'); int countPercentage = 0; decimal sumatoria = 0; List <string> productsNames = summary.Select(s => s.ProductName).Distinct().ToList <string>(); Dictionary <string, decimal> dictionaryCommission = new Dictionary <string, decimal>(); for (int i = 0; i < listComission.Count(); i++) { string[] itemValuesCommi = listComission[i].Split(':'); dictionaryCommission.Add(itemValuesCommi[0].ToString().Trim(), Convert.ToDecimal(itemValuesCommi[1].ToString())); } for (int i = 0; i < productsNames.Count(); i++) { decimal itemDictionary = 0; if (dictionaryCommission.TryGetValue(productsNames[i], out itemDictionary)) { sumatoria = sumatoria + itemDictionary; countPercentage++; } } if (countPercentage > 0) { sumatoria = sumatoria / countPercentage; sumatoria = Math.Truncate(sumatoria * 100) / 100; } return(sumatoria); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetSalesSummaryDashBoardResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, SalesSummariesDashBoard = new SalesSummaryDashBoardItems() } } ; GetSalesSummaryDashBoardRequestBody request = requestObject as GetSalesSummaryDashBoardRequestBody; GetSalesSummaryDashBoardResponseBody response = null; ManagementInterface managementWS = new ManagementInterface(); LogisticsInterface logisticsWS = new LogisticsInterface(); string message; SalesSummaryDashBoardItems summary = new SalesSummaryDashBoardItems(); summary = Utils.SalesSummaryByAgentDashBoard(request.AuthenticationData.Username, request.InitialDate, request.EndDate, out message); if (message.Equals("OK")) { decimal auxTotalSales = 0; if (summary != null) { auxTotalSales = summary.Sum(r => r.TotalAmount); CommissionSalesSummaryDashItem summaryCommi = new CommissionSalesSummaryDashItem(); summaryCommi = Utils.CommissionSalesSummaryByAgentDashBoard(request.AuthenticationData.Username, request.InitialDate, request.EndDate, out message); if (message.Equals("OK") && summaryCommi != null) { string comissionValue = summaryCommi.CommiPercentage; decimal valueComm = 0; if (!String.IsNullOrEmpty(comissionValue)) { valueComm = GetAverageCommission(summary, comissionValue); } response = new GetSalesSummaryDashBoardResponseBody() { ResponseCode = 0, ResponseMessage = message, SalesSummariesDashBoard = summary, SummaryDate = request.EndDate, TransactionID = 0, TotalSales = auxTotalSales, TotalRevenue = summaryCommi.TotalCommiSales, AverageCommission = valueComm }; } else { response = new GetSalesSummaryDashBoardResponseBody() { ResponseCode = 90, ResponseMessage = message, SalesSummariesDashBoard = new SalesSummaryDashBoardItems(), SummaryDate = request.EndDate, TransactionID = 0 }; } } else { response = new GetSalesSummaryDashBoardResponseBody() { ResponseCode = 90, ResponseMessage = message, SalesSummariesDashBoard = new SalesSummaryDashBoardItems(), SummaryDate = request.EndDate, TransactionID = 0 }; } } else { response = new GetSalesSummaryDashBoardResponseBody() { ResponseCode = 90, ResponseMessage = message, SalesSummariesDashBoard = new SalesSummaryDashBoardItems(), SummaryDate = request.EndDate, TransactionID = 0 }; } logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetSalesSummaryDashBoardResult]").Tag(" GetSummarySalesDashBoard ").Value(response.SalesSummariesDashBoard.Count).Tag("Mensaje").Value(message)); return(response); }