fix active customer list

This commit is contained in:
omair saleh
2022-03-05 17:59:02 +08:00
parent 7998f6e43f
commit eb905e7176
2 changed files with 22 additions and 15 deletions
+11
View File
@@ -21,6 +21,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use PhpParser\Node\Expr\AssignOp\Mod;
use Staudenmeir\EloquentHasManyDeep\HasManyDeep;
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
/**
* Class CompanyModule
@@ -32,6 +34,7 @@ use PhpParser\Node\Expr\AssignOp\Mod;
*/
class CompanyModule extends AbstractModel implements Addressable, Documentable, Contactable, ContainerOwner, Packable
{
use HasRelationships;
use SoftDeletes;
protected $table = 'company_modules';
@@ -70,6 +73,14 @@ class CompanyModule extends AbstractModel implements Addressable, Documentable,
return $this->morphMany(PackingList::class, 'owner');
}
/**
* @return hasManyDeep
*/
public function orderPackingLists(): hasManyDeep
{
return $this->hasManyDeep(PackingList::class, [Order::class], ['company_module_id', ['owner_type', 'owner_id']], ['id', null]);
}
/**
* @return belongsToMany
*/
+11 -15
View File
@@ -204,22 +204,18 @@ Route::get('/settings', function () {
return view('pages.settings');
})->name('settings');
Route::get('/customers/active/{active_start}/{active_end}/{?inactive_start}/{?inactive_end}', function ($active_start, $active_end, $inactive_start, $inactive_end) {
$companies = CompanyModule::where('type', \App\Classes\ValueObjects\Constants\BusinessType::IMPORTER)->whereHas('orders', function($query) use($active_start, $active_end, $inactive_start, $inactive_end){
return $query->whereHas('packingLists', function($query) use($active_start, $active_end){
return $query->where('type', \App\Classes\ValueObjects\Constants\PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function($query) use($active_start, $active_end){
return $query->whereHas('schedules', function($query) use($active_start, $active_end){
return $query->where('eta', '>=', \Carbon\Carbon::parse($active_start))->where('eta', '<=', \Carbon\Carbon::parse($active_end)->addDay());
});
});
})->whereDoesntHave('packingLists', function($query) use($inactive_start, $inactive_end){
return $query->where('type', \App\Classes\ValueObjects\Constants\PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function($query) use($inactive_start, $inactive_end){
return $query->whereDoesntHave('schedules', function($query) use($inactive_start, $inactive_end){
return $query->where('eta', '>=', \Carbon\Carbon::parse($inactive_start))->where('eta', '<=', \Carbon\Carbon::parse($inactive_end)->addDay());
});
});
Route::get('/customers/active/{active_start}/{active_end}/{inactive_start?}/{inactive_end?}', function ($active_start, $active_end, $inactive_start=null, $inactive_end=null) {
$activeCompanies = CompanyModule::where('type', \App\Classes\ValueObjects\Constants\BusinessType::IMPORTER)->whereHas('orderPackingLists', function($query) use($inactive_start, $inactive_end) {
return $query->where('packing_lists.type', \App\Classes\ValueObjects\Constants\PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function ($query) use ($inactive_start, $inactive_end) {
return $query->where('drop_date', '>=', \Carbon\Carbon::parse($inactive_start))->where('drop_date', '<=', \Carbon\Carbon::parse($inactive_end)->addDay());
});
})->get();
})->pluck('id');
$companies = CompanyModule::where('type', \App\Classes\ValueObjects\Constants\BusinessType::IMPORTER)->whereHas('orderPackingLists', function($query) use($active_start, $active_end) {
return $query->where('packing_lists.type', \App\Classes\ValueObjects\Constants\PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('transports', function ($query) use ($active_start, $active_end) {
return $query->whereDate('drop_date', '>=', \Carbon\Carbon::parse($active_start))->whereDate('drop_date', '<=', \Carbon\Carbon::parse($active_end)->addDay());
});
})->whereNotIn('id', $activeCompanies)->get();
foreach ($companies as $key => $company){
$connection = $company->inviters()->withPivot('invitee_reference')->first();