154 lines
5.6 KiB
C#
154 lines
5.6 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using System.Globalization;
|
|
|
|
namespace BpsRwApp.Controllers
|
|
{
|
|
[Route("[controller]/[action]")]
|
|
public class LaporanCapaianBulananController : AppControllerBase
|
|
{
|
|
public IActionResult Index()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpGet]
|
|
public IActionResult GetData(string? bulanAwal, string? bulanAkhir)
|
|
{
|
|
var culture = new CultureInfo("id-ID");
|
|
|
|
// Default date range
|
|
var startDate = string.IsNullOrEmpty(bulanAwal)
|
|
? DateTime.Now.AddMonths(-1)
|
|
: DateTime.Parse(bulanAwal + "-01");
|
|
|
|
var endDate = string.IsNullOrEmpty(bulanAkhir)
|
|
? DateTime.Now
|
|
: DateTime.Parse(bulanAkhir + "-01");
|
|
|
|
// Periode text
|
|
string periode = startDate.ToString("MMMM", culture);
|
|
if (!(startDate.Year == endDate.Year && startDate.Month == endDate.Month))
|
|
periode += " - " + endDate.ToString("MMMM yyyy", culture);
|
|
|
|
// Labels bulan
|
|
var labels = new List<string>();
|
|
var cursor = new DateTime(startDate.Year, startDate.Month, 1);
|
|
var last = new DateTime(endDate.Year, endDate.Month, 1);
|
|
|
|
while (cursor <= last)
|
|
{
|
|
labels.Add(cursor.ToString("MMMM", culture));
|
|
cursor = cursor.AddMonths(1);
|
|
}
|
|
|
|
int count = labels.Count;
|
|
|
|
// seed data
|
|
int Seed(DateTime date) => date.Year * 100 + date.Month;
|
|
var rand = new Random(Seed(startDate));
|
|
|
|
// Kepatuhan PJLP
|
|
var kepatuhanCeklis = Enumerable.Range(0, count).Select(i => 85 + (i * 2)).ToArray();
|
|
var kepatuhanBelumCeklis = Enumerable.Range(0, count).Select(i => 15 - (i * 1)).ToArray();
|
|
|
|
// Rumah Memilah
|
|
int baseKonsisten = 5;
|
|
int baseTidak = 12;
|
|
int target = 18;
|
|
|
|
var rmKonsisten = new List<int>();
|
|
var rmTidak = new List<int>();
|
|
var rmTarget = new List<int>();
|
|
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
rmKonsisten.Add(baseKonsisten + i);
|
|
rmTidak.Add(baseTidak - (i / 2));
|
|
rmTarget.Add(target);
|
|
}
|
|
|
|
// SATPEL
|
|
var satpel1Sudah = Enumerable.Range(0, count).Select(i => 100 + (i * 10)).ToArray();
|
|
var satpel1Belum = Enumerable.Range(0, count).Select(i => 25 - (i * 2)).ToArray();
|
|
|
|
var satpel2Sudah = Enumerable.Range(0, count).Select(i => 90 + (i * 12)).ToArray();
|
|
var satpel2Belum = Enumerable.Range(0, count).Select(i => 28 - (i * 2)).ToArray();
|
|
|
|
// Volume Sampah
|
|
var mudah = Enumerable.Range(0, count).Select(i => 20000 + (i * 800)).ToArray();
|
|
var daur = Enumerable.Range(0, count).Select(i => 8000 + (i * 600)).ToArray();
|
|
var b3 = Enumerable.Range(0, count).Select(i => 3000 + (i * 50)).ToArray();
|
|
var residu = Enumerable.Range(0, count).Select(i => 8000 + (i * 200)).ToArray();
|
|
|
|
|
|
var data = new
|
|
{
|
|
periode,
|
|
labels,
|
|
|
|
kepatuhanPjlp = new
|
|
{
|
|
title = "Tingkat Kepatuhan PJLP",
|
|
subtitle = "Tingkat Kepatuhan PJLP Pendamping BPS RW dalam Menjalankan Instruksi Kepala Dinas",
|
|
location = "DKI Jakarta",
|
|
labels,
|
|
ceklis = kepatuhanCeklis,
|
|
belumCeklis = kepatuhanBelumCeklis
|
|
},
|
|
|
|
capaianRumah = new
|
|
{
|
|
title = "Capaian Rumah Memilah",
|
|
subtitle = $"Capaian Rumah Memilah Periode {periode}",
|
|
location = "DKI Jakarta",
|
|
labels,
|
|
rumahMemilahKonsisten = rmKonsisten,
|
|
rumahMemilahTidakKonsisten = rmTidak,
|
|
target = rmTarget
|
|
},
|
|
|
|
validasiSatpel = new[]
|
|
{
|
|
new
|
|
{
|
|
validator = "SATPEL",
|
|
title = "Status Validasi SATPEL",
|
|
subtitle = $"Status Validasi SATPEL Periode {periode}",
|
|
labels,
|
|
sudah = satpel1Sudah,
|
|
belum = satpel1Belum,
|
|
description = labels.Select(l =>
|
|
$"Periode bulan {l} terdapat {rand.Next(8, 15)} aktifitas ceklis yang tidak tervalidasi"
|
|
).ToArray()
|
|
},
|
|
new
|
|
{
|
|
validator = "SATPEL",
|
|
title = "Status Validasi SATPEL",
|
|
subtitle = $"Status Validasi SATPEL Periode {periode}",
|
|
labels,
|
|
sudah = satpel2Sudah,
|
|
belum = satpel2Belum,
|
|
description = labels.Select(l =>
|
|
$"Periode bulan {l} terdapat {rand.Next(8, 15)} aktifitas ceklis yang tidak tervalidasi"
|
|
).ToArray()
|
|
}
|
|
},
|
|
|
|
volumeSampah = new
|
|
{
|
|
title = "Volume Sampah",
|
|
subtitle = $"Volume Sampah Periode {periode}",
|
|
labels,
|
|
mudahTerurai = mudah,
|
|
materialDaur = daur,
|
|
b3,
|
|
residu
|
|
}
|
|
};
|
|
|
|
return Json(data);
|
|
}
|
|
}
|
|
}
|