/// <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"); }
/// <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); }
/// <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); }
/// <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); }