fetchPackingListsFromYdPortalV2CommandJobs()); $jobs = array_merge($jobs, $this->fetchContainersFromYdPortalV2CommandJobs()); $jobs = array_merge($jobs, $this->fetchContainersUpdatesFromYdPortalV2CommandJob()); $jobsWithDelay = array_merge($jobs, $this->fetchDeliveryUpdatesFromYdPortalV2CommandJobs()); // The following job is intentionally excluded ////$jobs = array_merge($jobs, $this->fetchOrderListsFromYdPortalV2CommandJob()); // Bus::chain($jobs)->dispatch(); foreach ($jobs as $job) { dispatch($job); } foreach ($jobsWithDelay as $index => $job) { // Delay each job by 2 seconds multiplied by its index dispatch($job)->delay(now()->addSeconds($index * 1)); } } 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; $count = 0; for ($x = $from; $x <= $to; $x++) { // if ($count >= 2) { // break; // } $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); $count++; } Log::info('Total FetchPackingListsFromYdPortalV2CommandJob dispatched: ' . $count); 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(); $count = 0; foreach ($packingLists as $packingList) { $jobs[] = new FetchContainersFromYdPortalV2CommandJob($packingList); Log::info('Dispatched FetchContainersFromYdPortalV2CommandJob for packingList with id ' . $packingList->id); $count++; } Log::info('Total FetchContainersFromYdPortalV2CommandJob dispatched: ' . $count); return $jobs; } private function fetchContainersUpdatesFromYdPortalV2CommandJob(){ $jobs = []; $containers = Container::where('status', ApprovalStatus::PENDING_VERIFICATION)->get(); $count = 0; foreach ($containers as $container) { $jobs[] = new FetchContainersUpdatesFromYdPortalV2CommandJob($container); Log::info('Dispatched FetchContainersUpdatesFromYdPortalV2CommandJob for container with id ' . $container->id); $count++; } Log::info('Total FetchContainersUpdatesFromYdPortalV2CommandJob dispatched: ' . $count); 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(); $count = 0; foreach ($packingLists as $packingList) { if ($count >= 500) { break; } // foreach ($packingLists->chunk(50) as $chunk) { // foreach ($chunk as $packingList){ // $processor = app(FetchDeliveryUpdatesFromYdPortalV2Processor::class); // $processor->execute($packingList); $jobs[] = new FetchDeliveryUpdatesFromYdPortalV2CommandJob($packingList->id); Log::info('Dispatched FetchDeliveryUpdatesFromYdPortalV2CommandJob for packingList with id ' . $packingList->id); $count++; // } // } } Log::info('Total FetchDeliveryUpdatesFromYdPortalV2CommandJob count($packingLists): ' . count($packingLists)); Log::info('Total FetchDeliveryUpdatesFromYdPortalV2CommandJob dispatched: ' . $count); return $jobs; } private function fetchOrderListsFromYdPortalV2CommandJob(){ $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; $from = $end ? Carbon::today()->diffInDays($end) : 0; $to = $start ? Carbon::today()->diffInDays($start) : 10; $count = 0; 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 FetchOrderListsFromYdPortalV2CommandJob($startDate, $endDate); Log::info('Dispatched FetchOrderListsFromYdPortalV2CommandJob for start date: ' . $startDate . ', end date: ' . $endDate); $count++; } Log::info('Total FetchOrderListsFromYdPortalV2CommandJob dispatched: ' . $count); return $jobs; } }