HOME


Mini Shell 1.0
DIR: /home/cardxfeb/www/app/Http/Controllers/
Upload File :
Current File : //home/cardxfeb/www/app/Http/Controllers/FeatureController.php
<?php

namespace App\Http\Controllers;

use App\Http\Requests\UpdateFeatureRequest;
use App\Models\Feature;
use App\Repositories\featureRepository;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Laracasts\Flash\Flash;
use Spatie\MediaLibrary\MediaCollections\Exceptions\FileDoesNotExist;
use Spatie\MediaLibrary\MediaCollections\Exceptions\FileIsTooBig;
use Illuminate\Support\Str;

class FeatureController extends AppBaseController
{
    private $featureRepository;

    public function __construct(featureRepository $featureRepository)
    {
        $this->featureRepository = $featureRepository;
    }

    public function index(): \Illuminate\View\View
    {
        return view('settings.features.index');
    }

    public function show($id)
    {
        //
    }

    public function edit(Feature $feature): \Illuminate\View\View
    {
        return view('settings.features.edit', compact('feature'));
    }

    public function new(): \Illuminate\View\View
    {
        return view('settings.features.new');
    }

    public function update(UpdateFeatureRequest $request, $id): RedirectResponse
    {
        $input = $request->all();
        
   


        $this->featureRepository->update($input, $id);

        Flash::success(__('messages.flash.feature_update'));

        return redirect(route('features.index'));
    }

    public function store(UpdateFeatureRequest $request): RedirectResponse
    {
        $input = $request->all();
        
        // Get current language from logged-in user
        $language = getLogInUser()->language;
        $input['language'] = $language;

        // Validate unique slug for the language
        $this->validate($request, [
            'slug' => 'required|unique:features,slug,NULL,id,language,' . $language,
        ]);

        // Generate slug if not provided
        if (empty($input['slug'])) {
            $count = Feature::where('language', $language)->count();
            $input['slug'] = $language . '.features.' . ($count + 1);
        } else {
            // Ensure slug format
            if (!Str::startsWith($input['slug'], $language . '.features.')) {
                $input['slug'] = $language . '.features.' . Str::slug($input['slug']);
            }
        }

        $this->featureRepository->update($input, null);

        Flash::success(__('messages.flash.feature_update'));

        return redirect(route('features.index'));
    }
}