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 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 ActionResult SubmitWaypoint(WaypointView wpt) { List <SubmitError> errors = new List <SubmitError>(); Guid result = Guid.Empty; if (!User.IsInRole("cdb.missioneditors")) { return(GetLoginError()); } MissionGeography geog = null; geog = (from g in this.db.MissionGeography where g.Id == wpt.Id select g).FirstOrDefault(); if (geog == null) { geog = new MissionGeography { Mission = (from m in this.db.Missions where m.Id == wpt.EventId select m).First() }; this.db.MissionGeography.Add(geog); } //try //{ if (geog.Kind != wpt.Kind) { geog.Kind = wpt.Kind; } if (geog.InstanceId != wpt.InstanceId) { geog.InstanceId = wpt.InstanceId; } SqlGeography defaultCoord = GeographyServices.GetDefaultLocation(); wpt.Lat = Math.Abs(wpt.Lat) * Math.Sign(defaultCoord.Lat.Value); wpt.Long = Math.Abs(wpt.Long) * Math.Sign(defaultCoord.Long.Value); SqlGeography geography = wpt.AsSqlGeography(); if (string.Format("{0}", geog.Geography) != string.Format("{0}", geography)) { geog.Geography = geography; } if (geog.Description != wpt.Description) { geog.Description = wpt.Description; } if (geog.Time != wpt.Time) { geog.Time = wpt.Time; } if (errors.Count == 0) { this.db.SaveChanges(); } //} //catch (RuleViolationsException ex) //{ // //this.CollectRuleViolations(ex, fields); // foreach (RuleViolation v in ex.Errors) // { // errors.Add(new SubmitError { Error = v.ErrorMessage, Property = v.PropertyName, Id = new[] { v.EntityKey } }); // } //} return(Data(new SubmitResult <GeographyView> { Errors = errors.ToArray(), Result = (errors.Count > 0) ? (GeographyView)null : GeographyView.BuildGeographyView(geog) //new WaypointView //{ // Id = newView.Id, // MissionId = newView.Mission.Id, // Kind = newView.Kind, // Desc = newView.Description, // Lat = GeographyServices.FormatCoordinate(newView.Geography.Lat.Value, this.UserSettings.CoordinateDisplay), // Long = GeographyServices.FormatCoordinate(newView.Geography.Long.Value, this.UserSettings.CoordinateDisplay), // Instance = newView.InstanceId, // Time = newView.Geography.M.IsNull ? (DateTime?)null : DateTime.FromOADate(newView.Geography.M.Value) //} })); }