Exemplo n.º 1
0
 protected IMovilwayApiResponse SecondKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
 {
     return(new TopUpResponseBody()
     {
         ResponseCode = 95,
         ResponseMessage = "ESTA INTENTANDO DUPLICAR UNA MISMA RECARGA",
         TransactionID = 0,
         ExternalTransactionReference = "",
         PointBalance = 0m,
         StockBalance = 0m,
         WalletBalance = 0m
     });
 }
Exemplo n.º 2
0
 public abstract IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID);
Exemplo n.º 3
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID)
        {
            string providerName            = "DebitNoteProvider";
            DebitNoteRequestBody  request  = requestObject as DebitNoteRequestBody;
            DebitNoteResponseBody response = new DebitNoteResponseBody()
            {
                ResponseCode    = 90,
                ResponseMessage = "Error inesperado",
                TransactionID   = 0
            };

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[" + providerName + "] [SEND-DATA] DebitNoteProvider {AgentId=" + request.AgentId + ",Amount=" + request.Amount + ",Comment=" + request.Comment + ",SupportDocument=" + request.SupportDocument + "}");

            if (sessionID.Equals("0"))
            {
                response.ResponseMessage = "Error de sesion";
                logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[" + providerName + "] [RECV-DATA] DebitNoteResult {response={" + response + "}}");
                return(response);
            }

            API.Utils.KinacuDb db = new API.Utils.KinacuDb();

            do
            {
                SqlConnection  connection = Movilway.API.Utils.Database.GetKinacuDbConnection();
                SqlTransaction trx        = null;
                bool           success    = false;

                try
                {
                    connection.Open();
                    db.db = connection;

                    InfoAgente originador = db.GetInfoAgente(null, request.AuthenticationData.Username);
                    InfoAgente agencia    = db.GetInfoAgente(request.AgentId);

                    if (agencia == null || agencia.OwnerId != originador.BranchId)
                    {
                        response.ResponseMessage = "Agencia inválida";
                        break;
                    }

                    trx = connection.BeginTransaction();
                    db.databaseTransaction = trx;

                    string comentario = string.Concat(
                        "Agente ",
                        originador.BranchId,
                        ": ",
                        string.IsNullOrEmpty(request.SupportDocument) ? string.Empty : string.Concat("Comp. ", request.SupportDocument, "-"),
                        request.Comment);

                    int id = db.CrearMovimientoCuentaCorriente((int)agencia.BranchId, request.Amount, comentario, false, Core.cons.TtrIdMovimientoCuentaCorrienteNotaDebito);
                    if (id != 0)
                    {
                        success = true;
                        response.ResponseCode    = 0;
                        response.ResponseMessage = string.Empty;
                        response.TransactionID   = id;

                        db.InsertarMovimientoAuditoria((int)originador.BranchId, null, comentario, id, "FINANCIERO", "DECREMENTO");

                        trx.Commit();
                        // trx.Rollback();
                        trx.Dispose();
                        trx = null;
                        db.databaseTransaction = null;
                    }
                }
                catch (Exception ex)
                {
                    ProviderLogger.ExceptionLow(() => TagValue.New()
                                                .MethodName(providerName)
                                                .Exception(ex));
                }
                finally
                {
                    if (!success && trx != null)
                    {
                        try
                        {
                            trx.Rollback();
                        }
                        catch (Exception)
                        {
                        }
                    }

                    try
                    {
                        connection.Close();
                    }
                    catch (Exception)
                    {
                    }
                }
            }while (false);

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[" + providerName + "] [RECV-DATA] DebitNoteResult {response={" + response + "}}");
            return(response);
        }
Exemplo n.º 4
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            try
            {
                ChangePasswodRequestBody request = requestObject as ChangePasswodRequestBody;


                ChangePasswordResponseBody response = null;

                logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[ChangePasswordProvider] Start").Tag("User").Value(request.AuthenticationData.Username).Tag("UserId").Value(request.UserId).Tag("AccessTypeId").Value(request.AccessTypeId));


                response = new ChangePasswordResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "Exito",
                    TransactionID   = 0,
                    Result          = Utils.ChangePassword(request.AuthenticationData.Username, request.DeviceType, request.UserId, request.AccessTypeId, request.NewPassword)
                };

                if (response.Result == false)
                {
                    response.ResponseMessage = "Contraseña no actualizada";
                    response.ResponseCode    = 99;
                }
                logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[ChangePasswordProvider] End").Tag("User").Value(request.AuthenticationData.Username).Tag("UserId").Value(request.UserId).Tag("AccessTypeId").Value(request.AccessTypeId));
                return(response);
            }
            catch (Exception e)
            {
                //logger.ExceptionHigh(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] Exception").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent));
                logger.ExceptionHigh(() => TagValue.New().Exception(e).MethodName("ChangePassword").Tag("User").Value(requestObject.AuthenticationData.Username));


                throw e;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Ejecuta la operacion validando los constrains de seguridad
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public IMovilwayApiResponse PerformSecureOperation(IMovilwayApiRequest request)
        {
            IMovilwayApiResponse response = null;

            //DATOS DE AUTENTICACION
            try
            {
                InitPrefix();

                PrintLoginValues(request);



                //Validaciones de seguridad teniendo en cuenta los datos de la peticion
                SecureValidation(request);



                SecureAccessValidation(request);

                //
                String sessionID = null;
                if (!(request is GetSessionRequestBody))
                {
                    sessionID = GetSessionID(request);
                }


                SaleInterface kinacuWS = new SaleInterface();
                //
                // CONDIGURACION INTERFAZ
                int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]);
                kinacuWS.Timeout = timeOutSeconds * 1000;


                response = PerformKinacuOperation(request, kinacuWS, sessionID);
                #region secondrequest
                //if (!ValidateNumberOfExecution(request))
                //    response = PerformKinacuOperation(request, kinacuWS, sessionID);
                //else
                //{


                //        if (_delegateSecondExecution == null)
                //            throw new Exception("NO SE HA DEFINIDO EL MANEJADOR PARA LA SEGUNDA PETICION");

                //        bool isNew = false;

                //        Func<int> callback = delegate()
                //        {
                //            logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS NEW]");
                //            isNew = true;
                //            return 1;
                //        };

                //        int hascode = request.GetHashCode();
                //        logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST VALIDATION] [" + hascode + "] "+_cacheRequest.ToString());
                //    //Action<object,object> oncache= delegate(object k , object v)
                //    //    {
                //    //        logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS DOUBLE]");
                //    //        isNew = false;
                //    //    };


                //         _cacheRequest.GetValue<int>(hascode, callback);//, oncache);



                //        if (isNew)
                //        {
                //               response = PerformKinacuOperation(request, kinacuWS, sessionID);
                //        }
                //        else
                //        {
                //            logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [SecondExecution]");
                //            response = _delegateSecondExecution (request, kinacuWS, sessionID);
                //        }



                //}
                #endregion


                if (bool.Parse(ConfigurationManager.AppSettings["LogoffAuto"] ?? "true"))
                {
                    logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [SEND-DATA] logoffParameters {userid=" + sessionID + "}");
                    kinacuWS.LogOff(int.Parse(sessionID));
                    logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [RECV-DATA] logoffResult {nothing}");
                }

                logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [OUTPUT] " + response.ToString());
            }
            catch (Exception e)
            {
                logger.ErrorLow("[API] " + LOG_PREFIX + "[KinacuProvider] [EXCEPTION] Exception trying to serve KINACU Operation {message=" + e.Message + ",stackTrace=" + e.StackTrace + "}");

                //SE DELEGA EL MANEJO DE LA EXPECION A QUIEN LO INVOCA GENERALMENTE SERVICEEXECUTIONDELEGATOR
                throw;

                #region intento de respuesta anterior

                //Type a = this.GetType().GetMethod("PerformOperation").ReturnType;
                //response = new AGenericApiResponse() { ResponseCode = 99, ResponseMessage = e.Message, TransactionID = 0 };
                //Type name = MethodBase.GetCurrentMethod().GetType();
                //ProviderLogger.ExceptionLow(() => TagValue.New().Message("Exception trying to serve KINACU Operation").Exception(e));
                #endregion
            }

            return(response);
        }
