Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <summary>
        /// Transforma un ShipPositionRequestType en un ShipPositionRequest
        /// </summary>
        /// <param name="shipPositionRequest">ShipPositionRequestType</param>
        /// <returns>ShipPositionRequest</returns>
        public static ShipPositionRequest Map2DB(DataCenterLogic.DataCenterTypesIDE.ShipPositionRequestType shipPositionRequest)
        {
            ShipPositionRequest retShipPositionRequest = new ShipPositionRequest();

            retShipPositionRequest.AccessType        = ToInt(shipPositionRequest.AccessType);
            retShipPositionRequest.DataUserProvider  = shipPositionRequest.DataUserProvider;
            retShipPositionRequest.DataUserRequestor = shipPositionRequest.DataUserRequestor;
            retShipPositionRequest.DDPVersionNum     = shipPositionRequest.DDPVersionNum;
            retShipPositionRequest.Distance          = shipPositionRequest.Distance;
            retShipPositionRequest.IMONum            = shipPositionRequest.IMONum;
            retShipPositionRequest.Item          = shipPositionRequest.Item;
            retShipPositionRequest.MessageId     = shipPositionRequest.MessageId;
            retShipPositionRequest.MessageType   = ToInt(shipPositionRequest.MessageType);
            retShipPositionRequest.RequestType   = ToInt(shipPositionRequest.RequestType);
            retShipPositionRequest.schemaVersion = shipPositionRequest.schemaVersion;

            retShipPositionRequest.StartTimeSpecified = ToInt(shipPositionRequest.RequestDuration.startTimeSpecified);
            if (retShipPositionRequest.StartTimeSpecified != 0)
            {
                retShipPositionRequest.StartTime = shipPositionRequest.RequestDuration.startTime;
            }
            else
            {
                retShipPositionRequest.StartTime = null;
            }

            retShipPositionRequest.StopTimeSpecified = ToInt(shipPositionRequest.RequestDuration.stopTimeSpecified);
            if (retShipPositionRequest.StopTimeSpecified != 0)
            {
                retShipPositionRequest.StopTime = shipPositionRequest.RequestDuration.stopTime;
            }
            else
            {
                retShipPositionRequest.StopTime = null;
            }

            retShipPositionRequest.test      = ToInt(shipPositionRequest.test);
            retShipPositionRequest.TimeStamp = shipPositionRequest.TimeStamp;

            return(retShipPositionRequest);
        }
