Эх сурвалжийг харах

edit filde product and view next create back to page edit

azam 5 жил өмнө
parent
commit
3a5d0519df

+ 4 - 0
app/User.php

@@ -77,4 +77,8 @@ class User extends Authenticatable implements MustVerifyEmail
     {
         $this->notify(new VerifyEmailNotification);
     }
+    public function product()
+    {
+        return $this->belongsTo(User::class);
+    }
 }

+ 20 - 46
packages/product/src/Http/Controllers/ProductController.php

@@ -3,6 +3,7 @@
 namespace Packages\Product\Http\Controllers;
 
 use App\Http\Controllers\Controller;
+use Packages\Product\Models\User;
 use Packages\Product\Models\Product;
 use Illuminate\Http\Request;
 
@@ -10,7 +11,7 @@ class ProductController extends Controller
 {
     public function __construct()
     {
-        $this->middleware('auth');
+
     }
 
 //  show  page product ************
@@ -36,13 +37,18 @@ class ProductController extends Controller
 
     public function store(Request $request)
     {
+        $validatedData= $request->validate([
+            'title' => 'required|max:100',
+
+            'type' => 'required',
 
-        // dd($request->all());
-        $p = Product::create($request->all());
+        ]);
+        $data = array_merge($request->all(),['creator_id'=>auth()->user()->id]);
+        $product = Product::create($data);
 
 
         $msg = 'ذخیره محصول با موفقیت انجام شد ';
-        return redirect(route('products.index'))->with('success', $msg);
+        return redirect(route('products.edit', $product->id))->with('success', $msg);
     }
 
     // edit page product
@@ -50,26 +56,24 @@ class ProductController extends Controller
     public function edit(Product $product)
     {
 
-        $products = Product::orderBy('id', 'DESC')->paginate(20);
-
-        return view('product::product.edit', compact('products'));
+        return view('product::product.edit', compact('product'));
     }
 
 // update page product
 
     public function update(Request $request, Product $product)
     {
-        try {
+        $validatedData= $request->validate([
+            'title' => 'required|max:100',
+
+            'type' => 'required',
+
+        ]);
+        $data = array_merge($request->all(),['creator_id'=>auth()->user()->id]);
             $product->update($request->all());
 
-        } catch (\Exception $exception) {
-            switch ($exception->getCode()) {
-                case 23000:
-                    $msg = 'عنوان وارد شده تکراری است';
-            }
-            return redirect(route('products.index'))->with('warning', $msg);
-        }
-        $msg = 'ذخیره محصول با موفقیت انجام شد ';
+
+        $msg = 'ویرایش محصول با موفقیت انجام شد ';
         return redirect(route('products.index'))->with('success', $msg);
     }
 
@@ -83,35 +87,5 @@ class ProductController extends Controller
         }
     }
 
-    // status product ****************
 
-    public function updatestatus(Product $product)
-    {
-
-        if ($product->status == 1) {
-            $product->status = 0;
-        } else {
-            $product->status = 1;
-        }
-        $product->save();
-        $msg = "ویرایش محصول با موفقیت انجام شد";
-        return back()->with('success', $msg);
-
-
-    }
-
-    // type product  *******************************
-
-    public function updatetype(Product $product)
-    {
-        //
-        if ($product->type == 1) {
-            $product->type = 0;
-        } else {
-            $product->type = 1;
-        }
-        $product->save();
-        $msg = "ویرایش محصول با موفقیت انجام شد";
-        return back()->with('success', $msg);
-    }
 }

+ 6 - 0
packages/product/src/Models/Category.php

@@ -15,5 +15,11 @@ class Category extends Model
     {
         return $this->belongsTo(User::class);
     }
+    protected $attributes = [
+        'parent' => 0,
+        
+
+
+    ];
 
 }

+ 38 - 6
packages/product/src/Models/Product.php

@@ -3,6 +3,7 @@
 namespace Packages\Product\Models;
 
 use Illuminate\Database\Eloquent\Model;
+use App\User;
 use Illuminate\Database\Eloquent\SoftDeletes;
 
 class Product extends Model
@@ -16,15 +17,46 @@ class Product extends Model
         return $this->belongsTo(User::class);
     }
 
-    public function Category()
+    public function category()
     {
-        return $this->belongsTo(Category::class);
+        return $this->belongsToMany(Category::class);
     }
 
