public async Task FullDump()
        {
            var lastAccess = await Mongo.GetLastDailyStats();

            Response.Headers[HeaderNames.LastModified] = lastAccess.Date.ToUniversalTime().ToString("R");
            Response.Headers[HeaderNames.ContentType]  = "text/csv";
            Response.StatusCode = (int)HttpStatusCode.OK;

            await Response.WriteAsync("Date,TotalMinutesTracked,CentroidGeohash,CentroidLat,CentroidLong,GeohashBoxJSON,LocationCount,VehicleCount,EventCount,SampleCount,DiscardedSampleCount,BoundingBoxDiagonal,MinAtHome,MinAtWork,MinAtSchool,MinAtLocations,MinElsewhere" + Environment.NewLine);

            var cursor = await Mongo.FetchAllDailyStats();

            while (await cursor.MoveNextAsync())
            {
                foreach (var stat in cursor.Current)
                {
                    var centroid = stat.CentroidHash ?? Geohasher.Encode(stat.Centroid.Coordinates.Latitude, stat.Centroid.Coordinates.Longitude, 5);
                    var bbox     = Geohasher.GetBoundingBox(centroid);
                    var polygon  = new Polygon(new LineString[] {
                        new LineString(new IPosition[] {
                            new Position(bbox[0], bbox[2]),
                            new Position(bbox[0], bbox[3]),
                            new Position(bbox[1], bbox[3]),
                            new Position(bbox[1], bbox[2]),
                            new Position(bbox[0], bbox[2])
                        })
                    });

                    await Response.WriteAsync(string.Join(",",
                                                          stat.Date.ToString("yyyy-MM-dd"),
                                                          stat.TotalMinutesTracked,
                                                          centroid,
                                                          stat.Centroid.Coordinates.Latitude.ToString("F5"),
                                                          stat.Centroid.Coordinates.Longitude.ToString("F5"),
                                                          "\"" + JsonConvert.SerializeObject(polygon).Replace("\"", "\"\"") + "\"",
                                                          stat.LocationCount,
                                                          stat.VehicleCount,
                                                          stat.EventCount,
                                                          stat.SampleCount,
                                                          stat.DiscardedSampleCount,
                                                          stat.BoundingBoxDiagonal.ToString("F2"),
                                                          stat.LocationTracking.MinutesAtHome,
                                                          stat.LocationTracking.MinutesAtWork,
                                                          stat.LocationTracking.MinutesAtSchool,
                                                          stat.LocationTracking.MinutesAtOtherKnownLocations,
                                                          stat.LocationTracking.MinutesElsewhere
                                                          ) + Environment.NewLine);
                }
            }
        }