예제 #1
0
        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));
        }
예제 #2
0
        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");
        }