public XDocument GetData(string disasterType, string disasterYear, string regionLevel)
{
IEnumerable<KMLData> kmlData = null;
IEnumerable<KMLGeometry> geometry = null;
XDocument kml = null;
using (var context = new HoneyBadgerEntities())
{
if (regionLevel == RegionLevel.State.ToString())
{// Query for disaster data at state level
var stateDisasters = from sd in context.StateDisasterViews
where ((String.IsNullOrEmpty(disasterYear) ? sd.DisasterYear.ToString() : disasterYear).Contains(sd.DisasterYear.ToString())
&& (String.IsNullOrEmpty(disasterType) ? sd.DisasterType.ToString() : disasterType).Contains(sd.DisasterType.ToString()))
select sd;
kmlData = stateDisasters.Select<StateDisasterView, KMLData>(x => new KMLData() { Amount = x.ProjectAmount, Disaster = x.DisasterType, RegionIdentifier = x.name, Year = x.DisasterYear });
geometry = stateDisasters.Select<StateDisasterView, KMLGeometry>(x => new KMLGeometry() { RegionIdentifier = x.name, RegionName = x.name, Color = x.StateColor, Geometry = x.Geometry });
}
else
{// Query for disaster data at county level
var countyDisasters = from cd in context.CountyDisasterViews
where ((String.IsNullOrEmpty(disasterYear) ? cd.DisasterYear.ToString() : disasterYear).Contains(cd.DisasterYear.ToString())
&& (String.IsNullOrEmpty(disasterType) ? cd.DisasterType.ToString() : disasterType).Contains(cd.DisasterType.ToString()))
select cd;
kmlData = countyDisasters.Select<CountyDisasterView, KMLData>(x => new KMLData() { Amount = x.ProjectAmount, Disaster = x.DisasterType, RegionIdentifier = x.StateCounty, Year = x.DisasterYear });
geometry = countyDisasters.Select<CountyDisasterView, KMLGeometry>(x => new KMLGeometry() { RegionIdentifier = x.StateCounty, RegionName = x.name, Color = x.StateColor, Geometry = x.Geometry });
}
kml = ParseEngine.GetKMZ(geometry, kmlData) ;
}
return kml;
}