From 319a9b7d88336e058cdbe71adae22a8289e86ce6 Mon Sep 17 00:00:00 2001
From: Francisco Salazar <batpaxo@gmail.com>
Date: Tue, 17 Jul 2018 14:30:34 -0500
Subject: [PATCH] validate slug, validate images, validate resources

---
 src/controllers/AdminProductController.php |  6 ++++--
 src/requests/RequestCategory.php           | 10 ++++++++--
 src/requests/RequestGallery.php            | 31 +++++++++++++++++++++++++++++++
 src/requests/RequestProduct.php            | 10 ++++++++--
 src/requests/RequestResource.php           | 31 +++++++++++++++++++++++++++++++
 src/routes.php                             |  2 +-
 6 files changed, 83 insertions(+), 7 deletions(-)
 create mode 100644 src/requests/RequestGallery.php
 create mode 100644 src/requests/RequestResource.php

diff --git a/src/controllers/AdminProductController.php b/src/controllers/AdminProductController.php
index 6da27fa..48cf6ab 100644
--- a/src/controllers/AdminProductController.php
+++ b/src/controllers/AdminProductController.php
@@ -13,6 +13,8 @@ use Onestartup\ProductResource\Model\ProductResource as Product;
 use Onestartup\ProductResource\Model\ExtraFieldResource as Extra;
 
 use Onestartup\ProductResource\Requests\RequestProduct;
+use Onestartup\ProductResource\Requests\RequestGallery;
+use Onestartup\ProductResource\Requests\RequestResource;
 
 class AdminProductController extends Controller
 {
@@ -160,7 +162,7 @@ class AdminProductController extends Controller
         
     }
 
-    public function storeGallery(Request $request, $product_id)
+    public function storeGallery(RequestGallery $request, $product_id)
     {
         $product = Product::find($product_id);
 
@@ -199,7 +201,7 @@ class AdminProductController extends Controller
 
     }
 
-    public function storeResource(Request $request, $product_id)
+    public function storeResource(RequestResource $request, $product_id)
     {
         $product = Product::find($product_id);
 
diff --git a/src/requests/RequestCategory.php b/src/requests/RequestCategory.php
index e0acabd..f2e2168 100644
--- a/src/requests/RequestCategory.php
+++ b/src/requests/RequestCategory.php
@@ -23,11 +23,17 @@ class RequestCategory extends FormRequest
      */
     public function rules()
     {
+        if ($this->get("_method") == "PUT" || $this->get("_method") == "PATCH"){
+            $slug = 'required|max:255|unique:product_categories_resource,slug,'.$this->route("category");
+        }else{  
+            $slug = 'required|max:255|unique:product_categories_resource,slug';
+        }   
         return [
             'name' => 'required|max:355',
-            'slug' => 'required|max:255',
+            'slug' => $slug,
             'description'=> 'max:455',
-            'active' => 'required'
+            'active' => 'required',
+            'portada' => 'image'
         ];
     }
 }
\ No newline at end of file
diff --git a/src/requests/RequestGallery.php b/src/requests/RequestGallery.php
new file mode 100644
index 0000000..9830686
--- /dev/null
+++ b/src/requests/RequestGallery.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Onestartup\ProductResource\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class RequestGallery extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+ 
+        return [
+            'file.*' => 'image'
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/requests/RequestProduct.php b/src/requests/RequestProduct.php
index 6ad6dc2..2f7d968 100644
--- a/src/requests/RequestProduct.php
+++ b/src/requests/RequestProduct.php
@@ -23,9 +23,14 @@ class RequestProduct extends FormRequest
      */
     public function rules()
     {
+        if ($this->get("_method") == "PUT" || $this->get("_method") == "PATCH"){
+            $slug = 'required|max:455|unique:products_resource,slug,'.$this->route("product");
+        }else{  
+            $slug = 'required|max:455|unique:products_resource,slug';
+        }   
         return [
             'name' => 'required|max:355',
-            'slug' => 'required|max:455',
+            'slug' => $slug,
             'description'=> 'required',
             'active' => 'required|boolean',
             'publication_date' => 'required',
@@ -39,7 +44,8 @@ class RequestProduct extends FormRequest
             'extra8' => 'max:455',
             'extra9' => 'max:455',
             'extra10' => 'max:455',
-            'category_id' => 'required|numeric'
+            'category_id' => 'required|numeric',
+            'cover' => 'image'
         ];
     }
 }
\ No newline at end of file
diff --git a/src/requests/RequestResource.php b/src/requests/RequestResource.php
new file mode 100644
index 0000000..d798bb7
--- /dev/null
+++ b/src/requests/RequestResource.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Onestartup\ProductResource\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class RequestResource extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+ 
+        return [
+            'file.*' => 'mimes:pdf,doc,docx,xls,xlsx,ppt,pptx'
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/routes.php b/src/routes.php
index aeadbd9..e299a2c 100644
--- a/src/routes.php
+++ b/src/routes.php
@@ -9,7 +9,7 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
 	
 	Route::resource('admin/product_resources/category', 'Onestartup\ProductResource\Controller\CategoryController', ['as'=>'admin.product_resources']);
 	
-	Route::delete('delete/cover/category/product/{id}', 'Onestartup\ProductResource\Controller\CategoryController@deleteCover')
+	Route::delete('delete/cover/category/product_resource/{id}', 'Onestartup\ProductResource\Controller\CategoryController@deleteCover')
 		->name('delete.cover.category.product_resources');
 	
 	Route::get('admin/product_resources/datatable', 'Onestartup\ProductResource\Controller\AdminProductController@getProducts')
--
libgit2 0.26.0