Esempio n. 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");
        }
Esempio n. 2
0
        /// <summary>
        /// Transforma un ReceiptType en un Receipt
        /// </summary>
        /// <param name="receipt">ReceiptType</param>
        /// <returns>Receipt</returns>
        static public Receipt Map2DB(DataCenterLogic.DataCenterTypesIDE.ReceiptType receipt)
        {
            Receipt retReceipt = new Receipt();

            retReceipt.DDPVersion  = receipt.DDPVersionNum;
            retReceipt.Destination = receipt.Destination;
            retReceipt.Message     = receipt.Message;
            retReceipt.MessageId   = receipt.MessageId;
            retReceipt.MessageType = ToInt(receipt.MessageType);
            retReceipt.Originator  = receipt.Originator;
            retReceipt.ReceiptCode = ToInt(receipt.ReceiptCode);
            retReceipt.ReferenceId = receipt.ReferenceId;
            retReceipt.Test        = ToInt(receipt.test);
            retReceipt.TimeStamp   = receipt.TimeStamp;

            return(retReceipt);
        }
Esempio n. 3
0
        /// <summary>
        /// Envia un Recibo a el Destino especificado.
        /// </summary>
        /// <param name="Destination">Destino del recibo</param>
        /// <param name="ReferenceId">ID LRIT del mensaje al que hace referencia este recibo</param>
        /// <param name="receiptCode">Codigo del recibo</param>
        /// <param name="msg">Mensaje de texto decribiendo el porque del recibo</param>
        static public void SendReceipt(string Destination, string ReferenceId, DataCenterLogic.DataCenterTypesIDE.receiptCodeType receiptCode, string msg)
        {
            //The ship does not exists in our system, send receipt
            var configMgr = new ConfigurationManager();

            DataCenterTypesIDE.ReceiptType receipt = new DataCenterLogic.DataCenterTypesIDE.ReceiptType();
            receipt.DDPVersionNum = DDPVersionManager.currentDDP();
            receipt.Destination   = Destination;
            receipt.Message       = msg;
            receipt.MessageId     = MessageIdManager.Generate();
            receipt.MessageType   = DataCenterLogic.DataCenterTypesIDE.messageTypeType3.Item7;
            receipt.ReceiptCode   = receiptCode;
            receipt.Originator    = "1005";
            receipt.ReferenceId   = ReferenceId;
            receipt.schemaVersion = decimal.Parse(configMgr.Configuration.SchemaVersion);
            receipt.test          = DataCenterLogic.DataCenterTypesIDE.testType.Item1;
            receipt.TimeStamp     = DateTime.UtcNow;

            Message msgout = new Message(receipt);

            msgout.Label = "receipt";

            QueueManager.Instance().EnqueueOut(msgout);
        }
Esempio n. 4
0
        /// <summary>
        /// Envia un mensaje de tipo Receipt al IDE
        /// </summary>
        /// <param name="msg">Mensaje Receipt</param>
        private string SendReceipt(Message msg)
        {
            DataCenterLogic.DataCenterTypesIDE.ReceiptType receipt = (DataCenterLogic.DataCenterTypesIDE.ReceiptType)(msg.Body);

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

            //Get price for receipt
            //El codigo 0 dice todo, si es codigo 0 quiere decir que este recibo se esta mandando por que no se pudo mandar una posicion
            //Por lo tanto el request debe existir o sino fue de una standing order.
            decimal?price = null;

            if (receipt.ReceiptCode == 0)
            {
                var pman = new PricingManager();
                price = pman.GetPriceForRequest(receipt.ReferenceId, receipt.Originator);
                if (price == null)
                {
                    log.Warn(string.Format("SendReceipt: Se manda un receipt codigo 0 {0} sin precio", receipt.MessageId));
                }
            }

            //Guarda el mensaje en la base de datos
            using (var dao = new ReceiptDataAccess())
            {
                dao.Create(TypeHelper.Map2DB(receipt), 1, price);
            }

            log.Info(string.Format("Receipt stored: price {0}", price));
            return(receipt.MessageId);
        }