208 lines
9.2 KiB
C#
208 lines
9.2 KiB
C#
using BankSampahApp.Models;
|
|
|
|
namespace BankSampahApp.Services;
|
|
|
|
public class NotificationService : INotificationService
|
|
{
|
|
private readonly List<NotificationItem> _notifications =
|
|
[
|
|
new()
|
|
{
|
|
Id = 1,
|
|
Title = "User BSU - 1",
|
|
Category = NotificationCategory.StatusAkun,
|
|
Severity = NotificationSeverity.Warning,
|
|
Summary = "Status akun Anda saat ini belum disetujui oleh [Nama BSU]. Mohon menunggu proses verifikasi data oleh pihak BSU. Anda akan mendapatkan notifikasi kembali setelah data Anda diverifikasi.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-1),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 2,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.StatusAkun,
|
|
Severity = NotificationSeverity.Success,
|
|
Summary = "Selamat! Akun Anda telah disetujui dan aktif oleh [Nama Bank Sampah Unit (BSU)]. Anda kini dapat melakukan transaksi penyetoran dan penarikan sampah melalui aplikasi Bank Sampah.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-2),
|
|
IsRead = true
|
|
},
|
|
new()
|
|
{
|
|
Id = 3,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.StatusAkun,
|
|
Severity = NotificationSeverity.Error,
|
|
Summary = "Akun Anda ditolak oleh [Nama Bank Sampah Unit (BSU)]. Alasan: i. Data yang Anda berikan tidak valid atau tidak sesuai. ii. Pelanggaran terhadap kebijakan atau aturan Bank Sampah. Silakan hubungi [Nama BSU] untuk informasi lebih lanjut atau proses pengaktifan kembali akun Anda.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-3),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 4,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.Transaksi,
|
|
Severity = NotificationSeverity.Success,
|
|
Summary = "Terima kasih telah melakukan pengumpulan sampah di [Nama BSU]! Anda telah menyetorkan sampah seberat {berat_sampah} kg dengan total nilai sebesar Rp {jumlah_uang}. Terus berkontribusi menjaga lingkungan!",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-4),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 5,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.Transaksi,
|
|
Severity = NotificationSeverity.Success,
|
|
Summary = "Penarikan saldo Anda telah berhasil diproses di [Nama BSU]. Jumlah yang ditarik: Rp {jumlah_uang}. Sisa saldo tabungan Anda saat ini: Rp {sisa_saldo}. Terima kasih telah berpartisipasi!",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-5),
|
|
IsRead = true
|
|
},
|
|
new()
|
|
{
|
|
Id = 6,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.StatusAkun,
|
|
Severity = NotificationSeverity.Success,
|
|
Summary = "Selamat! Akun Bank Sampah Unit (BSU) Anda telah disetujui dan diaktifkan oleh pihak Dinas. Anda kini dapat melakukan pengelolaan data nasabah, transaksi, serta pelaporan melalui sistem Bank Sampah.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-6),
|
|
IsRead = true
|
|
},
|
|
new()
|
|
{
|
|
Id = 7,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.StatusAkun,
|
|
Severity = NotificationSeverity.Warning,
|
|
Summary = "Status verifikasi Bank Sampah Unit (BSU) Anda saat ini belum disetujui oleh pihak Dinas. Mohon menunggu proses pemeriksaan data dan kelengkapan dokumen.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-7),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 8,
|
|
Title = "User BSU - 2",
|
|
Category = NotificationCategory.StatusAkun,
|
|
Severity = NotificationSeverity.Error,
|
|
Summary = "Mohon maaf, akun Bank Sampah Unit (BSU) Anda tidak dapat diaktifkan oleh pihak Dinas. Silakan lengkapi data atau hubungi pihak Dinas untuk proses klarifikasi dan pengajuan ulang.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-8),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 9,
|
|
Title = "Pengajuan BSU - 1",
|
|
Category = NotificationCategory.Pengajuan,
|
|
Severity = NotificationSeverity.Info,
|
|
Summary = "Pengajuan verifikasi Bank Sampah Unit (BSU) Anda telah berhasil dikirim ke Bank Sampah Induk (BSI).\nMohon menunggu proses verifikasi dan persetujuan dari pihak BSI.\nAnda akan mendapatkan notifikasi kembali setelah pengajuan diverifikasi. ♻️",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-9),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 10,
|
|
Title = "Pengajuan BSU - 1",
|
|
Category = NotificationCategory.Pengajuan,
|
|
Severity = NotificationSeverity.Success,
|
|
Summary = "Selamat! 🎉\nPengajuan verifikasi Bank Sampah Unit (BSU) Anda telah disetujui dan diaktifkan oleh Bank Sampah Induk (BSI).\nAnda kini dapat mulai melakukan pengelolaan data transaksi.",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-10),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 11,
|
|
Title = "Pengajuan BSU - 2",
|
|
Category = NotificationCategory.Pengajuan,
|
|
Severity = NotificationSeverity.Warning,
|
|
Summary = "Anda menerima pengajuan keanggotaan baru dari Nasabah yang ingin bergabung dengan Bank Sampah Unit (BSU) Anda.\nMohon lakukan verifikasi data dan kelengkapan identitas sebelum memberikan keputusan.\n🔹 Nama Nasabah: {nama_nasabah}\n🔹 Tanggal Pengajuan: {tanggal_pengajuan}\n🔹 Nomor HP / ID Nasabah: {id_nasabah}\nLakukan verifikasi agar nasabah dapat segera menjadi anggota aktif BSU Anda. ♻️",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-11),
|
|
IsRead = true
|
|
},
|
|
new()
|
|
{
|
|
Id = 12,
|
|
Title = "Pengajuan BSU - 2",
|
|
Category = NotificationCategory.Pengajuan,
|
|
Severity = NotificationSeverity.Info,
|
|
Summary = "Anda menerima pengajuan keanggotaan baru dari Bank Sampah Unit (BSU).\nMohon tinjau dan verifikasi data sebelum menyetujui atau menolak pengajuan.\n🔹 Nama BSU: {nama_bsu}\n🔹 Tanggal Pengajuan: {tanggal_pengajuan}\n🔹 Diajukan oleh: {nama_pengaju / penanggung_jawab}\nSegera lakukan verifikasi agar BSU dapat menjadi bagian dari jaringan Bank Sampah Induk Anda. ♻️",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-12),
|
|
IsRead = false
|
|
},
|
|
new()
|
|
{
|
|
Id = 13,
|
|
Title = "Pengajuan BSU - 3",
|
|
Category = NotificationCategory.Pengajuan,
|
|
Severity = NotificationSeverity.Warning,
|
|
Summary = "Terdapat pengajuan verifikasi baru dari Bank Sampah Unit (BSU) yang perlu ditinjau.\nSilakan lakukan pemeriksaan data dan dokumen BSU sebelum menentukan status persetujuan.\n🔹 Nama BSU: {nama_bsu}\n🔹 Tanggal Pengajuan: {tanggal_pengajuan}\n🔹 Diajukan oleh: {nama_pengaju / penanggung_jawab}\nSegera lakukan verifikasi agar BSU dapat melanjutkan proses operasionalnya. ♻️",
|
|
CreatedAt = DateTime.UtcNow.AddDays(-13),
|
|
IsRead = true
|
|
}
|
|
];
|
|
|
|
public Task<IReadOnlyList<NotificationItem>> GetNotificationsAsync(NotificationCategory? category = null)
|
|
{
|
|
IEnumerable<NotificationItem> query = _notifications;
|
|
|
|
if (category.HasValue)
|
|
{
|
|
query = query.Where(n => n.Category == category.Value);
|
|
}
|
|
|
|
return Task.FromResult<IReadOnlyList<NotificationItem>>(query
|
|
.OrderByDescending(n => n.CreatedAt)
|
|
.Select(n => new NotificationItem
|
|
{
|
|
Id = n.Id,
|
|
Title = n.Title,
|
|
Summary = n.Summary,
|
|
Category = n.Category,
|
|
Severity = n.Severity,
|
|
CreatedAt = n.CreatedAt,
|
|
Link = $"/Notifications/Show/{n.Id}",
|
|
IsRead = n.IsRead
|
|
})
|
|
.ToList());
|
|
}
|
|
|
|
public NotificationItem? GetById(int id)
|
|
{
|
|
var notification = _notifications.FirstOrDefault(n => n.Id == id);
|
|
return notification is null
|
|
? null
|
|
: new NotificationItem
|
|
{
|
|
Id = notification.Id,
|
|
Title = notification.Title,
|
|
Summary = notification.Summary,
|
|
Category = notification.Category,
|
|
Severity = notification.Severity,
|
|
CreatedAt = notification.CreatedAt,
|
|
Link = $"/Notifications/Show/{notification.Id}",
|
|
IsRead = notification.IsRead
|
|
};
|
|
}
|
|
|
|
public Task<bool> UpdateReadStateAsync(int id, bool isRead)
|
|
{
|
|
var notification = _notifications.FirstOrDefault(n => n.Id == id);
|
|
if (notification is null)
|
|
{
|
|
return Task.FromResult(false);
|
|
}
|
|
|
|
notification.IsRead = isRead;
|
|
return Task.FromResult(true);
|
|
}
|
|
|
|
public Task<bool> DeleteAsync(int id)
|
|
{
|
|
var notification = _notifications.FirstOrDefault(n => n.Id == id);
|
|
if (notification is null)
|
|
{
|
|
return Task.FromResult(false);
|
|
}
|
|
|
|
_notifications.Remove(notification);
|
|
return Task.FromResult(true);
|
|
}
|
|
}
|