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