using BankSampahApp.Models; using Microsoft.AspNetCore.Mvc; namespace BankSampahApp.Controllers.Main { [Route("Main/[controller]/[action]")] public class DashboardController : Controller { public IActionResult Index() { var model = BuildDashboardChartModel(); return View("~/Views/Main/Dashboard/Index.cshtml", model); } public IActionResult Bsu() { return View("~/Views/Main/Dashboard/Bsu.cshtml"); } /// /// Dummy chart data agar view dapat menampilkan grafik tanpa ketergantungan pada API. /// private static DashboardChartViewModel BuildDashboardChartModel() { var monthLabels = new List { "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" }; var baseDatasets = new Dictionary> { ["BSI"] = new() { 520, 540, 560, 590, 620, 650, 680, 710, 740, 770, 800, 830 }, ["BSU"] = new() { 610, 630, 640, 670, 690, 720, 760, 780, 810, 830, 860, 890 }, ["Offtaker"] = new() { 1050, 1080, 1100, 1140, 1180, 1220, 1260, 1300, 1340, 1380, 1420, 1480 } }; var years = Enumerable.Range(2020, 6).ToList(); var firstYear = years.Min(); var yearlyData = new Dictionary(); foreach (var year in years) { var offset = year - firstYear; var payload = new DashboardChartPayload { Labels = new List(monthLabels) }; foreach (var dataset in baseDatasets) { var random = new Random(HashCode.Combine(year, dataset.Key)); payload.Datasets.Add(new DashboardChartDataset { Label = dataset.Key, Data = dataset.Value .Select(baseValue => { var variation = random.Next(-100, 120) + offset * 30; return Math.Max(0, baseValue + variation); }) .ToList() }); } yearlyData[year] = payload; } return new DashboardChartViewModel { YearlyData = yearlyData, SelectedYear = yearlyData.Keys.Max() }; } } }