88use SystemInc \LaravelAdmin \Gallery ;
99use SystemInc \LaravelAdmin \Product ;
1010use SystemInc \LaravelAdmin \ProductCategory ;
11+ use SystemInc \LaravelAdmin \ProductVariation ;
1112use SystemInc \LaravelAdmin \SimilarProduct ;
1213use SystemInc \LaravelAdmin \Traits \HelpersTrait ;
1314use SystemInc \LaravelAdmin \Validations \ProductValidation ;
15+ use SystemInc \LaravelAdmin \Validations \ProductVariationValidation ;
1416use Validator ;
1517
1618class ProductsController extends Controller
@@ -82,6 +84,9 @@ public function postSave(Request $request, $product_id)
8284 if ($ request ->hasFile ('thumb ' )) {
8385 $ product ->thumb = $ this ->saveImage ($ request ->file ('thumb ' ), 'products ' );
8486 }
87+ if ($ request ->hasFile ('image ' )) {
88+ $ product ->image = $ this ->saveImage ($ request ->file ('image ' ), 'products ' );
89+ }
8590 if ($ request ->hasFile ('pdf ' )) {
8691 $ product ->pdf = $ this ->uploadPdf ($ request ->file ('pdf ' ), 'products ' );
8792 }
@@ -94,6 +99,14 @@ public function postSave(Request $request, $product_id)
9499 $ product ->thumb = null ;
95100 }
96101
102+ if (!empty ($ request ->delete_image )) {
103+ if (Storage::exists ($ product ->image )) {
104+ Storage::delete ($ product ->image );
105+ }
106+
107+ $ product ->image = null ;
108+ }
109+
97110 if (!empty ($ request ->delete_pdf )) {
98111 $ product ->pdf = $ this ->removePdf ($ product ->pdf );
99112 }
@@ -197,4 +210,84 @@ private function createNewGalleryForProduct($product)
197210
198211 return true ;
199212 }
213+
214+ public function getAddVariation ($ product_id )
215+ {
216+ return view ('admin::products.addvariation ' , compact ('product_id ' ));
217+ }
218+
219+ public function postSaveVariation (Request $ request , $ product_id )
220+ {
221+ // validation
222+ $ validation = Validator::make ($ request ->all (), ProductVariationValidation::rules (), ProductVariationValidation::messages ());
223+
224+ if ($ validation ->fails ()) {
225+ return back ()->withInput ()->withErrors ($ validation );
226+ }
227+
228+ $ variation = new ProductVariation ();
229+
230+ $ variation ->fill ($ request ->all ());
231+
232+ if ($ request ->hasFile ('image ' )) {
233+ $ variation ->image = $ this ->saveImage ($ request ->file ('image ' ), 'products ' );
234+ }
235+
236+ $ variation ->price = !empty ($ request ->price ) ? $ request ->price : 0 ;
237+ $ variation ->product_id = $ product_id ;
238+ $ variation ->save ();
239+
240+ return redirect ($ request ->segment (1 ).'/shop/products/edit/ ' .$ product_id )->with ('success ' , 'Added variation ' );
241+ }
242+
243+ public function getEditVariation ($ variation_id )
244+ {
245+ $ variation = ProductVariation::find ($ variation_id );
246+
247+ return view ('admin::products.editvariation ' , compact ('variation ' ));
248+ }
249+
250+ public function postUpdateVariation (Request $ request , $ variation_id )
251+ {
252+ // validation
253+ $ validation = Validator::make ($ request ->all (), ProductVariationValidation::rules (), ProductVariationValidation::messages ());
254+
255+ if ($ validation ->fails ()) {
256+ return back ()->withInput ()->withErrors ($ validation );
257+ }
258+
259+ $ variation = ProductVariation::find ($ variation_id );
260+ $ variation ->update ($ request ->all ());
261+
262+ if ($ request ->hasFile ('image ' )) {
263+ $ variation ->image = $ this ->saveImage ($ request ->file ('image ' ), 'products ' );
264+ }
265+
266+ if (!empty ($ request ->delete_image )) {
267+ if (Storage::exists ($ variation ->image )) {
268+ Storage::delete ($ variation ->image );
269+ }
270+
271+ $ variation ->image = null ;
272+ }
273+ $ variation ->price = !empty ($ request ->price ) ? $ request ->price : 0 ;
274+ $ variation ->save ();
275+
276+ return back ()->with ('success ' , 'Saved variation ' );
277+ }
278+
279+ public function getDeleteVariation ($ variation_id )
280+ {
281+ $ variation = ProductVariation::find ($ variation_id );
282+
283+ if (!empty ($ variation ->image )) {
284+ if (Storage::exists ($ variation ->image )) {
285+ Storage::delete ($ variation ->image );
286+ }
287+ }
288+
289+ $ variation ->delete ();
290+
291+ return back ()->with ('success ' , 'Deleted variation ' );
292+ }
200293}
0 commit comments