Файловый менеджер - Редактировать - /home/clickysoft/public_html/somni.clickysoft.net/app/Http/Controllers/Admin/UnitController.php
Назад
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Controllers\Traits\MediaUploadingTrait; use App\Http\Requests\MassDestroyUnitRequest; use App\Http\Requests\StoreUnitRequest; use App\Http\Requests\UpdateUnitRequest; use App\Models\Amenity; use App\Models\Property; use App\Models\Unit; use Gate; use Illuminate\Http\Request; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Symfony\Component\HttpFoundation\Response; use Yajra\DataTables\Facades\DataTables; class UnitController extends Controller { use MediaUploadingTrait; public function index(Request $request) { abort_if(Gate::denies('unit_access'), Response::HTTP_FORBIDDEN, '403 Forbidden'); if ($request->ajax()) { $query = Unit::with(['property', 'amenities'])->select(sprintf('%s.*', (new Unit)->table)); $table = Datatables::of($query); $table->addColumn('placeholder', ' '); $table->addColumn('actions', ' '); $table->editColumn('actions', function ($row) { $viewGate = 'unit_show'; $editGate = 'unit_edit'; $deleteGate = 'unit_delete'; $crudRoutePart = 'units'; return view('partials.datatablesActionsSlug', compact( 'viewGate', 'editGate', 'deleteGate', 'crudRoutePart', 'row' )); }); $table->editColumn('id', function ($row) { return $row->id ? $row->id : ''; }); $table->addColumn('property_name', function ($row) { return $row->property ? $row->property->name : ''; }); $table->editColumn('property.name', function ($row) { return $row->property ? (is_string($row->property) ? $row->property : $row->property->name) : ''; }); $table->editColumn('amenity', function ($row) { $labels = []; foreach ($row->amenities as $amenity) { $labels[] = sprintf('<span class="label label-info label-many">%s</span>', $amenity->name); } return implode(' ', $labels); }); $table->editColumn('number', function ($row) { return $row->number ? $row->number : ''; }); $table->editColumn('lease_term', function ($row) { return $row->lease_term ? Unit::LEASE_TERM_SELECT[$row->lease_term] : ''; }); $table->editColumn('monthly_rent', function ($row) { return $row->monthly_rent ? $row->monthly_rent : ''; }); $table->editColumn('security_deposit', function ($row) { return $row->security_deposit ? $row->security_deposit : ''; }); $table->editColumn('size', function ($row) { return $row->size ? $row->size : ''; }); $table->editColumn('description', function ($row) { return $row->description ? $row->description : ''; }); $table->editColumn('no_of_bedrooms', function ($row) { return $row->no_of_bedrooms ? $row->no_of_bedrooms : ''; }); $table->editColumn('no_of_bathroom', function ($row) { return $row->no_of_bathroom ? $row->no_of_bathroom : ''; }); $table->editColumn('images', function ($row) { if (! $row->images) { return ''; } $links = []; foreach ($row->images as $media) { $links[] = '<a href="' . $media->getUrl() . '" target="_blank"><img src="' . $media->getUrl('thumb') . '" width="50px" height="50px"></a>'; } return implode(' ', $links); }); $table->rawColumns(['actions', 'placeholder', 'property', 'amenity', 'images']); return $table->make(true); } $properties = Property::get(); $amenities = Amenity::get(); return view('admin.units.index', compact('properties', 'amenities')); } public function create() { abort_if(Gate::denies('unit_create'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $properties = Property::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), ''); $amenities = Amenity::pluck('name', 'id'); return view('admin.units.create', compact('amenities', 'properties')); } public function store(StoreUnitRequest $request) { $unit = Unit::create($request->all()); $unit->amenities()->sync($request->input('amenities', [])); foreach ($request->input('images', []) as $file) { $unit->addMedia(storage_path('tmp/uploads/' . basename($file)))->toMediaCollection('images'); } if ($media = $request->input('ck-media', false)) { Media::whereIn('id', $media)->update(['model_id' => $unit->id]); } return redirect()->route('admin.units.index'); } public function edit(Unit $unit) { abort_if(Gate::denies('unit_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $properties = Property::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), ''); $amenities = Amenity::pluck('name', 'id'); $unit->load('property', 'amenities'); return view('admin.units.edit', compact('amenities', 'properties', 'unit')); } public function update(UpdateUnitRequest $request, Unit $unit) { $unit->update($request->all()); $unit->amenities()->sync($request->input('amenities', [])); if (count($unit->images) > 0) { foreach ($unit->images as $media) { if (! in_array($media->file_name, $request->input('images', []))) { $media->delete(); } } } $media = $unit->images->pluck('file_name')->toArray(); foreach ($request->input('images', []) as $file) { if (count($media) === 0 || ! in_array($file, $media)) { $unit->addMedia(storage_path('tmp/uploads/' . basename($file)))->toMediaCollection('images'); } } return redirect()->route('admin.units.index'); } public function show(Unit $unit) { abort_if(Gate::denies('unit_show'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $unit->load('property', 'amenities'); return view('admin.units.show', compact('unit')); } public function destroy(Unit $unit) { abort_if(Gate::denies('unit_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $unit->delete(); return back(); } public function massDestroy(MassDestroyUnitRequest $request) { $units = Unit::find(request('ids')); foreach ($units as $unit) { $unit->delete(); } return response(null, Response::HTTP_NO_CONTENT); } public function storeCKEditorImages(Request $request) { abort_if(Gate::denies('unit_create') && Gate::denies('unit_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $model = new Unit(); $model->id = $request->input('crud_id', 0); $model->exists = true; $media = $model->addMediaFromRequest('upload')->toMediaCollection('ck-media'); return response()->json(['id' => $media->id, 'url' => $media->getUrl()], Response::HTTP_CREATED); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка