55use Illuminate \Bus \Queueable ;
66use Illuminate \Queue \InteractsWithQueue ;
77use Illuminate \Queue \SerializesModels ;
8+ use Illuminate \Support \Carbon ;
89use Illuminate \Support \Collection ;
910use JustBetter \MagentoStock \Jobs \Retrieval \RetrieveAllStockJob ;
1011use Laravel \Nova \Actions \Action ;
1112use Laravel \Nova \Actions \ActionResponse ;
1213use Laravel \Nova \Fields \ActionFields ;
14+ use Laravel \Nova \Fields \Boolean ;
15+ use Laravel \Nova \Fields \DateTime ;
16+ use Laravel \Nova \Http \Requests \NovaRequest ;
1317
1418class RetrieveAll extends Action
1519{
@@ -26,8 +30,30 @@ public function __construct()
2630
2731 public function handle (ActionFields $ fields , Collection $ models ): ActionResponse
2832 {
29- RetrieveAllStockJob::dispatch ();
33+ /** @var ?string $from */
34+ $ from = $ fields ->get ('from ' );
35+
36+ if ($ from !== null ) {
37+ $ carbon = Carbon::parse ($ from );
38+ }
39+
40+ /** @var bool $defer */
41+ $ defer = $ fields ->get ('defer ' );
42+
43+ RetrieveAllStockJob::dispatch ($ carbon ?? null , $ defer );
3044
3145 return ActionResponse::message (__ ('Retrieving... ' ));
3246 }
47+
48+ public function fields (NovaRequest $ request ): array
49+ {
50+ return [
51+ DateTime::make (__ ('From ' ), 'from ' )
52+ ->help (__ ('Optional, retrieve updated prices from this date ' )),
53+
54+ Boolean::make (__ ('Defer ' ), 'defer ' )
55+ ->default (true )
56+ ->help (__ ('When enabled, the stocks will be marked for retrieval. Otherwise, all stocks will be retrieved immediately. ' )),
57+ ];
58+ }
3359}
0 commit comments