Пример #1
0
        public void update(DDPVersion ddpVersion)
        {
            var xx = context.DDPVersions.Where(d => d.Id == ddpVersion.Id).SingleOrDefault();

            xx.published_at = ddpVersion.published_at;
            context.SubmitChanges();
        }
Пример #2
0
        public DateTime Import(Stream stream, DDPVersion ddpversion)
        {
            XmlDocument ddpxml = new XmlDocument();

            ddpxml.Load(stream);

            return(Import(ddpxml, ddpversion));
        }
Пример #3
0
        /// <summary>
        /// Importa un archivo DDP en formato XML a la base de datos
        /// </summary>
        /// <param name="fileName">Nombre del archivo en disco</param>
        public void Import(string fileName, DDPVersion ddpVersion)
        {
            if (File.Exists(fileName) == false)
            {
                throw new FileNotFoundException(string.Format("File {0} not exists", fileName));
            }

            Import(File.Open(fileName, FileMode.Open), ddpVersion);
        }
Пример #4
0
        public DDPVersion GetRegularDDPVersion(string strRegularVersion)
        {
            DDPVersion ddpVersion = context.DDPVersions
                                    .Where(d => d.regularVer == strRegularVersion)
                                    .OrderByDescending(d => d.published_at)
                                    .OrderByDescending(d => d.received_at)
                                    .FirstOrDefault();

            return(ddpVersion);
        }
Пример #5
0
        public DDPVersion GetDDPVersion(string strDDPVersion)
        {
            string[] parts = strDDPVersion.Split(':');
            if (parts.Length != 2)
            {
                return(null);
            }

            DDPVersion ddpVersion = context.DDPVersions
                                    .Where(d => d.regularVer == parts[0] && d.inmediateVer == parts[1])
                                    .FirstOrDefault();

            return(ddpVersion);
        }
Пример #6
0
        static public DDPVersion InsertCompleteDDP(string version, DateTime publishDate, byte[] file)
        {
            var ddpVersion = new DDPVersion();

            using (var ddpvda = new DDPVersionDataAccess())
            {
                ddpVersion.published_at = publishDate;
                ddpVersion.received_at  = DateTime.UtcNow;
                ddpVersion.regularVer   = version.Split(':')[0];
                ddpVersion.inmediateVer = version.Split(':')[1];
                ddpVersion.DDPFile      = file;
                ddpvda.InsertCompleteDDP(ddpVersion);
                return(ddpVersion);
            }
        }
Пример #7
0
        public List <StandingOrder> GetOrdersForPosition(ShipPosition pos, DDPVersion ddpVersion)
        {
            DataLoadOptions options = new DataLoadOptions();

            options.LoadWith <StandingOrder>(s => s.Place);
            options.LoadWith <Place>(p => p.ContractingGoverment);
            context.LoadOptions = options;

            return(context.ExecuteQuery <StandingOrder>(
                       "SELECT s.Id, s.PlaceId FROM StandingOrder as s INNER JOIN Place on Place.Id = s.PlaceId" + Environment.NewLine +
                       "INNER JOIN ContractingGoverment on Place.ContractingGovermentId = ContractingGoverment.Id" + Environment.NewLine +
                       "INNER JOIN DDPVersion on (DDPVersion.Id = ContractingGoverment.DDPVersionId" + Environment.NewLine +
                       "AND DDPVersion.Id = {0})" + Environment.NewLine +
                       "WHERE (geography::STGeomFromWKB(Place.Area, 4326).STIntersects(" + Environment.NewLine +
                       "geography::STGeomFromWKB((SELECT Position FROM ShipPosition WHERE ShipPosition.Id = {1}),4326))) != 0", ddpVersion.Id, pos.Id).ToList());
        }
Пример #8
0
        public void ProcessPendingUpdates()
        {
            DDPImportHelper helper = new DDPImportHelper();

            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew, TimeSpan.FromMinutes(10)))
            {
                try
                {
                    var ddpvermgr = new DDPVersionManager();

                    var pendings = PendingUpdateManager.GetPendingUpdates();
                    foreach (var pending in pendings)
                    {
                        DDPVersion ver = null;
                        if (pending.type == 0)
                        {
                            ver = ddpvermgr.GetInmediateDDPVersion(pending.targetVersion);
                        }
                        else
                        {
                            ver = ddpvermgr.GetRegularDDPVersion(pending.targetVersion);
                        }

                        if (ver != null)
                        {
                            log.Info(string.Format("ProcessPendingUpdates: version {0} already exists skping ...", pending.targetVersion));
                            continue;
                        }

                        helper.UpdateIncrementalOrRegular(pending);
                    }

                    using (var d = new PendingUpdatesDataAccess())
                    {
                        d.Remove(pendings);
                    }
                }
                catch (Exception ex)
                {
                    log.Error("ProcessPendingUpdates: error!", ex);
                }
                ts.Complete();
            }
        }
Пример #9
0
        public ActionResult GridData(int page, int rows, string[] _search, string sidx, string sord, int?ddpid)
        {
            string[]      ReqParams = { "Name", "DataCenterId", "LRITId", "PlaceStringId", "PlaceName", "AreaType", "PlaceId" };
            List <string> columns   = new List <string>();
            List <string> querys    = new List <string>();


            //Vectores Apareados SearchQuery, Columns
            for (int i = 0; i < ReqParams.Count(); i++)
            {
                var tempValue = Request.Params[ReqParams[i]];
                if (tempValue != null)
                {
                    columns.Add(ReqParams[i]);
                    querys.Add(tempValue);
                }
            }

            var ddpda = new DDPVersionDataAccess(context);
            var ddp   = new DDPVersion();

            if (ddpid == null)
            {
                ddpid = ddpda.TodaysDDP().Id;
            }

            var ddpdata = ddpda.GetAllFromVersion((int)ddpid);

            var model = from entity in ddpdata.OrderBy(sidx + " " + sord)
                        select new
            {
                Name          = entity.Name,
                DataCenterId  = entity.DataCenterId,
                LRITId        = entity.LRITId,
                PlaceStringId = entity.PlaceStringId,
                PlaceName     = entity.PlaceName,
                AreaType      = entity.AreaType,
                PlaceId       = entity.PlaceId.ToString(),
            };

            return(Json(model.ToJqGridData(page, rows, null, querys.ToArray(), columns.ToArray())));
        }
Пример #10
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);
        }
Пример #11
0
        public IQueryable <DDPData> GetAllFromVersion(DDPVersion ddp)
        {
            string ddpver = ddp.regularVer + ":" + ddp.inmediateVer;

            return(context.DDPDatas.Where(d => d.DDPVersion == ddpver));
        }
Пример #12
0
 public void InsertCompleteDDP(DDPVersion ddpVersion)
 {
     context.DDPVersions.InsertOnSubmit(ddpVersion);
     context.SubmitChanges();
 }
Пример #13
0
 /// <summary>
 /// Verifica si un contracting goverment esta titulado para recibir una posicion de un barco
 /// </summary>
 /// <param name="goverment">Contracting goverment</param>
 /// <param name="position">Posicion del barco</param>
 /// <returns>Verdadero si esta titulado, Falso si no esta titulado</returns>
 public bool IsEntitled(ContractingGoverment goverment, ShipPosition position, DDPVersion ddpVersion, bool verifyWatersOf)
 {
     return(IsEntitled(goverment.Id, position.Id, ddpVersion.Id, verifyWatersOf));
 }