init title lokasi, dan penambahan api
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Parking;
|
||||
|
||||
use App\Models\MasterTarif;
|
||||
use App\Models\VehicleItem;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class RateParkingService
|
||||
{
|
||||
public function calc ($transaksi, $times)
|
||||
{
|
||||
$duration = $times; ## Parse lama parkir berdasarkan detik
|
||||
$tarifVehicle = MasterTarif::find($transaksi);
|
||||
$parkingPrice = 0; //Tarif pertama
|
||||
Log::info("\n" . '------------------======== Starting tarif Begin ==============----------------------');
|
||||
Log::info('Mulai perhitungan tarif dengan durasi : ' . $duration .' (Rp. '. $parkingPrice .')');
|
||||
|
||||
// Grace Periode
|
||||
if ($duration < $tarifVehicle->waktu_gratis) {
|
||||
Log::info('GP Rules : ');
|
||||
return $parkingPrice;
|
||||
} else if ( $tarifVehicle->waktu_gratis !== 0 && $tarifVehicle->tarif_periode !== 0) {
|
||||
Log::info('GP Rules : ');
|
||||
$parkingPrice = $parkingPrice + $tarifVehicle->tarif_period;
|
||||
$duration = $duration - $tarifVehicle->waktu_gratis;
|
||||
Log::info('Setelah GP : ' . $parkingPrice . ' Durasi parkir : ' . $duration);
|
||||
}
|
||||
|
||||
## Hitung Tarif pertama
|
||||
$firstPrice = 0;
|
||||
$firstDuration = $tarifVehicle->frek_interval * ($tarifVehicle->interval * 60);
|
||||
Log::info('Firstime rules : ' . $firstDuration);
|
||||
// if ($duration >= $firstDuration) {
|
||||
do {
|
||||
$duration -= ($tarifVehicle->interval * 60);
|
||||
$parkingPrice += $tarifVehicle->tarif_interval;
|
||||
$firstPrice++;
|
||||
} while ($firstPrice < $tarifVehicle->frek_interval);
|
||||
Log::info('Tarif jam pertama : ' . $parkingPrice . ' Sisa durasi : ' . $duration);
|
||||
// }
|
||||
|
||||
// Log::info($firstDuration);
|
||||
## Hitung tarif kedua
|
||||
$secondPrice = 1;
|
||||
// Log::info($tarifVehicle->frek_waktu2 . ' - ' . $tarifVehicle->waktu2);
|
||||
$secondDuration = $tarifVehicle->frek_waktu2 * ($tarifVehicle->waktu2 * 60);
|
||||
if ($duration >= $secondDuration) {
|
||||
Log::info('');
|
||||
Log::info('Secondtime rules : ' . $secondDuration);
|
||||
do {
|
||||
$duration -= ($tarifVehicle->waktu2 * 60);
|
||||
$parkingPrice += $tarifVehicle->tarif_interval;
|
||||
$secondPrice++;
|
||||
} while ($secondPrice < $tarifVehicle->frek_waktu2);
|
||||
|
||||
Log::info('Tarif jam kedua : ' . $parkingPrice . ' Sisa durasi : ' . $duration);
|
||||
}
|
||||
|
||||
$nextDuration = 0;
|
||||
$lastDuration = $tarifVehicle->waktu_tarif * 60;
|
||||
if ($duration <= $lastDuration && $duration > 0) {
|
||||
Log::info('');
|
||||
Log::info('Sisa Durasi ' . $duration);
|
||||
do {
|
||||
$duration -= ($tarifVehicle->waktu_tarif * 60);
|
||||
$parkingPrice += $tarifVehicle->tarif;
|
||||
// $nextDuration++;
|
||||
} while ($duration > 0);
|
||||
Log::info('Tarif jam berikutnya : ' . $parkingPrice . ' Sisa durasi : ' . $duration);
|
||||
}
|
||||
|
||||
Log::info('Tarif Parkir Anda : ' . $parkingPrice . ' Sisa durasi : ' . $duration);
|
||||
|
||||
|
||||
// if ($tarifVehicle->time_base_maks == 1) {
|
||||
// if ($parkingPrice > $tarifVehicle->maksimum) {
|
||||
// $parkingPrice = $tarifVehicle->maksimum;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
return $parkingPrice;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user