Files
2023-05-26 19:02:46 +03:00

85 lines
2.7 KiB
PHP

<?php
//global helpers functions here
use App\Classes\ValueObjects\Constants\BusinessType;
use App\Classes\ValueObjects\Constants\PackingListType;
use App\Models\Company;
use App\Models\CompanyModule;
use Carbon\Carbon;
/**
* Get Active companies
* TODO add extract BusinessType::IMPORTER to a $businessType parameter
* @param $inactive_start
* @param $inactive_end
* @param $active_start
* @param $active_end
* @return mixed
*/
if (!function_exists('getActiveCompanies')) {
function getActiveCompanies($inactive_start, $inactive_end, $active_start, $active_end)
{
$activeCompanies = CompanyModule::where('type', BusinessType::IMPORTER)->whereHas('orderPackingLists', function ($query) use ($inactive_start, $inactive_end) {
return $query->where('packing_lists.type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function ($query) use ($inactive_start, $inactive_end) {
return $query->where('drop_date', '>=', Carbon::parse($inactive_start))->where('drop_date', '<=', Carbon::parse($inactive_end)->addDay());
});
})->pluck('id');
return CompanyModule::where('type', BusinessType::IMPORTER)->whereHas('orderPackingLists', function ($query) use ($active_start, $active_end) {
return $query->where('packing_lists.type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function ($query) use ($active_start, $active_end) {
return $query->whereDate('drop_date', '>=', Carbon::parse($active_start))->whereDate('drop_date', '<=', Carbon::parse($active_end)->addDay());
});
})->whereNotIn('id', $activeCompanies)->get();
}
}
/**
*
* Get Packing List
* TODO change all packing related query to this
* @param Company $company
* @return mixed
*/
if (!function_exists('getPackingList')) {
function getPackingList(Company $company)
{
return $company->orderPackingLists()->where('packing_lists.type', PackingListType::SHIPPING_PACKING_LIST)->get();
}
}
/**
*
* Get Packing List
* TODO change all packing related query to this
* @param Company $company
* @return mixed
*/
if (!function_exists('format_number')) {
function format_number($number): string
{
if ($number == 0) {
return $number;
} elseif (is_float($number)) {
return number_format($number, 2);
} else {
return number_format($number);
}
}
}
/**
* check if a customer have confirmed orders
* @param Company $company
* @return bool
*/
if (!function_exists('checkIfHasConfirmedOrders'))
{
function checkIfHasConfirmedOrders(Company $company): bool
{
return $company->hasConfirmedOrder();
}
}