Exemplo n.º 6
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            try
            {
                GetUsersAgentRequestBody request = requestObject as GetUsersAgentRequestBody;


                GetUsersAgentResponseBody response = null;

                logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] Start").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent));


                response = new GetUsersAgentResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "Exito",
                    TransactionID   = 0,
                    Users           = Utils.GetUsers(request.Agent, request.AuthenticationData.Username, request.DeviceType, request.Onlychildren, request.ShowAccess)
                };

                logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] End").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent));
                return(response);
            }
            catch (Exception e)
            {
                //logger.ExceptionHigh(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] Exception").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent));
                logger.ExceptionHigh(() => TagValue.New().Exception(e).MethodName("GetUsersAgentProvider").Tag("User").Value(requestObject.AuthenticationData.Username));


                throw e;
            }
        }
Exemplo n.º 7
0
        private SecurityResponseBody dummyKinacuImplementation(IMovilwayApiRequest request, SaleInterface kinacuWS, string sessionID)
        {
            string result = "";



            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetSessionProvider] [SEND-DATA] loginParameters {accessId=" + request.AuthenticationData.Username + ",password=******,accessType=" + request.DeviceType + "}");

            int newSessionResponse = kinacuWS.Login(request.AuthenticationData.Username, request.AuthenticationData.Password, request.DeviceType, out result);

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetSessionProvider] [RECV-DATA] loginResult {response=" + newSessionResponse + ",result=" + result + "}");

            SecurityResponseBody response = new SecurityResponseBody()
            {
                ResponseCode  = newSessionResponse != 0 ? 0 : GetResponseCode(result),
                TransactionID = 0,
                SessionID     = newSessionResponse.ToString()
            };

            if (newSessionResponse == 0)
            {
                response.ResponseMessage = result;
            }


            return(response);
        }
Exemplo n.º 8
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetParametersResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           ParametersInfo  = new ParameterList()
                       }
            }
            ;

            GetParametersRequestBody  request  = requestObject as GetParametersRequestBody;
            GetParametersResponseBody response = null;

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetParametersProvider] [SEND-DATA] getParametersParameters {}");

            ParameterList parameterList = Utils.GetParameters();

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetParametersProvider] [RECV-DATA] getParametersResult {response={" + DataContract.Utils.logFormat(parameterList) + "}}");

            response = new GetParametersResponseBody()
            {
                ResponseCode    = 0,
                ResponseMessage = "exito",
                TransactionID   = 0,
                ParametersInfo  = parameterList
            };

            return(response);
        }
    }
Exemplo n.º 9
0
 public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
 {
     return(new GetAgentDistributionsResponseBody()
     {
         ResponseCode = 0,
         ResponseMessage = "Respuesta exitosa.",
         TransactionID = 0
     });
 }
Exemplo n.º 10
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            CreateAgentResponseBody response = new CreateAgentResponseBody();

            try
            {
                if (sessionID.Equals("0"))
                {
                    return new CreateAgentResponseBody()
                           {
                               ResponseCode    = 90,
                               ResponseMessage = "error session",
                               TransactionID   = 0,
                               Errors          = { new ErrorItem()
                                                   {
                                                       ErrorId = "90", ErrorDescription = "Session invalida"
                                                   } }
                           }
                }
                ;



                CreateAgentRequestBody request = requestObject as CreateAgentRequestBody;


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



                int currentUserId = Utils.GetUserId(request.AuthenticationData.Username); /// OJO
                MD5 md5           = new MD5CryptoServiceProvider();



                var result = Utils.ValidateSoldChildComissions(request.AuthenticationData.Username, request.Commission);
                if (!result.IsObjectValidResult())
                {
                    response.ResponseCode = 100;

                    response.ResponseMessage = "[ERROR DE NEGOCIO] COMISION POR DEPOSITO";
                    response.Errors          = new ErrorItems()
                    {
                        new ErrorItem()
                        {
                            ErrorId = "" + result.ResponseCode, ErrorDescription = result.ResponseMessage
                        }
                    };
                    return(response);
                }

                var reqAgent = new RequestAgent()
                {
                    age_cuit          = request.RIF,
                    age_nombre        = request.AgentName,
                    age_razonsocial   = request.LegalName,
                    age_direccion     = request.Address,
                    age_entrecalles   = request.BetweenStreets,
                    age_ciu_id        = decimal.Parse(request.City),
                    age_tel           = request.Phone,
                    age_cel           = request.NumberIMEI,
                    age_email         = request.Email,
                    age_contacto      = request.ContactPerson,
                    age_subNiveles    = decimal.Parse(request.SubLevels),
                    age_pdv           = request.Pdv,
                    age_observaciones = request.Notes,

                    ct_id = request.TaxCategory == 0 ? 1 : request.TaxCategory, //Categoria Tributaria
                    ta_id = 1,                                                  //Tipo de agencia
                    sa_id = request.SegmentId == 0 ? 1 : request.SegmentId,     // segmento de la agencia

                    age_tipo = "SU",
                    age_autenticaterminal = "N",
                    age_estado            = "AC",
                    //Solicitud de operaciones no se debio cambiar
                    age_prefijosrest = "",

                    usr_id_modificacion = currentUserId,

                    age_comisionadeposito             = request.CommissionableDeposits ? "S" : "N",
                    age_montocomision                 = request.Commission,
                    limiteCredito                     = request.CheckingAccountCreditLimit.ToString(),
                    autorizacionAutomatica            = request.AutomaticAuthorization.ToString(),
                    quitaAutomatica                   = request.AutomaticReverse.ToString(),
                    generacionAutomatica              = request.AutomaticReposition.ToString(),
                    montoMinimoPorPedido              = request.MinimumOrderAmount.ToString(),
                    montoMaximoPorPedido              = request.MaximumOrderAmount.ToString(),
                    pedidoMaximoMensual               = request.MaximumMonthlyAmount.ToString(),
                    autorizacionAutomaticaMontoDiario = request.MaximumAuthorizedDailyAmount.ToString(),
                    recargaAsincronica                = request.AsynchronousTopup.ToString(),
                    comisionporventa                  = request.SalesCommission,

                    usr_nombre   = request.UserName1,
                    usr_apellido = request.UserLastName1,

                    acc_login    = request.AccessLogin1,
                    acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword1))),
                    //segundo usuario
                    acc_validityDate        = DateTime.Now.AddDays(360),
                    second_acc_validityDate = DateTime.Now.AddDays(360),
                    third_acc_validityDate  = DateTime.Now.AddDays(360),
                    // primer acceso segundo usuario
                    second_acc_login    = request.AccessLogin2,
                    second_acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword2))),
                    /*request.AccessType2.ToUpper() == "POS" ? 6 : request.AccessType2.ToUpper() == "WEB" ? 1 : request.AccessType2.ToUpper() == "POSWEB" ? 12 : request.AccessType2.ToUpper() == "USSD" ? 9 : request.AccessType2.ToUpper() == "SMS" ? 2 : 0*/
                    second_tac_id = Utils.GetAccessTypeCode(request.AccessType2),



                    usr_administrador = request.IsAdministrator2,
                    grpId             = request.Group,
                    //Valores Originales
                    acc_cambiopassword        = "******",
                    second_acc_cambiopassword = "******",
                    third_acc_cambiopassword  = "******"
                                                //

                                                //TODO
                                                //acc_cambiopassword = "",
                                                //second_acc_cambiopassword = ""
                                                //
                };

                //segundo acceso segundo usuario
                if (reqAgent.av_sc_ac_secondUser = request.AvailableSecondAccessSecondUser)
                {
                    reqAgent.third_acc_login    = request.AccessLogin3;
                    reqAgent.third_acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword3)));
                    reqAgent.third_tac_id       = Utils.GetAccessTypeCode(request.AccessType3);
                }



                foreach (ProductCommision item in request.ProductsCommission)
                {
                    reqAgent.productos.Add(new RequestAgent.Product()
                    {
                        prdId = item.ProductId, comision = item.Commission
                    });
                }


                ResponseAgent responseAgent = Utils.CreateAgent(reqAgent);

                //bool isSuccessful = String.IsNullOrEmpty(request.RIF) ? false : request.RIF.EndsWith("0");
                bool isSuccessful = int.Parse(responseAgent.response_code) == 0;

                response.ResponseCode    = isSuccessful ? 0 : 1;
                response.ResponseMessage = isSuccessful ? "OK" : "ER";
                response.TransactionID   = 0;
                response.AgeId           = responseAgent.AgeId;

                if (!isSuccessful)
                {
                    var errors = new ErrorItems();
                    errors.Add(new ErrorItem()
                    {
                        ErrorId = responseAgent.response_code, ErrorDescription = responseAgent.message
                    });
                    //var errors = new ErrorItems();
                    //for (int i = 0; i < new Random().Next(1, 6); i++)
                    //    errors.Add(new ErrorItem() { ErrorId = i.ToString(), ErrorDescription = "Error random " + i });
                    response.Errors = errors;
                }

                logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[CreateAgentProvider] [RECV-DATA] CreateAgentResult {response={" + response + "}}");
            }
            catch (Exception ex)
            {
                response.ResponseCode    = 500;
                response.ResponseMessage = _GenericError;
                response.TransactionID   = 0;
                response.Errors          = new ErrorItems()
                {
                    new ErrorItem()
                    {
                        ErrorId = "90", ErrorDescription = ex.Message
                    }
                };

                string mensaje = String.Concat("[API] " + base.LOG_PREFIX + "[CreateAgentProvider] ", ". Exception: ", ex.Message, ". ", ex.StackTrace);
                logger.ErrorLow(mensaje);
            }
            return(response);
        }
