159 lines
5.6 KiB
C#
159 lines
5.6 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using System.Linq;
|
|
|
|
namespace BpsRwApp.Controllers
|
|
{
|
|
public class RincianTargetRumahMemilahController : AppControllerBase
|
|
{
|
|
public IActionResult Index()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpGet]
|
|
public IActionResult Table()
|
|
{
|
|
var wilayahDefinitions = new[]
|
|
{
|
|
new
|
|
{
|
|
Name = "Jakarta Pusat",
|
|
Kelurahan = new[]
|
|
{
|
|
"Cempaka Putih Barat",
|
|
"Cempaka Putih Timur",
|
|
"Johar Baru",
|
|
"Galur",
|
|
"Kebon Melati",
|
|
"Kebon Kacang",
|
|
"Petamburan",
|
|
"Kampung Bali",
|
|
"Bendungan Hilir",
|
|
"Karet Tengsin",
|
|
}
|
|
},
|
|
new
|
|
{
|
|
Name = "Jakarta Barat",
|
|
Kelurahan = new[]
|
|
{
|
|
"Tomang",
|
|
"Kedoya Selatan",
|
|
"Duri Kepa",
|
|
"Palmerah",
|
|
"Kebon Jeruk",
|
|
"Kembangan Selatan",
|
|
"Kembangan Utara",
|
|
"Cengkareng Barat",
|
|
"Tegal Alur",
|
|
"Kamal",
|
|
}
|
|
},
|
|
new
|
|
{
|
|
Name = "Jakarta Selatan",
|
|
Kelurahan = new[]
|
|
{
|
|
"Cipete Selatan",
|
|
"Cipete Utara",
|
|
"Pondok Pinang",
|
|
"Pondok Indah",
|
|
"Bangka",
|
|
"Tegal Parang",
|
|
"Ragunan",
|
|
"Cipedak",
|
|
"Pesanggrahan",
|
|
"Ulujami",
|
|
}
|
|
},
|
|
new
|
|
{
|
|
Name = "Jakarta Timur",
|
|
Kelurahan = new[]
|
|
{
|
|
"Cakung Timur",
|
|
"Penggilingan",
|
|
"Pulo Gebang",
|
|
"Rawa Terate",
|
|
"Duren Sawit",
|
|
"Pondok Kelapa",
|
|
"Klender",
|
|
"Cipinang Melayu",
|
|
"Halim Perdanakusuma",
|
|
"Matraman",
|
|
}
|
|
},
|
|
new
|
|
{
|
|
Name = "Jakarta Utara",
|
|
Kelurahan = new[]
|
|
{
|
|
"Kelapa Gading Timur",
|
|
"Pegangsaan Dua",
|
|
"Sunter Agung",
|
|
"Sunter Jaya",
|
|
"Tanjung Priok",
|
|
"Pademangan Barat",
|
|
"Ancol",
|
|
"Penjaringan",
|
|
"Pluit",
|
|
"Marunda",
|
|
}
|
|
},
|
|
};
|
|
|
|
var wilayahData = wilayahDefinitions
|
|
.Select((definition, wilayahIndex) =>
|
|
{
|
|
var targets = definition.Kelurahan
|
|
.Select((kelurahan, targetIndex) =>
|
|
{
|
|
var baseline = 35 + wilayahIndex * 5 + targetIndex * 3;
|
|
return new TargetRow(
|
|
kelurahan,
|
|
baseline,
|
|
baseline + 4,
|
|
baseline + 12);
|
|
})
|
|
.ToArray();
|
|
|
|
var totalJumlahPjlp = targets.Sum(target => target.JumlahPjlp);
|
|
var totalTargetBulan = targets.Sum(target => target.TargetBulan);
|
|
var totalTargetDelapanBulan = targets.Sum(target => target.TargetDelapanBulan);
|
|
|
|
return new WilayahRow(
|
|
No: wilayahIndex + 1,
|
|
Wilayah: definition.Name,
|
|
TotalJumlahPjlp: totalJumlahPjlp,
|
|
TotalTargetBulan: totalTargetBulan,
|
|
TotalTargetDelapanBulan: totalTargetDelapanBulan,
|
|
Targets: targets);
|
|
})
|
|
.ToArray();
|
|
|
|
var data = wilayahData
|
|
.SelectMany(region => region.Targets.Select((target, index) => new
|
|
{
|
|
no = region.No,
|
|
row_number = $"{region.No}.{index + 1}",
|
|
wilayah = region.Wilayah,
|
|
kelurahan = target.Kelurahan,
|
|
jumlah_pjlp = target.JumlahPjlp,
|
|
target_bulan = target.TargetBulan,
|
|
target_8_bulan = target.TargetDelapanBulan,
|
|
total_jumlah_pjlp = region.TotalJumlahPjlp,
|
|
total_target_bulan = region.TotalTargetBulan,
|
|
total_target_8_bulan = region.TotalTargetDelapanBulan
|
|
}))
|
|
.ToArray();
|
|
|
|
return Json(new { data });
|
|
}
|
|
|
|
private sealed record WilayahRow(int No, string Wilayah, int TotalJumlahPjlp, int TotalTargetBulan, int TotalTargetDelapanBulan, TargetRow[] Targets);
|
|
|
|
private sealed record TargetRow(string Kelurahan, int JumlahPjlp, int TargetBulan, int TargetDelapanBulan);
|
|
|
|
}
|
|
}
|