-    protected $attributes = [
-        'status' => 0,
-        'type' => 0,
 
+    public function getTypeAttribute($value)
+    {
+
+        switch ($value) {
+            case 0:
+                $type= 'ساده';
+    break;
+            case 1:
+                $type= 'متغیر';
+    break;
+            case 2:
+                $type= 'باندل';
+    break;
+
+            default:
+                $type='';
+
+        }
+        return $type;
+    }public function getStatusAttribute($value)
+    {
 
-    ];
+        switch ($value) {
+            case 0:
+                $type= 'ناموجود';
+            break;
+            case 1:
+                $type= 'موجود';
+            break;
+
+            default:
+                $type='';
+
+        }
+        return $type;
+    }
 }

+ 2 - 2
packages/product/src/database/migrations/2020_06_15_061100_create_products_table.php

@@ -17,7 +17,7 @@ class CreateProductsTable extends Migration
             $table->id();
             $table->string('title');
             $table->string('discription');
-            $table->string('slug')->unique();
+            $table->string('slug')->unique()->nullable();
             $table->string('price');
             $table->string('sale_price');
             $table->string('creator_id');
@@ -25,7 +25,7 @@ class CreateProductsTable extends Migration
             $table->string('sku');
             $table->string('status')->default("0");
             // $table->enum('status', ['0', '1'])->default("0");
-            
+
             $table->timestamps();
             $table->softDeletes();
         });

+ 0 - 22
packages/product/src/views/components/collapse-card.blade.php

@@ -1,22 +0,0 @@
-<div id="accordion" class="accordion">
-    <div class="container">
-        <div class="card">
-            <div class="card-header pb-2 bg-white border-bottom-0" id="headingOne">
-                <div class="mb-0 row">
-                    <div class="col-12 accordion-head">
-                        <a class="text-primary pr-0 mb-0" id="headingOne" data-toggle="collapse" data-target="#collapse-content" aria-expanded="true"
-                           aria-controls="collapse-content" style="font-weight: bold;cursor: pointer">
-                            <i class="fa fa-minus float-left" aria-hidden="true"></i>
-                        </a>
-                        <span class="mb-0 text-primary"><strong>{{ $title }}</strong></span>
-                    </div>
-                </div>
-            </div>
-            <div id="collapse-content" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
-                <div class="card-body">
-                    {{ $body }}
-                </div>
-            </div>
-        </div>
-    </div>
-</div>

+ 0 - 13
packages/product/src/views/components/collapse-search.blade.php

@@ -1,13 +0,0 @@
-<div id="search-collapse" class="accordion">
-    <div class="card mb-0">
-        <div class="card-header collapsed text-primary cursor-pointer py-2" data-toggle="collapse" aria-expanded="false" data-target="#collapse-search-content">
-            <i class="fa fa-filter"></i>
-            <span class="card-title"> جستجو </span>
-        </div>
-        <div id="collapse-search-content" class="card-body p-0 collapse" aria-labelledby="collapse-search-content" data-parent="#search-collapse">
-            <div class="card-body m-2">
-                {{ $form }}
-            </div>
-        </div>
-    </div>
-</div>

+ 29 - 0
packages/product/src/views/components/message.blade.php

@@ -0,0 +1,29 @@
+{{--error--}}
+@if($errors->any())
+    <div class="alert alert-dismissible alert-danger">
+        <button class="close" type="button" data-dismiss="alert">×</button>
+        <ul>
+            @foreach($errors->all() as $error)
+                <li>
+                    {{$error}}
+                </li>
+            @endforeach
+
+        </ul>
+    </div>
+@endif()
+
+{{--save message--}}
+@if(session('success'))
+    <div class="alert alert-dismissible alert-success">
+        <button class="close" type="button" data-dismiss="alert">×</button>
+        {{session('success')}}
+    </div>
+@endif
+@if(session('warning'))
+
+    <div class="alert alert-dismissible alert-danger">
+        <button class="close" type="button" data-dismiss="alert">×</button>
+        یک خطا رخ داده است:{{session('warning')}}
+    </div>
+@endif

+ 0 - 20
packages/product/src/views/components/modal.blade.php

@@ -1,20 +0,0 @@
-
-<div class="modal fade" id="modal-component" tabindex="-1" role="dialog" aria-labelledby="modal-component-label" aria-hidden="true">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title text-primary" id="modal-component-label">{{ $title }}</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body text-primary">
-                {{ $body }}
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">بستن</button>
-                {{ $footer }}
-            </div>
-        </div>
-    </div>
-</div>

+ 0 - 10
packages/product/src/views/components/table.blade.php

@@ -1,10 +0,0 @@
-<div class="table-responsive pt-3 pb-3">
-    <table class="table table-sm table-bordered table-hover">
-        <thead class="text-primary">
-            {{ $thead }}
-        </thead>
-        <tbody>
-            {{ $tbody }}
-        </tbody>
-    </table>
-</div>