Exemplo n.º 11
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetBalanceResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0
                       }
            }
            ;

            GetBalanceRequestBody request = requestObject as GetBalanceRequestBody;
            string message;

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBalanceProvider] [SEND-DATA] GetAccountBalanceParameters {UserId=" + sessionID + "}");

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

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBalanceProvider] [RECV-DATA] GetAccountBalanceResult {response=" + balance + ",message=" + message + "}");

            GetBalanceResponseBody response = new GetBalanceResponseBody()
            {
                ResponseCode    = balance == -1 ? 99 : 0,
                ResponseMessage = message == "" ? (balance / 100m).ToString() : message,
                TransactionID   = new Random().Next(100000, 999999),
                WalletBalance   = 0,
                StockBalance    = balance / 100m,
                PointsBalance   = 0,
                DebtBalance     = 0
            };

            if (request.ExtendedValues ?? false)
            {
                response.CheckingAccountBalance = Utils.GetAgentCheckingAccountBalance(request.AuthenticationData.Username);
            }

            return(response);
        }
    }
Exemplo n.º 12
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new NotiwayResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           StockBalance    = 0m
                       }
            }
            ;

            return(new NotiwayResponseBody()
            {
            });
        }
    }
Exemplo n.º 13
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetTransactionResponseBody()
                       {
                           ResponseCode          = 90,
                           ResponseMessage       = "error session",
                           TransactionID         = 0,
                           Amount                = 0m,
                           Creditor              = "",
                           Debtor                = "",
                           Initiator             = "",
                           OriginalTransactionId = "",
                           Recipient             = "",
                           TransactionDate       = DateTime.Now,
                           TransactionType       = ""
                       }
            }
            ;

            GetTransactionRequestBody  request  = requestObject as GetTransactionRequestBody;
            GetTransactionResponseBody response = null;


            try
            {
                SaleData saleData = null;

                string message = "", methodName = "saleState";
                switch (request.ParameterType)
                {
                case GetTransactionRequestParameterType.ExternalTransactionReference:
                    methodName = "saleStateByExternalId";
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateByExternalIdParameters {UserId=" + sessionID + ",ExternalId=" + request.ParameterValue + "}");
                    saleData = kinacuWS.SaleStateByExternalId(int.Parse(sessionID), request.ParameterValue, out message);
                    response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message);
                    break;

                case GetTransactionRequestParameterType.TransactionID:
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=" + request.ParameterValue + ",Target=}");
                    int param;
                    if (int.TryParse(request.ParameterValue, out param))
                    {
                        saleData = kinacuWS.SaleState(int.Parse(sessionID), param, "", out message);
                        response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message);
                    }
                    else
                    {
                        response = new GetTransactionResponseBody()
                        {
                            ResponseCode          = 91,
                            ResponseMessage       = "Transaccion no encontrada",
                            TransactionID         = 0,
                            TransactionResult     = 0,
                            OriginalTransactionId = "0",
                            TransactionDate       = DateTime.Now,
                            TransactionType       = "topup"
                        }
                    };
                    break;

                case GetTransactionRequestParameterType.TargetAgent:
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=0,Target=" + request.ParameterValue + "}");


                    saleData = Utils.GetSaleStateByTargent(request.AuthenticationData.Username, request.ParameterValue, out message);     //kinacuWS.SaleState(int.Parse(sessionID), 0, request.ParameterValue, out message);
                    response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message);
                    break;

                case GetTransactionRequestParameterType.TransactionType:
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=0,Target=}");
                    saleData = kinacuWS.SaleState(int.Parse(sessionID), 0, "", out message);
                    response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message);
                    break;

                case GetTransactionRequestParameterType.LastTransaction:
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=0,Target=" + request.ParameterValue + "}");
                    saleData = kinacuWS.SaleState(int.Parse(sessionID), 0, "", out message);
                    response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message);
                    break;

                case GetTransactionRequestParameterType.DistributionExternalTransactionReference:

                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] getDistributionState {Target=" + request.ParameterValue + "}");


                    response = MapDistributionToGetTransactionResponseBody(request);


                    break;
                }


                if (saleData != null)
                {
                    response.ResponseMessage = Movilway.API.Utils.ApiTicket.FormatSaledata(logger, "GetTransactionProvider", request, base.LOG_PREFIX, response.ResponseCode.Value == 0, response.TransactionID.Value, response.ResponseMessage);

                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] " + methodName + "Result {saleState={IdTransaction=" + saleData.IdTransaccion +
                                   ",Customer=" + saleData.Customer + ",Amount=" + saleData.Amount + ",Date=" + saleData.Date + ",ReloadState=" + saleData.ReloadState +
                                   ",ReloadStateCode=" + saleData.ReloadStateCode + "},message=" + message + "}");
                }
                else
                {
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] " + methodName + "Result {saleState={IdTransaction=,Customer=,Amount=,Date=,ReloadState=,ReloadStateCode=},message=" + message + "}");
                }

                #region se incluye obtiene el saldo en caso de ser necesario


                //Se realiza la validacion afuera del metodo GetBalance
                //con el fin de no manejar valores nulos en los metodos
                //y asignar algun valor al triburo StockBlance de ser necesario
                if (
                    _GetBalance &&
                    request.DeviceType == Movilway.API.Core.cons.ACCESS_POS
                    )
                {
                    response.StockBalance = GetBalance(request);
                }
            }
            catch (Exception ex)
            {
                logger.ErrorHigh(() => TagValue.New().MethodName("GetTransaction").Message(base.LOG_PREFIX + " ERROR BUSCANDO TRANSACCION CON REFERENCIA [" + request.ParameterValue + "]").Exception(ex));

                if (ex.InnerException != null)
                {
                    logger.ErrorHigh(() => TagValue.New().MethodName("GetTransaction").Message(base.LOG_PREFIX + " INNER EXCEPTION " + request.ParameterValue).Exception(ex.InnerException));
                }


                response = new GetTransactionResponseBody()
                {
                    ResponseCode          = 99,
                    ResponseMessage       = "Error inesperado consultando la transaccion, consulte a su administrador.",
                    TransactionID         = 0,
                    OriginalTransactionId = "",
                    Amount            = 0,
                    Recipient         = "",
                    TransactionDate   = DateTime.Now,
                    TransactionResult = 99,
                    TransactionType   = "",
                    Initiator         = "",
                    Debtor            = "",
                    Creditor          = ""
                };
            }
            #endregion


            return(response);
        }
