bank-sampah/Controllers/ReduksiSampah/ReduksiSampahDataStore.cs

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; }
}
}
}