public string CopyToAfter(MapControlTools mapControlTools)
        {
            // copy the current hazard map to hazardmapafter
            using (DB.ResTBContext db = new DB.ResTBContext())
            {
                HazardMap hm = db.HazardMaps.Include(m => m.Project).Include(m => m.NatHazard).OrderByDescending(u => u.ID).FirstOrDefault();
                if (hm.Project.Id == Project)
                {
                    string copySQL = "insert into \"HazardMap\" (\"Index\",\"BeforeAction\", \"NatHazard_ID\" , \"Project_Id\" , geometry ) " +
                                     "select \"Index\" , false, \"NatHazard_ID\" , \"Project_Id\" , geometry from " +
                                     "\"HazardMap\" where \"ID\" = " + hm.ID;
                    db.Database.ExecuteSqlCommand(copySQL);


                    ResTBHazardMapLayer hazard = new ResTBHazardMapLayer(
                        Project, false, NatHazard, Index);

                    if (!mapControlTools.Layers.Where(m => m.Name.Equals(hazard.Name)).Any())
                    {
                        mapControlTools.AddProjectLayer(hazard);
                    }

                    return(hazard.Name);
                }
            }
            return("");
        }
        public override object GetObjectFromShape(Shapefile shapefile, int index)
        {
            var myId = shapefile.FieldIndexByName["ID"];

            int hmId = shapefile.CellValue[myId, index];

            // Search the corresponding maphazard Object
            using (DB.ResTBContext db = new DB.ResTBContext())
            {
                HazardMap hm = db.HazardMaps.AsNoTracking().Where(m => m.ID == hmId).FirstOrDefault();
                return(hm);
            }
        }