Exemplo n.º 14
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            //if (sessionID.Equals("0"))
            //    return new TopUpResponseBody()
            //    {
            //        ResponseCode = 90,
            //        ResponseMessage = "error session",
            //        TransactionID = 0,
            //        ExternalTransactionReference = "",
            //        PointBalance = 0m,
            //        StockBalance = 0m,
            //        WalletBalance = 0m
            //    };

            TopUpRequestBody request = requestObject as TopUpRequestBody;

            int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]);

            if (ConfigurationManager.AppSettings["TopUp_Timeout_" + request.MNO.ToLower()] != null)
            {
                timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["TopUp_Timeout_" + request.MNO.ToLower()]);
            }

            kinacuWS.Timeout = timeOutSeconds * 1000;

            int    transactionId;
            string saleData = "";
            string message  = "";

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] [SEND-DATA] newSaleWithExternalIdParameters {UserId=" + sessionID + ",IdProduct=" + MapMNOtoProductId(request.MNO) + ",Customer=" + request.Recipient +
                           ",Amount=" + (request.Amount * 100) + ",CommitSale=" + "1" + ",ExternalId=" + request.ExternalTransactionReference + ",PdvRepresented=" + (request.TerminalID ?? "") + "}");

            TopUpResponseBody response = null;
            bool kinacuTopUpResponse   = false;

            int _Amount = (int)(request.Amount * 100);

            if (_cacheSession.IsActiveCache())
            {
                //logger.ErrorHigh(String.Concat("[API] ", LOG_PREFIX, "[KinacuProvider] [EXCEPTION] [", ex.GetType().Name.ToUpper(), "] ACCEDIENDO AL CACHE VALIDANDO SECURITY {message=", ex.Message, ",stackTrace=", ex.StackTrace, "}"));

                logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "CACHE ACTIVO TOPUP"));
                ///
                kinacuTopUpResponse = kinacuWS.NewSaleWithExternalId(int.Parse(sessionID), int.Parse(MapMNOtoProductId(request.MNO)), request.Recipient,
                                                                     //(int)(request.Amount * 100)
                                                                     _Amount
                                                                     , 1, request.ExternalTransactionReference, (request.TerminalID ?? ""), out transactionId, out saleData, out message);

                saleData = Movilway.API.Utils.ApiTicket.FormatSaledataTopUp(logger, this.GetType().Name, base.LOG_PREFIX, request, kinacuTopUpResponse, transactionId, saleData);


                response = new TopUpResponseBody()
                {
                    ResponseCode    = Utils.BuildResponseCode(kinacuTopUpResponse, message),
                    ResponseMessage = kinacuTopUpResponse ? saleData : message,
                    TransactionID   = transactionId,
                    ExternalTransactionReference = request.ExternalTransactionReference,
                    Fee = 0
                };


                //CODIGO REPETIDO
                logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] [RECV-DATA] newSaleWithExternalIdResult {response=" + kinacuTopUpResponse + ",IdTransaction=" + transactionId + ",SaleData=" + saleData + ",message=" + message + "}");

                bool errorSession = GetResponseCode(message) == 21;



                if (errorSession)
                {
                    logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, " TOP UP ID DE SESSION INVALIDO RECALCULAR SESSION"));
                    //solicitar de nuevo session



                    var sessionRequest = new GetSessionRequestBody()
                    {
                        Username   = request.AuthenticationData.Username,
                        Password   = request.AuthenticationData.Password,
                        DeviceType = request.DeviceType
                    };

                    var getSessionResponse = new ServiceExecutionDelegator
                                             <GetSessionResponseBody, GetSessionRequestBody>().ResolveRequest(
                        sessionRequest
                        , ApiTargetPlatform.Kinacu, ApiServiceName.GetSession);

                    sessionID = getSessionResponse.SessionID;
                    logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, " NUEVO ID ", IsValidId(sessionID)));

                    //String llave = String.Concat(cons.CACHE_SESSION_PREFIX, request.AuthenticationData.Username);
                    String llave = String.Concat(request.AuthenticationData.Username, " ", request.AuthenticationData.Password);

                    _cacheSession.AddOrUpdate <String>(llave, sessionID);

                    kinacuTopUpResponse = kinacuWS.NewSaleWithExternalId(int.Parse(sessionID), int.Parse(MapMNOtoProductId(request.MNO)), request.Recipient,
                                                                         //(int)(request.Amount * 100)
                                                                         _Amount
                                                                         , 1, request.ExternalTransactionReference, (request.TerminalID ?? ""), out transactionId, out saleData, out message);

                    saleData = Movilway.API.Utils.ApiTicket.FormatSaledataTopUp(logger, this.GetType().Name, base.LOG_PREFIX, request, kinacuTopUpResponse, transactionId, saleData);



                    response = new TopUpResponseBody()
                    {
                        ResponseCode    = Utils.BuildResponseCode(kinacuTopUpResponse, message),
                        ResponseMessage = kinacuTopUpResponse ? saleData : message,
                        TransactionID   = transactionId,
                        ExternalTransactionReference = request.ExternalTransactionReference,
                        Fee = 0
                    };
                }
            }
            else
            {
                kinacuTopUpResponse = kinacuWS.NewSaleWithExternalId(int.Parse(sessionID), int.Parse(MapMNOtoProductId(request.MNO)), request.Recipient,
                                                                     //(int)(request.Amount * 100)
                                                                     _Amount
                                                                     , 1, request.ExternalTransactionReference, (request.TerminalID ?? ""), out transactionId, out saleData, out message);


                saleData = Movilway.API.Utils.ApiTicket.FormatSaledataTopUp(logger, this.GetType().Name, base.LOG_PREFIX, request, kinacuTopUpResponse, transactionId, saleData);


                response = new TopUpResponseBody()
                {
                    ResponseCode    = Utils.BuildResponseCode(kinacuTopUpResponse, message),
                    ResponseMessage = kinacuTopUpResponse ? saleData : message,
                    TransactionID   = transactionId,
                    ExternalTransactionReference = request.ExternalTransactionReference,
                    Fee = 0
                };


                //CODIGO REPETIDO
                logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] [RECV-DATA] newSaleWithExternalIdResult {response=" + kinacuTopUpResponse + ",IdTransaction=" + transactionId + ",SaleData=" + saleData + ",message=" + message + "}");
            }


            if (request.DeviceType == cons.ACCESS_H2H)
            {
                string    llave  = String.Concat(request.AuthenticationData.Username);
                decimal[] result = { 0.0m, 0.0m, 0.0m };

                //try
                //{
                //    Func<decimal[]> callback = delegate()//null;
                //    {
                //        logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] CALLBACK SALDO");
                //        List<decimal> lista = new List<decimal>();
                //        AuthenticationData cascadeAuth = new AuthenticationData()
                //        {
                //            SessionID = sessionID
                //        };
                //        GetBalanceResponseBody balanceResponse = new ServiceExecutionDelegator<GetBalanceResponseBody, GetBalanceRequestBody>().ResolveRequest(new GetBalanceRequestBody()
                //        {
                //            AuthenticationData = cascadeAuth,
                //            DeviceType = request.DeviceType
                //        }, ApiTargetPlatform.Kinacu, ApiServiceName.GetBalance);
                //        lista.Add(balanceResponse.StockBalance.Value);
                //        lista.Add(response.WalletBalance = balanceResponse.WalletBalance.Value);
                //        lista.Add(response.PointBalance = balanceResponse.PointsBalance.Value);
                //        return lista.ToArray<decimal>();
                //    };
                //    //    ()=>{
                //    //  new int[]{0,0,0};
                //    //};
                //     result = _cacheSaldo.GetValue<decimal[]>(llave, callback);
                //}
                //catch (Exception ex)
                //{
                //    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] ERROR AL CONSULTAR CHACHE SALDO 1");
                //   // throw;
                //}

                try
                {
                    //CUANDO SE RECARGA EL SALDO
                    Func <decimal[]> callback = delegate()
                    {
                        logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "[TopUpProvider] SALDO NOT FOUND CACHE "));
                        return(new HandlerCacheSaldo().HandlerCache(new AuthenticationData()
                        {
                            SessionID = sessionID
                        }, request));
                    };

                    bool inCache = false;
                    //CUANDO SE ENCUENTRA EL SALDO EN CACHE
                    //TODO plantear un accion por referencia
                    //TODO se puede lanzar la actualizacion en cache asincrona
                    Action <Object, Object> accion = delegate(Object key2, Object value)
                    {
                        inCache = true;
                        logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "[TopUpProvider] SALDO FOUND CACHE [", key2, "]"));
                    };

                    result = _cacheSaldo.GetValue <decimal[]>(llave, callback, accion);

                    //si la respuesta es valid
                    //if (inCache && response.ResponseCode == 0)
                    //{
                    //    result[0] -= _Amount;
                    //    logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "[TopUpProvider] ACTUALIZANDO STOCKBALANCE EN CACHE [", result[0], "]"));
                    //    _cacheSaldo.AddOrUpdate(llave, result);
                    //}
                }
                catch (Exception ex)
                {
                    logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] ERROR AL CONSULTAR CHACHE SALDO ");
                    throw;
                }



                //AuthenticationData cascadeAuth = new AuthenticationData()
                //{
                //    SessionID = sessionID
                //};

                //GetBalanceResponseBody balanceResponse = new ServiceExecutionDelegator<GetBalanceResponseBody, GetBalanceRequestBody>().ResolveRequest(new GetBalanceRequestBody()
                //{
                //    AuthenticationData = cascadeAuth,
                //    DeviceType = request.DeviceType
                //}, ApiTargetPlatform.Kinacu, ApiServiceName.GetBalance);

                //if (response != null)
                //{
                //    response.StockBalance = balanceResponse.StockBalance.Value;
                //    response.WalletBalance = balanceResponse.WalletBalance.Value;
                //    response.PointBalance = balanceResponse.PointsBalance.Value;
                //}


                if (result.Length == 3)
                {
                    response.StockBalance  = result[0];
                    response.WalletBalance = result[1];
                    response.PointBalance  = result[2];
                }
            }
            else
            {
                AuthenticationData cascadeAuth = new AuthenticationData()
                {
                    SessionID = sessionID
                };

                GetBalanceResponseBody balanceResponse = new ServiceExecutionDelegator <GetBalanceResponseBody, GetBalanceRequestBody>().ResolveRequest(new GetBalanceRequestBody()
                {
                    AuthenticationData = cascadeAuth,
                    DeviceType         = request.DeviceType
                }, ApiTargetPlatform.Kinacu, ApiServiceName.GetBalance);

                if (response != null)
                {
                    response.StockBalance  = balanceResponse.StockBalance.Value;
                    response.WalletBalance = balanceResponse.WalletBalance.Value;
                    response.PointBalance  = balanceResponse.PointsBalance.Value;
                }
            }

            if (response.ResponseCode.Equals(0) && (ConfigurationManager.AppSettings["IncludeTopupMessageExtended"] ?? "").ToLower().Equals("true"))
            {
                // Acá concatenar el mensaje del macroproducto en caso de ser necesario
                response.ResponseMessage = String.Concat(response.ResponseMessage, new MacroProductDataManager().GetMacroProductMessage(int.Parse(ConfigurationManager.AppSettings["CountryID"]), int.Parse(MapMNOtoProductId(request.MNO))));
            }

            return(response);
        }
