/// <summary> /// Verifica si un contracting goverment esta titulado para recibir una posicion de un barco /// </summary> /// <param name="govermentId">ID de base de datos del Contracting goverment</param> /// <param name="positionId">ID de base de datos de la Posicion del barco</param> /// <returns>Verdadero si esta titulado, Falso si no esta titulado</returns> public bool IsEntitled(int govermentId, int positionId, int ddpVersionId, bool verifyWatersOf) { using (var cgda = new ContractingGovermentDataAccess()) { //Cuando AccesType 5 o 3 (Port time/distance) no se verifica que este en aguas internas //del gobierno que lo pide. if (verifyWatersOf == true) { if (cgda.IsOnWatersOf(govermentId, positionId, ddpVersionId) == false) { log.Debug(string.Format("No titulado: La posición no se encuentra en aguas del CG {0}", govermentId)); return(false); } } if (cgda.IsOnInternalWaterOfAnother(govermentId, positionId, ddpVersionId) == true) { log.Debug(string.Format("No titulado: La posición esta aguas del internas de otro CG distinto a {0}", govermentId)); return(false); } var mecg = cgda.GetByLRITId("1005", ddpVersionId); if (cgda.IsOnTerritorialWaterOf(mecg.Id, positionId, ddpVersionId) == true) { log.Debug(string.Format("No titulado: La posición esta en aguas territoriales del barco (arg 1005)", govermentId)); return(false); } log.Debug("Titulacion OK"); return(true); } }
/// <summary> /// Obtiene un ContractingGoverment basado en un ID de base de datos /// </summary> /// <param name="cgID">ID de base de datos</param> /// <returns>ContractingGoverment</returns> public ContractingGoverment GetContractingGovermentById(int id) { using (var cgda = new ContractingGovermentDataAccess()) { return(cgda.GetById(id)); } }
public static Dictionary <int, string> LritIdNamePairs(int ddpVersion) { using (var cgda = new ContractingGovermentDataAccess()) { var dic = new Dictionary <int, string>(); var cgs = cgda.Getall(ddpVersion); foreach (var cg in cgs) { dic.Add(cg.LRITId, cg.Name); } return(dic); } }
/// <summary> /// Obtiene un ContractingGoverment basado en un LRITId /// </summary> /// <param name="LRITId">LRITId del contracting goverment</param> /// <returns>ContractingGoverment</returns> public ContractingGoverment GetContractingGovermentByLRITId(string LRITId, int ddpVersionId) { using (var cgda = new ContractingGovermentDataAccess()) { var cg = cgda.GetByLRITId(LRITId, ddpVersionId); if (cg == null) { using (var sserda = new SARServiceDataAccess()) { var sser = sserda.GetServiceByLRITId(LRITId); if (sser == null) { return(null); } LRITId = sser.ContractingGoverment.LRITId.ToString(); } } return(cgda.GetByLRITId(LRITId, ddpVersionId)); } }
/// <summary> /// Importa un archivo DDP en formato XML a la base de datos /// </summary> /// <param name="stream">Stream de memoria del archivo</param> public DateTime Import(XmlDocument ddpxml, DDPVersion ddpVersion) { DateTime pubDate = DateTime.UtcNow; DBDataContext context = null; try { context = new DBDataContext(Config.ConnectionString); //--------------------------------------------------- XmlNamespaceManager nsmanager = new XmlNamespaceManager(ddpxml.NameTable); nsmanager.AddNamespace("lr", "http://gisis.imo.org/XML/LRIT/ddp/2008"); //--------------------------------------------------- //Hack-o-mati: Asociation of contracting goverment Dictionary <ContractingGoverment, ContractingConfig> goverments = new Dictionary <ContractingGoverment, ContractingConfig>(); //Just for return, do not use here. pubDate = DateTime.Parse(ddpxml.SelectSingleNode("/lr:DataDistributionPlan", nsmanager).Attributes["regularVersionImplementationAt"].Value); readCGS("/lr:DataDistributionPlan/lr:ContractingGovernment", ref goverments, ref ddpxml, ref nsmanager); readCGS("/lr:DataDistributionPlan/lr:Territory", ref goverments, ref ddpxml, ref nsmanager); var cgda = new ContractingGovermentDataAccess(context); var pda = new PlaceDataAccess(context); var soda = new StandingOrderDataAccess(context); var ssda = new SARServiceDataAccess(context); //var exda = new ExclusionDataAccess(context); //cgda.DropAll(); foreach (KeyValuePair <ContractingGoverment, ContractingConfig> kv in goverments) { kv.Key.DDPVersionId = ddpVersion.Id; int gId = cgda.Create(kv.Key); foreach (Place p in kv.Value.places) { p.ContractingGovermentId = gId; } foreach (SARService ss in kv.Value.sarservice) { ss.ContractingGovermentId = gId; } //foreach (Exclusion excl in kv.Value.exclusions) // excl.ContractingGoverment = gId; log.Debug(string.Format("{2}: Key:{0}, Value{1}", kv.Key.Name, kv.Value.places.Count, kv.Key.Id)); pda.Create(kv.Value.places.ToArray()); //exda.Create(kv.Value.exclusions.ToArray()); ssda.Create(kv.Value.sarservice.ToArray()); //Places with ids List <Place> places = pda.GetAll(ddpVersion.regularVer + ":" + ddpVersion.inmediateVer); //Standing orders string path = string.Format("/lr:DataDistributionPlan/lr:CoastalStateStandingOrders/lr:StandingOrder[@contractingGovernmentID='{0}']", kv.Key.LRITId); XmlNode standingOrder = ddpxml.SelectSingleNode(path, nsmanager); if (standingOrder != null && !String.IsNullOrEmpty(standingOrder.InnerText)) { foreach (string area in standingOrder.InnerText.Split(' ')) { int id = getPlaceId(places, area); if (id == -1) { continue; } StandingOrder so = new StandingOrder(); so.PlaceId = id; kv.Value.standingOrders.Add(so); } } //ES ACA soda.Create(kv.Value.standingOrders.ToArray()); } } catch (Exception ex) { if (context != null) { context.Dispose(); } throw new Exception("Unable to Import DDP File", ex); } finally { if (context != null) { context.Dispose(); } } return(pubDate); }