174 lines
6.5 KiB
C#
174 lines
6.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace BankSampahApp.Controllers.ReduksiSampah
|
|
{
|
|
internal static class ReduksiSampahDataStore
|
|
{
|
|
private static readonly IReadOnlyList<ReduksiSampahItem> Items = new List<ReduksiSampahItem>
|
|
{
|
|
new()
|
|
{
|
|
Id = 1,
|
|
PeriodeBulan = "Jan 2025",
|
|
NamaLokasi = "Jakarta Pusat",
|
|
JenisLokasi = "Maggot",
|
|
BeratReduksi = 8,
|
|
BeratSampah = 15,
|
|
Alamat = AddressBlock("Tanah Abang", "Cideng", "002", "001")
|
|
},
|
|
new()
|
|
{
|
|
Id = 2,
|
|
PeriodeBulan = "Feb 2025",
|
|
NamaLokasi = "Jakarta Barat",
|
|
JenisLokasi = "Maggot",
|
|
BeratReduksi = 10,
|
|
BeratSampah = 20,
|
|
Alamat = AddressBlock("Palmerah", "Kemanggisan", "003", "004")
|
|
},
|
|
new()
|
|
{
|
|
Id = 3,
|
|
PeriodeBulan = "Mar 2025",
|
|
NamaLokasi = "Jakarta Selatan",
|
|
JenisLokasi = "Maggot",
|
|
BeratReduksi = 7,
|
|
BeratSampah = 14,
|
|
Alamat = AddressBlock("Tebet", "Manggarai", "001", "002")
|
|
},
|
|
new()
|
|
{
|
|
Id = 4,
|
|
PeriodeBulan = "Apr 2025",
|
|
NamaLokasi = "Jakarta Timur",
|
|
JenisLokasi = "Maggot",
|
|
BeratReduksi = 6,
|
|
BeratSampah = 12,
|
|
Alamat = AddressBlock("Cakung", "Jatinegara", "004", "006")
|
|
},
|
|
new()
|
|
{
|
|
Id = 5,
|
|
PeriodeBulan = "Mei 2025",
|
|
NamaLokasi = "Jakarta Utara",
|
|
JenisLokasi = "Maggot",
|
|
BeratReduksi = 9,
|
|
BeratSampah = 16,
|
|
Alamat = AddressBlock("Koja", "Lagoa", "005", "003")
|
|
},
|
|
new()
|
|
{
|
|
Id = 6,
|
|
PeriodeBulan = "Jun 2025",
|
|
NamaLokasi = "Depok",
|
|
JenisLokasi = "Komposting",
|
|
BeratReduksi = 11,
|
|
BeratSampah = 18,
|
|
Alamat = AddressBlock("Beji", "Beji Timur", "006", "002")
|
|
},
|
|
new()
|
|
{
|
|
Id = 7,
|
|
PeriodeBulan = "Jul 2025",
|
|
NamaLokasi = "Bekasi",
|
|
JenisLokasi = "Komposting",
|
|
BeratReduksi = 13,
|
|
BeratSampah = 21,
|
|
Alamat = AddressBlock("Bekasi Timur", "Margahayu", "009", "005")
|
|
},
|
|
new()
|
|
{
|
|
Id = 8,
|
|
PeriodeBulan = "Agu 2025",
|
|
NamaLokasi = "Bogor",
|
|
JenisLokasi = "Komposting",
|
|
BeratReduksi = 9,
|
|
BeratSampah = 15,
|
|
Alamat = AddressBlock("Bogor Utara", "Kedunghalang", "001", "004")
|
|
},
|
|
new()
|
|
{
|
|
Id = 9,
|
|
PeriodeBulan = "Sep 2025",
|
|
NamaLokasi = "Tangerang",
|
|
JenisLokasi = "Komposting",
|
|
BeratReduksi = 8,
|
|
BeratSampah = 13,
|
|
Alamat = AddressBlock("Karawaci", "Nusa Jaya", "008", "003")
|
|
},
|
|
new()
|
|
{
|
|
Id = 10,
|
|
PeriodeBulan = "Okt 2025",
|
|
NamaLokasi = "Cilegon",
|
|
JenisLokasi = "Komposting",
|
|
BeratReduksi = 12,
|
|
BeratSampah = 19,
|
|
Alamat = AddressBlock("Ciwandan", "Kebonsari", "010", "002")
|
|
}
|
|
};
|
|
|
|
private const string ActionButtons = @"<div class=""flex gap-2"">
|
|
<a href=""#"" class=""btn btn-circle btn-warning text-white btn-sm btn-edit""><i class=""ph ph-note-pencil""></i></a>
|
|
<a href=""#"" class=""btn btn-circle btn-error text-white btn-sm btn-delete""><i class=""ph ph-trash""></i></a>
|
|
<a href=""#"" class=""btn btn-circle btn-success text-white btn-sm btn-preview""><i class=""ph ph-eye""></i></a>
|
|
<a href=""#"" class=""btn btn-circle bg-blue-500 text-white btn-sm btn-history""><i class=""ph ph-clock-counter-clockwise""></i></a>
|
|
<a href=""#"" class=""btn btn-circle btn-warning text-white btn-sm btn-validation""><i class=""ph ph-check""></i></a>
|
|
</div>";
|
|
|
|
private const string ProofButton = @"<a href=""#"" class=""btn bg-gray-500 text-white rounded-lg""><i class=""ph ph-file-text""></i></a>";
|
|
|
|
public static IEnumerable<ReduksiSampahItem> GetItems(string jenisLokasi) =>
|
|
Items.Where(item => string.Equals(item.JenisLokasi, jenisLokasi, StringComparison.OrdinalIgnoreCase));
|
|
|
|
public static bool MatchesBulan(ReduksiSampahItem item, string? bulan)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(bulan))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return item.PeriodeBulan.Contains(bulan.Trim(), StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
public static object ToResponse(ReduksiSampahItem item) => new
|
|
{
|
|
id = item.Id,
|
|
periode_bulan = item.PeriodeBulan,
|
|
nama_lokasi = item.NamaLokasi,
|
|
alamat = item.Alamat,
|
|
jenis_lokasi = item.JenisLokasi,
|
|
berat_reduksi = item.BeratReduksi,
|
|
berat_sampah = item.BeratSampah,
|
|
gambar = ProofButton,
|
|
aksi = ActionButtons
|
|
};
|
|
|
|
private static string AddressBlock(string kecamatan, string kelurahan, string rt, string rw)
|
|
{
|
|
return $@"
|
|
<div class=""flex flex-col gap-1"">
|
|
<span class=""text-sm font-semibold text-gray-900"">{kecamatan}</span>
|
|
<div class=""flex items-center gap-1 text-xs text-gray-500"">
|
|
<span>{kelurahan}</span>
|
|
<span>RT {rt}</span>
|
|
<span>RW {rw}</span>
|
|
</div>
|
|
</div>";
|
|
}
|
|
|
|
public class ReduksiSampahItem
|
|
{
|
|
public int Id { get; set; }
|
|
public string PeriodeBulan { get; set; } = string.Empty;
|
|
public string NamaLokasi { get; set; } = string.Empty;
|
|
public string Alamat { get; set; } = string.Empty;
|
|
public string JenisLokasi { get; set; } = string.Empty;
|
|
public double BeratReduksi { get; set; }
|
|
public double BeratSampah { get; set; }
|
|
}
|
|
}
|
|
}
|