+ 8 - 31
packages/product/src/views/index.blade.php

@@ -29,7 +29,8 @@
                                 </form>
                             @endslot
                         @endcomponent
-
+                        @component('product::components.message')
+                        @endcomponent
                         <div class="mt-4">
                             <a href="{{ route('products.create') }}" type="button" class="btn btn-primary"><i
                                     class="fa fa-plus"></i> ایجاد محصول</a>
@@ -54,33 +55,7 @@
                             @endslot
                             @slot('tbody')
                                 @forelse ($products as $product)
-                                    @switch($product->status)
-                                        @case(1)
-                                        @php
-                                            $url=route('products.status',$product->id) ;
-                                            $status = ' <a href="'.$url.'" class="badge badge-success">موجود</a>' @endphp
-                                        @break
-                                        @case(0)
-                                        @php
-                                            $url=route('products.status',$product->id) ;
-                                            $status = ' <a href="'.$url.'" class="badge badge-warning">ناموجود</a>' @endphp
-                                        @break
-                                        @default
-                                    @endswitch
-                                    {{-- type product --}}
-                                    @switch($product->type)
-                                        @case(1)
-                                        @php
-                                            $url=route('products.type',$product->id) ;
-                                            $type = ' <a href="'.$url.'" class="badge badge-success">اصلی</a>' @endphp
-                                        @break
-                                        @case(0)
-                                        @php
-                                            $url=route('products.type',$product->id) ;
-                                            $type = ' <a href="'.$url.'" class="badge badge-warning">فرعی</a>' @endphp
-                                        @break
-                                        @default
-                                    @endswitch
+
                                     <tr>
                                         <td>
                                             {{$product->id}}
@@ -101,13 +76,15 @@
                                             {{$product->sale_price}}
                                         </td>
                                         <td>
-                                            {{$product->creator_id}}
+                                            {{--                                            {{$product->user->username}}--}}
                                         </td>
                                         <td>
-                                            {!!$status!!}
+                                            {{$product->status}}
+
                                         </td>
                                         <td>
-                                            {!!$type!!}
+                                            {{$product->type}}
+                                            {{--                                            {!!$type!!}--}}
                                         </td>
                                         <td><?php  echo mb_substr(strip_tags($product->discription), 0, 15, 'UTF8') . '...'?></td>
                                         <td class="d-flex">

+ 32 - 47
packages/product/src/views/product/create.blade.php

@@ -10,6 +10,12 @@
 
                 background-color: hsl(315, 22%, 86%);
             }
+            .required{
+                color:red;
+            }
+             .py-5 {
+                 padding-top: 0 !important;
+            }
         </style>
     @endslot
     @slot('subject')
@@ -23,8 +29,8 @@
     @slot('content')
         <div class="auth-background h-auto py-5">
             <div class="container py-5">
-                <div class="row align-items-center">
-                    <div class="col-lg-8 col-md-10 mx-auto">
+                <div class="row align-items-center ">
+                    <div class="col-lg-11 col-md-11 mx-auto">
                         <div class="card">
                             <div class="card-header"><strong>{{ __('ثبت محصول جدید') }}</strong></div>
 
@@ -33,7 +39,7 @@
                                     @csrf
 
                                     <div class="form-group">
-                                        <label for="title">{{ __('نام محصول جدید') }}</label>
+                                        <label for="title">{{ __('نام محصول ') }}</label><i class="required">&nbsp; *</i>
                                         <input id="title" type="text"
                                                class="form-control @error('title') is-invalid @enderror" name="title"
                                                value="{{ old('title') }}" required autocomplete="title" autofocus>
@@ -47,22 +53,28 @@
                                     </div>
 
                                     <div class="form-group">
-                                        <label for="slug">  {{ __('نام مستعار محصول  ') }}</label>
-                                        <input id="slug" type="text"
-                                               class="form-control @error('slug') is-invalid @enderror"
-                                               name="slug" value="{{ old('slug') }}" required
-                                               autocomplete="slug" autofocus>
-
+                                        <label for="title">نام مستعار جدید</label>
+                                        <input type="text" name="slug"
+                                               class="form-control @error('slug') is-invalid  @enderror"
+                                               value="{{old('slug')}}">
                                         @error('slug')