Exemplo n.º 15
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            GetCutsResponseBody response = new GetCutsResponseBody();

            if (sessionID.Equals("0"))
            {
                response.ResponseCode    = 90;
                response.ResponseMessage = "error session";
                response.TransactionID   = 0;
                return(response);
            }



            try
            {
                GetCutsRequestBody request = requestObject as GetCutsRequestBody;


                //Código de transacción de corte manual
                //Código de usuario (Quien realizó el corte)
                //Nombre usuario
                //Código de Cliente (a quien se realizó la distribución)
                //Nombre del Cliente
                //Fecha y Hora de transacción de corte
                //Código de Producto
                //Descripción de Producto
                //Cantidad de Pines ( 1 PIN = 1 Dólar) – Total por operadora
                //Unidad (Fracción)

                //Ariel 2021-Ma-09 Comentado
                //  response =   Utils.GetConsolidatedCuts(request);
            }
            catch (Exception ex)
            {
                response.ResponseCode    = 500;
                response.ResponseMessage = "ERROR INESPERADO " + ex.Message;
                response.TransactionID   = 0;
            }


            return(response);
        }
Exemplo n.º 16
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetScoreResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           Score           = new Score()
                       }
            }
            ;

            GetScoreRequestBody  request  = requestObject as GetScoreRequestBody;
            GetScoreResponseBody response = null;

            if (sessionID.Equals("0"))
            {
                return response = new GetScoreResponseBody()
                {
                           ResponseCode    = 99,
                           ResponseMessage = "Error de login",
                           TransactionID   = new Random().Next(100000, 999999),
                           Score           = null
                }
            }
            ;

            string agentId = "";
            bool   isChild = false;

            if (!String.IsNullOrEmpty(request.Agent))
            {
                var getChildListResponse = new ServiceExecutionDelegator
                                           <GetChildListResponseBody, GetChildListRequestBody>().ResolveRequest(
                    new GetChildListRequestBody()
                {
                    AuthenticationData = new AuthenticationData()
                    {
                        Username = request.AuthenticationData.Username,
                        Password = request.AuthenticationData.Password
                    },
                    DeviceType = request.DeviceType,
                    Agent      = request.AuthenticationData.Username,
                    Platform   = "1"
                }, ApiTargetPlatform.Kinacu, ApiServiceName.GetChildList);

                if (getChildListResponse.ChildList != null && getChildListResponse.ChildList.Count(ch => ch.Agent == request.Agent) > 0)
                {
                    agentId = request.Agent;
                    isChild = true;
                }
            }

            if (!isChild)
            {
                agentId = new Provider.IBank.Utils().GetAgentId(request.AuthenticationData.Username).ToString();
            }

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetScoreProvider] [SEND-DATA] getScoreParameters {agentId=" + agentId + "}");

            response = new GetScoreResponseBody()
            {
                ResponseCode    = 0,
                ResponseMessage = "exito",
                TransactionID   = new Random().Next(100000, 999999),
                Score           = Utils.GetScore(agentId)
            };

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetScoreProvider] [RECV-DATA] getScoreResult {result{Score{BranchId=" + response.Score.BranchId + ",BranchName=" + response.Score.BranchName +
                           ",LotteryType=" + response.Score.LotteryType + ",Confirmed=" + response.Score.Confirmed + ",YearToDate=" + response.Score.YearToDate + ",CurrentMonth=" + response.Score.CurrentMonth +
                           ",Standard=" + response.Score.Standard + ",Bonus=" + response.Score.Bonus + ",Behaviour=" + response.Score.Behaviour + ",NetworkStandard=" + response.Score.NetworkStandard +
                           ",NetworkBonus=" + response.Score.NetworkBonus + ",NetworkBehaviour=" + response.Score.NetworkBehaviour + ",Questionnaire=" + response.Score.Questionnaire + "}}}");

            return(response);
        }
    }
}
Exemplo n.º 17
0
        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);
        }
    }
Exemplo n.º 18
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetAgentInfoResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           AgentInfo       = new AgentInfo()
                       }
            }
            ;

            GetAgentInfoRequestBody  request  = requestObject as GetAgentInfoRequestBody;
            GetAgentInfoResponseBody response = null;

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetAgentInfoProvider] [SEND-DATA] getAgentInfoParameters {agentReference=" + request.Agent + "}");

            AgentInfo agentInfo      = new AgentInfo();
            string    validatedEmail = "";

            if (request.SearchById ?? false)
            {
                agentInfo = Utils.GetAgentInfoById(request.AgentId);

                validatedEmail = Utils.GetValidatedEmailById(request.AgentId);
            }
            else
            {
                agentInfo      = Utils.GetAgentInfo(request.Agent);
                validatedEmail = Utils.GetValidatedEmailByLogin(request.Agent);
            }

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetAgentInfoProvider] [RECV-DATA] getAgentInfoResult {response={" + DataContract.Utils.logFormat(agentInfo) + "}}");

            if (agentInfo.BranchID >= 0) //userInfo && retailerInfo)
            {
                response = new GetAgentInfoResponseBody()
                {
                    ResponseCode    = 0,
                    ResponseMessage = "exito",
                    TransactionID   = 0,
                    AgentInfo       = new AgentInfo()
                    {
                        Agent          = request.Agent,
                        NationalIDType = agentInfo.NationalIDType,
                        NationalID     = agentInfo.NationalID,
                        Address        = agentInfo.Address,
                        Name           = agentInfo.Name,
                        LegalName      = agentInfo.LegalName,
                        Email          = String.IsNullOrEmpty(validatedEmail) ? agentInfo.Email : validatedEmail,

                        // Elementos privados
                        AgentID  = agentInfo.AgentID,
                        OwnerID  = agentInfo.OwnerID,
                        BranchID = agentInfo.BranchID,

                        // Grupo de comisiones nuevo
                        CommissionGroups = agentInfo.CommissionGroups,

                        // Nuevo subniveles
                        SubLevel = agentInfo.SubLevel,

                        // Nuevo PDV Id
                        PDVID = agentInfo.PDVID,

                        PhoneNumber = agentInfo.PhoneNumber,

                        TaxCategory   = agentInfo.TaxCategory,
                        TaxCategories = agentInfo.TaxCategories,

                        SegmentId   = agentInfo.SegmentId,
                        SegmentList = agentInfo.SegmentList
                    }
                };
            }
            else
            {
                response = new GetAgentInfoResponseBody
                {
                    ResponseCode    = 99,
                    ResponseMessage = "El agente consultado no existe"
                };
            }

            return(response);
        }
    }
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetAgentDistributionListResponseBody()
                       {
                           ResponseCode          = 90,
                           ResponseMessage       = "error session",
                           TransactionID         = 0,
                           AgentDistributionList = new AgentDistributionList()
                       }
            }
            ;

            GetAgentDistributionListRequestBody  request  = requestObject as GetAgentDistributionListRequestBody;
            GetAgentDistributionListResponseBody response = null;

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetAgentDistributionListProvider] [SEND-DATA] getChildRetailersParameters {UserId=" + sessionID + "} Agent =" + request.Agent + ", AgentChild= " + request.AgentChild + " ,CutInfo = " + request.CutInfo);

            //Ariel 2021-Ma-09 Comentado  asigmanos null
            AgentDistributionList distributionList = null; // Utils.GetAgentDistributionList(request.Agent, request.AgentChild, request.CutInfo);

            response = new GetAgentDistributionListResponseBody()
            {
                ResponseCode          = (distributionList.Count > 0 ? 0 : 99),
                ResponseMessage       = (distributionList.Count > 0 ? "exito" : "No se encontraron agencias"),
                TransactionID         = new Random().Next(100000, 999999),
                AgentDistributionList = distributionList
            };

            return(response);
        }
    }
