JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour

File "TestimonialController.php"

Full Path: /var/www/laravel_filter/Modules/Section/Http/Controllers/TestimonialController.php
File size: 7.51 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Modules\Section\Http\Controllers;

use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

use Modules\Section\Entities\Testimonial;
use Modules\Section\Entities\TestimonialTranslation;
use Modules\Language\Entities\Language;
use File;
use Image;
use Str;

class TestimonialController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    public function index()
    {
        $testimonials = Testimonial::with('translate')->orderBy('id','desc')->get();

        return view('section::testimonial', compact('testimonials'));
    }

    public function create()
    {
        return view('section::testimonial_create');
    }

    public function store(Request $request)
    {
        $rules = [
            'name' => 'required',
            'designation' => 'required',
            'image' => 'required',
            'status' => 'required',
            'comment' => 'required',
            'logo' => 'required',
        ];
        $customMessages = [
            'name.required' => trans('admin_validation.Name is required'),
            'designation.required' => trans('admin_validation.Designation is required'),
            'image.required' => trans('admin_validation.Image is required'),
            'comment.required' => trans('admin_validation.Comment is required'),
            'logo.required' => trans('admin_validation.Logo is required'),
        ];
        $request->validate($rules,$customMessages);

        $testimonial = new Testimonial();

        if($request->image){
            $extention = $request->image->getClientOriginalExtension();
            $image_name = Str::slug($request->name).date('-Ymdhis').'.'.$extention;
            $image_name = 'uploads/custom-images/'.$image_name;
            Image::make($request->image)
                ->save(public_path().'/'.$image_name);
            $testimonial->image = $image_name;
        }

        if($request->logo){
            $extention = $request->logo->getClientOriginalExtension();
            $image_name = Str::slug($request->name.'-logo').date('-Ymdhis').'.'.$extention;
            $image_name = 'uploads/custom-images/'.$image_name;
            Image::make($request->logo)
                ->save(public_path().'/'.$image_name);
            $testimonial->logo = $image_name;
        }

        $testimonial->status = $request->status;
        $testimonial->save();

        $languages = Language::all();
        foreach($languages as $language){
            $translate = new TestimonialTranslation();
            $translate->lang_code = $language->lang_code;
            $translate->testimonial_id = $testimonial->id;
            $translate->name = $request->name;
            $translate->designation = $request->designation;
            $translate->comment = $request->comment;
            $translate->save();
        }

        $notification = trans('admin_validation.Created Successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.testimonial.edit', ['testimonial' => $testimonial,'lang_code' => admin_lang()] )->with($notification);
    }


    public function edit(Request $request, $id)
    {
        $testimonial = Testimonial::findOrFail($id);

        $translate = TestimonialTranslation::where(['testimonial_id' => $id, 'lang_code' => $request->lang_code])->first();

        return view('section::testimonial_edit', compact('testimonial','translate'));
    }


    public function update(Request $request, $id)
    {
        $rules = [
            'name' => 'required',
            'designation' => 'required',
            'comment' => 'required',
        ];
        $customMessages = [
            'name.required' => trans('admin_validation.Name is required'),
            'designation.required' => trans('admin_validation.Designation is required'),
            'image.required' => trans('admin_validation.Image is required'),
            'comment.required' => trans('admin_validation.Comment is required'),
            'logo.required' => trans('admin_validation.Logo is required'),
        ];
        $request->validate($rules,$customMessages);


        $testimonial = Testimonial::findOrFail($id);

        if($request->lang_code == admin_lang()){
            $testimonial->status = $request->status;
            $testimonial->save();
        }

        if($request->image){
            $existing_image = $testimonial->image;
            $extention = $request->image->getClientOriginalExtension();
            $image_name = Str::slug($request->name).date('-Ymdhis').'.'.$extention;
            $image_name = 'uploads/custom-images/'.$image_name;
            Image::make($request->image)
                ->save(public_path().'/'.$image_name);
            $testimonial->image = $image_name;
            $testimonial->save();

            if($existing_image){
                if(File::exists(public_path().'/'.$existing_image))unlink(public_path().'/'.$existing_image);
            }
        }

        if($request->logo){
            $existing_image = $testimonial->logo;
            $extention = $request->logo->getClientOriginalExtension();
            $image_name = Str::slug($request->name.'-logo').date('-Ymdhis').'.'.$extention;
            $image_name = 'uploads/custom-images/'.$image_name;
            Image::make($request->logo)
                ->save(public_path().'/'.$image_name);
            $testimonial->logo = $image_name;
            $testimonial->save();

            if($existing_image){
                if(File::exists(public_path().'/'.$existing_image))unlink(public_path().'/'.$existing_image);
            }
        }

        $translate = TestimonialTranslation::where(['testimonial_id' => $id, 'lang_code' => $request->lang_code])->first();
        $translate->name = $request->name;
        $translate->designation = $request->designation;
        $translate->comment = $request->comment;
        $translate->save();

        $notification = trans('admin_validation.Update Successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->back()->with($notification);

    }

    public function destroy($id)
    {
        $testimonial = Testimonial::find($id);
        $existing_image = $testimonial->image;
        $existing_logo = $testimonial->logo;

        TestimonialTranslation::where(['testimonial_id' => $id])->delete();

        $testimonial->delete();

        if($existing_image){
            if(File::exists(public_path().'/'.$existing_image))unlink(public_path().'/'.$existing_image);
        }

        if($existing_logo){
            if(File::exists(public_path().'/'.$existing_logo))unlink(public_path().'/'.$existing_logo);
        }

        $notification = trans('admin_validation.Delete Successfully');
        $notification = array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.testimonial.index')->with($notification);
    }

    public function assign_language($lang_code){
        $testi_translates = TestimonialTranslation::where('lang_code', admin_lang())->get();
        foreach($testi_translates as $testi_translate){
            $translate = new TestimonialTranslation();
            $translate->lang_code = $lang_code;
            $translate->testimonial_id = $testi_translate->testimonial_id;
            $translate->name = $testi_translate->name;
            $translate->designation = $testi_translate->designation;
            $translate->comment = $testi_translate->comment;
            $translate->save();
        }
    }
}