Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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));
        }
Пример #3
0
        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())));
        }