HOME


sh-3ll 1.0
DIR:/proc/self/cwd/bright.medisavehealthcarebd.com/app/Http/Controllers/Admin/
Upload File :
Current File : //proc/self/cwd/bright.medisavehealthcarebd.com/app/Http/Controllers/Admin/LanguageController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Admin\FrontendKeyword;
use App\Models\Admin\Language;
use App\Models\Admin\PanelKeyword;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;

class LanguageController extends Controller
{

    // Set session for language
    public function set_locale($language_id){


        // Via the global helper...
        session(['language_id_from_dropdown' => $language_id]);

        $language_id_from_dropdown = session()->get('language_id_from_dropdown');

        $language = Language::find($language_id_from_dropdown);

        session(['language_name_from_dropdown' => $language->language_name]);
        session(['language_code_from_dropdown' => $language->language_code]);
        session(['language_direction_from_dropdown' => $language->direction]);


        return redirect()->back();

    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.language.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // Form validation
        $request->validate([
            'language_name' => 'required|unique:languages',
            'language_code' => 'required|unique:languages',
            'direction' => 'required|integer|in:0,1',
            'display_dropdown' => 'required|integer|in:0,1',
        ]);

        // Get All Request
        $input = $request->all();

        // Record to database
        $new_language = Language::create([
            'language_name' => $input['language_name'],
            'language_code' => $input['language_code'],
            'direction' => $input['direction'],
            'display_dropdown' => $input['display_dropdown'],
            'default_site_language' => 0,
            'status' => 0
        ]);

        $copied_language = Language::first();
        $panel_keywords = PanelKeyword::where('language_id', $copied_language->id)->get();
        $frontend_keywords = FrontendKeyword::where('language_id', $copied_language->id)->get();

        if (isset($copied_language) && isset($panel_keywords) && isset($frontend_keywords)) {
            // Record to database
            foreach ($panel_keywords as $panel_keyword) {
                PanelKeyword::firstOrCreate([
                    'language_id' => $new_language->id,
                    'key' => $panel_keyword->key,
                    'value' => $panel_keyword->value,
                ]);
            }

            foreach ($frontend_keywords as $frontend_keyword) {
                FrontendKeyword::firstOrCreate([
                    'language_id' => $new_language->id,
                    'key' => $frontend_keyword->key,
                    'value' => $frontend_keyword->value,
                ]);
            }

        }

        return redirect()->route('language.create')
            ->with('success', 'content.created_successfully');
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        // Retrieving models
        $language = Language::findOrFail($id);

        return view('admin.language.edit', compact('language'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        // Form validation
        $request->validate([
            'language_name'   =>  [
                'required',
                Rule::unique('languages')->ignore($id),
            ],
            'language_code'   =>  [
                'required',
                Rule::unique('languages')->ignore($id),
            ],
            'direction' => 'required|integer|in:0,1',
            'display_dropdown' => 'required|integer|in:0,1',
        ]);

        // Get All Request
        $input = $request->all();

        // Record to database
        Language::find($id)->update($input);

        return redirect()->route('language.create')
            ->with('success', 'content.updated_successfully');
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update_language(Request $request)
    {
        // Form validation
        $request->validate([
            'language_id' => 'required|integer',
        ]);

        // Get All Request
        $input = $request->all();

        // Retrieve a model
        $language = Language::find($input['language_id']);


        if (isset($language)) {

            // Retrieve a model
            $languages = Language::all();

            foreach ($languages as $language) {

                if ($language->id == $input['language_id']) {

                    // Update to database default_site_language = 1
                    Language::find($language->id)->update(['default_site_language' => 1]);

                } else {

                    // Update to database default_site_language = 0
                    Language::find($language->id)->update(['default_site_language' => 0]);

                }

            }

            // Forget a single key...
            session()->forget('language_id_from_dropdown');
            session()->forget('language_name_from_dropdown');
            session()->forget('language_code_from_dropdown');
            session()->forget('language_direction_from_dropdown');

            return redirect()->route('language.create')
                ->with('success', 'content.updated_successfully');

        } else {

            return redirect()->route('language.create')
                ->with('warning','content.please_try_again');

        }

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update_processed_language(Request $request)
    {
        // Form validation
        $request->validate([
            'language_id' => 'required|integer',
        ]);

        // Get All Request
        $input = $request->all();

        // Retrieve a model
        $language = Language::find($input['language_id']);


        if (isset($language)) {

            // Retrieve a model
            $languages = Language::all();

            foreach ($languages as $language) {

                if ($language->id == $input['language_id']) {

                    // Update to database status = 1
                    Language::find($language->id)->update(['status' => 1]);

                } else {

                    // Update to database status = 0
                    Language::find($language->id)->update(['status' => 0]);

                }

            }

            return redirect()->back()
                ->with('success', 'content.updated_successfully');

        } else {

            return redirect()->back()
                ->with('warning','content.please_try_again');

        }

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update_display_dropdown($id)
    {
        //Find a model
        $language = Language::find($id);

        if ($language->display_dropdown == 1) {

            $display_dropdown = 0;

        } else {

            $display_dropdown = 1;

        }

        // Update to database
        Language::find($id)->update(['display_dropdown' => $display_dropdown]);

        return redirect()->route('language.create')
            ->with('success', 'content.updated_successfully');
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if ($id == 1) {

            return redirect()->route('language.create')
                ->with('warning', 'content.you_are_not_authorized');

        }

        // Retrieve a model
        $language = Language::find($id);

        if (session()->has('language_id_from_dropdown')) {

            $session_language_id = session()->get('language_id_from_dropdown');

            $session_language = Language::find($session_language_id);

            if ($language->id == $session_language->id) {

                // Forget a single key...
                session()->forget('language_id_from_dropdown');
                session()->forget('language_name_from_dropdown');
                session()->forget('language_code_from_dropdown');
                session()->forget('language_direction_from_dropdown');

            }

        }

        if ($language->default_site_language == 1 || $language->status == 1) {

            // Update to database
            Language::find(1)->update(['default_site_language' => 1, 'status' => 1]);

        }


        // Delete record
        $language->delete();

        return redirect()->route('language.create')
            ->with('success', 'content.deleted_successfully');
    }
}