+                                        <div class="alert alert-danger">{{$message}}</div>
+                                        @enderror
+                                    </div>
+                                    <div class="form-group">
+                                        <label for="sku">{{ __(' sku  ') }}</label> <i class="required">&nbsp; *</i>
+                                        <input id="sku" type="text"
+                                               class="form-control @error('sku') is-invalid @enderror" name="sku"
+                                               required autocomplete="sku" value="{{ old('sku') }}">
+
+                                        @error('sku')
                                         <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
                                         @enderror
-
                                     </div>
-
                                     <div class="form-group">
-                                        <label for="price">  {{ __('قیمت محصول ') }}</label>
+                                        <label for="price">  {{ __('قیمت  ') }}</label> <i class="required">&nbsp; *</i>
                                         <input id="price" type="text"
                                                class="form-control @error('price') is-invalid @enderror" name="price"
                                                value="{{ old('price') }}" required autocomplete="price" autofocus>
@@ -75,11 +87,11 @@
                                     </div>
 
                                     <div class="form-group">
-                                        <label for="sale_price">{{ __('قیمت فروش') }}</label>
-                                        <input id="sale_price" type="sale_price"
+                                        <label for="sale_price">{{ __('  قیمت فروش ویژه') }}</label>
+                                        <input id="sale_price" type="text"
                                                class="form-control @error('sale_price') is-invalid @enderror"
                                                name="sale_price"
-                                               value="{{ old('sale_price') }}" required autocomplete="sale_price">
+                                               value="{{ old('sale_price') }}" autocomplete="sale_price">
 
                                         @error('sale_price')
                                         <span class="invalid-feedback" role="alert">
@@ -93,8 +105,9 @@
                                         <select id="type" type="text"
                                                 class="form-control @error('type') is-invalid @enderror" name="type"
                                                 required autocomplete="type">
-                                            <option value="1">اصلی</option>
-                                            <option value="0">فرعی</option>
+                                            <option value="0">ساده</option>
+                                            <option value="1">متغیر</option>
+                                            <option value="2">باندل</option>
                                         </select>
 
                                         @error('type')
@@ -105,7 +118,7 @@
                                     </div>
 
                                     <div class="form-group">
-                                        <label for="status">{{ __(' وضعیت محصول') }}</label>
+                                        <label for="status">{{ __(' وضعیت محصول') }}</label><i class="required">&nbsp; *</i>
                                         <select id="status" type="text"
                                                 class="form-control @error('status') is-invalid @enderror" name="status"
                                                 value="{{ old('status') }}" required autocomplete="status">
@@ -126,7 +139,7 @@
                                         <textarea id="discription" type="text"
                                                   class="form-control @error('discription') is-invalid @enderror"
                                                   name="discription"
-                                                  required
+
                                                   autocomplete="discription">{{ old('discription') }}</textarea>
 
                                         @error('discription')
@@ -135,34 +148,6 @@
                                         </span>
                                         @enderror
                                     </div>
-                                    <div class="form-group">
-                                        <label for="sku">{{ __(' کد  محصول') }}</label>
-                                        <textarea id="sku" type="text"
-                                                  class="form-control @error('sku') is-invalid @enderror" name="sku"
-                                                  required autocomplete="sku">{{ old('sku') }}</textarea>
-
-                                        @error('sku')
-                                        <span class="invalid-feedback" role="alert">
-                                            <strong>{{ $message }}</strong>
-                                        </span>
-                                        @enderror
-                                    </div>
-
-                                    <div class="form-group">
-                                        <label for="creator_id">{{ __(' نام ثبت کننده محصول') }}</label>
-                                        <input id="creator_id" type="text"
-                                               class="form-control @error('creator_id') is-invalid @enderror"
-                                               name="creator_id"
-                                               value="{{ auth()->user()->name }}" required autocomplete="creator_id"
-                                               readonly>
-
-                                        @error('creator_id')
-                                        <span class="invalid-feedback" role="alert">
-                                            <strong>{{ $message }}</strong>
-                                        </span>
-                                        @enderror
-                                    </div>
-
                                     <div class="form-group mb-0">
                                         <div class="">
                                             <button type="submit" class="btn btn-primary">

+ 24 - 19
packages/product/src/views/product/edit.blade.php

@@ -10,6 +10,12 @@
 
                 background-color: hsl(315, 22%, 86%);
             }
+            .required{
+                color:red;
+            }
+            .py-5 {
+                padding-top: 0 !important;
+            }
         </style>
     @endslot
     @slot('subject')
@@ -24,10 +30,10 @@
         <div class="auth-background h-auto py-5">
             <div class="container py-5">
                 <div class="row align-items-center">
-                    <div class="col-lg-8 col-md-10 mx-auto">
+                    <div class="col-lg-11 col-md-11 mx-auto">
                         <div class="card">
                             <div class="card-header"><strong>{{ __('ثبت محصول جدید') }}</strong></div>
