예제 #1
0
        /// <summary>
        /// Procesa un mensaje de tipo SARSurpicRequest.
        /// </summary>
        /// <param name="msg">Mensaje SARSURPICRequest</param>
        public void ProcessSARSURPICRequest(SARSURPICType SARSURPICRequest)
        {
            var configMgr           = new ConfigurationManager();
            var shipPositionManager = new ShipPositionManager();

            List <ShipPosition> shipPositions;

            if (SARSURPICRequest.ItemElementName == DataCenterLogic.DataCenterTypes.ItemChoiceType1.SARCircularArea)
            {
                shipPositions = shipPositionManager.GetLastPositionsInCircularArea(SARSURPICRequest.Item, int.Parse(SARSURPICRequest.NumberOfPositions));
            }
            else
            {
                shipPositions = shipPositionManager.GetLastPositionsInRectangularArea(SARSURPICRequest.Item, int.Parse(SARSURPICRequest.NumberOfPositions));
            }

            if (shipPositions.Count == 0)
            {
                DataCenterTypesIDE.ReceiptType receipt = new DataCenterLogic.DataCenterTypesIDE.ReceiptType();
                receipt.DDPVersionNum = DDPVersionManager.currentDDP();
                receipt.Destination   = SARSURPICRequest.DataUserRequestor;
                receipt.Message       = "No positions";
                receipt.MessageId     = MessageIdManager.Generate();
                receipt.MessageType   = DataCenterLogic.DataCenterTypesIDE.messageTypeType3.Item7;
                receipt.Originator    = "1005";
                receipt.ReceiptCode   = DataCenterLogic.DataCenterTypesIDE.receiptCodeType.Item7;
                receipt.ReferenceId   = SARSURPICRequest.MessageId;
                receipt.schemaVersion = decimal.Parse(configMgr.Configuration.SchemaVersion);
                receipt.test          = DataCenterLogic.DataCenterTypesIDE.testType.Item1;
                receipt.TimeStamp     = DateTime.UtcNow;

                //Receipt sent
                Message msgout = new Message(receipt);
                msgout.Label = "receipt";
                QueueManager.Instance().EnqueueOut(msgout);
            }
            else
            {
                using (var shipdao = new ShipDataAccess())
                {
                    var sprm = new ShipPositionReportManager();
                    foreach (ShipPosition shipPos in shipPositions)
                    {
                        sprm.SendReport(SARSURPICRequest.DataUserRequestor, shipPos, SARSURPICRequest.MessageId, DataCenterLogic.DataCenterTypesIDE.responseTypeType.Item4, DataCenterLogic.DataCenterTypesIDE.messageTypeType.Item3);
                    }
                }
            }

            using (var dao = new SARSURPICRequestDataAccess())
            {
                dao.Create(TypeHelper.Map2DB(SARSURPICRequest), 0);
            }
            log.Info("SARSURPICRequest successfully processed");
        }
예제 #2
0
        private string SendSARSurpicRequest(Message msg)
        {
            DataCenterLogic.DataCenterTypesIDE.SARSURPICType SARSurpicReq = (DataCenterLogic.DataCenterTypesIDE.SARSURPICType)(msg.Body);

            //Send to IDE
            if (System.Configuration.ConfigurationManager.AppSettings["send2servers"] != "False")
            {
                SARSurpicReq.test = DataCenterLogic.DataCenterTypesIDE.testType.Item0;
                ideClient.SARSURPICRequest(SARSurpicReq);
                log.Info("SendSARSurpicRequest: SARSurpicReq sent to IDE");
            }

            //Guarda el mensaje en la base de datos
            using (var dao = new SARSURPICRequestDataAccess())
            {
                dao.Create(TypeHelper.Map2DB(SARSurpicReq), 1);
            }
            log.Info("SARSurpicReq stored");
            return(SARSurpicReq.MessageId);
        }
