diff --git a/Controllers/ProfilRwController.cs b/Controllers/ProfilRwController.cs index 40839c1..d2d1a3a 100644 --- a/Controllers/ProfilRwController.cs +++ b/Controllers/ProfilRwController.cs @@ -1,9 +1,106 @@ -using Microsoft.AspNetCore.Mvc; +using BpsRwApp.Models.ProfilRw; +using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; +using System.Linq; namespace BpsRwApp.Controllers { public class ProfilRwController : AppControllerBase { + private static readonly List SampleAlatPengumpul = new() + { + new AlatPengumpulSampahViewModel + { + Id = 1, + Kelurahan = "Kelurahan Cililitan", + Rw = "005", + Rt = "003", + GerobakDorong = 1, + GerobakMotor = 2, + MobilPickup = 1, + Truk = 1, + Dustbin = 4, + Container = 1, + Landasan = 2, + JenisPetugas = "Petugas Harian Lepas", + NamaPetugas = "Taufik Hidayat", + Jadwal = new List { "Senin", "Rabu", "Jumat" }, + TpsTujuan = "TPS Jakarta Timur" + }, + new AlatPengumpulSampahViewModel + { + Id = 2, + Kelurahan = "Kelurahan Rawamangun", + Rw = "004", + Rt = "002", + GerobakDorong = 2, + GerobakMotor = 3, + MobilPickup = 1, + Truk = 0, + Dustbin = 3, + Container = 1, + Landasan = 1, + JenisPetugas = "DLH", + NamaPetugas = "Bambang Wijaya", + Jadwal = new List { "Selasa", "Kamis", "Sabtu" }, + TpsTujuan = "TPS Cililitan" + }, + new AlatPengumpulSampahViewModel + { + Id = 3, + Kelurahan = "Kelurahan Duren Sawit", + Rw = "003", + Rt = "005", + GerobakDorong = 1, + GerobakMotor = 1, + MobilPickup = 0, + Truk = 1, + Dustbin = 5, + Container = 2, + Landasan = 2, + JenisPetugas = "Swadaya Warga", + NamaPetugas = "Rini Setiawan", + Jadwal = new List { "Senin", "Rabu", "Jumat" }, + TpsTujuan = "TPS Duren Sawit" + }, + new AlatPengumpulSampahViewModel + { + Id = 4, + Kelurahan = "Kelurahan Balekambang", + Rw = "002", + Rt = "001", + GerobakDorong = 2, + GerobakMotor = 1, + MobilPickup = 1, + Truk = 1, + Dustbin = 2, + Container = 1, + Landasan = 1, + JenisPetugas = "Kader Lingkungan", + NamaPetugas = "Eko Nugroho", + Jadwal = new List { "Selasa", "Kamis" }, + TpsTujuan = "TPS Kampung Melayu" + }, + new AlatPengumpulSampahViewModel + { + Id = 5, + Kelurahan = "Kelurahan Pondok Bambu", + Rw = "001", + Rt = "007", + GerobakDorong = 3, + GerobakMotor = 2, + MobilPickup = 2, + Truk = 1, + Dustbin = 6, + Container = 2, + Landasan = 3, + JenisPetugas = "Petugas Harian Lepas", + NamaPetugas = "Ratna Sari", + Jadwal = new List { "Rabu", "Jumat", "Minggu" }, + TpsTujuan = "TPS Pondok Bambu" + } + }; + public IActionResult Index() { return View(); @@ -424,5 +521,103 @@ namespace BpsRwApp.Controllers { return View(); } + + [HttpGet] + public IActionResult TableAlatPengumpulSampah() + { + string BuildActionButtons(int id) + { + var detailUrl = Url.Action("DetailAlatPengumpulSampah", "ProfilRw", new { id }) ?? "#"; + var editUrl = Url.Action("EditAlatPengumpulSampah", "ProfilRw", new { id }) ?? "#"; + return "
" + + $"Detail" + + $"Edit" + + $"" + + "
"; + } + + string CreateAlatBadge(string label, int value) + { + return $"
{label} = {value}
"; + } + + string BuildAlatPengumpulBadges(int gerobakDorong, int gerobakMotor, int mobilPickup, int truk, int dustbin, int container, int landasan) + { + return string.Concat( + CreateAlatBadge("Gerobak Dorong", gerobakDorong), + CreateAlatBadge("Gerobak Motor", gerobakMotor), + CreateAlatBadge("Mobil Pickup", mobilPickup), + CreateAlatBadge("Truk", truk), + CreateAlatBadge("Dustbin", dustbin), + CreateAlatBadge("Container", container), + CreateAlatBadge("Landasan", landasan) + ); + } + + string CreateJadwalBadge(string hari) + { + return $"
{hari}
"; + } + + string BuildJadwalBadges(IEnumerable jadwal) + { + return string.Concat(jadwal.Select(CreateJadwalBadge)); + } + + var data = SampleAlatPengumpul.Select(item => new + { + id = item.Id, + wilayah = $"{item.Kelurahan} - RW {item.Rw} / RT {item.Rt}", + kelurahan = item.Kelurahan, + rw = item.Rw, + rt = item.Rt, + gerobakDorong = item.GerobakDorong, + gerobakMotor = item.GerobakMotor, + mobilPickup = item.MobilPickup, + truk = item.Truk, + dustbin = item.Dustbin, + container = item.Container, + landasan = item.Landasan, + jenisPetugas = item.JenisPetugas, + jadwalList = item.Jadwal, + alat_pengumpul = BuildAlatPengumpulBadges(item.GerobakDorong, item.GerobakMotor, item.MobilPickup, item.Truk, item.Dustbin, item.Container, item.Landasan), + petugas = item.NamaPetugas, + jadwal = BuildJadwalBadges(item.Jadwal), + tps_tujuan = item.TpsTujuan, + aksi = BuildActionButtons(item.Id) + }).ToList(); + + return Json(new { data }); + } + + [HttpGet] + public IActionResult DetailAlatPengumpulSampah(int id) + { + var data = SampleAlatPengumpul.FirstOrDefault(x => x.Id == id); + if (data == null) + { + return NotFound(); + } + + return View(data); + } + + [HttpGet] + public IActionResult EditAlatPengumpulSampah(int id) + { + var data = SampleAlatPengumpul.FirstOrDefault(x => x.Id == id); + if (data == null) + { + return NotFound(); + } + + return View(data); + } + + [HttpGet] + public IActionResult CreateAlatPengumpulSampah() + { + return View(); + } } } diff --git a/Models/ProfilRw/AlatPengumpulSampahViewModel.cs b/Models/ProfilRw/AlatPengumpulSampahViewModel.cs new file mode 100644 index 0000000..508bc60 --- /dev/null +++ b/Models/ProfilRw/AlatPengumpulSampahViewModel.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace BpsRwApp.Models.ProfilRw +{ + public class AlatPengumpulSampahViewModel + { + public int Id { get; set; } + public string Kelurahan { get; set; } = string.Empty; + public string Rw { get; set; } = string.Empty; + public string Rt { get; set; } = string.Empty; + + public int GerobakDorong { get; set; } + public int GerobakMotor { get; set; } + public int MobilPickup { get; set; } + public int Truk { get; set; } + public int Dustbin { get; set; } + public int Container { get; set; } + public int Landasan { get; set; } + + public string JenisPetugas { get; set; } = string.Empty; + public string NamaPetugas { get; set; } = string.Empty; + public List Jadwal { get; set; } = new(); + public string TpsTujuan { get; set; } = string.Empty; + } +} diff --git a/Views/ProfilRw/CreateAlatPengumpulSampah.cshtml b/Views/ProfilRw/CreateAlatPengumpulSampah.cshtml new file mode 100644 index 0000000..af40045 --- /dev/null +++ b/Views/ProfilRw/CreateAlatPengumpulSampah.cshtml @@ -0,0 +1,200 @@ +@{ + ViewData["Title"] = "Tambah Alat Pengumpul Sampah"; +} + + + + + +
+
+

Tambah Alat Pengumpul Sampah

+
+ +
+ +
+ +
+
+
+ + Wilayah + +
+ +
+ Kelurahan + +
+ +
+ RW + +
+ +
+ RT + +
+
+ +
+ + + Data Alat Pengumpul Sampah + +
+ +
+ Gerobak Dorong + +
+ +
+ Gerobak Motor + +
+ +
+ Mobil Pickup + +
+ +
+ Truk + +
+ +
+ Dustbin + +
+ +
+ Container + +
+ +
+ Landasan + +
+
+ +
+ + + Data petugas Pengumpul + +
+ +
+ Jenis Petugas + +
+ +
+ Nama Petugas + +
+
+ +
+ + + Jadwal Pengumpulan + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + + TPS Tujuan + +
+ +
+ TPS + +
+
+ +
+ +
+ + cancel + Batal + + +
+
+
+
\ No newline at end of file diff --git a/Views/ProfilRw/DetailAlatPengumpulSampah.cshtml b/Views/ProfilRw/DetailAlatPengumpulSampah.cshtml new file mode 100644 index 0000000..1678204 --- /dev/null +++ b/Views/ProfilRw/DetailAlatPengumpulSampah.cshtml @@ -0,0 +1,144 @@ +@using System.Collections.Generic +@model BpsRwApp.Models.ProfilRw.AlatPengumpulSampahViewModel + +@{ + ViewData["Title"] = "Detail Alat Pengumpul Sampah"; + var jadwalSet = new HashSet(Model?.Jadwal ?? new List()); + var hariOptions = new[] { "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu" }; +} + + + + + +
+
+

Detail Alat Pengumpul Sampah

+

+ Informasi lengkap untuk wilayah @Model?.Kelurahan (RW @Model?.Rw / RT @Model?.Rt). +

+
+ +
+ +
+ +
+
+
+ Wilayah +
+
+ Kelurahan + @Model?.Kelurahan +
+
+ RW + @Model?.Rw +
+
+ RT + @Model?.Rt +
+
+
+ +
+ +
+ Data Alat Pengumpul Sampah +
+
+ Gerobak Dorong + @Model?.GerobakDorong +
+
+ Gerobak Motor + @Model?.GerobakMotor +
+
+ Mobil Pickup + @Model?.MobilPickup +
+
+ Truk + @Model?.Truk +
+
+ Dustbin + @Model?.Dustbin +
+
+ Container + @Model?.Container +
+
+ Landasan + @Model?.Landasan +
+
+
+ +
+ +
+ Data Petugas Pengumpul +
+
+ Jenis Petugas + @Model?.JenisPetugas +
+
+ Nama Petugas + @Model?.NamaPetugas +
+
+
+ +
+ +
+ Jadwal Pengumpulan +
+ @foreach (var day in hariOptions) + { +
+ +
+ } +
+
+ +
+ +
+ TPS Tujuan +
+
+ TPS + @Model?.TpsTujuan +
+
+
+
+
diff --git a/Views/ProfilRw/EditAlatPengumpulSampah.cshtml b/Views/ProfilRw/EditAlatPengumpulSampah.cshtml new file mode 100644 index 0000000..8563b41 --- /dev/null +++ b/Views/ProfilRw/EditAlatPengumpulSampah.cshtml @@ -0,0 +1,230 @@ +@using System.Collections.Generic +@using System.Linq +@model BpsRwApp.Models.ProfilRw.AlatPengumpulSampahViewModel + +@{ + ViewData["Title"] = "Edit Alat Pengumpul Sampah"; + + var kelurahanOptions = new[] + { + "Kelurahan Cililitan", + "Kelurahan Rawamangun", + "Kelurahan Duren Sawit", + "Kelurahan Balekambang", + "Kelurahan Pondok Bambu" + }; + + var rwOptions = Enumerable.Range(1, 10).Select(i => i.ToString("D3")).ToList(); + var rtOptions = rwOptions; + + var jenisPetugasOptions = new[] + { + "Petugas Harian Lepas", + "DLH", + "Swadaya Warga", + "Kader Lingkungan" + }; + + var tpsOptions = new[] + { + "TPS Jakarta Timur", + "TPS Cililitan", + "TPS Duren Sawit", + "TPS Kampung Melayu", + "TPS Pondok Bambu" + }; + + var jadwalSet = new HashSet(Model?.Jadwal ?? new List()); + var hariOptions = new[] { "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu" }; +} + + + + + +
+
+

Edit Alat Pengumpul Sampah

+

+ Perbarui data alat pengumpul sampah untuk wilayah @Model?.Kelurahan (RW @Model?.Rw / RT @Model?.Rt). +

+
+ +
+ +
+ +
+
+ +
+ + Wilayah + +
+ +
+ Kelurahan + +
+ +
+ RW + +
+ +
+ RT + +
+
+ +
+ + + Data Alat Pengumpul Sampah + +
+ +
+ Gerobak Dorong + +
+ +
+ Gerobak Motor + +
+ +
+ Mobil Pickup + +
+ +
+ Truk + +
+ +
+ Dustbin + +
+ +
+ Container + +
+ +
+ Landasan + +
+
+ +
+ + + Data petugas Pengumpul + +
+ +
+ Jenis Petugas + +
+ +
+ Nama Petugas + +
+
+ +
+ + + Jadwal Pengumpulan + +
+ @foreach (var day in hariOptions) + { +
+ +
+ } +
+ +
+ + + TPS Tujuan + +
+ +
+ TPS + +
+
+ +
+ +
+ + cancel + Batal + + +
+
+
+
diff --git a/Views/ProfilRw/Index.cshtml b/Views/ProfilRw/Index.cshtml index 44ff4ce..b57cdbd 100644 --- a/Views/ProfilRw/Index.cshtml +++ b/Views/ProfilRw/Index.cshtml @@ -54,6 +54,12 @@
@await Html.PartialAsync("_TabIndexLokasi")
+ + +
+ @await Html.PartialAsync("_TabIndexAlatPengumpulSampah") +
@@ -204,6 +210,47 @@ }); }); + // Datatable Alat Pengumpul Sampah + var tableSuratUsulan = new DataTable('#tableAlatPengumpulSampah', { + ajax: '@Url.Action("TableAlatPengumpulSampah", "ProfilRw")', + autoWidth: false, + columns: [ + { data: null, render: (d, t, r, m) => m.row + 1, orderable: false, searchable: false }, + { data: 'wilayah' }, + { data: 'alat_pengumpul', className: "text-wrap" }, + { data: 'petugas' }, + { data: 'jadwal', className: "text-wrap" }, + { data: 'tps_tujuan' }, + { + data: 'aksi', + orderable: false, + searchable: false + }, + ] + }); + + tableSuratUsulan.on('click', '.btn-delete', function () { + const id = $(this).data('id'); + + Swal.fire({ + title: 'Apakah Anda yakin?', + text: "Data yang dihapus tidak dapat dikembalikan!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#ef4444', + cancelButtonColor: '#6b7280', + confirmButtonText: 'Hapus', + cancelButtonText: 'Batal' + }).then((result) => { + Swal.fire( + 'Terhapus!', + 'Data berhasil dihapus.', + 'success' + ); + }); + }); + + }); -} \ No newline at end of file +} diff --git a/Views/ProfilRw/_TabIndexAlatPengumpulSampah.cshtml b/Views/ProfilRw/_TabIndexAlatPengumpulSampah.cshtml new file mode 100644 index 0000000..e268859 --- /dev/null +++ b/Views/ProfilRw/_TabIndexAlatPengumpulSampah.cshtml @@ -0,0 +1,23 @@ + + +
+ + + + + + + + + + + + + +
NoWilayahAlat PengumpulPetugasJadwalTPS TujuanAksi
+