public void AddOrReplace(ShipPositionRequest shipPositionRequest) { using (var da = new ActiveShipPositionRequestDataAccess()) { da.AddOrReplace(shipPositionRequest); } }
/// <summary> /// Borra todos los requerimientos activos para un requestor en particular /// </summary> /// <param name="spr">ShipPositionRequest</param> public void RemoveAllForRequestor(ShipPositionRequest spr) { using (var asprda = new ActiveShipPositionRequestDataAccess()) { asprda.RemoveAllForRequestor(spr); } }
/// <summary> /// Borra todas los requerimientos activos para un mismo UserRequestor /// </summary> /// <param name="spr">ShipPositionRequest</param> public void RemoveAllForRequestor(ShipPositionRequest spr) { context.ActiveShipPositionRequests.DeleteAllOnSubmit( context.ActiveShipPositionRequests.Where <ActiveShipPositionRequest> (c => spr.DataUserRequestor == c.ShipPositionRequest.DataUserRequestor)); context.SubmitChanges(); }
/// <summary> /// Transforma un ShipPositionRequestType en un ShipPositionRequest /// </summary> /// <param name="shipPositionRequest">ShipPositionRequestType</param> /// <returns>ShipPositionRequest</returns> public static ShipPositionRequest Map2DB(DataCenterLogic.DataCenterTypes.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 = 0; if (shipPositionRequest.RequestDuration != null) { retShipPositionRequest.StartTimeSpecified = ToInt(shipPositionRequest.RequestDuration.startTimeSpecified); } if (retShipPositionRequest.StartTimeSpecified != 0) { retShipPositionRequest.StartTime = shipPositionRequest.RequestDuration.startTime; } else { retShipPositionRequest.StartTime = DateTime.UtcNow; retShipPositionRequest.StartTimeSpecified = 1; } retShipPositionRequest.StopTimeSpecified = 0; if (shipPositionRequest.RequestDuration != 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); }
/// <summary> /// Borra un requerimiento activo tomando en cuenta el AccessType, IMONum y DataUserRequestor /// </summary> /// <param name="spr">ShipPositionRequest</param> public void Remove(ShipPositionRequest spr) { context.ActiveShipPositionRequests.DeleteAllOnSubmit( context.ActiveShipPositionRequests.Where <ActiveShipPositionRequest> (c => c.Status == 1 && c.ShipPositionRequest.AccessType == spr.AccessType && c.ShipPositionRequest.IMONum == spr.IMONum && spr.DataUserRequestor == c.ShipPositionRequest.DataUserRequestor ) ); context.SubmitChanges(); }
/// <summary> /// Crea un nuevo ShipPositionRequest en base de datos /// </summary> /// <param name="shipPositionRequest">ShipPositionRequest</param> /// <returns>ID del nuevo registro creado</returns> public int Create(ShipPositionRequest shipPositionRequest, int inOut) { shipPositionRequest.MsgInOut = new MsgInOut(); shipPositionRequest.MsgInOut.DDPVersion = shipPositionRequest.DDPVersionNum; shipPositionRequest.MsgInOut.Destination = shipPositionRequest.DataUserProvider; shipPositionRequest.MsgInOut.InOut = inOut; shipPositionRequest.MsgInOut.MsgId = shipPositionRequest.MessageId; shipPositionRequest.MsgInOut.MsgType = shipPositionRequest.MessageType; shipPositionRequest.MsgInOut.RefId = ""; shipPositionRequest.MsgInOut.Source = shipPositionRequest.DataUserRequestor; shipPositionRequest.MsgInOut.TimeStamp = shipPositionRequest.TimeStamp; context.ShipPositionRequests.InsertOnSubmit(shipPositionRequest); context.SubmitChanges(); return(shipPositionRequest.Id); }
public void AddOrReplace(ShipPositionRequest spr) { var aborrar = context.ActiveShipPositionRequests.Where <ActiveShipPositionRequest> (c => c.ShipPositionRequest.AccessType == spr.AccessType && c.ShipPositionRequest.IMONum == spr.IMONum && spr.DataUserRequestor == c.ShipPositionRequest.DataUserRequestor ); context.ActiveShipPositionRequests.DeleteAllOnSubmit(aborrar); //Esto va aca?? ActiveShipPositionRequest newActiveRequest = new ActiveShipPositionRequest(); newActiveRequest.LastMessage = "Added"; newActiveRequest.RequestId = spr.Id; newActiveRequest.Status = 0; newActiveRequest.LastTime = DateTime.UtcNow; context.ActiveShipPositionRequests.InsertOnSubmit(newActiveRequest); context.SubmitChanges(); }
public ActiveShipPositionRequest GetActiveShipPositionRequest(ShipPositionRequest spr) { return(context.ActiveShipPositionRequests.SingleOrDefault(a => a.ShipPositionRequest.Id == spr.Id)); }
/// <summary> /// Verifica si el DataUserRequestor esta titulado para recibir un mensaje de posicion /// </summary> /// <param name="spr">Mensaje ShipPositionRequest</param> /// <param name="spos">Posicion del barco</param> private void CheckEntitlementAndSendReportOrReceipt(ShipPositionRequest spr, ShipPosition spos) { var cgm = new ContractingGovermentManager(); var ddpm = new DDPVersionManager(); //Febrero 2011 var ddpVersion = ddpm.DDPFromDate(spos.TimeStamp); var contractingGoverment = cgm.GetContractingGovermentByLRITId(spr.DataUserRequestor, ddpVersion.Id); //Solo verifico aguas internas del que lo pide si el acceso es COASTAL o FLAG bool verifyWatersOf = true; if (spr.AccessType == 3 || spr.AccessType == 5) { verifyWatersOf = false; } //Solo verifico titulacion si es distinto a SAR if (spr.AccessType != 6 && cgm.IsEntitled(contractingGoverment, spos, ddpVersion, verifyWatersOf) == false) { log.Debug("No titulado"); ReceiptManager.SendReceipt(spr.DataUserRequestor, spr.MessageId, DataCenterLogic.DataCenterTypesIDE.receiptCodeType.Item0, string.Format("Not entitled to recieve")); return; } var sprm = new ShipPositionReportManager(); /*************************** MEDITAR *****************************/ //Default Coastal var responseType = DataCenterLogic.DataCenterTypesIDE.responseTypeType.Item1; //Periodic report var messageType = DataCenterLogic.DataCenterTypesIDE.messageTypeType.Item1; //Flag if (spr.AccessType == 2) { responseType = DataCenterLogic.DataCenterTypesIDE.responseTypeType.Item2; } //Port else if (spr.AccessType == 3 || spr.AccessType == 5) { responseType = DataCenterLogic.DataCenterTypesIDE.responseTypeType.Item3; } //Coastal else if (spr.AccessType == 1) { responseType = DataCenterLogic.DataCenterTypesIDE.responseTypeType.Item1; } //SAR else { responseType = DataCenterLogic.DataCenterTypesIDE.responseTypeType.Item4; messageType = DataCenterLogic.DataCenterTypesIDE.messageTypeType.Item3; } //si es onetimepoll => msgtype polled report if (spr.RequestType == 1) { messageType = DataCenterLogic.DataCenterTypesIDE.messageTypeType.Item3; } /*************************************************************/ sprm.SendReport(spr.DataUserRequestor, spos, spr.MessageId, responseType, messageType); }
public bool TryReprog(ShipPositionRequest spr) { bool reprogOk = true; /**************************************************************************************************/ if (ShipPositionRequestHelper.IsOneTimePoll(spr.RequestType) == true) { var ship = ShipManager.getByIMONum(spr.IMONum); try { var aspman = new AspManager(); // El 8 asegura un start frame posterior a la hora actual aspman.CreatePollMessage(DateTime.UtcNow.AddMinutes(8), 0, ship, PollAction.Report); log.Debug("Solitud Enviada (OneTimePoll) a IMO:" + ship.IMONum); } catch (Exception ex) { log.Error("Error al enviar la solicitud" + Environment.NewLine + Environment.NewLine + ex + Environment.NewLine + Environment.NewLine); reprogOk = false; } return(reprogOk); } /**************************************************************************************************/ int requestPeriod = ShipPositionRequestHelper.GetMinutes(spr.RequestType); log.Debug("Request de " + requestPeriod + " minutos"); //Get faster active request in minutes int minPeriod = GetMinPeriodForShip(spr.IMONum, spr.Id); log.Debug("Request activo mas frecuente del barco de " + minPeriod + " minutos"); //See if we need to reprogram the equipment on ship log.Debug("Verificando si es necesario reprogramar el equipo"); if (requestPeriod < minPeriod || minPeriod == -1) { using (var sdao = new ShipDataAccess()) { var ship = sdao.getByIMONum(spr.IMONum); //Reprogram ASP log.Debug("Se envia PollMessage"); try { var aspman = new AspManager(); // El 8 asegura un start frame posterior a la hora actual aspman.CreatePollMessage(DateTime.UtcNow.AddMinutes(8), requestPeriod, ship, PollAction.Reprogram); } catch (Exception ex) { log.Error("Hubo un problema al enviar la solicitud" + ex); reprogOk = false; } finally { } } } return(reprogOk); }