AddBimToConvertQueue.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Libraries\BIM\BIMDriverEnum;
  4. use App\Libraries\BIM\BIMFactory;
  5. use App\Models\BimFile;
  6. use App\Models\Enums\BimFileConvertStatus;
  7. use Carbon\Carbon;
  8. use Illuminate\Console\Command;
  9. use Illuminate\Database\Eloquent\Collection;
  10. class AddBimToConvertQueue extends Command
  11. {
  12. /**
  13. * The name and signature of the console command.
  14. *
  15. * @var string
  16. */
  17. protected $signature = 'lpc:add-bim-to-convert-queue';
  18. /**
  19. * The console command description.
  20. *
  21. * @var string
  22. */
  23. protected $description = 'Timed push of bim files to conversion queue';
  24. /**
  25. * Execute the console command.
  26. */
  27. public function handle()
  28. {
  29. BimFile::query()
  30. ->where("created_at", ">=", Carbon::now()->subDay())
  31. ->whereIn("convert_status", [BimFileConvertStatus::NotAdded->value, BimFileConvertStatus::FAILED_TO_ADD_QUEUE->value])
  32. ->where("bim_driver", BIMDriverEnum::BLACK_HOLE->value)
  33. ->chunkById(2000, function (Collection $bimFiles) {
  34. $this->pushToQueue($bimFiles);
  35. });
  36. }
  37. protected function pushToQueue(Collection $bimFiles)
  38. {
  39. foreach ($bimFiles as $bimFile) {
  40. try {
  41. BIMFactory::make($bimFile->bim_driver)->addToConvertQueue($bimFile->bim_data_set_id);
  42. $bimFile->convert_status = BimFileConvertStatus::IN_QUEUE;
  43. } catch (\Exception $exception) {
  44. $bimFile->convert_status = BimFileConvertStatus::FAILED_TO_ADD_QUEUE;
  45. $bimFile->error = $exception->getMessage();
  46. }
  47. $bimFile->save();
  48. }
  49. }
  50. }