public override IMovilwayApiResponse PerformUtibaOperation(IMovilwayApiRequest requestObject, UMarketSCClient utibaClientProxy, String sessionID)
        {
            GetSalesSummaryRequestBody  request  = requestObject as GetSalesSummaryRequestBody;
            GetSalesSummaryResponseBody response = null;

            //int startEpochTime = Utils.FromDateTimeToEpoch(request.StartDate);
            //int endEpochTime = Utils.FromDateTimeToEpoch(request.EndDate);

            response = new GetSalesSummaryResponseBody()
            {
                ResponseCode    = 0,
                ResponseMessage = "OK",
                Summaries       = Utils.SalesSummary(request.AuthenticationData.Username, request.Date, (int)request.WalletType),
                SummaryDate     = request.Date,
                TransactionID   = new Random().Next(100000, 999999)
            };

            //salesResponse utibaSalesResponse = utibaClientProxy.sales(new sales()
            //{
            //    salesRequest = new salesRequestType()
            //    {
            //        sessionid = sessionID,
            //        device_type = request.DeviceType,
            //        start = (startEpochTime * 1000L),
            //        startSpecified = true,
            //        end = (endEpochTime * 1000L),
            //        endSpecified = true,
            //        type = (int)request.WalletType,
            //        target = request.Product
            //    }
            //});

            //if (utibaSalesResponse != null)
            //{
            //    response = new GetSalesSummaryResponseBody()
            //    {
            //        ResponseCode = utibaSalesResponse.salesReturn.result,
            //        ResponseMessage = utibaSalesResponse.salesReturn.result_message,
            //        TransactionID = utibaSalesResponse.salesReturn.transid,
            //        TransactionCount = utibaSalesResponse.salesReturn.count,
            //        TotalAmount = utibaSalesResponse.salesReturn.sum
            //    };
            //}
            return(response);
        }
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetSalesSummaryResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           FinalAmount     = 0m,
                           InitialAmount   = 0m,
                           Summaries       = new SummaryItems(),
                           SummaryDate     = DateTime.Now
                       }
            }
            ;

            GetSalesSummaryRequestBody  request  = requestObject as GetSalesSummaryRequestBody;
            GetSalesSummaryResponseBody response = null;

            ManagementInterface managementWS = new ManagementInterface();
            LogisticsInterface  logisticsWS  = new LogisticsInterface();

            string message;

            #region comentario
            //int voucherQtyDownload, retailerId;
            //string retailerName, retailerAddress, retailerLegalId, ticketHeader, currentTime;

            //if (!managementWS.GetRetailerInfo(int.Parse(sessionID), out retailerId, out retailerName, out retailerAddress, out retailerLegalId, out voucherQtyDownload, out ticketHeader, out currentTime, out message))
            //{
            //    return new GetSalesSummaryResponseBody()
            //    {
            //        ResponseCode = 97,
            //        ResponseMessage = message,
            //        Summaries = null,
            //        SummaryDate = request.Date,
            //        TransactionID = new Random().Next(100000, 999999)
            //    };
            //}

            //int userId;
            //long timeOut;
            //string userName, userLastName, userAddress;

            //if (!managementWS.GetUserInfo(int.Parse(sessionID), out userId, out userName, out userLastName, out userAddress, out timeOut, out message))
            //{
            //    return new GetSalesSummaryResponseBody()
            //    {
            //        ResponseCode = 98,
            //        ResponseMessage = message,
            //        Summaries = null,
            //        SummaryDate = request.Date,
            //        TransactionID = new Random().Next(100000, 999999)
            //    };
            //}
            #endregion

            /* Se comenta porque no hace nada (sólo reventar en caso de overflow
             * int amount, count;
             *
             * if (!kinacuWS.SaleCountBySeller(int.Parse(sessionID), out amount, out count, out message))
             * {
             *   return new GetSalesSummaryResponseBody()
             *   {
             *       ResponseCode = 99,
             *       ResponseMessage = message,
             *       Summaries = null,
             *       SummaryDate = request.Date,
             *       TransactionID = new Random().Next(100000, 999999)
             *   };
             * }*/

            //long balance = kinacuWS.GetAccountBalance(int.Parse(sessionID), out message);

            SummaryItems summary = new SummaryItems();
            decimal      initialAmount, finalAmount;

            if (request.SummaryType == null || request.SummaryType.Equals(SummaryType.NotSpecified) || request.SummaryType.Equals(SummaryType.ByUser))
            {
                summary = Utils.SalesSummary(request.AuthenticationData.Username, request.Date);

                response = new GetSalesSummaryResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "OK",
                    Summaries       = summary,
                    SummaryDate     = request.Date,
                    TransactionID   = new Random().Next(100000, 999999)
                };
            }
            else
            {
                summary  = Utils.SalesSummaryByAgent(request.AuthenticationData.Username, request.Date, out initialAmount, out finalAmount);
                response = new GetSalesSummaryResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "OK",
                    Summaries       = summary,
                    SummaryDate     = request.Date,
                    TransactionID   = new Random().Next(100000, 999999),
                    InitialAmount   = initialAmount,
                    FinalAmount     = finalAmount
                };
            }


            // Asignar Nombre de agencia y fecha de impresion
            if (response != null)
            {
                response.BranchName  = Utils.GetAgentName(request.AuthenticationData.Username);
                response.DatePrinter = Utils.GetLocalTimeZone().ToString("yyyy-MM-dd HH:mm:ss");
            }


            //response.Summaries = new SummaryItems();

            //if (request.WalletType == WalletType.Stock)
            //    response.Summaries.Add(new SummaryItem() { TotalAmount = amount / 100m, TransactionCount = count, TransactionType = "Recargas y pines" });
            //else
            //    response.Summaries.Add(new SummaryItem() { TotalAmount = 0, TransactionCount = 0, TransactionType = "Recargas y pines" });
            logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetSalessSummaryResult]").Tag(" GetSalesSummaries ").Value(response.Summaries.Count));
            return(response);
        }
    }
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetSalesSummaryResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           FinalAmount     = 0m,
                           InitialAmount   = 0m,
                           Summaries       = new SummaryItems(),
                           SummaryDate     = DateTime.Now
                       }
            }
            ;

            GetSalesSummaryReportRequestBody request = requestObject as GetSalesSummaryReportRequestBody;

            if (request.InitialDate > request.EndDate)
            {
                // logger.InfoLow(() => TagValue.New().Message("RANGO DE FECHAS INVALIDO"));
                return(new GetSalesSummaryResponseBody()
                {
                    ResponseCode = 90,
                    ResponseMessage = "RANGO DE FECHAS INVALIDO",
                    TransactionID = 0,
                    FinalAmount = 0m,
                    InitialAmount = 0m,
                    Summaries = new SummaryItems(),
                    SummaryDate = DateTime.Now
                });
            }

            logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetSalesSummaryReport]").Tag("[RCV-DATA] GetSalesSummaryReport ").Value(request));

            GetSalesSummaryResponseBody response = null;

            ManagementInterface managementWS = new ManagementInterface();
            LogisticsInterface  logisticsWS  = new LogisticsInterface();

            string message;

            #region comentario
            //int voucherQtyDownload, retailerId;
            //string retailerName, retailerAddress, retailerLegalId, ticketHeader, currentTime;

            //if (!managementWS.GetRetailerInfo(int.Parse(sessionID), out retailerId, out retailerName, out retailerAddress, out retailerLegalId, out voucherQtyDownload, out ticketHeader, out currentTime, out message))
            //{
            //    return new GetSalesSummaryResponseBody()
            //    {
            //        ResponseCode = 97,
            //        ResponseMessage = message,
            //        Summaries = null,
            //        SummaryDate = request.Date,
            //        TransactionID = new Random().Next(100000, 999999)
            //    };
            //}

            //int userId;
            //long timeOut;
            //string userName, userLastName, userAddress;

            //if (!managementWS.GetUserInfo(int.Parse(sessionID), out userId, out userName, out userLastName, out userAddress, out timeOut, out message))
            //{
            //    return new GetSalesSummaryResponseBody()
            //    {
            //        ResponseCode = 98,
            //        ResponseMessage = message,
            //        Summaries = null,
            //        SummaryDate = request.Date,
            //        TransactionID = new Random().Next(100000, 999999)
            //    };
            //}
            #endregion

            int amount, count;

            if (!kinacuWS.SaleCountBySeller(int.Parse(sessionID), out amount, out count, out message))
            {
                return(new GetSalesSummaryResponseBody()
                {
                    ResponseCode = 99,
                    ResponseMessage = message,
                    Summaries = null,
                    SummaryDate = request.InitialDate,
                    TransactionID = new Random().Next(100000, 999999)
                });
            }

            //long balance = kinacuWS.GetAccountBalance(int.Parse(sessionID), out message);

            SummaryItems summary = new SummaryItems();
            decimal      initialAmount, finalAmount;

            if (request.SummaryType == null || request.SummaryType.Equals(SummaryType.NotSpecified) || request.SummaryType.Equals(SummaryType.ByUser))
            {
                summary  = Utils.SalesSummary(request.AuthenticationData.Username, request.InitialDate, request.EndDate);
                response = new GetSalesSummaryResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "OK",
                    Summaries       = summary,

                    //     SummaryDate = DateTime.eM,
                    TransactionID = new Random().Next(100000, 999999)
                };
            }
            else
            {
                summary  = Utils.SalesSummaryByAgent(request.Agent, request.InitialDate, request.EndDate, out initialAmount, out finalAmount);
                response = new GetSalesSummaryResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "OK",
                    Summaries       = summary,
                    // SummaryDate = request.InitialDate,
                    TransactionID = new Random().Next(100000, 999999),
                    InitialAmount = initialAmount,
                    FinalAmount   = finalAmount
                };
            }

            //response.Summaries = new SummaryItems();

            //if (request.WalletType == WalletType.Stock)
            //    response.Summaries.Add(new SummaryItem() { TotalAmount = amount / 100m, TransactionCount = count, TransactionType = "Recargas y pines" });
            //else
            //    response.Summaries.Add(new SummaryItem() { TotalAmount = 0, TransactionCount = 0, TransactionType = "Recargas y pines" });
            //  logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX).Tag("[GetSalesSummaryReport]").Value(response));


            logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetSalesSummaryReportResult]").Tag(" GetSalesSummaries ").Value(response.Summaries.Count));
            return(response);
        }
    }