public ActionResult Geography(Guid id) { MapDataView model = new MapDataView(); Mission m = (from g in this.db.Missions where g.Id == id select g).First(); ViewData["Title"] = string.Format("Mission Geography{0}", " :: " + m.StateNumber + " " + m.Title); ViewData["mission"] = m; model.Id = id; ViewData["coordDisplay"] = this.UserSettings.CoordinateDisplay; ViewData["missionId"] = id; return View(model); }
public ActionResult Geography(Guid id) { MapDataView model = new MapDataView(); Mission m = (from g in this.db.Missions where g.Id == id select g).First(); ViewData["Title"] = string.Format("Mission Geography{0}", " :: " + m.StateNumber + " " + m.Title); ViewData["mission"] = m; model.Id = id; ViewData["coordDisplay"] = this.UserSettings.CoordinateDisplay; ViewData["missionId"] = id; return(View(model)); }
public DataActionResult GetGeography(Guid id, bool?overview) { if (!User.IsInRole("cdb.users")) { return(GetLoginError()); } MapDataView model = new MapDataView(); var query = (from g in this.db.MissionGeography where g.Mission.Id == id select g); if (overview.HasValue && overview.Value) { query = query.Where(f => f.Kind == "found" || f.Kind == "base" || f.Kind == "cluLkp").OrderByDescending(f => f.Kind).Take(1); } model.Items.AddRange(query.AsEnumerable().Select(f => GeographyView.BuildGeographyView(f))); return(Data(model)); }
public ActionResult GetGeographies(Guid? unitId) { if (!User.IsInRole("cdb.users")) return GetLoginError(); MapDataView model = new MapDataView(); //var members = this.db.Members // .Where(f => f.Memberships.Any(g => (g.Unit.Id == unitId || unitId == null) && g.Status.IsActive && g.EndTime == null)) // .ToDictionary(f => f.Id, f => f); var geographies = this.db.Members .Where(f => f.Memberships.Any(g => (g.Unit.Id == unitId || unitId == null) && g.Status.IsActive && g.EndTime == null)) .SelectMany(f => f.Addresses).Where(f => f.Geo != null).OrderBy(f => f.Geo); Guid lastPerson = Guid.Empty; string lastGeo = string.Empty; GeographyView view = null; foreach (var row in geographies) { //Guid personRef = (Guid)row.PersonReference.EntityKey.EntityKeyValues.Single().Value; //if (personRef == lastPerson || !members.ContainsKey(personRef)) if (row.Person.Id == lastPerson) { continue; } //lastPerson = personRef; lastPerson = row.Person.Id; if (row.Geo == lastGeo) { view.Description = PersonDescription(row.Person, this.db) + view.Description; continue; } lastGeo = row.Geo; view = GeographyView.BuildGeographyView(row); string[] parts = view.Description.Split('\n'); view.Description = PersonDescription(row.Person, this.db) + string.Join("<br/>", parts.Skip(1)); model.Items.Add(view); } return Data(model); }
public ActionResult MapDisplay() { MapDataView model = new MapDataView(repository); return(View(model)); }
public JsonDataContractResult GetGeographies(DateTime? start, DateTime? stop, bool? overview) { MapDataView model = new MapDataView(); List<string> messages = new List<string>(); var query = (from g in this.db.MissionGeography.Include("Mission") select g); if (start.HasValue) { query = query.Where(f => f.Mission.StartTime >= start.Value); } if (stop.HasValue) { query = query.Where(f => f.Mission.StopTime < stop.Value); } Guid lastMission = Guid.Empty; int excluded = 0; Dictionary<Mission, GeographyView> views = new Dictionary<Mission, GeographyView>(); foreach (MissionGeography geo in query.ToList().OrderBy(f => f.Mission.StartTime).ThenBy(f => f.Mission.StateNumber).ThenBy(f => f.Mission.Id).ThenBy(f => f.Geography.STDimension()).ThenByDescending(f => f.Kind)) { if (geo.Mission.Id == lastMission) { continue; } if (!User.IsInRole("cdb.users") && (geo.Mission.MissionType.ToLowerInvariant().Contains("urban") || geo.Mission.MissionType.ToLowerInvariant().Contains("evidence"))) { excluded++; lastMission = geo.Mission.Id; continue; } if ((overview ?? true) && !(geo.Kind == "found" || geo.Kind == "base" || geo.Kind == "cluLkp")) { continue; } if (geo.Geography.STDimension() == 1) { geo.Geography = geo.Geography.STPointN(1); } GeographyView view = GeographyView.BuildGeographyView(geo); view.Description = string.Format("{0:yyyy-MM-dd}, #{1}<br/>{2}<br/>{3}", geo.Mission.StartTime.Date, geo.Mission.StateNumber, geo.Mission.Title, User.IsInRole("cdb.users") ? "<a target=\"_blank\" href=\"" + Url.Action("geography", new { id = geo.Mission.Id }) + "\">View Details</a>" : "" ); view.EventId = geo.Mission.Id; model.Items.Add(view); lastMission = geo.Mission.Id; } if (excluded > 0) { messages.Add(string.Format("{0} evidence and/or urban searches not shown to anonymous users.", excluded)); } if (messages.Count > 0) { model.Messages = messages.ToArray(); } return new JsonDataContractResult(model); }
public DataActionResult GetGeography(Guid id, bool? overview) { if (!User.IsInRole("cdb.users")) return GetLoginError(); MapDataView model = new MapDataView(); var query = (from g in this.db.MissionGeography where g.Mission.Id == id select g); if (overview.HasValue && overview.Value) { query = query.Where(f => f.Kind == "found" || f.Kind == "base" || f.Kind == "cluLkp").OrderByDescending(f => f.Kind).Take(1); } model.Items.AddRange(query.AsEnumerable().Select(f => GeographyView.BuildGeographyView(f))); return Data(model); }
public FileContentResult MissionKML(Guid id) { MapDataView data = (MapDataView)GetGeography(id, false).Data; Mission m = (from mission in this.db.Missions where mission.Id == id select mission).FirstOrDefault(); XNamespace ns = "http://earth.google.com/kml/2.1"; KmlBuilder kml = (new KmlBuilder { Name = string.Format("{0}: {1}", m.StateNumber, m.Title), Description = "" }).AddIconStyles(this.AbsoluteUrl(Url.Content("~/content/images/maps"))); string[] colors = "ff4500,ff42c3,904cff".Split(','); Guid teamFolder = Guid.Empty; foreach (var item in data.Items) { Guid?folder = null; if (item.Kind == "team") { if (teamFolder == Guid.Empty) { teamFolder = kml.CreateFolder("Team Positions", null); } folder = teamFolder; } string name = string.IsNullOrWhiteSpace(item.Description) ? item.Kind : item.Description; kml.AddItem(item, name, item.Kind, null, folder); //var itemNode = new XElement(ns + "Placemark"); //itemNode.Add(new XElement(ns + "name", item.Description)); //itemNode.Add(new XElement(ns + "description", item.Description)); //if (item is RouteView) //{ // itemNode.Add(new XElement(ns + "styleUrl", "#_" + colors[i++ % colors.Length])); // var lineNode = new XElement(ns + "LineString"); // lineNode.Add(new XElement(ns + "extrude", 1)); // lineNode.Add(new XElement(ns + "tessellate", 1)); // lineNode.Add(new XElement(ns + "altitudeMode", "clampToGround")); // //lineNode.Add(new XElement(ns + "color", colors[i++ % colors.Length]+"ff")); // lineNode.Add(new XElement(ns + "coordinates", string.Join("\n", ((RouteView)item).Points.Select(f => string.Format("{0},{1},10", f.Long, f.Lat)).ToArray()))); // itemNode.Add(lineNode); //} //else if (item is WaypointView) //{ // WaypointView wpt = (WaypointView)item; // itemNode.Add(new XElement(ns + "Point", new XElement(ns + "coordinates", string.Format("{0},{1}", wpt.Long, wpt.Lat)))); // if (item.Kind == "team") // { // itemNode.Add(new XElement(ns + "visibility", 0)); // } //} //docNode.Add(itemNode); } return(new FileContentResult(System.Text.Encoding.UTF8.GetBytes(kml.ToString()), "application/vnd.google-earth.kml+xml") { FileDownloadName = m.StateNumber + ".kml" }); }
public JsonDataContractResult GetGeographies(DateTime?start, DateTime?stop, bool?overview) { MapDataView model = new MapDataView(); List <string> messages = new List <string>(); var query = (from g in this.db.MissionGeography.Include("Mission") select g); if (start.HasValue) { query = query.Where(f => f.Mission.StartTime >= start.Value); } if (stop.HasValue) { query = query.Where(f => f.Mission.StopTime < stop.Value); } Guid lastMission = Guid.Empty; int excluded = 0; Dictionary <Mission, GeographyView> views = new Dictionary <Mission, GeographyView>(); foreach (MissionGeography geo in query.ToList().OrderBy(f => f.Mission.StartTime).ThenBy(f => f.Mission.StateNumber).ThenBy(f => f.Mission.Id).ThenBy(f => f.Geography.STDimension()).ThenByDescending(f => f.Kind)) { if (geo.Mission.Id == lastMission) { continue; } if (!User.IsInRole("cdb.users") && (geo.Mission.MissionType.ToLowerInvariant().Contains("urban") || geo.Mission.MissionType.ToLowerInvariant().Contains("evidence"))) { excluded++; lastMission = geo.Mission.Id; continue; } if ((overview ?? true) && !(geo.Kind == "found" || geo.Kind == "base" || geo.Kind == "cluLkp")) { continue; } if (geo.Geography.STDimension() == 1) { geo.Geography = geo.Geography.STPointN(1); } GeographyView view = GeographyView.BuildGeographyView(geo); view.Description = string.Format("{0:yyyy-MM-dd}, #{1}<br/>{2}<br/>{3}", geo.Mission.StartTime.Date, geo.Mission.StateNumber, geo.Mission.Title, User.IsInRole("cdb.users") ? "<a target=\"_blank\" href=\"" + Url.Action("geography", new { id = geo.Mission.Id }) + "\">View Details</a>" : "" ); view.EventId = geo.Mission.Id; model.Items.Add(view); lastMission = geo.Mission.Id; } if (excluded > 0) { messages.Add(string.Format("{0} evidence and/or urban searches not shown to anonymous users.", excluded)); } if (messages.Count > 0) { model.Messages = messages.ToArray(); } return(new JsonDataContractResult(model)); }