/// <summary> /// Envia un mensaje de tipo ShipPositionReport al IDE /// </summary> /// <param name="msg">Mensaje ShipPositionReport</param> private string SendShipPositionReport(Message msg) { DataCenterLogic.DataCenterTypesIDE.ShipPositionReportType shipPositionReport = (DataCenterLogic.DataCenterTypesIDE.ShipPositionReportType)(msg.Body); //Send to IDE if (System.Configuration.ConfigurationManager.AppSettings["send2servers"] != "False") { shipPositionReport.test = DataCenterLogic.DataCenterTypesIDE.testType.Item0; ideClient.ShipPositionReport(shipPositionReport); log.Info("SendShipPositionReport: shipPositionReport sent to IDE"); } //ReferenceID puede ser de un report o "" si es SO //DataUserProvider deberia ser siempre 1005 var pricing = new PricingManager(); decimal?price = pricing.GetPriceForRequest(shipPositionReport.ReferenceId, shipPositionReport.DataUserProvider); //No tengo precio y es Es una reporte NO SAR? if (price == null) { log.Warn(string.Format("SendShipPositionReport: Se manda un reporte {0} de posicion sin precio", shipPositionReport.MessageId)); } //Guarda el mensaje en la base de datos using (var dao = new ShipPositionReportDataAccess()) { dao.Create(TypeHelper.Map2DB(shipPositionReport), 1, price); } log.Info(string.Format("ShipPositionReport stored: price {0}", price)); return(shipPositionReport.MessageId); }
/// <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", "ShipName", "DataUserRequestor", "DataUserProvider", "Latitude", "Longitude", "ResponseType", "ReferenceId", "TimeStamp1", "MessageId" }; List <string> columns = new List <string>(); List <string> querys = new List <string>(); string tstamp = "-"; var fromDate = new DateTime(2000, 1, 1); var toDate = new DateTime(2200, 1, 1); //Vectores Apareados SearchQuery, Columns for (int i = 0; i < ReqParams.Count(); i++) { if (ReqParams[i].Contains("TimeStamp1")) { 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 ShipPositionReportDataAccess(context); var reports = sprda.GetAllBetween(msgInOut, fromDate, toDate); var model = from entity in reports.OrderBy(sidx + " " + sord) select new { IMONum = entity.IMONum, ShipName = entity.ShipName, DataUserRequestor = entity.DataUserRequestor, DataUserProvider = entity.DataUserProvider, Latitude = entity.Latitude, Longitude = entity.Longitude, ResponseType = entity.ResponseType, ReferenceId = entity.ReferenceId, MessageId = entity.MessageId, TimeStamp1 = entity.TimeStamp1.ToString(), }; return(Json(model.ToJqGridData(page, rows, null, querys.ToArray(), columns.ToArray()))); }