private void ProcessCommands(Service service) { try { var command = service.ObtenerComando(); STrace.Error(GetType().FullName, String.Format("AssistCargo.ProcessCommands: Obteniendo Comando para : {0}", (command == null?"NONE":command.Code))); if (command == null) { return; } command.Code = command.Code.Trim(); var coche = DaoFactory.CocheDAO.FindByPatente(-1, command.Dominio); if (coche == null) { service.EstadoComando(command.Id, "No se encontro un vehiculo con patente " + command.Dominio); service.ComandoProcesado(command.Id, false); STrace.Error(GetType().FullName, String.Format("AssistCargo.ProcessCommands: No se encontro un vehiculo con patente {0}", command.Dominio)); return; } if (coche.Dispositivo == null) { service.EstadoComando(command.Id, "El vehiculo con patente " + command.Dominio + " no tiene un Dispositivo asignado"); service.ComandoProcesado(command.Id, false); STrace.Error(GetType().FullName, String.Format("AssistCargo.ProcessCommands: El vehiculo con patente {0} no tiene un Dispositivo asignado", command.Dominio)); return; } if (!coche.ReportaAssistCargo) { service.EstadoComando(command.Id, "El vehiculo con patente " + command.Dominio + " no tiene activada la interfaz con AssistCargo"); service.ComandoProcesado(command.Id, false); STrace.Error(GetType().FullName, String.Format("AssistCargo.ProcessCommands: El vehiculo con patente {0} no tiene activada la interfaz con AssistCargo", command.Dominio)); return; } //var sender = new Sender(coche.Dispositivo.TipoDispositivo.ColaDeComandos); bool sent; if (command.Code == Config.AssistCargo.AssistCargoDisableFuelCode) { //sent = sender.SendDisableFuel(coche.Dispositivo.Id, false, "AssistCargo", command.Id); sent = MessageSender.CreateDisableFuel(coche.Dispositivo, new MessageSaver(DaoFactory)) .AddInmediately(false) .AddTrackingId(command.Id) .AddTrackingExtraData("AssistCargo") .Send(); } else if (command.Code == Config.AssistCargo.AssistCargoDisableFuelInmediatelyCode) { //sent = sender.SendDisableFuel(coche.Dispositivo.Id, true, "AssistCargo", command.Id); sent = MessageSender.CreateDisableFuel(coche.Dispositivo, new MessageSaver(DaoFactory)) .AddInmediately(true) .AddTrackingId(command.Id) .AddTrackingExtraData("AssistCargo") .Send(); } else if (command.Code == Config.AssistCargo.AssistCargoEnableFuelCode) { //sent = sender.SendEnableFuel(coche.Dispositivo.Id, "AssistCargo", command.Id); sent = MessageSender.CreateEnableFuel(coche.Dispositivo, new MessageSaver(DaoFactory)) .AddTrackingId(command.Id) .AddTrackingExtraData("AssistCargo") .Send(); } else { service.EstadoComando(command.Id, "No se encontro un comando con codigo '" + command.Code + "'."); service.ComandoProcesado(command.Id, false); STrace.Error(GetType().FullName, String.Format("AssistCargo.ProcessCommands: No se encontro un comando con codigo '{0}'. Disponibles: '{1}','{2}','{3}'", command.Code, Config.AssistCargo.AssistCargoDisableFuelCode, Config.AssistCargo.AssistCargoDisableFuelInmediatelyCode, Config.AssistCargo.AssistCargoEnableFuelCode)); return; } service.EstadoComando(command.Id, sent ? "Enviado al Gateway" : "No se pudo enviar al Gateway"); if (!sent) { service.ComandoProcesado(command.Id, false); STrace.Error(GetType().FullName, String.Format("AssistCargo.ProcessCommands: El comando {0} ({1}) para el vehiculo con patente {2} no pudo ser procesado", command.Id, command.Code, command.Dominio)); } } catch (Exception ex) { STrace.Exception(GetType().FullName, ex); } }