66use Illuminate \Http \Request ;
77use Prologue \Alerts \AlertsMessageBag ;
88use Pterodactyl \Http \Controllers \Controller ;
9- use Pterodactyl \Jobs \Server \TransferJob ;
109use Pterodactyl \Models \Server ;
1110use Pterodactyl \Repositories \Eloquent \ServerRepository ;
1211use Pterodactyl \Repositories \Eloquent \LocationRepository ;
1312use Pterodactyl \Repositories \Eloquent \NodeRepository ;
13+ use Pterodactyl \Services \Servers \SuspensionService ;
14+ use Pterodactyl \Services \Servers \TransferService ;
1415
1516class ServerTransferController extends Controller
1617{
@@ -39,6 +40,16 @@ class ServerTransferController extends Controller
3940 */
4041 private $ nodeRepository ;
4142
43+ /**
44+ * @var \Pterodactyl\Services\Servers\SuspensionService
45+ */
46+ private $ suspensionService ;
47+
48+ /**
49+ * @var \Pterodactyl\Services\Servers\TransferService
50+ */
51+ private $ transferService ;
52+
4253 /**
4354 * ServerTransferController constructor.
4455 *
@@ -47,19 +58,25 @@ class ServerTransferController extends Controller
4758 * @param \Pterodactyl\Repositories\Eloquent\ServerRepository $repository
4859 * @param \Pterodactyl\Repositories\Eloquent\LocationRepository $locationRepository
4960 * @param \Pterodactyl\Repositories\Eloquent\NodeRepository $nodeRepository
61+ * @param \Pterodactyl\Services\Servers\SuspensionService $suspensionService
62+ * @param \Pterodactyl\Services\Servers\TransferService $transferService
5063 */
5164 public function __construct (
5265 AlertsMessageBag $ alert ,
5366 Dispatcher $ dispatcher ,
5467 ServerRepository $ repository ,
5568 LocationRepository $ locationRepository ,
56- NodeRepository $ nodeRepository
69+ NodeRepository $ nodeRepository ,
70+ SuspensionService $ suspensionService ,
71+ TransferService $ transferService
5772 ) {
5873 $ this ->alert = $ alert ;
5974 $ this ->dispatcher = $ dispatcher ;
6075 $ this ->repository = $ repository ;
6176 $ this ->locationRepository = $ locationRepository ;
6277 $ this ->nodeRepository = $ nodeRepository ;
78+ $ this ->suspensionService = $ suspensionService ;
79+ $ this ->transferService = $ transferService ;
6380 }
6481
6582 /**
@@ -68,6 +85,8 @@ public function __construct(
6885 * @param \Illuminate\Http\Request $request
6986 * @param \Pterodactyl\Models\Server $server
7087 * @return \Illuminate\Http\RedirectResponse
88+ *
89+ * @throws \Throwable
7190 */
7291 public function transfer (Request $ request , Server $ server )
7392 {
@@ -84,8 +103,9 @@ public function transfer(Request $request, Server $server)
84103 // Check if the node is viable for the transfer.
85104 $ node = $ this ->nodeRepository ->getNodeWithResourceUsage ($ node_id );
86105 if ($ node ->isViable ($ server ->memory , $ server ->disk )) {
87- // TODO: Run TransferJob.
88- $ this ->dispatcher ->dispatch (new TransferJob ($ server , $ node , $ allocation_id , $ additional_allocations ));
106+ // Suspend the server and request an archive to be created.
107+ // $this->suspensionService->toggle($server, 'suspend');
108+ $ this ->transferService ->requestArchive ($ server );
89109
90110 $ this ->alert ->success (trans ('admin/server.alerts.transfer_started ' ))->flash ();
91111 } else {
0 commit comments