public ShipPositionRequest GetByMessageID(string msgid) { using (var sprmdao = new ShipPositionRequestDataAccess()) { return(sprmdao.GetByMessageId(msgid)); } }
/// <summary> /// Procesa un mensaje de tipo Receipt /// </summary> /// <param name="msg">El mensaje Receipt</param> public void ProcessReceipt(ReceiptType receipt) { decimal?price = null; if (receipt.ReceiptCode == receiptCodeType.Item0 && receipt.ReferenceId.Length > 0) { //Era un recibo correspondiente a un REQUERIMIENTO? var sprm = new ShipPositionRequestDataAccess(); if (sprm.RequestExists(receipt.ReferenceId) == true) { var pman = new PricingManager(); price = pman.GetPriceForRequest(receipt.ReferenceId, receipt.Originator); if (price == null) { log.Warn(string.Format("ProcessReceipt: Se recibio un receipt codigo 0 {0}, no podemos poner precio", receipt.MessageId)); } } else { log.Warn(string.Format("ProcessReceipt: recibo 0 {0} no referido a Requerimiento", receipt.MessageId)); } } using (var dao = new ReceiptDataAccess()) { dao.Create(TypeHelper.Map2DB(receipt), 0, price); } log.Info(string.Format("Receipt successfully processed: price {0}", price)); }
private string SendShipPositionRequest(Message msg) { DataCenterLogic.DataCenterTypesIDE.ShipPositionRequestType shipPositionRequest = (DataCenterLogic.DataCenterTypesIDE.ShipPositionRequestType)(msg.Body); //Send to IDE if (System.Configuration.ConfigurationManager.AppSettings["send2servers"] != "False") { shipPositionRequest.test = DataCenterLogic.DataCenterTypesIDE.testType.Item0; ideClient.ShipPositionRequest(shipPositionRequest); log.Info("SendShipPositionRequest: shipPositionRequest sent to IDE"); } if (ShipPositionRequestHelper.IsPeriodicRequest(shipPositionRequest.RequestType)) { //Es periodico, y pedimos sacarlo de la frecuencia estandard 6hs (RequestType==6), y no es SAR (msgtype==5)? //Debemos imputarnos la presunta reprogramacion PRICING if (shipPositionRequest.RequestType != DataCenterLogic.DataCenterTypesIDE.requestTypeType.Item6 && shipPositionRequest.MessageType == DataCenterLogic.DataCenterTypesIDE.messageTypeType1.Item5) { /************************************************/ var pmgr = new PricingManager(); decimal?price = pmgr.AddASPReprogrMessage(0, shipPositionRequest.DataUserRequestor, shipPositionRequest.DataUserProvider); log.Info(string.Format("SendShipPositionRequest: Reprogramacion presunta par {0} => precio={1}", shipPositionRequest.MessageId, price)); /************************************************/ } } //Guarda el mensaje en la base de datos using (var dao = new ShipPositionRequestDataAccess()) { dao.Create(TypeHelper.Map2DB(shipPositionRequest), 1); } log.Info("ShipPositionRequest stored"); return(shipPositionRequest.MessageId); }
public bool HasActiveRequest(Ship ship) { ShipDataAccess sda = null; ShipPositionRequestDataAccess sprda = null; try { sda = new ShipDataAccess(); sprda = new ShipPositionRequestDataAccess(); var sprs = sda.GetAllRequestsForShip(ship); foreach (var spr in sprs) { if (sprda.GetActiveShipPositionRequest(spr) != null) { return(true); } } return(false); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); return(false); } finally { if (sda != null) { sda.Dispose(); } if (sprda != null) { sprda.Dispose(); } } }
/// <summary> /// Procesa un mensaje de tipo ShipPositionRequest /// </summary> /// <param name="msg">Mensaje de la cola con ShipPositionRequest en el body</param> public void ProcessShipPositionRequest(ShipPositionRequestType shipPositionRequest) { log.Info("Procesando ShipPositionRequest"); try { if (ValidateShipPositionRequest(shipPositionRequest) != true) { return; } } catch (Exception ex) { log.Debug(ex); } Ship ship = null; using (var sdao = new ShipDataAccess()) { log.Debug("Verifica si existe el barco en la base de datos"); ship = sdao.getByIMONum(shipPositionRequest.IMONum); if (ship == null) { //The ship is not in our system, send receipt CODE 7 log.Debug("el barco no esta en nuestro sistema, se envia recibo codigo 7"); ReceiptManager.SendReceipt(shipPositionRequest.DataUserRequestor, shipPositionRequest.MessageId, DataCenterLogic.DataCenterTypesIDE.receiptCodeType.Item7, string.Format("The ship {0} is not registered", shipPositionRequest.IMONum)); return; } } //Save ship position request to obtain id log.Debug("Guardando SPR en base de datos para obtener id"); var shipPositionRequestDB = TypeHelper.Map2DB(shipPositionRequest); try { using (var spreq = new ShipPositionRequestDataAccess()) { spreq.Create(shipPositionRequestDB, 0); } } catch (Exception ex) { log.Error("Hubo un problema al guardar el mensaje"); log.Debug(ex); return; } //log.Debug("Verificando si ya hay un request activo para el barco"); //using (var asprDa = new ActiveShipPositionRequestDataAccess()) //{ // List<ActiveShipPositionRequest> asprlist = asprDa.GetAll(); // foreach (ActiveShipPositionRequest aspr in asprlist) // { // if (shipPositionRequest.IMONum == aspr.ShipPositionRequest.IMONum && // Convert.ToInt32(shipPositionRequest.AccessType) == aspr.ShipPositionRequest.AccessType && // shipPositionRequest.DataUserRequestor == aspr.ShipPositionRequest.DataUserRequestor // ) // { // log.Debug("Se reemplaza request del barco:" + shipPositionRequest.IMONum); // asprDa.Remove(aspr); // } // } //} #region Historics position report log.Debug("Verificando si es un request para datos archivados"); if (ShipPositionRequestHelper.IsHistoricRequest(shipPositionRequest.RequestType)) { ProcessHistoricShipPositionRequest(shipPositionRequest, ship); return; } #endregion #region Periodic position report log.Debug("Verificando si es un request periodico"); if (ShipPositionRequestHelper.IsPeriodicRequest(shipPositionRequest.RequestType)) { ActiveShipPositionRequestManager asprManager = new ActiveShipPositionRequestManager(); asprManager.AddOrReplace(shipPositionRequestDB); log.Debug("ASPR REPLACED: Barco:" + shipPositionRequest.IMONum); log.Debug("Requestor: " + shipPositionRequest.DataUserRequestor); log.Debug("Access-Request Type: " + shipPositionRequest.AccessType + "-" + shipPositionRequest.RequestType); //Es periodico, y nos saca de la frecuencia estandard 6hs (RequestType==6), y no es SAR (msgtype==5)? //Debemos cobrarle la presunta reprogramacion PRICING if (shipPositionRequest.RequestType != requestTypeType.Item6 && shipPositionRequest.MessageType == messageTypeType1.Item5) { /************************************************/ var pmgr = new PricingManager(); decimal?price = pmgr.AddASPReprogrMessage(0, shipPositionRequest.DataUserRequestor, shipPositionRequest.DataUserProvider); log.Info(string.Format("ProcessShipPositionRequest: Reprogramacion presunta par {0} => precio={1}", shipPositionRequest.MessageId, price)); /************************************************/ } return; } #endregion #region One Time poll log.Debug("Verificando si es un request para unica vez"); if (ShipPositionRequestHelper.IsOneTimePoll(shipPositionRequest.RequestType)) { ActiveShipPositionRequestManager asprManager = new ActiveShipPositionRequestManager(); //Crea Active asprManager.AddNew(shipPositionRequestDB.Id); log.Debug("ASPR ADDED: Barco:" + shipPositionRequest.IMONum); log.Debug("Requestor: " + shipPositionRequest.DataUserRequestor); log.Debug("Access-Request Type: " + shipPositionRequest.AccessType + "-" + shipPositionRequest.RequestType); } #endregion #region Reset Request log.Debug("Verificando si es un request reset"); if (ShipPositionRequestHelper.IsResetRequest(shipPositionRequest.RequestType)) { var asprManager = new ActiveShipPositionRequestManager(); asprManager.RemoveAllForRequestor(shipPositionRequestDB); } #endregion #region Stop Request log.Debug("Verificando si es un request Stop"); if (ShipPositionRequestHelper.IsStopRequest(shipPositionRequest.RequestType)) { ActiveShipPositionRequestManager asprManager = new ActiveShipPositionRequestManager(); asprManager.AddOrReplace(shipPositionRequestDB); log.Debug("ASPR REPLACED: Barco:" + shipPositionRequest.IMONum); log.Debug("Requestor: " + shipPositionRequest.DataUserRequestor); log.Debug("Access-Request Type: " + shipPositionRequest.AccessType + "-" + shipPositionRequest.RequestType); } #endregion return; }
/// <summary> /// Procesa un mensaje de tipo ShipPositionReport /// </summary> /// <param name="msg">El mensaje ShipPositionReport</param> public void ProcessShipPositionReport(DataCenterTypes.ShipPositionReportType shipPositionReport) { var configMgr = new ConfigurationManager(); //Verifica si existe el Data User que requiere la información var cgm = new ContractingGovermentManager(); var ddpm = new DDPVersionManager(); var ddpVersion = ddpm.GetCurrentDDPVersion(); var contractingGoverment = cgm.GetContractingGovermentByLRITId(shipPositionReport.DataUserRequestor, ddpVersion.Id); if (contractingGoverment == null) { string strError = string.Format("Specified LDU '{0}' does not exist", shipPositionReport.DataUserRequestor); //Arma mensaje de Recibo DataCenterLogic.DataCenterTypes.ReceiptType receipt = new DataCenterLogic.DataCenterTypes.ReceiptType(); receipt.DDPVersionNum = DDPVersionManager.currentDDP(); receipt.Destination = shipPositionReport.DCId; receipt.Message = strError; receipt.MessageId = MessageIdManager.Generate(); receipt.MessageType = DataCenterLogic.DataCenterTypes.messageTypeType3.Item7; receipt.Originator = configMgr.Configuration.DataCenterID; receipt.ReceiptCode = DataCenterLogic.DataCenterTypes.receiptCodeType.Item7; receipt.ReferenceId = shipPositionReport.MessageId; receipt.schemaVersion = decimal.Parse(configMgr.Configuration.SchemaVersion); receipt.test = DataCenterLogic.DataCenterTypes.testType.Item1; receipt.TimeStamp = DateTime.UtcNow; Message msgout = new Message(receipt); msgout.Label = "receipt"; //Encola mensaje QueueManager.Instance().EnqueueOut(msgout); log.Error(strError); return; } //Verifica si el existe el Id de referencia if (shipPositionReport.ReferenceId != "") { var sprda = new ShipPositionRequestDataAccess(); if (sprda.RequestExists(shipPositionReport.ReferenceId) == false) { string strError = string.Format("MessageID not found for ReferenceID '{0}'", shipPositionReport.ReferenceId); //Envía Recibo DataCenterLogic.DataCenterTypes.ReceiptType receipt = new DataCenterLogic.DataCenterTypes.ReceiptType(); receipt.DDPVersionNum = DDPVersionManager.currentDDP(); receipt.Destination = shipPositionReport.DCId; receipt.Message = strError; receipt.MessageId = MessageIdManager.Generate(); receipt.MessageType = DataCenterLogic.DataCenterTypes.messageTypeType3.Item7; receipt.Originator = configMgr.Configuration.DataCenterID; receipt.ReceiptCode = DataCenterLogic.DataCenterTypes.receiptCodeType.Item7; receipt.ReferenceId = shipPositionReport.MessageId; receipt.schemaVersion = decimal.Parse(configMgr.Configuration.SchemaVersion); receipt.test = DataCenterLogic.DataCenterTypes.testType.Item1; receipt.TimeStamp = DateTime.UtcNow; Message msgout = new Message(receipt); msgout.Label = "receipt"; //Envia mensaje QueueManager.Instance().EnqueueOut(msgout); log.Error(strError); return; } } //ReferenceID puede ser de un report o "" si es SO //DataUserProvider es el usuario que nos manda (deberiamos tener contrato con el) var pricing = new PricingManager(); decimal?price = pricing.GetPriceForRequest(shipPositionReport.ReferenceId, shipPositionReport.DataUserProvider); //No tengo precio? if (price == null) { log.Warn(string.Format("SendShipPositionReport: Se recibio un reporte {0} de posicion, no podemos poner precio", shipPositionReport.MessageId)); } //Save position report to DB using (var dao = new ShipPositionReportDataAccess()) { dao.Create(TypeHelper.Map2DB(shipPositionReport), 0, price); } log.Info(string.Format("ShipPositionReport successfully processed: price {0}", price)); }
public ActionResult GridData(int page, int rows, string[] _search, string sidx, string sord, int msgInOut) { string[] ReqParams = { "IMONum", "DataUserRequestor", "DataUserProvider", "AccessType", "RequestType", "StartTime", "StopTime", "MessageID", "TimeStamp" }; List <string> columns = new List <string>(); List <string> querys = new List <string>(); //Vectores Apareados SearchQuery, Columns string tstamp = "-"; var fromDate = new DateTime(2000, 1, 1); var toDate = new DateTime(2200, 1, 1); for (int i = 0; i < ReqParams.Count(); i++) { if (ReqParams[i].Contains("TimeStamp")) { tstamp = Request.Params[ReqParams[i]]; if (tstamp != null) { var dates = tstamp.Split('-'); fromDate = DateTime.Parse(dates[0]); if (dates.Length == 1) { toDate = fromDate.AddDays(1); } else { toDate = DateTime.Parse(dates[1]); } } continue; } var tempValue = Request.Params[ReqParams[i]]; if (tempValue != null) { columns.Add(ReqParams[i]); querys.Add(tempValue); } } var sprda = new ShipPositionRequestDataAccess(context); IQueryable <ShipPositionRequest> requests; if (msgInOut == 2) { requests = sprda.GetActives(); } else { requests = sprda.GetAllBetween(msgInOut, fromDate, toDate); } var model = from entity in requests.OrderBy(sidx + " " + sord) select new { IMONum = entity.IMONum, DataUserRequestor = entity.DataUserRequestor, DataUserProvider = entity.DataUserProvider, AccessType = entity.AccessType, RequestType = entity.RequestType, StartTime = entity.StartTime.ToString(), StopTime = entity.StopTime.ToString(), MessageId = entity.MessageId, TimeStamp = entity.TimeStamp.ToString(), }; return(Json(model.ToJqGridData(page, rows, null, querys.ToArray(), columns.ToArray()))); }