public ActionResult Map(Guid id) { var d = Context.Visits.Where(x => x.Image.Id == id); var result = new List<ShowVisitorOnMapModel>(); foreach (var visit in d) { var dm = new ShowVisitorOnMapModel() { created = visit.Time, ip = visit.Ip, referer = visit.Referer, Lattitude = visit.Ip.GetGeo(Server).Latitude, Longitude = visit.Ip.GetGeo(Server).Longitude }; result.Add(dm); } return View(result.OrderByDescending(x => x.created)); }
public FileResult ChartLocation(Guid id) { var d = Context.Visits.Where(x => x.Image.Id == id); var result = new List<ShowVisitorOnMapModel>(); foreach (var visit in d) { var geo = visit.Ip.GetGeo(Server); var dm = new ShowVisitorOnMapModel() { created = visit.Time, ip = visit.Ip, referer = visit.Referer, Country = geo.Country, Region = geo.Region, City = geo.City, FullAdress = geo.FillAddress, Lattitude = geo.Latitude, Longitude = geo.Longitude }; result.Add(dm); } var chm = new Dictionary<string, int>(); foreach (var item in result) { if (item.Country == null) item.Country = string.Empty; if (chm.ContainsKey(item.FullAdress)) { chm[item.FullAdress] = chm[item.FullAdress] + 1; } else { chm.Add(item.FullAdress, 1); } } var rt = chm.Select(i => new ChartAdressModel() { Name = i.Key, Count = i.Value }).ToList(); ////////////////////////// var country = rt.Select(x => x.Name); var count = rt.Select(x => x.Count); var mvchart = new System.Web.UI.DataVisualization.Charting.Chart(); mvchart.Width = 800; mvchart.Height = 640; var mySeries = new Series(); mySeries.Points.DataBindXY(country.ToArray(), count.ToArray()); mvchart.Series.Add(mySeries); var area = new ChartArea(); mvchart.ChartAreas.Add(area); mvchart.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.LabelsAngleStep90; mvchart.ChartAreas[0].AxisX.IsLabelAutoFit = true; mvchart.ChartAreas[0].AxisX.LabelStyle.Format = "0.###"; mvchart.ChartAreas[0].AxisX.Maximum = country.Count() + 1; var returnVal = new MemoryStream(); mvchart.SaveImage(returnVal); return File(returnVal.GetBuffer(), @"image/png"); }