feat: add created_by field handling for flights
This commit is contained in:
@@ -46,6 +46,7 @@ class FlightController extends Controller
|
||||
|
||||
}
|
||||
|
||||
$data['created_by'] = auth('admin')->id();
|
||||
|
||||
Flight::create($data);
|
||||
|
||||
|
||||
@@ -3,9 +3,147 @@
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\TourStoreRequest;
|
||||
use App\Models\Tour;
|
||||
use App\Models\TravelType;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class TourController extends Controller
|
||||
{
|
||||
//
|
||||
public function index(Request $request)
|
||||
{
|
||||
$tours = Tour::query()
|
||||
->applySearch($request->all())
|
||||
->filterType($request->travel_type_id)
|
||||
->sort($request->sort)
|
||||
->latest()
|
||||
->paginate(4);
|
||||
|
||||
return view('admin.tours.index', compact('tours'));
|
||||
}
|
||||
|
||||
|
||||
public function create()
|
||||
{
|
||||
|
||||
return view('admin.tours.create' );
|
||||
}
|
||||
|
||||
|
||||
public function store(TourStoreRequest $request)
|
||||
{
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
|
||||
$data = $request->validated();
|
||||
|
||||
if ($request->hasFile('image')) {
|
||||
|
||||
$data['image'] = $request
|
||||
->file('image')
|
||||
->store('tours','public');
|
||||
|
||||
}
|
||||
|
||||
$data['created_by'] = auth('admin')->id();
|
||||
|
||||
Tour::create($data);
|
||||
|
||||
|
||||
DB::commit();
|
||||
|
||||
|
||||
return redirect()
|
||||
->route('admin.tours.index')
|
||||
->with('success','تور ثبت شد');
|
||||
|
||||
|
||||
} catch(\Exception $e) {
|
||||
|
||||
DB::rollBack();
|
||||
|
||||
dd($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function edit(Tour $tour)
|
||||
{
|
||||
return view('admin.tours.edit',compact('tour'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function update(TourStoreRequest $request, Tour $tour)
|
||||
{
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
|
||||
$data = $request->validated();
|
||||
|
||||
|
||||
if ($request->hasFile('image')) {
|
||||
|
||||
|
||||
if($tour->image){
|
||||
|
||||
Storage::disk('public')
|
||||
->delete($tour->image);
|
||||
|
||||
}
|
||||
|
||||
|
||||
$data['image'] = $request
|
||||
->file('image')
|
||||
->store('tours','public');
|
||||
|
||||
}
|
||||
|
||||
|
||||
$tour->update($data);
|
||||
|
||||
|
||||
DB::commit();
|
||||
|
||||
|
||||
return redirect()
|
||||
->route('admin.tours.index')
|
||||
->with('success','تور ویرایش شد');
|
||||
|
||||
|
||||
}catch(\Exception $e){
|
||||
|
||||
DB::rollBack();
|
||||
|
||||
dd($e->getMessage());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function destroy(Tour $tour)
|
||||
{
|
||||
|
||||
if($tour->image){
|
||||
|
||||
Storage::disk('public')
|
||||
->delete($tour->image);
|
||||
|
||||
}
|
||||
|
||||
|
||||
$tour->delete();
|
||||
|
||||
|
||||
return back()
|
||||
->with('success','تور حذف شد');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class TourStoreRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'title' => [
|
||||
'required',
|
||||
'string',
|
||||
'max:255'
|
||||
],
|
||||
|
||||
|
||||
'summary' => [
|
||||
'required',
|
||||
'string',
|
||||
'max:500'
|
||||
],
|
||||
|
||||
|
||||
'description' => [
|
||||
'required',
|
||||
'string'
|
||||
],
|
||||
|
||||
|
||||
'image' => [
|
||||
'nullable',
|
||||
'image',
|
||||
'mimes:jpg,jpeg,png,webp',
|
||||
'max:2048'
|
||||
],
|
||||
|
||||
|
||||
'views' => [
|
||||
'nullable',
|
||||
'integer',
|
||||
'min:0'
|
||||
],
|
||||
|
||||
|
||||
'travel_type_id' => [
|
||||
'required',
|
||||
'integer'
|
||||
],
|
||||
|
||||
|
||||
'price' => [
|
||||
'required',
|
||||
'numeric',
|
||||
'min:0'
|
||||
],
|
||||
|
||||
'views'=>[
|
||||
'nullable',
|
||||
'integer',
|
||||
'min:0'
|
||||
],
|
||||
|
||||
'departure_date' => [
|
||||
'required',
|
||||
'date',
|
||||
'after_or_equal:today',
|
||||
],
|
||||
|
||||
|
||||
'status' => [
|
||||
'required',
|
||||
'integer',
|
||||
'in:0,1,2,3,4'
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user