Exemplo n.º 20
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetLoanTokenResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0
                       }
            }
            ;

            GetLoanTokenRequestBody request = requestObject as GetLoanTokenRequestBody;

            //string message;

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetLoanTokenProvider] [SEND-DATA] GetLoanTokenParameters {UserId=" + sessionID + "}");


            string id = Utils.GetAgentIdByAccessPosWeb(request.AuthenticationData.Username).ToString();

            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpResponseMessage webResponse = new HttpResponseMessage();
            string data  = "";
            Token  token = new Token()
            {
                token = "nill"
            };

            logger.InfoLow(String.Concat("[MO] [SEND-DATA] agentId=", id));

            webResponse = client.PostAsync(String.Concat(ConfigurationManager.AppSettings["URL_MO"], "token"), new StringContent("{\"external_id\":" + id + "}", Encoding.UTF8, "application/json")).Result;

            logger.InfoLow(String.Concat("[MO] [RESPONSE-CODE] HttpStatusCode: ", (int)webResponse.StatusCode));

            JavaScriptSerializer JSserializer = new JavaScriptSerializer();

            GetLoanTokenResponseBody response;

            try
            {
                data = webResponse.Content.ReadAsStringAsync().Result;

                if (webResponse.IsSuccessStatusCode)
                {
                    token = JSserializer.Deserialize <Token>(data);

                    logger.InfoLow(String.Concat("[MO] [RESPONSE-DATA] Raw Data: ", data));
                    logger.InfoLow(String.Concat("[MO] [RESPONSE-DATA] token: ", token.token));

                    response = new GetLoanTokenResponseBody()
                    {
                        ResponseCode    = 0,
                        ResponseMessage = "Exito",
                        TransactionID   = new Random().Next(100000, 999999),
                        Token           = token.token
                    };
                }
                else
                {
                    logger.InfoLow(String.Concat("[MO] [RESPONSE-DATA] ERROR Raw Data: ", data));
                    response = new GetLoanTokenResponseBody()
                    {
                        ResponseCode    = 98,
                        ResponseMessage = "Error",
                        TransactionID   = new Random().Next(100000, 999999),
                        Token           = ""
                    };
                }
            }
            catch (Exception ex)
            {
                logger.ErrorLow(String.Concat(" [RECEIVED-DATA] Error recibiendo la data. ", ex.InnerException));
                response = new GetLoanTokenResponseBody()
                {
                    ResponseCode    = 99,
                    ResponseMessage = "Excepcion",
                    TransactionID   = new Random().Next(100000, 999999),
                    Token           = ""
                };
            }

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

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetLoanTokenProvider] [RECV-DATA] GetLoanTokenResult {response=Exito,message=ok,token=eyJjdXN0b21lcl9pZCI6MTU4fQ.DnrUTA.XHKdo08zgauO6JjwP-T2G6VjX6I}");


            return(response);
        }
    }
Exemplo n.º 21
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            GetNewAgentsReportResponseBody response = new GetNewAgentsReportResponseBody()
            {
                ResponseCode    = 99,
                ResponseMessage = "",
                TransactionID   = 0
            };

            GetNewAgentsReportRequestBody request = requestObject as GetNewAgentsReportRequestBody;

            //Ariel 2021-Mar-09
            //response = Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.GetNewAgentsReport(request);
            response.ResponseCode    = 0;
            response.ResponseMessage = "OK";

            return(response);
        }
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetLastDistributionsResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           Distributions   = new DistributionList()
                       }
            }
            ;

            GetLastDistributionsRequestBody  request  = requestObject as GetLastDistributionsRequestBody;
            GetLastDistributionsResponseBody response = null;

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetLastDistributionsProvider] [SEND-DATA] getLastDistributionsParameters {agentReference=" + request.Agent + ",count=" + request.Count + "}");

            var agentId = new IBank.Utils().GetAgentId(request.AuthenticationData.Username);
            var result  = new IBank.Utils().ListaSolicitudes(agentId, request.Count);

            response = new GetLastDistributionsResponseBody()
            {
                ResponseCode    = 0,
                ResponseMessage = "OK",
                Distributions   = result, //generateRandomDist(request.Count),
                TransactionID   = 0
            };

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetLastDistributionsProvider] [RECV-DATA] getLastDistributionsResult {response={" + (response.Distributions == null || response.Distributions.Count == 0 ? "" : response.Distributions.ToString()) + "}}");

            return(response);
        }
Exemplo n.º 23
0
        public GetPSEBankResponse ObtenerBancoPSE(GetPSEBankRequest request)
        {
            string methodName = string.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name);

            this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName).Message("Started"));

            GetPSEBankResponse response = new GetPSEBankResponse();

            string sessionId = this.GetSessionId(request, response, out this.errorMessage);

            this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName)
                                        .Message("[" + sessionId + "] " + "Obteniendo Bancos"));
            if (this.errorMessage != ErrorMessagesMnemonics.None)
            {
                this.LogResponse(response);
                return(response);
            }


            //logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [SEND-DATA] getAccountBankParameters {UserId=" + sessionID + "}");
            this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName)
                                        .Message("[" + sessionId + "] " + "Obteniendo Bancos"));

            BankAccount[] banks;
            string        message;
            //banks = Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.GetAccountBanks(request.AuthenticationData.Username, out message);
            SaleInterface kinacuWS = new SaleInterface();
            // CONDIGURACION INTERFAZ
            int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]);

            kinacuWS.Timeout = timeOutSeconds * 1000;
            banks            = kinacuWS.GetAccountBank(int.Parse(sessionId), out message);



            if (banks == null || banks.Length == 0)
            {
                this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName)
                                            .Message("[" + sessionId + "] " + "No posee cuentas"));

                return(new GetPSEBankResponse()
                {
                    ResponseCode = 99,
                    ResponseMessage = "No posee cuentas",
                    TransactionID = 0
                });
            }
            else
            {
                this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName)
                                            .Message("[" + sessionId + "] " + "getAccountBankResult").Tag("bankCount").Value(banks.Length));
            }

            response = new GetPSEBankResponse()
            {
                ResponseCode    = 0,
                ResponseMessage = "exito",
                TransactionID   = 0
            };


            String pseBankId = ConfigurationManager.AppSettings["PSEBankId"] ?? string.Empty;
            bool   found     = false;

            foreach (var bank in banks)
            {
                if (pseBankId.Equals(bank.BankId.ToString()))
                {
                    found = true;

                    this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName)
                                                .Message("[" + sessionId + "] " + " PSE Account found")
                                                .Tag("BankId").Value(bank.BankId)
                                                .Tag("BankName").Value(bank.BankName)
                                                .Tag("CBU").Value(bank.CBU)
                                                .Tag("Number").Value(bank.Number)
                                                .Tag("Id").Value(bank.Id)
                                                );

                    response.BankId   = bank.BankId;
                    response.BankName = bank.BankName;
                    response.CBU      = bank.CBU;
                    response.Id       = bank.Id;
                    response.Number   = bank.Number;
                    break;
                }
            }

            if (found)
            {
                return(response);
            }
            else
            {
                this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName)
                                            .Message("[" + sessionId + "] " + "No posee cuenta PSE"));
                return(new GetPSEBankResponse()
                {
                    ResponseCode = 99,
                    ResponseMessage = "cuenta PSE no encontrada",
                    TransactionID = 0
                });
            }
        }