-                            @foreach ($products as $product)
+
 
 
                                 <div class="card-body mx-lg-5 px-lg-3">
@@ -38,7 +44,7 @@
                                         @endif
 
                                         <div class="form-group">
-                                            <label for="title">{{ __('نام محصول جدید') }}</label>
+                                            <label for="title">{{ __('نام محصول جدید') }}</label><i class="required">&nbsp; *</i>
                                             <input id="title" type="text"
                                                    class="form-control @error('title') is-invalid @enderror"
                                                    name="title"
@@ -53,11 +59,11 @@
                                         </div>
 
                                         <div class="form-group">
-                                            <label for="slug">  {{ __('نام مستعار محصول  ') }}</label>
+                                            <label for="slug">  {{ __('slug  ') }}</label>
                                             <input id="slug" type="text"
                                                    class="form-control @error('slug') is-invalid @enderror"
-                                                   name="slug" value="{{$product->slug}}" required
-                                                   autocomplete="slug" autofocus>
+                                                   name="slug" value="{{$product->slug}}"
+                                                   required autocomplete="slug" autofocus>
 
                                             @error('slug')
                                             <span class="invalid-feedback" role="alert">
@@ -67,7 +73,7 @@
 
                                         </div>
                                         <div class="form-group">
-                                            <label for="sku">  {{ __(' کد محصول  ') }}</label>
+                                            <label for="sku">  {{ __(' sku  ') }}</label><i class="required">&nbsp; *</i>
                                             <input id="sku" type="text"
                                                    class="form-control @error('sku') is-invalid @enderror"
                                                    name="sku" value="{{$product->sku}}" required
@@ -82,7 +88,7 @@
                                         </div>
 
                                         <div class="form-group">
-                                            <label for="price">  {{ __('قیمت محصول ') }}</label>
+                                            <label for="price">  {{ __('قیمت  ') }}</label><i class="required">&nbsp; *</i>
                                             <input id="price" type="text"
                                                    class="form-control @error('price') is-invalid @enderror"
                                                    name="price"
@@ -96,7 +102,7 @@
                                         </div>
 
                                         <div class="form-group">
-                                            <label for="sale_price">{{ __('قیمت فروش') }}</label>
+                                            <label for="sale_price">{{ __(' قیمت فروش ویژه') }}</label><i class="required">&nbsp; *</i>
                                             <input id="sale_price" type="sale_price"
                                                    class="form-control @error('sale_price') is-invalid @enderror"
                                                    name="sale_price"
@@ -110,14 +116,13 @@
                                         </div>
 
                                         <div class="form-group">
-                                            <label for="type">{{ __(' نوع محصول') }}</label>
+                                            <label for="type">{{ __(' نوع محصول') }}</label><i class="required">&nbsp; *</i>
                                             <select id="type" type="text"
                                                     class="form-control @error('type') is-invalid @enderror" name="type"
                                                     required autocomplete="type">
-                                                <option value="0">فرعی</option>
-                                                <option value="1" <?php if ($product->type == 1) echo 'selected'?> >
-                                                    اصلی
-                                                </option>
+                                                <option value="0" @if($product->type==='ساده') selected='selected' @endif>ساده</option>
+                                                <option value="1" @if($product->type==='متغیر') selected='selected' @endif>متغیر</option>
+                                                <option value="2" @if($product->type==='باندل') selected='selected' @endif>باندل</option>
                                             </select>
 
                                             @error('sku')
@@ -152,7 +157,7 @@
                                             <textarea id="discription" type="text"
                                                       class="form-control @error('discription') is-invalid @enderror"
                                                       name="discription"
-                                                      required
+
                                                       autocomplete="discription">{{$product->discription}}</textarea>
 
                                             @error('discription')
@@ -163,12 +168,12 @@
                                         </div>
 
                                         <div class="form-group">
-                                            <label for="creator_id">{{ __(' نام ثبت کننده محصول') }}</label>
-                                            <input id="creator_id" type="text"
+
+                                            <input id="creator_id" type="hidden"
                                                    class="form-control @error('creator_id') is-invalid @enderror"
                                                    name="creator_id"
                                                    value="{{ auth()->user()->name }}" required autocomplete="creator_id"
-                                                   readonly>
+                                                   >
 
                                             @error('creator_id')
                                             <span class="invalid-feedback" role="alert">
@@ -190,7 +195,7 @@
                                         </div>
                                     </form>
                                 </div>
-                            @endforeach
+
                             <div class="card-footer">
 
                             </div>