feat: edit routes
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="main-content app-content">
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
@error('general')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
<!-- Create Category Form -->
|
||||
<form action="{{ route('admin.categories.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="card custom-card mb-4">
|
||||
<div class="card-header">
|
||||
<div class="card-title">ایجاد دستهبندی</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row gy-3">
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">نام دستهبندی</label>
|
||||
<input type="text" class="form-control" name="name"
|
||||
placeholder="نام دسته بندی را وارد کنید"
|
||||
value={{ old('name') }} >
|
||||
@error('name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-xl-12">
|
||||
<label class="form-label">توضیحات</label>
|
||||
<textarea class="form-control" name="description" rows="3"
|
||||
placeholder="توضیحات دستهبندی را وارد کنید">{{ old('description') }}</textarea>
|
||||
@error('description')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-avatar mt-3" style="min-height: unset">
|
||||
<div class="text-center">
|
||||
<label class="form-label d-block mb-2 fw-semibold">تصویر دسته بندی</label>
|
||||
<label class="avatar-picker" id="avatarPreview"
|
||||
style="background-image: url({{ asset('assets/admin/images/faces/DefaultAvatar.jpg') }})">
|
||||
<input type="file" name="image" accept="image/*"
|
||||
onchange="previewAvatar(this)">
|
||||
</label>
|
||||
@error('image')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ایجاد دستهبندی</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,75 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="main-content app-content">
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
@error('general')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
<!-- Edit Category Form -->
|
||||
<form action="{{ route('admin.categories.update', $category) }}" method="POST"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="card-header">
|
||||
<div class="card-title">ویرایش دستهبندی</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row gy-3">
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">نام دستهبندی</label>
|
||||
<input type="text" class="form-control" name="name"
|
||||
value="{{ old('name', $category->name) }}"
|
||||
placeholder="نام دستهبندی را وارد کنید">
|
||||
@error('name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-xl-12">
|
||||
<label class="form-label">توضیحات</label>
|
||||
<textarea class="form-control" name="description" rows="3"
|
||||
placeholder="توضیحات دستهبندی را وارد کنید">{{ old('description', $category->description) }}</textarea>
|
||||
@error('description')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-avatar mt-3" style="min-height: unset">
|
||||
<!-- Avatar Picker -->
|
||||
<div class="text-center">
|
||||
<label class="form-label d-block fw-semibold">تصویر دسته بندی</label>
|
||||
<label class="avatar-picker" id="avatarPreview"
|
||||
style="background-image: url({{ asset('storage/' .old('image', $category->image)) }})">
|
||||
<input type="file" name="image" accept="image/*"
|
||||
onchange="previewAvatar(this)">
|
||||
</label>
|
||||
@error('image')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ذخیره تغییرات</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,181 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">لیست دسته بندی ها</h1>
|
||||
<div>
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="javascript:void(0)">مدیریت دسته بندی ها</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">لیست دسته بندی ها</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="main-content app-content">
|
||||
<div class="container-fluid pt-4">
|
||||
@error('general')
|
||||
<span class="text-danger ">{{ $message }}</span>
|
||||
@enderror
|
||||
|
||||
@error('success')
|
||||
<span class="text-success ">{{ $message }}</span>
|
||||
@enderror
|
||||
|
||||
<!-- Filters -->
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="card custom-card">
|
||||
|
||||
<div class="card-body p-3">
|
||||
|
||||
<form method="GET">
|
||||
<div class="d-flex align-items-center justify-content-between flex-wrap gap-3">
|
||||
|
||||
<!-- Sort Dropdown -->
|
||||
<div class="d-flex flex-wrap gap-1 align-items-center">
|
||||
<div class="d-flex me-2">
|
||||
<input class="form-control me-2" type="search" name="search"
|
||||
placeholder="جستجو دستهبندی"
|
||||
value="{{ request()->input('search') }}">
|
||||
<button class="btn btn-light" type="submit">جستجو</button>
|
||||
</div>
|
||||
|
||||
<select id="choices-single-default" class="form-control" name="sort">
|
||||
<option value="">مرتبسازی بر اساس</option>
|
||||
<option
|
||||
value="newest" @selected(request()->missing('sort') || request()->input('sort') == 'newest')>
|
||||
جدیدترین
|
||||
</option>
|
||||
<option
|
||||
value="oldest" @selected(request()->input('sort') == 'oldest')>
|
||||
قدیمی ترین
|
||||
</option>
|
||||
<option value="name_asc" @selected(request()->input('sort') == 'name_asc')>
|
||||
الفبا (الف - ی)
|
||||
</option>
|
||||
<option
|
||||
value="name_desc" @selected(request()->input('sort') == 'name_desc')>
|
||||
الفبا (ی - الف)
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Search -->
|
||||
<div class="d-flex" role="search">
|
||||
<a href="{{ route('admin.categories.create') }}" class="btn btn-primary me-2">
|
||||
<i class="ri-add-line me-1 fw-medium align-middle"></i>
|
||||
ایجاد دسته بندی
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Categories Table -->
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="card custom-card">
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>دستهبندی</th>
|
||||
<th>تعداد محصولات</th>
|
||||
<th scope="col">وضعیت</th>
|
||||
|
||||
<th>تاریخ ایجاد</th>
|
||||
<th>اقدامات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($categories as $category)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex">
|
||||
<span class="avatar avatar-md avatar-square bg-light">
|
||||
@if($category->image)
|
||||
<img
|
||||
src="{{ asset('storage/'. $category->image) }}"
|
||||
class="w-100 h-100"
|
||||
alt="{{ $category->name }}">
|
||||
@else
|
||||
<img
|
||||
src="{{asset('assets/admin/images/product-default-image.png')}}"
|
||||
class="w-100 h-100"
|
||||
alt="{{ $category->name }}">
|
||||
@endif
|
||||
|
||||
</span>
|
||||
<div class="ms-2">
|
||||
<p class="fw-semibold mb-0 name-limit">
|
||||
<a href="{{ route('admin.categories.show', $category->id) }}">{{ $category->name }}</a>
|
||||
</p>
|
||||
<p class="fs-12 text-muted mb-0 ">#{{ $category->id }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td>{{ $category->products->count() }}</td>
|
||||
<td>
|
||||
@if($category->is_active)
|
||||
<span
|
||||
class="badge bg-success-transparent">
|
||||
فعال
|
||||
</span>
|
||||
@else
|
||||
<span
|
||||
class="badge bg-danger-transparent">
|
||||
غیر فعال
|
||||
</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $category->created_at->toJalali()->format('H:i Y-m-d') }}</td>
|
||||
<td>
|
||||
<div class="hstack gap-2 fs-15">
|
||||
<a href="{{ route('admin.categories.show', $category->id) }}"
|
||||
class="btn btn-primary-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="مشاهده">
|
||||
<i class="ri-eye-line"></i>
|
||||
</a>
|
||||
<a href="{{route('admin.categories.edit', $category->id)}}"
|
||||
class="btn btn-secondary-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="ویرایش">
|
||||
<i class="ti ti-pencil"></i>
|
||||
</a>
|
||||
<form action="{{ route('admin.categories.destroy', $category->id) }}"
|
||||
method="POST"
|
||||
onsubmit="return confirm('آیا از حذف این دستهبندی مطمئن هستید؟')">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
|
||||
<button type="submit" class="btn btn-icon btn-sm btn-danger-light">
|
||||
<i class="ri-delete-bin-line"></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Pagination -->
|
||||
{{$categories->links()}}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,159 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="main-content app-content">
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
|
||||
<div class="card custom-card mb-4">
|
||||
<div class="card-header">
|
||||
<div class="card-title">اطلاعات دستهبندی</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row gx-4 gy-4 align-items-center">
|
||||
|
||||
<div class="col-md-8">
|
||||
<h2 class="fw-bold mb-3">{{ $category->name }}</h2>
|
||||
|
||||
<dl class="row mb-4">
|
||||
<dt class="col-sm-4 fw-semibold">توضیحات:</dt>
|
||||
<dd class="col-sm-8">{{ $category->description }}</dd>
|
||||
</dl>
|
||||
|
||||
<div class="row text-center text-md-start">
|
||||
<div class="col-6 col-md-4 mb-3">
|
||||
<div class="p-3 border rounded bg-light">
|
||||
<div class="fs-4 fw-bold">{{ $category->products->count() }}</div>
|
||||
<div class="text-muted">تعداد محصولات</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-md-4 mb-3">
|
||||
<div class="p-3 border rounded bg-light">
|
||||
<div class="fs-4 fw-bold">
|
||||
@if($category->is_active)
|
||||
<span class="text-success pe-3 py-2 fs-6">
|
||||
فعال
|
||||
</span>
|
||||
@else
|
||||
<span class="text-danger pe-3 py-2 fs-6">
|
||||
غیر فعال
|
||||
</span>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
<div class="text-muted">وضعیت دستهبندی</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- اگر اطلاعات وضعیت دیگهای داری میتونی اینجا اضافه کنی -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Products List -->
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">محصولات دستهبندی</div>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>محصول</th>
|
||||
<th>دستهبندی فعلی</th>
|
||||
<th>قیمت</th>
|
||||
<th>قیمت تخفیفخورده</th>
|
||||
<th>موجودی</th>
|
||||
<th>وضعیت</th>
|
||||
<th>منتشر شده</th>
|
||||
<th>اقدامات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@foreach($products as $product)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="avatar avatar-md avatar-square bg-light">
|
||||
@if($product->defaultImage )
|
||||
<img
|
||||
src="{{ asset('storage/'.$product->defaultImage->file->path) }}"
|
||||
class="w-100 h-100"
|
||||
alt="{{ $product->name }}"
|
||||
>
|
||||
@else
|
||||
<img
|
||||
src="{{ asset('images/no-image.png') }}"
|
||||
class="w-100 h-100"
|
||||
alt="{{ $product->name }}"
|
||||
>
|
||||
@endif
|
||||
</span>
|
||||
<div class="ms-2">
|
||||
<p class="fw-semibold mb-0">{{ $product->name}}</p>
|
||||
<p class="fs-12 text-muted mb-0 description-limit">{{ $product->description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>{{ $product->productCategory->name }}</td>
|
||||
<td>{{number_format($product->price)}} تومان</td>
|
||||
<td>
|
||||
<span class="text-success"> {{ number_format(discount($product->price , $product->discount)) }}تومان</span>
|
||||
</td>
|
||||
<td>{{ $product->qty }}</td>
|
||||
<td>
|
||||
@switch($product->status)
|
||||
@case(\App\Enums\ProductStatus::DISABLE)
|
||||
<span class="badge bg-danger-transparent">غیر فعال</span>
|
||||
@break
|
||||
@case(\App\Enums\ProductStatus::DRAFT)
|
||||
<span class="badge bg-warning-transparent">پیش نویس</span>
|
||||
@break
|
||||
@case(\App\Enums\ProductStatus::PUBLISHED)
|
||||
<span class="badge bg-primary-transparent"> منتشر شده</span>
|
||||
@break
|
||||
@case(\App\Enums\ProductStatus::ENABLE)
|
||||
<span class="badge bg-success-transparent"> فعال</span>
|
||||
@break
|
||||
@endswitch
|
||||
</td>
|
||||
<td>{{ $category->created_at->toJalali()->format('H:i Y-F-d') }}</td>
|
||||
<td>
|
||||
<div class="hstack gap-2 fs-15">
|
||||
<a href="{{ route('admin.product.show', $product->id) }}"
|
||||
class="btn btn-primary-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="مشاهده">
|
||||
<i class="ri-eye-line"></i>
|
||||
</a>
|
||||
|
||||
<a href="{{ route('admin.product.edit', $product->id) }}"
|
||||
class="btn btn-secondary-light btn-icon btn-sm"
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" title="ویرایش">
|
||||
<i class="ti ti-pencil"></i>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user