관리-도구
편집 파일: PropertyController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Property; use App\Models\Time; use Illuminate\Http\Request; class PropertyController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $pageTitle = 'All Properties'; $properties = Property::latest()->paginate(); return view('backend.properties.index', compact('pageTitle', 'properties')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $pageTitle = 'Create Property'; $time = Time::all(); return view('backend.properties.create', compact('pageTitle', 'time')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'name' => 'required|unique:properties,property_name', 'amount_type' => 'required', 'is_featured' => 'required', 'property.amnities' => 'required', 'property.amnities.type.*' => 'required', 'property.amnities.total.*' => 'required|numeric', 'property.amnities.icon.*' => 'required', 'minimum' => 'required_if:amount_type,==,0', 'maximum' => 'required_if:amount_type,==,0', 'amount' => 'required_if:amount_type,==,1', 'interest' => 'required', 'repeat_time' => 'required_if:return_for,==,1', 'image' => 'required|mimes:jpg,png,jpeg', 'images.*' => 'sometimes|mimes:jpg,png,jpeg' ], [ 'minimum.required_if' => 'Minimum Amount is required ', 'maximum.required_if' => 'Maximum Amount is required ', 'amount.required_if' => 'Amount is required', 'repeat_time.required_if' => 'How Many Times is required ', 'property.amnities.total.*.numeric' => 'Amnities Total Must Be a number' ]); $property = []; $property['amnities'] = array_combine($request->property['amnities']['type'], $request->property['amnities']['total']); $property['address'] = $request->property['address']; $property['details'] = $request->property['details']; $property['icons'] = $request->property['amnities']['icon']; $gallery = collect([]); if ($request->has('images')) { if(count($request->images) > 4){ return back()->with('error','Maximum 4 gallary image upload'); } foreach ($request->images as $key => $image) { $filename = uploadImage($image, filePath('gallery')); $gallery->push([ 'id' => $key + 1, 'src' => getFile('gallery', $filename), 'image' => $filename ]); } } Property::create([ 'property_name' => $request->name, 'amount_type' => $request->amount_type, 'minimum_amount' => $request->minimum, 'maximum_amount' => $request->maximum, 'amount' => $request->amount, 'return_interest' => $request->interest, 'every_time' => $request->times, 'return_for' => $request->return_for, 'how_many_time' => $request->repeat_time, 'capital_back' => $request->capital_back, 'status' => $request->status, 'interest_status' => $request->interest_status, 'property' => $property, 'image' => uploadImage($request->image, filePath('property')), 'is_featured' => $request->is_featured, 'gallery' => $gallery, 'map' => $request->map ]); $notify[] = ['success', 'Property created successfully']; return redirect()->route('admin.property.index')->withNotify($notify); } public function edit(Property $property) { $pageTitle = 'Edit Property'; $time = Time::all(); return view('backend.properties.edit', compact('pageTitle', 'property', 'time')); } public function update(Request $request, Property $property) { $request->validate([ 'name' => 'required|unique:properties,property_name,' . $property->id, 'amount_type' => 'required', 'property.amnities' => 'required', 'property.amnities.type.*' => 'required', 'property.amnities.total.*' => 'required|numeric', 'property.amnities.icon.*' => 'required', 'minimum' => 'required_if:amount_type,==,0', 'maximum' => 'required_if:amount_type,==,0', 'amount' => 'required_if:amount_type,==,1', 'interest' => 'required', 'is_featured' => 'required', 'repeat_time' => 'required_if:return_for,==,1', ], [ 'minimum.required_if' => 'Minimum Amount is required ', 'maximum.required_if' => 'Maximum Amount is required ', 'amount.required_if' => 'Amount is required', 'repeat_time.required_if' => 'How Many Times is required ', ]); $items = []; $items['amnities'] = array_combine($request->property['amnities']['type'], $request->property['amnities']['total']); $items['address'] = $request->property['address']; $items['details'] = $request->property['details']; $items['icons'] = $request->property['amnities']['icon']; $gallery = collect($property->gallery); if ($request->has('old')) { $old = $request->old; $result = array_diff($gallery->pluck('id')->toArray(), $old); foreach ($result as $key) { $getItem = $gallery->search(function ($item) use ($key) { if ($item->id == $key) { @unlink(filePath('gallery') . '/' . $item->image); } return $item->id == $key; }); $gallery->pull($getItem); } } $counter = $gallery->count(); if ($request->has('images')) { if(count($request->images) > 4){ return back()->with('error','Maximum 4 gallary image upload'); } foreach ($request->images as $key => $image) { $filename = uploadImage($image, filePath('gallery')); $gallery[$counter] = json_decode(json_encode([ 'id' => $counter + 1, 'src' => getFile('gallery', $filename), 'image' => $filename ])); } } $property->update([ 'property_name' => $request->name, 'map' => $request->map, 'amount_type' => $request->amount_type, 'minimum_amount' => $request->minimum, 'maximum_amount' => $request->maximum, 'amount' => (float) $request->amount, 'return_interest' => $request->interest, 'every_time' => $request->times, 'return_for' => $request->return_for, 'how_many_time' => $request->repeat_time, 'capital_back' => $request->capital_back, 'status' => $request->status, 'interest_status' => $request->interest_status, 'property' => $items, 'image' => $request->has('image') && $request->hasFile('image') ? uploadImage($request->image, filePath('property'), '', $property->image) : $property->image, 'is_featured' => $request->is_featured, 'gallery' => $gallery->values() ]); $notify[] = ['success', 'Property Updated Successfully']; return redirect()->route('admin.property.index')->withNotify($notify); } public function propertyStatusChange(Request $request) { $property = Property::findOrFail($request->id); if ($request->status) { $property->status = false; } else { $property->status = true; } $property->save(); $notify = ['success' => 'Property Status Change Successfully']; return response($notify); } }