fetchPackingListsFromYdPortalV2CommandJobs()); $jobs = array_merge($jobs, $this->fetchContainersFromYdPortalV2CommandJobs()); $jobs = array_merge($jobs, $this->fetchContainersUpdatesFromYdPortalV2CommandJob()); $jobs = array_merge($jobs, $this->fetchDeliveryUpdatesFromYdPortalV2CommandJobs()); Bus::chain($jobs)->dispatch(); } private function fetchPackingListsFromYdPortalV2CommandJobs(){ $jobs = []; $start = $this->argument('start_date') ? Carbon::parse($this->argument('start_date')) : null; $end = $this->argument('end_date') ? Carbon::parse($this->argument('end_date')) : null; // $start = $this->startDate ? Carbon::parse($this->startDate) : null; // $end = $this->endDate ? Carbon::parse($this->endDate) : null; $from = $end ? Carbon::today()->diffInDays($end) : 0; $to = $start ? Carbon::today()->diffInDays($start) : 10; for ($x = $from; $x <= $to; $x++) { $startDate = Carbon::today()->subDays($x); $startLimit = Carbon::parse('01-12-2021'); if($startDate->isBefore($startLimit)){ $startDate = $startLimit; } $endDate = Carbon::today()->subDays($x - 1); $jobs[] = new FetchPackingListsFromYdPortalV2CommandJob($startDate, $endDate); //FetchPackingListsFromYdPortalV2CommandJob::dispatch($startDate, $endDate); Log::info('Dispatched FetchPackingListsFromYdPortalV2CommandJob for start date: ' . $startDate . ', end date: ' . $endDate); } return $jobs; } private function fetchContainersFromYdPortalV2CommandJobs(){ $jobs = []; $maxFetchTime = Carbon::now()->subMonths(4); $packingLists = PackingList::where('type', PackingListType::SHIPPING_PACKING_LIST)->whereDate('created_at', '>=', $maxFetchTime)->doesntHave('containers')->get(); foreach ($packingLists as $packingList) { $jobs[] = new FetchContainersFromYdPortalV2CommandJob($packingList); Log::info('Dispatched FetchContainersFromYdPortalV2CommandJob for packingList with id ' . $packingList->id); } return $jobs; } private function fetchContainersUpdatesFromYdPortalV2CommandJob(){ $jobs = []; $containers = Container::where('status', ApprovalStatus::PENDING_VERIFICATION)->get(); foreach ($containers as $container) { $jobs[] = new FetchContainersUpdatesFromYdPortalV2CommandJob($container); Log::info('Dispatched FetchContainersUpdatesFromYdPortalV2CommandJob for container with id ' . $container->id); } return $jobs; } private function fetchDeliveryUpdatesFromYdPortalV2CommandJobs(){ $jobs = []; $packingLists = PackingList::where('type', PackingListType::SHIPPING_PACKING_LIST)->whereRaw('LENGTH(reference) > 12')->whereHas('containers', function ($container){ return $container->where('status', 3); })->doesntHave('transports')->get()->reverse(); foreach ($packingLists->chunk(50) as $chunk) { foreach ($chunk as $packingList){ // $processor = app(FetchDeliveryUpdatesFromYdPortalV2Processor::class); // $processor->execute($packingList); $jobs[] = new FetchDeliveryUpdatesFromYdPortalV2CommandJob($packingList); Log::info('Dispatched FetchDeliveryUpdatesFromYdPortalV2CommandJob for packingList with id' . $packingList->id); } } return $jobs; } }