public ProxyServer(string host, int port, IBLERequest request) { httpListener = new HttpListener(); httpListener.Prefixes.Add($"http://{host}:{port}/"); clients = new List <WebSocket>(); clientDisposables = new List <IDisposable>(); requestAgent = new RequestAgent(request, this); }
public void initial() { market = new RequestManager(); rq = new RequestAgent(); userInfo = (MarketUserData)market.SendQueryUserRequest(); sql = new SQLmanager(); ama = new AutonomousMarketAgent(); }
public bool Schedule(ServiceRequest sr) { TechnicianController techCtr = new TechnicianController(); List <Package> packages = sr.ServiceContract.Packages; List <Technician> techs = techCtr.Read(); Technician techMin = null; Service serMin = null; RequestAgent reqAgent; List <Service> skills; foreach (Package i in packages) { foreach (Technician j in techs) { skills = j.Skills; foreach (Service k in skills) { if (k.Equals(i.Service)) { int queueDuration = GetQueueDuration(j); int queueDurationMin = GetQueueDuration(j); if (techMin != null) { queueDurationMin = GetQueueDuration(techMin); } if (queueDuration <= queueDurationMin) { techMin = j; serMin = k; } } } } if (techMin == null) { return(false); } techMin.EmploymentStatus = "Working"; techCtr.Update(techMin); reqAgent = new RequestAgent(serMin, techMin); rqCtr.Add(reqAgent, sr); return(true); } return(false); }
private void OnExecuteRequest(RequestAgent requestAgent) { try { requestAgent.Execute(); } catch (Exception e_) { if (HttpServer.EnableLog(LogType.Error)) { HttpServer.Log(LogType.Error, $"gateway {requestAgent.Request.Url} route to {requestAgent.Server.Uri} error {e_.Message}{e_.StackTrace}"); } } }
internal void OnResponding(RequestAgent request, ArraySegment <byte> data, bool completed) { if (request.Code == 200) { EventRespondingArgs e = new EventRespondingArgs(); e.Completed = completed; e.FirstReceive = request.BodyReceives == 1; e.Data = data; e.Gateway = this; e.ResponseStatus = request.ResponseStatus; e.Header = request.ResponseHeader; e.Request = request.Request; e.Server = request.Server; this.Pluginer.Responding(e); } }
public IEnumerable <string> Get() { string[] result = new string[2]; result[0] = "111"; result[1] = "222"; Foo(123, null); RequestAgent.Send(HttpMethod.Get, new Uri("http://localhost:6000/api/values/1"), null, (code, content) => { if (code == System.Net.HttpStatusCode.OK) { result[1] = "333"; } }); Bar(123, new Uri("http://www.lifepre.com")); return(result); }
internal void AddRequest(RequestAgent requestAgent) { multiThreadDispatcher.Enqueue(requestAgent, 10); }
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); }
/// <summary> /// Actualiza un agente en el sistema, tanto en el funente principal como en comisiones /// Precondicion: /// -el agente a editar debe ser hijo del agente logeado en el sistema /// -los datos del agente estan completos /// -los datos de los accesos estan completos, no repetidos y disponibles en el sistema /// </summary> /// <param name="requestObject"></param> /// <param name="kinacuWS"></param> /// <param name="sessionID"></param> /// <returns></returns> /// <returns>Retorna el tipo IMovilwayApiResponse con el respectivo codigo de error y mensaje</returns> public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, KinacuWebService.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 ErrorItems() { new ErrorItem() { ErrorId = "90", ErrorDescription = "Session invalida" } } } } ; CreateAgentRequestBody request = requestObject as CreateAgentRequestBody; logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[UpdateAgentProvider]").Tag("[RCV-DATA] UpdateAgentProviderParameters ").Value(request)); dynamic data = new { AgeId = request.AgeId, Login = request.AuthenticationData.Username }; if (!Utils.HaveRelationWithAgent(data)) { response.ResponseCode = 90; response.ResponseMessage = "ERROR DE PERMISOS"; response.TransactionID = 0; response.Errors = new ErrorItems() { new ErrorItem() { ErrorId = "90", ErrorDescription = "NO TIENE PERMISOS PARA EDITAR ESTE REGISTRO" } }; return(response); } //validacion de edicion de productos //precondicion: se ha validado que el agente es padre del hijo int AgeLogId = Utils.GetAgentIdByAccessPosWeb(request.AuthenticationData.Username); // se descarta que el usuario logoeado no se ha el mismo que se esta editando // tener encuenta casos especiales bool CanEditProdutcs = AgeLogId != request.AgeId; var result = Utils.ValidateSoldChildComissions(request.AgeId, request.Commission); //(request.AgeId, AgeLogId, 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); } int currentUserId = Utils.GetUserId(request.AuthenticationData.Username); MD5 md5 = new MD5CryptoServiceProvider(); var reqAgent = new RequestAgent() { age_id = request.AgeId, 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, //Categoria Tributaria ta_id = 1, // Tipo de agencia sa_id = request.SegmentId, // segmento de la agencia age_tipo = "SU", age_autenticaterminal = "N", // Se quita este valor por peticion del usuario age_prefijosrest = string.Empty, age_estado = "AC", age_comisionadeposito = request.CommissionableDeposits ? "S" : "N", age_montocomision = request.Commission, //TODO NULL POINTER PROBLEMAS DE CULTIRA 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, //segundo usuario //TODO cada ves que se actualiza se extiende el periodo de valdiacion 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, /*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*/ //segundo acceso segundo usuario av_sc_ac_secondUser = request.AvailableSecondAccessSecondUser, third_acc_login = request.AccessLogin3, usr_administrador = request.IsAdministrator2, grpId = request.Group, //Valores Originales acc_cambiopassword = "******", second_acc_cambiopassword = "******", third_acc_cambiopassword = "******", usr_id_modificacion = currentUserId, age_modificacion = AgeLogId // //TODO //acc_cambiopassword = "", //second_acc_cambiopassword = "" // }; reqAgent.second_tac_id = Utils.GetAccessTypeCode(request.AccessType2); if (!string.IsNullOrEmpty(request.AccessType3)) { reqAgent.third_tac_id = Utils.GetAccessTypeCode(request.AccessType3); } if (!string.IsNullOrEmpty(request.AccessPassword1)) { reqAgent.acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword1))); } if (!string.IsNullOrEmpty(request.AccessPassword2)) { reqAgent.second_acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword2))); } if (!string.IsNullOrEmpty(request.AccessPassword3)) { reqAgent.third_acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword3))); } reqAgent.productos = new List <RequestAgent.Product>(); request.ProductsCommission.ForEach(p => { reqAgent.productos.Add(new RequestAgent.Product() { prdId = p.ProductId, comision = p.Commission }); }); result = Utils.UpdateAgent(reqAgent, CanEditProdutcs); response.ResponseCode = result.ResponseCode; response.ResponseMessage = result.ResponseMessage; response.TransactionID = 0; if (!result.IsObjectValidResult()) { response.ResponseCode = response.ResponseCode; response.ResponseMessage = _GenericError; var errors = new ErrorItems(); //errores del result errors.Add(new ErrorItem() { ErrorId = "" + result.ResponseCode, ErrorDescription = result.ResponseMessage }); response.Errors = errors; } } catch (Exception ex) { //cambiar error general erro inesperado 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 + "[UpdateAgentProvider] ", ". Exception: ", ex.Message, ". ", ex.StackTrace); logger.ErrorLow(mensaje); } logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX).Tag("[UpdateAgentProviderResult]").Value(response)); return(response); }
public EventServerRequestingArgs(RequestAgent requestAgent, HttpRequest request, HttpResponse response, Gateway gateway) : base(request, response, gateway) { RequestAgent = RequestAgent; }
/// <summary> /// Retorna los datos del Agente en la clase AgentEdit, con el fin de editar el agente /// Precondicion: /// -El agente existe en el sistema /// Postcondicion: /// Se Obtienen los datos del agente necesarios para la pantalla de edicion /// </summary> /// <param name="requestObject"></param> /// <param name="kinacuWS"></param> /// <param name="sessionID"></param> /// <returns>Retorna un IMovilwayApiResponse con los datos del Agente a editar</returns> public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID) { GetAgentResponseBody response = new GetAgentResponseBody(); if (sessionID.Equals("0")) { response.ResponseCode = 90; response.ResponseMessage = "SESIÓN INVALIDA"; return(response); } try { GetAgentRequestBody request = requestObject as GetAgentRequestBody; RequestAgent reqAgent = null; logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetAgentEdit]").Tag("[SEND-DATA] GetAgentRequestParameters ").Value(request)); /* * dynamic data = new { AgeId = request.AgeId, Login = request.AuthenticationData.Username }; * if (!Utils.HaveRelationWithAgent(data)) * { * response.ResponseCode = 90; * response.ResponseMessage = "ERROR DE PERMISOS"; * response.TransactionID = 0; * response.Errors = new ErrorItems() { new ErrorItem() { ErrorId = "90", ErrorDescription = "NO TIENE PERMISOS PARA EDITAR ESTE REGISTRO" } }; * * return response; * }*/ GenericApiResult <RequestAgent> result = Utils.GetAgentEditById(request.AgeId); //falta builder response.ResponseCode = result.ResponseCode; response.ResponseMessage = result.ResponseMessage; if (result.IsObjectValidResult()) { reqAgent = result.ObjectResult; //result["Obj_Result"] as RequestAgent; response.Agente = new AgentEdit() { RIF = reqAgent.age_cuit, AgentName = reqAgent.age_nombre, LegalName = reqAgent.age_razonsocial, Address = reqAgent.age_direccion, BetweenStreets = reqAgent.age_entrecalles, City = reqAgent.age_ciu_id.ToString(CultureInfo.InvariantCulture), Province = reqAgent.pro_id.ToString(CultureInfo.InvariantCulture), Country = reqAgent.pai_id.ToString(CultureInfo.InvariantCulture), Phone = reqAgent.age_tel, NumberIMEI = reqAgent.age_cel, Email = reqAgent.age_email, ContactPerson = reqAgent.age_contacto, SubLevels = reqAgent.age_subNiveles.ToString(CultureInfo.InvariantCulture), Pdv = reqAgent.age_pdv, CommissionableDeposits = reqAgent.age_comisionadeposito != null && reqAgent.age_comisionadeposito.Equals("S"), //? "S" : "N" , Commission = reqAgent.age_montocomision, Notes = reqAgent.age_observaciones, //primer usuario UserName1 = reqAgent.usr_nombre, UserLastName1 = reqAgent.usr_apellido, AccessLogin1 = reqAgent.acc_login, //segundo acceso segundo usuario //por defecto login es vacio AccessLogin2 = reqAgent.second_acc_login, //validacion pueden haber agentes con solo un acceso AccessType2 = reqAgent.second_tac_id > 0 ? Utils.GetAccessName(Convert.ToInt32(reqAgent.second_tac_id)) : "", //tercer acceso segundo usuario AvailableSecondAccessSecondUser = reqAgent.av_sc_ac_secondUser, AccessLogin3 = reqAgent.third_acc_login, IsAdministrator2 = reqAgent.usr_administrador, Group = Convert.ToInt32(reqAgent.grpId), //booleano que indica si tiene comision SalesCommission = reqAgent.comisionporventa, //productos comision AgeId = reqAgent.age_id, TaxCategory = reqAgent.ct_id == 0 ? 1 : Convert.ToDecimal(reqAgent.ct_id), SegmentId = reqAgent.sa_id == 0 ? 1 : Convert.ToDecimal(reqAgent.sa_id) }; //TODO ABOUT CHEK ALL PRODUCTS //llamar a product lis GetProductListProvider (ApiServiceName.GetProductList) //hacer la logica para saber si todos los productos estan chequeados o no try { if (reqAgent.third_tac_id != 0) { response.Agente.AccessType3 = Utils.GetAccessName(Convert.ToInt32(reqAgent.third_tac_id)); } } catch (Exception ex) { logger.InfoLow(() => TagValue.New().Tag("ERROR OBTENIENDO NOMBRE DEL AGENTE").Exception(ex)); } response.Agente.AutomaticAuthorization = Convert.ToBoolean(reqAgent.autorizacionAutomatica); response.Agente.AutomaticReverse = Convert.ToBoolean(reqAgent.quitaAutomatica); response.Agente.AutomaticReposition = Convert.ToBoolean(reqAgent.generacionAutomatica); response.Agente.AsynchronousTopup = Convert.ToBoolean(reqAgent.recargaAsincronica); //evitar problemas con la cultura response.Agente.CheckingAccountCreditLimit = Convert.ToDecimal(reqAgent.limiteCredito); response.Agente.MinimumOrderAmount = Convert.ToDecimal(reqAgent.montoMinimoPorPedido); response.Agente.MaximumOrderAmount = Convert.ToDecimal(reqAgent.montoMaximoPorPedido); response.Agente.MaximumMonthlyAmount = Convert.ToDecimal(reqAgent.pedidoMaximoMensual); response.Agente.MaximumAuthorizedDailyAmount = Convert.ToDecimal(reqAgent.autorizacionAutomaticaMontoDiario); response.Agente.ProductsCommission = new List <ProductCommision>(); if (reqAgent.productos != null && reqAgent.productos.Count() > 0) { reqAgent.productos.ForEach(p => { response.Agente.ProductsCommission.Add(new ProductCommision() { ProductId = p.prdId, Commission = p.comision }); }); } } } catch (Exception ex) { response.ResponseCode = 500; response.ResponseMessage = "ERROR INESPERADO OBTENIDO AGENTE " + ex.Message; logger.ErrorLow(String.Concat("[QRY] ", LOG_PREFIX, " ", response.ResponseCode, "-", response.ResponseMessage, ". Exception: ", ex.Message, ". ", ex.StackTrace)); } return(response); }