예제 #3
0
        public ActionResult SurpicGridData(int page, int rows, string[] _search, string sidx, string sord, int msgInOut)
        {
            string[]      ReqParams = { "DataUserRequestor", "DDPVersionNum", "Item", "ItemElementName", "MessageId", "NumberOfPositions", "TimeStamp" };
            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("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 SARSURPICRequestDataAccess(context);
            IQueryable <SARSURPICRequest> requests;

            requests = sprda.GetAllBetween(msgInOut, fromDate, toDate);

            var model = from entity in requests.OrderBy(sidx + " " + sord)
                        select new
            {
                DataUserRequestor = entity.DataUserRequestor,
                DDPVersionNum     = entity.DDPVersionNum,
                Item              = entity.Item,
                ItemElementName   = entity.ItemElementName,
                MessageId         = entity.MessageId,
                NumberOfPositions = entity.NumberOfPositions,
                TimeStamp         = entity.TimeStamp.ToString(),
            };

            return(Json(model.ToJqGridData(page, rows, null, querys.ToArray(), columns.ToArray())));
        }
예제 #4
0
        public ActionResult CreateAndSendSarsurpic(DataCenterLogic.DataCenterTypesIDE.SARSURPICType SARSURPICMsg, int areaIndex, int NumberOfPositions, string Lat, string Long, string var1, string var2)
        {
            var    cfgman  = new ConfigurationManager();
            var    ddpVer  = new DDPVersionDataAccess();
            var    sprda   = new SARSURPICRequestDataAccess(context);
            string strItem = string.Empty;



            MakeComboSARService();


            //\


            if (!Regex.IsMatch(Lat, @"(([0-8][0-9]\.[0-5][0-9]\.[nNsS])|(90\.00\.[nNsS]))"))
            {
                ModelState.AddModelError("Lat", "Latitud: El formato correcto es 00.00.N/S");
            }

            if (!Regex.IsMatch(Long, @"(([0-1][0-7][0-9]\.[0-5][0-9]\.[eEwW])|(180\.00\.[eEwW]))"))
            {
                ModelState.AddModelError("Long", "Longitud: El formato correcto es 000.00.E/W");
            }

            //SARSURPICMsg.DataUserRequestor = "1005";
            var v = ddpVer.TodaysDDP();

            SARSURPICMsg.DDPVersionNum = v.regularVer + ":" + v.inmediateVer;


            if (areaIndex == 0)
            {
                if (!Regex.IsMatch(var1, @"([0-9]{3})"))
                {
                    ModelState.AddModelError("var1", "Radio: El formato correcto es 000");
                }

                strItem                      = string.Format(Lat + ":" + Long + ":" + var1);
                SARSURPICMsg.Item            = strItem;
                SARSURPICMsg.ItemElementName = DataCenterLogic.DataCenterTypesIDE.ItemChoiceType1.SARCircularArea;
            }
            if (areaIndex == 1)
            {
                if (!Regex.IsMatch(var1, @"(([0-8][0-9]\.[0-5][0-9]\.[nN])|(90\.00\.[nN]))"))
                {
                    ModelState.AddModelError("var1", "Offset Norte: El formato correcto es 00.00.N");
                }

                if (!Regex.IsMatch(var2, @"(([0-1][0-7][0-9]\.[0-5][0-9]\.[eE])|(180\.00\.[eE]))"))
                {
                    ModelState.AddModelError("var2", "Offset Este: es 000.00.E");
                }

                strItem                      = string.Format(Lat + ":" + Long + ":" + var1 + ":" + var2);
                SARSURPICMsg.Item            = strItem;
                SARSURPICMsg.ItemElementName = DataCenterLogic.DataCenterTypesIDE.ItemChoiceType1.SARRectangularArea;
            }

            if (!ModelState.IsValid)
            {
                return(ShowNewSarsurpic(areaIndex));
            }

            SARSURPICMsg.MessageId   = MessageIdManager.Generate(SARSURPICMsg.DataUserRequestor);
            SARSURPICMsg.MessageType = (DataCenterLogic.DataCenterTypesIDE.messageTypeType2)Enum.Parse(typeof(DataCenterLogic.DataCenterTypesIDE.messageTypeType2), "Item6");
            //SARSURPICMsg.NumberOfPositions = dc3NumberOfPositions.Text;
            SARSURPICMsg.schemaVersion = decimal.Parse(cfgman.Configuration.SchemaVersion);
            SARSURPICMsg.test          = DataCenterLogic.DataCenterTypesIDE.testType.Item1;
            SARSURPICMsg.TimeStamp     = DateTime.UtcNow;



            Message msgout = new Message(SARSURPICMsg);

            msgout.Label = "SARSURPICRequest";

            string outQueue = System.Configuration.ConfigurationManager.AppSettings["CoreOutQueue"];

            QueueManager.Instance().SetOut(outQueue);

            QueueManager.Instance().EnqueueOut(msgout);

            //sprda.Create( TypeHelper.Map2DB(SARSURPICMsg), 1);


            return(View("Sent"));
        }