File: /var/www/html/dashboard.orbiwheels.com/app/Helper.php
<?php
use App\Models\SystemSetting;
use App\Models\VehicleRateCard;
use Illuminate\Support\Facades\Config;
if (!function_exists('get_setting')) {
function get_setting($key, $default = null)
{
static $settings = null;
if ($settings == null) {
$settings = SystemSetting::pluck('value', 'key')->toArray();
}
return $settings[$key] ?? $default;
}
}
if (!function_exists('loadSmtpSettingsFromDb')) {
function loadSmtpSettingsFromDb()
{
$mailer = get_setting('mail_mailer') ?? env('MAIL_MAILER', 'smtp');
Config::set('mail.default', $mailer);
Config::set('mail.mailers.smtp', [
'transport' => $mailer,
'host' => get_setting('mail_host') ?? env('MAIL_HOST', 'smtp.gmail.com'),
'port' => get_setting('mail_port') ?? env('MAIL_PORT', 587),
'encryption' => get_setting('mail_encryption') ?? env('MAIL_ENCRYPTION', 'tls'),
'username' => get_setting('mail_username') ?? env('MAIL_USERNAME'),
'password' => get_setting('mail_password') ?? env('MAIL_PASSWORD'),
'timeout' => null,
]);
Config::set('mail.from.address', get_setting('mail_from_address') ?? env('MAIL_FROM_ADDRESS', '[email protected]'));
Config::set('mail.from.name', get_setting('mail_from_name') ?? env('MAIL_FROM_NAME', 'Orbi Pre-Booking'));
}
}
if (!function_exists('loadCaptchaSettingsFromDb')) {
function loadCaptchaSettingsFromDb()
{
Config::set('captcha.secret', get_setting('nocaptcha_secret', env('NOCAPTCHA_SECRET')));
Config::set('captcha.sitekey', get_setting('nocaptcha_sitekey', env('NOCAPTCHA_SITEKEY')));
}
}
if (!function_exists('getTimeSlot')) {
function getTimeSlot(string $time): string
{
$hour = (int) date('H', strtotime($time));
return $hour < 12 ? 'morning' : 'evening';
}
}
if (!function_exists('getDistance')) {
function getDistance($lat1, $lon1, $lat2, $lon2, $unit = 'K')
{
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
if ($unit == 'K') {
return $miles * 1.609344; // Kilometers
} elseif ($unit == 'N') {
return $miles * 0.8684; // Nautical miles
}
return $miles; // Miles
}
}
if (!function_exists('getFare')) {
function getFare($distance, $vehicle_type, $rate_type = "city")
{
$rate_per_km = 0;
$vehicle_rate_card = VehicleRateCard::where('vehicle_type_id', $vehicle_type->id)->first();
if ($vehicle_rate_card) {
if ($rate_type == "city") {
$rate_per_km = $vehicle_rate_card->city_rate;
} elseif ($rate_type == "outstation") {
$rate_per_km = $vehicle_rate_card->outstation_rate;
}
}
return $distance * $rate_per_km;
}
}
if (!function_exists('getCommission')) {
function getCommission($distance)
{
// Commission per km
$commission_per_km = 2;
$totalCommission = $distance * $commission_per_km;
return round($totalCommission, 2);
}
}
if (!function_exists('get_gst_on_commission')) {
function get_gst_on_commission($commission)
{
$gst_rate = 18;
$gst_amount = ($commission * $gst_rate) / 100;
return round($gst_amount, 2);
}
}