2626
2727use Log ;
2828use Alert ;
29+ use Prologue \Alerts \AlertsMessageBag ;
30+ use Pterodactyl \Contracts \Repository \PackRepositoryInterface ;
31+ use Pterodactyl \Services \Packs \PackCreationService ;
32+ use Pterodactyl \Services \Packs \PackDeletionService ;
33+ use Pterodactyl \Services \Packs \PackUpdateService ;
34+ use Pterodactyl \Services \Packs \TemplateUploadService ;
2935use Storage ;
3036use Illuminate \Http \Request ;
3137use Pterodactyl \Models \Pack ;
3743
3844class PackController extends Controller
3945{
46+ /**
47+ * @var \Prologue\Alerts\AlertsMessageBag
48+ */
49+ protected $ alert ;
50+
51+ /**
52+ * @var \Pterodactyl\Services\Packs\PackCreationService
53+ */
54+ protected $ creationService ;
55+
56+ /**
57+ * @var \Pterodactyl\Services\Packs\PackDeletionService
58+ */
59+ protected $ deletionService ;
60+
61+ /**
62+ * @var \Pterodactyl\Contracts\Repository\PackRepositoryInterface
63+ */
64+ protected $ repository ;
65+
66+ /**
67+ * @var \Pterodactyl\Services\Packs\PackUpdateService
68+ */
69+ protected $ packUpdateService ;
70+
71+ /**
72+ * @var \Pterodactyl\Services\Packs\TemplateUploadService
73+ */
74+ protected $ templateUploadService ;
75+
76+ /**
77+ * PackController constructor.
78+ *
79+ * @param \Prologue\Alerts\AlertsMessageBag $alert
80+ * @param \Pterodactyl\Services\Packs\PackCreationService $creationService
81+ * @param \Pterodactyl\Services\Packs\PackDeletionService $deletionService
82+ * @param \Pterodactyl\Contracts\Repository\PackRepositoryInterface $repository
83+ * @param \Pterodactyl\Services\Packs\PackUpdateService $packUpdateService
84+ * @param \Pterodactyl\Services\Packs\TemplateUploadService $templateUploadService
85+ */
86+ public function __construct (
87+ AlertsMessageBag $ alert ,
88+ PackCreationService $ creationService ,
89+ PackDeletionService $ deletionService ,
90+ PackRepositoryInterface $ repository ,
91+ PackUpdateService $ packUpdateService ,
92+ TemplateUploadService $ templateUploadService
93+ ) {
94+ $ this ->alert = $ alert ;
95+ $ this ->creationService = $ creationService ;
96+ $ this ->deletionService = $ deletionService ;
97+ $ this ->repository = $ repository ;
98+ $ this ->packUpdateService = $ packUpdateService ;
99+ $ this ->templateUploadService = $ templateUploadService ;
100+ }
101+
40102 /**
41103 * Display listing of all packs on the system.
42104 *
43- * @param \Illuminate\Http\Request $request
105+ * @param \Illuminate\Http\Request $request
44106 * @return \Illuminate\View\View
45107 */
46108 public function index (Request $ request )
@@ -57,7 +119,7 @@ public function index(Request $request)
57119 /**
58120 * Display new pack creation form.
59121 *
60- * @param \Illuminate\Http\Request $request
122+ * @param \Illuminate\Http\Request $request
61123 * @return \Illuminate\View\View
62124 */
63125 public function create (Request $ request )
@@ -70,7 +132,7 @@ public function create(Request $request)
70132 /**
71133 * Display new pack creation modal for use with template upload.
72134 *
73- * @param \Illuminate\Http\Request $request
135+ * @param \Illuminate\Http\Request $request
74136 * @return \Illuminate\View\View
75137 */
76138 public function newTemplate (Request $ request )
@@ -83,42 +145,34 @@ public function newTemplate(Request $request)
83145 /**
84146 * Handle create pack request and route user to location.
85147 *
86- * @param \Illuminate\Http\Request $request
148+ * @param \Illuminate\Http\Request $request
87149 * @return \Illuminate\View\View
150+ *
151+ * @throws \Pterodactyl\Exceptions\Model\DataValidationException
152+ * @throws \Pterodactyl\Exceptions\Service\Pack\InvalidFileMimeTypeException
153+ * @throws \Pterodactyl\Exceptions\Service\Pack\InvalidFileUploadException
154+ * @throws \Pterodactyl\Exceptions\Service\Pack\InvalidPackArchiveFormatException
155+ * @throws \Pterodactyl\Exceptions\Service\Pack\UnreadableZipArchiveException
156+ * @throws \Pterodactyl\Exceptions\Service\Pack\ZipExtractionException
88157 */
89158 public function store (Request $ request )
90159 {
91- $ repo = new PackRepository ;
92-
93- try {
94- if ($ request ->input ('action ' ) === 'from_template ' ) {
95- $ pack = $ repo ->createWithTemplate ($ request ->intersect (['option_id ' , 'file_upload ' ]));
96- } else {
97- $ pack = $ repo ->create ($ request ->intersect ([
98- 'name ' , 'description ' , 'version ' , 'option_id ' ,
99- 'selectable ' , 'visible ' , 'locked ' , 'file_upload ' ,
100- ]));
101- }
102- Alert::success ('Pack successfully created on the system. ' )->flash ();
103-
104- return redirect ()->route ('admin.packs.view ' , $ pack ->id );
105- } catch (DisplayValidationException $ ex ) {
106- return redirect ()->route ('admin.packs.new ' )->withErrors (json_decode ($ ex ->getMessage ()))->withInput ();
107- } catch (DisplayException $ ex ) {
108- Alert::danger ($ ex ->getMessage ())->flash ();
109- } catch (\Exception $ ex ) {
110- Log::error ($ ex );
111- Alert::danger ('An error occured while attempting to add a new service pack. This error has been logged. ' )->flash ();
160+ if ($ request ->has ('from_template ' )) {
161+ $ pack = $ this ->templateUploadService ->handle ($ request ->input ('option_id ' ), $ request ->input ('file_upload ' ));
162+ } else {
163+ $ pack = $ this ->creationService ->handle ($ request ->normalize (), $ request ->input ('file_upload ' ));
112164 }
113165
114- return redirect ()->route ('admin.packs.new ' )->withInput ();
166+ $ this ->alert ->success (trans ('admin/pack.notices.pack_created ' ))->flash ();
167+
168+ return redirect ()->route ('admin.packs.view ' , $ pack ->id );
115169 }
116170
117171 /**
118172 * Display pack view template to user.
119173 *
120- * @param \Illuminate\Http\Request $request
121- * @param int $id
174+ * @param \Illuminate\Http\Request $request
175+ * @param int $id
122176 * @return \Illuminate\View\View
123177 */
124178 public function view (Request $ request , $ id )
@@ -132,8 +186,8 @@ public function view(Request $request, $id)
132186 /**
133187 * Handle updating or deleting pack information.
134188 *
135- * @param \Illuminate\Http\Request $request
136- * @param int $id
189+ * @param \Illuminate\Http\Request $request
190+ * @param int $id
137191 * @return \Illuminate\Http\RedirectResponse
138192 */
139193 public function update (Request $ request , $ id )
@@ -168,9 +222,9 @@ public function update(Request $request, $id)
168222 /**
169223 * Creates an archive of the pack and downloads it to the browser.
170224 *
171- * @param \Illuminate\Http\Request $request
172- * @param int $id
173- * @param bool $files
225+ * @param \Illuminate\Http\Request $request
226+ * @param int $id
227+ * @param bool $files
174228 * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
175229 */
176230 public function export (Request $ request , $ id , $ files = false )
0 commit comments