Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function selisihWaktu($FromDate, $ToDate) {
- $multiply = 1;
- if(strtotime($FromDate) > strtotime($ToDate))
- {
- $multiply = -1;
- }
- $FromDate = new DateTime($FromDate);
- $ToDate = new DateTime($ToDate);
- $Interval = $FromDate->diff($ToDate);
- if($Interval->h != 0)
- {
- $Difference["jam"] = $Interval->h * $multiply;
- }
- else
- {
- $Difference["jam"] = $Interval->h;
- }
- if(floor($Interval->d/7) != 0)
- {
- $Difference["minggu"] = floor($Interval->d/7) * $multiply;
- }
- else
- {
- $Difference["minggu"] = floor($Interval->d/7);
- }
- if($Interval->d != 0)
- {
- $Difference["hari"] = $Interval->d * $multiply;
- }
- else
- {
- $Difference["hari"] = $Interval->d;
- }
- if($Interval->m != 0)
- {
- $Difference["bulan"] = $Interval->m * $multiply;
- }
- else
- {
- $Difference["bulan"] = $Interval->m;
- }
- if($Interval->y != 0)
- {
- $Difference["tahun"] = $Interval->y * $multiply;
- }
- else
- {
- $Difference["tahun"] = $Interval->y;
- }
- return $Difference;
- }
- function notifikasiBayar($tanggal_kasus, $tanggal_sekarang)
- {
- $hasil = ["",""];
- //~ $tanggal_kasus = '2019-04-09'; // TANGGAL KASUS DARI DATABASE
- $batas = date('Y-m-d', strtotime("+12 months", strtotime($tanggal_kasus)));
- //~ $tanggal_sekarang = '2019-05-10'; // TANGGAL SEKARANG, BISA PAKAI date('Y-m-d')
- $daftar_tanggal = [];
- $tanggal_kasus_tmp = $tanggal_kasus;
- for($x = 1; $x <= 12; $x++)
- {
- $tanggal_kasus_tmp = date('Y-m-d', strtotime("+1 months", strtotime($tanggal_kasus_tmp)));
- $daftar_tanggal[] = $tanggal_kasus_tmp;
- }
- if(strtotime($tanggal_sekarang) <= strtotime($batas))
- {
- $selisih_waktu = selisihWaktu($tanggal_sekarang, $batas);
- $sisa_bulan = $selisih_waktu['bulan'];
- // Logika bulan terakhir
- if($sisa_bulan == 0)
- {
- if($selisih_waktu['hari'] > 15)
- {
- $hasil[1] = "Expired in 1 month";
- }
- elseif($selisih_waktu['hari'] > 7 && $selisih_waktu['hari'] <= 15)
- {
- $hasil[1] = "Expired in 15 days";
- }
- elseif($selisih_waktu['hari'] == 7)
- {
- $hasil[1] = "Expired in a week";
- }
- elseif($selisih_waktu['hari'] < 7 && $selisih_waktu['hari'] >= 0)
- {
- $hasil[1] = "Expired soon";
- }
- }
- $selisih_waktu = selisihWaktu($tanggal_kasus, $tanggal_sekarang);
- if($selisih_waktu['hari'] <= 10 && $selisih_waktu['hari'] > 0)
- {
- $hasil[0] = "Frozen";
- }
- elseif($selisih_waktu['hari'] >= 24 || $selisih_waktu['hari'] == 0)
- {
- $selisih_hari = 0;
- while(true)
- {
- $selisih_waktu = selisihWaktu($tanggal_kasus, $tanggal_sekarang);
- if($selisih_waktu['hari'] != 0)
- {
- $selisih_hari++;
- $tanggal_sekarang = date('Y-m-d', strtotime("+1 days", strtotime($tanggal_sekarang)));
- }
- else
- {
- break;
- }
- }
- if($selisih_hari <= 3)
- {
- $hasil[0] = "Billing Period";
- }
- }
- }
- else
- {
- $hasil[0] = "Expired";
- $hasil[1] = "Expired";
- }
- return $hasil;
- }
- // CARA PAKAI
- /*
- *
- * $notifikasi = notifikasiBayar($tgl_kasus, date('Y-m-d'));
- *
- * echo $notifikasi[0]; -> Menampilkan notifikasi perbulan alias frozen dan billing period
- * echo $notifikasi[1]; -> Menampilkan notifikasi akhir bulan alias expired in 1 month, in 15 days, in a week, serta expired soon
- *
- * Jika kasusnya sudah lewat dari 1 tahun, maka hasil echo $notifikasi[0] dan $notifikasi[1] sama yaitu EXPIRED
- *
- */
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement