Пример #1
0
        /// <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);
            }
        }
Пример #2
0
 /// <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));
     }
 }
Пример #3
0
        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);
            }
        }
Пример #4
0
        /// <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));
            }
        }
Пример #5
0
        /// <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);
        }