Beispiel #3
0
        public ActionResult CreateAndSend(DataCenterLogic.DataCenterTypesIDE.ShipPositionRequestType spr, int accessTypeIndex, int requestTypeIndex, string itemElementIndex, string strStartTime, string strStopTime)
        {
            var cfgman = new ConfigurationManager();

            DateTime dateStartTime = DateTime.UtcNow;
            DateTime dateStopTime  = DateTime.UtcNow;

            if (spr.IMONum.Trim().Length == 0)
            {
                ModelState.AddModelError("IMONum", "Numero OMI requerido");
            }
            if (spr.DataUserProvider.Trim().Length == 0)
            {
                ModelState.AddModelError("DataUserProvider", "LRIT Id del DataCenter requerido");
            }

            if (new int[] { 2, 3, 4, 5, 6, 7, 10, 11 }.Contains(requestTypeIndex))
            {
                if (DateTime.TryParse(strStartTime, out dateStartTime) == false)
                {
                    ModelState.AddModelError("StartTime", "Fecha Inicio requerida");
                }
                if (DateTime.TryParse(strStopTime, out dateStopTime) == false)
                {
                    ModelState.AddModelError("StopTime", "Fecha Fin requerida");
                }
            }

            if (accessTypeIndex == 3 || accessTypeIndex == 5)
            {
                string ItemField   = this.Request.Params["ItemField"];
                string ItemElement = this.Request.Params["ItemElement"];
                if (ItemElement == "Port")
                {
                    spr.ItemElementName = DataCenterLogic.DataCenterTypesIDE.ItemChoiceType.Port;
                }
                if (ItemElement == "PortFacility")
                {
                    spr.ItemElementName = DataCenterLogic.DataCenterTypesIDE.ItemChoiceType.PortFacility;
                }

                spr.Item = ItemField;
            }



            ViewData["AccessType"]  = accessTypeIndex.ToString();
            ViewData["RequestType"] = requestTypeIndex.ToString();
            if (!ModelState.IsValid)
            {
                return(ShowNewView(requestTypeIndex, accessTypeIndex));
            }

            if (accessTypeIndex != 6)
            {
                spr.MessageType = DataCenterLogic.DataCenterTypesIDE.messageTypeType1.Item4;
            }
            else
            {
                spr.MessageType = DataCenterLogic.DataCenterTypesIDE.messageTypeType1.Item5;
            }

            spr.MessageId = MessageIdManager.Generate("1005");
            //spr.IMONum;
            //spr.DataUserProvider

            if (accessTypeIndex == 0)
            {
                spr.AccessType = DataCenterLogic.DataCenterTypesIDE.accessTypeType.Item0;
            }
            else if (accessTypeIndex == 1)
            {
                spr.AccessType = DataCenterLogic.DataCenterTypesIDE.accessTypeType.Item1;
            }
            else if (accessTypeIndex == 2)
            {
                spr.AccessType = DataCenterLogic.DataCenterTypesIDE.accessTypeType.Item2;
            }
            else if (accessTypeIndex == 3)
            {
                spr.AccessType = DataCenterLogic.DataCenterTypesIDE.accessTypeType.Item3;
            }
            else if (accessTypeIndex == 5)
            {
                spr.AccessType = DataCenterLogic.DataCenterTypesIDE.accessTypeType.Item5;
            }
            else if (accessTypeIndex == 6)
            {
                spr.AccessType = DataCenterLogic.DataCenterTypesIDE.accessTypeType.Item6;
            }


            //spr.Item
            if (itemElementIndex != null)
            {
                spr.ItemElementName = (DataCenterLogic.DataCenterTypesIDE.ItemChoiceType)Enum.Parse(typeof(DataCenterLogic.DataCenterTypesIDE.ItemChoiceType), itemElementIndex);
            }

            //this.Request.Params["
            //spr.Distance = ;
            spr.RequestType     = (DataCenterLogic.DataCenterTypesIDE.requestTypeType)Enum.Parse(typeof(DataCenterLogic.DataCenterTypesIDE.requestTypeType), "Item" + requestTypeIndex.ToString());
            spr.RequestDuration = new DataCenterLogic.DataCenterTypesIDE.requestDurationType();

            if (spr.RequestType == DataCenterLogic.DataCenterTypesIDE.requestTypeType.Item1 || spr.RequestType == DataCenterLogic.DataCenterTypesIDE.requestTypeType.Item9)
            {
                spr.RequestDuration.startTimeSpecified = false;
            }
            else
            {
                spr.RequestDuration.startTimeSpecified = true;
                spr.RequestDuration.startTime          = dateStartTime;
            }

            if (spr.RequestType == DataCenterLogic.DataCenterTypesIDE.requestTypeType.Item1 || spr.RequestType == DataCenterLogic.DataCenterTypesIDE.requestTypeType.Item9)
            {
                spr.RequestDuration.stopTimeSpecified = false;
            }
            else
            {
                spr.RequestDuration.stopTimeSpecified = true;
                spr.RequestDuration.stopTime          = dateStopTime;
            }

            spr.DataUserRequestor = "1005";//;cfgman.Configuration.DataCenterID;
            spr.TimeStamp         = DateTime.UtcNow;
            spr.DDPVersionNum     = DDPVersionManager.currentDDP();
            spr.schemaVersion     = decimal.Parse(cfgman.Configuration.SchemaVersion);
            spr.test = DataCenterLogic.DataCenterTypesIDE.testType.Item1;

            Message msgout = new Message(spr);

            msgout.Label = "shipPositionRequest";

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

            QueueManager.Instance().SetOut(outQueue);
            QueueManager.Instance().EnqueueOut(msgout);

            return(View("Sent"));
        }