Exemplo n.º 24
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            GetDailyCutReportResponseBody response = new GetDailyCutReportResponseBody()
            {
                ResponseCode    = 99,
                ResponseMessage = "",
                TransactionID   = 0
            };

            GetDailyCutReportRequestBody request = requestObject as GetDailyCutReportRequestBody;

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + " [GetDailyCutReportProvider] [SEND-DATA] parameters {date=" + request.Date + "}");

            try
            {
                //Ariel 2021-Ma-09 Comentado
                // response = Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.GetDailyCutReport(request);
                response.ResponseCode    = 0;
                response.ResponseMessage = "OK";
            }
            catch (Exception ex)
            {
                response.ResponseCode    = 99;
                response.ResponseMessage = ex.Message;
                logger.ErrorHigh(base.LOG_PREFIX + " " + ex.Message + " " + ex.GetType().FullName + " " + ex.StackTrace);
            }



            return(response);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Inicia la ejecucion del metodo
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public IMovilwayApiResponse PerformOperation(IMovilwayApiRequest request)
        {
            IMovilwayApiResponse response = null;


            //DATOS DE AUTENTICACION
            try
            {
                #region antes
                // PREFIX
                //try
                //{
                //    LOG_PREFIX = HttpContext.Current.Session["LOG_PREFIX"].ToString() + "[" + new Random(DateTime.Now.Millisecond * 3).Next(100000000, 999999999) + "] ";
                //}
                //catch (Exception)
                //{
                //    LOG_PREFIX = "";
                //}
                #endregion
                InitPrefix();

                #region log data
                //try
                //{
                //    logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [INPUT] UserInfo {IP=" + HttpContext.Current.Request.UserHostAddress + ",Username="******"} " + request.ToString());
                //}
                //catch (Exception)
                //{
                //    logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [INPUT] UserInfo {IP=" + "NULL" + ",Username="******"} " + request.ToString());
                //}
                #endregion
                PrintLoginValues(request);

                #region antes
                //if (request.DeviceType == cons.ACCESS_H2H)
                //{
                //    if (!NetWorkSecurity.IpIsWithinRangeH2H(HttpContext.Current.Request.UserHostAddress))
                //    {


                //        string message = String.Concat("[LA IP NO ESTA REGISTRADA EN EL RANGO PERMITIDO H2H (", HttpContext.Current.Request.UserHostAddress, ")]");
                //        logger.ErrorHigh(() => TagValue.New().Message("[ERROR DE PERMISOS H2H]").Message(message).Tag("[PARA ACCESO]").Value(request.AuthenticationData));
                //        throw new Exception(message);
                //    }
                //}
                #endregion
                //si no se activa la optimizacion de seguridad
                //siempre ejecuta las validaciones de seguridad
                //if (!ApiConfiguration.API_SECURE_OPTIMIZATION)
                SecureValidation(request);


                //la restriccion se mantiene con el fin  de que se pueda volver a validar el tiempo del session ID
                String sessionID = null;
                if (!(request is GetSessionRequestBody))
                {
                    sessionID = GetSessionID(request);
                }


                SaleInterface kinacuWS = new SaleInterface();
                // CONDIGURACION INTERFAZ
                int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]);
                kinacuWS.Timeout = timeOutSeconds * 1000;

                response = PerformKinacuOperation(request, kinacuWS, sessionID);
                // no deberia lanzar second request deberia solo se responsabilidad
                #region secondrequest
                //if (!ValidateNumberOfExecution(request))
                //    response = PerformKinacuOperation(request, kinacuWS, sessionID);
                //else
                //{


                //        if (_delegateSecondExecution == null)
                //            throw new Exception("NO SE HA DEFINIDO EL MANEJADOR PARA LA SEGUNDA PETICION");

                //        bool isNew = false;

                //        Func<int> callback = delegate()
                //        {
                //            logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS NEW]");
                //            isNew = true;
                //            return 1;
                //        };

                //        int hascode = request.GetHashCode();
                //        logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST VALIDATION] [" + hascode + "] "+_cacheRequest.ToString());
                //    //Action<object,object> oncache= delegate(object k , object v)
                //    //    {
                //    //        logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS DOUBLE]");
                //    //        isNew = false;
                //    //    };


                //         _cacheRequest.GetValue<int>(hascode, callback);//, oncache);



                //        if (isNew)
                //        {
                //               response = PerformKinacuOperation(request, kinacuWS, sessionID);
                //        }
                //        else
                //        {
                //            logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [SecondExecution]");
                //            response = _delegateSecondExecution (request, kinacuWS, sessionID);
                //        }



                //}
                #endregion

                if (!(request is GetSessionRequestBody))
                {
                    if (bool.Parse(ConfigurationManager.AppSettings["LogoffAuto"] ?? "true"))
                    {
                        logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [SEND-DATA] logoffParameters {userid=" + sessionID + "}");
                        kinacuWS.LogOff(int.Parse(sessionID));
                        logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [RECV-DATA] logoffResult {nothing}");
                    }
                }
                logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [OUTPUT] " + response.ToString());
            }
            catch (Exception e)
            {
                logger.ErrorLow("[API] " + LOG_PREFIX + "[KinacuProvider] [EXCEPTION] Exception trying to serve KINACU Operation {message=" + e.Message + ",stackTrace=" + e.StackTrace + "}");
                //SE DELEGA EL MANEJO DE LA EXPECION A QUIEN LO INVOCA GENERALMENTE SERVICEEXECUTIONDELEGATOR
                throw;

                #region intento de respuesta anterior
                //Type a = this.GetType().GetMethod("PerformOperation").ReturnType;
                //response = new AGenericApiResponse() { ResponseCode = 99, ResponseMessage = e.Message, TransactionID = 0 };
                //Type name = MethodBase.GetCurrentMethod().GetType();
                //ProviderLogger.ExceptionLow(() => TagValue.New().Message("Exception trying to serve KINACU Operation").Exception(e));
                #endregion
            }

            return(response);
        }
Exemplo n.º 26
0
        /// <summary>
        /// Retorna los Hijos de un agente dado el ID del agente padre
        /// Precondición:
        /// - Se han validado los permisos en el sistema
        /// Postcondición:
        /// Retorna la lista de BasicAgentInfo con los agentes Hijos
        /// </summary>
        /// <param name="requestObject"></param>
        /// <param name="kinacuWS"></param>
        /// <param name="sessionID"></param>
        /// <returns>retorna IMovilwayApiResponse con los datos del agente</returns>
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            GetChildListResponseBody response = new GetChildListResponseBody();

            if (sessionID.Equals("0"))
            {
                response.ResponseCode    = 90;
                response.ResponseMessage = "error session";
                response.TransactionID   = 0;


                return(response);
            }


            try
            {
                GetChildListRequestByIdBody request = requestObject as GetChildListRequestByIdBody;

                /*
                 * dynamic data = new { AgeId = request.AgeId, Login = request.AuthenticationData.Username };
                 * if (!Utils.IsValidEditAgent(data))
                 * {
                 *  response.ResponseCode = 90;
                 *  response.ResponseMessage = "ERROR DE PERMISOS -  NO TIENE PERMISOS PARA ACCEDER A LOS HIJOS DE ESTE AGENTE";
                 *  response.TransactionID = 0;
                 *  return response;
                 * }*/


                logger.InfoLow(() => TagValue.New().Message("[KIN] " + base.LOG_PREFIX + "[GetChildListProviderById]").Tag("[SEND-DATA] getChildRetailersParameters ").Value(request));

                bool extendedValues           = request.ExtendedValues ?? false;
                List <BasicAgentInfo> results = Utils.GetChildsById(request.AgeId, extendedValues);

                response.ChildList.AddRange(results);

                response.ResponseCode    = 0;
                response.ResponseMessage = "OK";
                response.TransactionID   = 0;
            }
            catch (Exception ex)
            {
                response.ResponseCode    = 500;
                response.ResponseMessage = "ERROR INESPERADO " + ex.Message;
                response.TransactionID   = 0;
            }

            return(response);
        }
