Siteye giren kullanıcı sayısını gösterme
Merhaba, bugün sitenizi ziyaret eden kullanıcıları veri tabanında saklayıp nasıl istatistiğe çevireceğinizi anlatacağım.
İlk Önce Controller'ımıza gidip şu kodları yazıyoruz.
string ipAddress = Request.UserHostAddress; DateTime currentDate = DateTime.Now; // Aynı kullanıcı için aynı gün içinde kayıt var mı kontrol et bool isDuplicate = db.VisitorLogs.Any(v => v.IPAddress == ipAddress && v.VisitDate == currentDate.Date); if (!isDuplicate) { // Aynı Kullanıcı için aynı gün içinde kayıt yoksa kaydet VisitorLog newVisitorLog = new VisitorLog { IPAddress = ipAddress, VisitDate = currentDate, Day = currentDate.Day, Month = currentDate.Month, Year = currentDate.Year }; db.VisitorLogs.Add(newVisitorLog); db.SaveChanges(); } // Günlük ziyaretçi sayısını al var dailyVisitorCounts = db.VisitorLogs .Where(v => v.Day == currentDate.Day && v.Month == currentDate.Month && v.Year == currentDate.Year) .Count();
// Aylık ziyaretçi sayısını al var monthlyVisitorCounts = db.VisitorLogs .Where(v => v.Month == currentDate.Month && v.Year == currentDate.Year) .GroupBy(v => v.Day) .Select(g => new { Day = g.Key, Count = g.Count() }) .ToList();
// Yıllık ziyaretçi sayısını al var yearlyVisitorCounts = db.VisitorLogs .Where(v => v.Year == currentDate.Year) .GroupBy(v => new { v.Month, v.Day }) .Select(g => new { Month = g.Key.Month, Day = g.Key.Day, Count = g.Count() }) .ToList(); ViewBag.GunSayi = dailyVisitorCounts; ViewBag.AySayi = monthlyVisitorCounts; |
Daha sonra ise View'ımıza gidip bu sayıları grafik şeklinde görüntülüyoruz.
<canvas id="myChart2" width="600" height="300"></canvas> <script> document.addEventListener("DOMContentLoaded", function () { var ctx = document.getElementById("myChart2").getContext("2d"); var dailyCount = @Html.Raw(Json.Encode(ViewBag.GunSayi)); var monthlyCount = @Html.Raw(Json.Encode(ViewBag.AySayi)); var yearlyCount = @Html.Raw(Json.Encode(ViewBag.YilSayi)); var chart = new Chart(ctx, { type: "bar", data: { labels: ["Günlük", "Aylık", "Yıllık"], datasets: [{ label: "Toplam Sayılar", data: [dailyCount, monthlyCount, yearlyCount], backgroundColor: [ "rgba(255, 99, 132, 0.2)", "rgba(54, 162, 235, 0.2)", "rgba(255, 206, 86, 0.2)" ], borderColor: [ "rgba(255, 99, 132, 1)", "rgba(54, 162, 235, 1)", "rgba(255, 206, 86, 1)" ], borderWidth: 1 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } } } }); }); </script> |
Veee bu kadar basit. Başka blog yazılarımda görüşmek üzere...
Yorumlar
henüz yorum bulunamadı
Yorum Yap