Exemplo n.º 27
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new InformPaymentResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0
                       }
            }
            ;
            InformPaymentRequestBody  request  = requestObject as InformPaymentRequestBody;
            InformPaymentResponseBody response = null;

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[InformPaymentProvider] [SEND-DATA] informPaymentParameters {amount=" + request.Amount + ",targentAgentId=" + request.TargetAgentId + ",hasDeposit=" + request.HasDeposit +
                           ",accountId=" + request.AccountId + ",transactionReference=" + request.TransactionReference + ",transactionDate=" + request.TransactionDate + ",sucursalNumber=" + request.SucursalNumber +
                           ",sucursalName=" + request.SucursalName + ",comment=" + request.Comment + ",immediatelyDistribute=" + request.ImmediatelyDistribute + "}");

            string responseCode = "99", message = "error";

            bool result = false;

            int usrId = new IBank.Utils().GetUserId(request.AuthenticationData.Username);

            if (request.TargetAgentId > 0)
            {
                if (!IsValid(request))
                {
                    return(new InformPaymentResponseBody()
                    {
                        ResponseCode = 80,
                        ResponseMessage = "Datos incompletos",
                        TransactionID = 0
                    });
                }

                string bankAccount = new IBank.Utils().GetBankNumber(request.AccountId);

                if (request.ImmediatelyDistribute)
                {
                    //result = new Movilway.API.Service.ExtendedApi.Provider.IBank.Utils().RegistroPago(decimal.Parse(request.TargetAgentId.ToString()), request.Amount, request.TransactionReference, request.TransactionDate, bankAccount, (request.HasDeposit ? "S" : "N"), ref responseCode, ref message, request.Comment, decimal.Parse(request.TransactionReference), DateTime.UtcNow.AddHours(new Movilway.API.Service.ExtendedApi.Provider.IBank.Utils().GetTimeZone()));

                    result = new IBank.Utils().RegistroDepositoAcreditaSaldo(decimal.Parse(request.TargetAgentId.ToString()), usrId, request.Amount, request.TransactionReference, request.TransactionDate, bankAccount, ref responseCode, ref message, request.Comment, DateTime.UtcNow.AddHours(new IBank.Utils().GetTimeZone()), request.SucursalNumber.ToString(), request.SucursalName);
                }
                else
                {
                    result = new IBank.Utils().RegistrarDeposito(request.TargetAgentId, usrId, request.Amount, request.TransactionReference, request.TransactionDate, bankAccount, request.Comment, ref responseCode, ref message, DateTime.UtcNow.AddHours(new IBank.Utils().GetTimeZone()), request.SucursalNumber.ToString(), request.SucursalName);
                }
            }
            else
            {
                //int ageId = new IBank.Utils().GetAgentId(request.AuthenticationData.Username);

                int prodcut = -1; String res = "";
                KinacuLogisticsWebService.LogisticsInterface logisticsInterface = new KinacuLogisticsWebService.LogisticsInterface();
                result = logisticsInterface.CreateProductRequest(Convert.ToInt32(sessionID), 0, (int)request.Amount * 100, out prodcut, out res);

                if (result)
                {
                    responseCode = "00"; message = "TRANSACCION OK";
                }
                else
                {
                    responseCode = Movilway.API.Core.UtilResut.StrErrorCode(1); message = res;
                }
                //result = new IBank.Utils().RegistrarSolicitudProducto(ageId, request.Amount, request.TransactionDate, ref responseCode, ref message);
            }

            response = new InformPaymentResponseBody()
            {
                ResponseCode    = int.Parse(responseCode),
                ResponseMessage = message,
                TransactionID   = 0
            };

            logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[InformPaymentProvider] [RECV-DATA] informPaymentResult {ResponseCode=" + responseCode + ",ResponseMessage=" + message + ",TransactionID=" + 0 + "}");

            return(response);
        }
Exemplo n.º 28
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new TransferResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           StockBalance    = 0m
                       }
            }
            ;

            TransferRequestBody  request  = requestObject as TransferRequestBody;
            TransferResponseBody response = null;

            if (request.AuthenticationData.Username != ConfigurationManager.AppSettings["ProincoUser"])
            {
                return new TransferResponseBody()
                       {
                           Fee             = 0,
                           ResponseCode    = 99,
                           ResponseMessage = "fallo",
                           TransactionID   = 0
                       }
            }
            ;

            string myAgent = new IBank.Utils().GetAgentPdv(request.Recipient);

            var distributionResponse = new IBank.Utils().ExecuteDistribution(ConfigurationManager.AppSettings["id_net"], request.ExternalTransactionReference, DateTime.Now, myAgent, request.Amount, ConfigurationManager.AppSettings["AccountProinco"]);

            if (int.Parse(distributionResponse.responseCode) == 0)
            {
                response = new TransferResponseBody()
                {
                    Fee             = 0,
                    ResponseCode    = 0,
                    ResponseMessage = distributionResponse.Message,
                    TransactionID   = 0
                };
            }
            else
            {
                response = new TransferResponseBody()
                {
                    Fee             = 0,
                    ResponseCode    = 99,
                    ResponseMessage = "fallo",
                    TransactionID   = 0
                };
            }

            return(response);
        }
    }
}
Exemplo n.º 29
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            if (sessionID.Equals("0"))
            {
                return new GetBankListResponseBody()
                       {
                           ResponseCode    = 90,
                           ResponseMessage = "error session",
                           TransactionID   = 0,
                           BankList        = new BankList()
                       }
            }
            ;

            GetBankListRequestBody  request  = requestObject as GetBankListRequestBody;
            GetBankListResponseBody response = null;
            string message;

            logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [SEND-DATA] getAccountBankParameters {UserId=" + sessionID + "}");

            BankAccount[] banks;

            if (request.ParentValues ?? false)
            {
                banks = Utils.GetAccountBanks(request.Agent, out message);
            }
            else
            {
                banks = kinacuWS.GetAccountBank(int.Parse(sessionID), out message);
            }

            if (banks == null || banks.Length == 0)
            {
                logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [RECV-DATA] getAccountBankResult {No posee cuentas" + (banks == null ? " (null)" : String.Empty) + "}");
            }
            else
            {
                logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [RECV-DATA] getAccountBankResult {response={Count=" + banks.Length + "}}");
            }

            response = new GetBankListResponseBody()
            {
                ResponseCode    = 0,
                ResponseMessage = "exito",
                TransactionID   = 0
            };

            response.BankList = new BankList();
            string[] ignoreList = string.IsNullOrEmpty(ConfigurationManager.AppSettings["BankIgnoreList"]) ? new string[0] : ConfigurationManager.AppSettings["BankIgnoreList"].ToString().Split(',');
            foreach (var bank in banks)
            {
                if (!ignoreList.Contains(bank.BankId.ToString()))
                {
                    //if(response.BankList.Count(b => b.Key == bank.BankId) == 0)
                    response.BankList.Add(bank.Id, bank.BankName + " - " + bank.Number);
                }
            }

            return(response);
        }
    }
Exemplo n.º 30
0
        public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID)
        {
            SetAgentCloseRequestBody request = requestObject as SetAgentCloseRequestBody;

            SetAgentCloseResponseBody response = new SetAgentCloseResponseBody()
            {
                ResponseCode    = 99,
                ResponseMessage = "OK",
                TransactionID   = 0
            };

            logger.BeginHigh("[KIN] " + base.LOG_PREFIX + "[SetAgentCloseProvider] [SEND-DATA] getChildRetailersParameters {UserId=" + sessionID + "} Agent =" + request.Agent + ", IdMax= " + request.IdMax + " ,IdMin = " + request.IdMin + " ,Type = " + request.Type);

            //Ariel 2021-Ma-09 Comentado  asignamos true
            bool result = true; // Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.SetAgentCloseProvider(request);


            response.ResponseCode    = result ? 0 : 99;
            response.ResponseMessage = result ? "OK" : "";



            return(response);
        }