<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Gate;

use App\Solucao;
use App\Segmento;
use App\BlogPost;
use App\FeatureSolucao;
use App\FeatureSolucaoItem;
use App\BeneficioSolucao;
use App\BeneficioSolucaoItem;
use App\DificuldadeSolucao;
use App\DificuldadeSolucaoItem;
use App\Biblioteca;
use App\Produto;
use App\Log;
use App\Rules\SecureImage;

class SolucaoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        if (Gate::denies('solucoes-view')){
            abort(403, "Não autorizado");
        }

        
        if (isset($request['search'])) {
            $objs = Solucao::where('language_id', '=', $request['search'] )->orderBy('order','ASC')->get();    
        } else {
            $objs = Solucao::orderBy('order','ASC')->get();
        }

        $caminhos = [
            ['url' => '/admin', 'titulo' => 'Admin'],
            ['url' => '', 'titulo' => 'Soluções'],
        ];
        return view('admin.solucao.index', compact('objs', 'caminhos'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        if (Gate::denies('solucoes-create')){
            abort(403, "Não autorizado");
        }        

        $segmentos = Segmento::all();
        $cases = BlogPost::where('tipo', '=', 'case')->get();
        
        $caminhos = [
            ['url' => '/admin', 'titulo' => 'Admin'],
            ['url' => route('solucao.index'), 'titulo' => 'Soluções'],
            ['url' => '', 'titulo' => 'Adicionar'],
        ];
        return view('admin.solucao.adicionar', compact('caminhos', 'segmentos', 'cases'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if (Gate::denies('solucoes-create')){
            abort(403, "Não autorizado");
        }  

        $request->validate([
            'name' => 'required|max:255',
            'language' => 'required',
            'image' => ['file',
                        new SecureImage,
                ],
            'image_mobile' => ['file',
                        new SecureImage,
                ],
            'imagesegmento' => ['file',
                        new SecureImage,
                ],
            'videoimagecta' => ['file',
                        new SecureImage,
                ],
            'imagectafooter' => ['file',
                        new SecureImage,
                ],
        ]);

        $obj = new \App\Solucao();
        $nameFile = '';
        $nameFileCta = $nameFileVideo = $nameFileMobile = $nameFileSegmento = '';

        if ($request->hasFile('image') && $request->file('image')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->image->extension();
            $nameFile = "{$name}.{$extension}";
            $upload = $request->image->storeAs(config('app.folder').'solucao', $nameFile);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        }  

        if ($request->hasFile('image_mobile') && $request->file('image_mobile')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->image_mobile->extension();
            $nameFileMobile = "{$name}.{$extension}";
            $upload = $request->image_mobile->storeAs(config('app.folder').'solucao', $nameFileMobile);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        }  

        if ($request->hasFile('imagectafooter') && $request->file('imagectafooter')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->imagectafooter->extension();
            $nameFileCta = "{$name}.{$extension}";
            $upload = $request->imagectafooter->storeAs(config('app.folder').'solucao', $nameFileCta);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        }  

        if ($request->hasFile('videoimagecta') && $request->file('videoimagecta')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->videoimagecta->extension();
            $nameFileVideo = "{$name}.{$extension}";
            $upload = $request->videoimagecta->storeAs(config('app.folder').'solucao', $nameFileVideo);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        }  


        if ($request->hasFile('imagesegmento') && $request->file('imagesegmento')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->imagesegmento->extension();
            $nameFileSegmento = "{$name}.{$extension}";
            $upload = $request->imagesegmento->storeAs(config('app.folder').'solucao', $nameFileSegmento);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        }  



        $lang = $request['language'];
        
        $newSlug = ($request['slug'] != '') ? $request['slug'] : $request['name'];
        $slug = Solucao::existeSolucao(Str::slug($newSlug, "-"), $lang, 0);
        
        $obj->name = $request['name'];
        $obj->shortname = $request['shortname'];
        $obj->image = $nameFile;
        $obj->depoimento_titulo = $request['depoimento_titulo'];
        $obj->title = $request['title'];
        $obj->description = $request['description'];
        $obj->title_produtos = $request['title_produtos'];
        $obj->description_produto = $request['description_produto'];
        $obj->btncta = $request['btncta'];
        $obj->linkbtncta = $request['linkbtncta'];
        $obj->targethero = ($request['targethero'] != 0) ? $request['targethero'] : 0;
        $obj->tituloctafooter = $request['tituloctafooter'];
        $obj->btnctafooter = $request['btnctafooter'];
        $obj->btnlinkctafooter = $request['btnlinkctafooter'];
        $obj->imagectafooter = $nameFileCta;
        $obj->status = 1;
        $obj->slug = $slug;
        $obj->language_id = $lang;
        $obj->video = $request['video'];
        $obj->videobtncta = $request['videobtncta'];
        $obj->videolinkcta = $request['videolinkcta'];
        $obj->videoimagecta = $nameFileVideo;
        $obj->videotitulocta = $request['videotitulocta'];
        $obj->imagesegmento = $nameFileSegmento;
        $obj->meta_description = $request['meta_description'];
        $obj->meta_title = $request['meta_title'];
        $obj->image_mobile = $nameFileMobile;
        $obj->resumo = $request['resumo'];
        $obj->targetctafooter = ($request['targetctafooter'] != 0) ? $request['targetctafooter'] : 0;
        $obj->bt_color_cta = $request['bt_color_cta'];
        $obj->bt_color_cta_footer = $request['bt_color_cta_footer'];
        $obj->bt_color_video = $request['bt_color_video'];

        $obj->save();

        // if ($request['segmento_id']) { 
        //     $seg = Segmento::find($request['segmento_id']);    
        //     $obj->segmento()->associate($seg)->save();
        // }  

        
        if ($request['segmentos']) {
            foreach($request['segmentos'] as $segmento){
                $f = Segmento::find($segmento);
                $obj->adicionarSegmento($f);
            }
        }
        
        if ($request['cases']) {
            foreach($request['cases'] as $case){
                $f = BlogPost::find($case);
                $obj->adicionarCase($f);
            }
        }

        if ($request['noticias']) {
            foreach($request['noticias'] as $noticia){
                $f = BlogPost::find($noticia);
                $obj->adicionarNoticia($f);
            }
        }


        $ben = new \App\BeneficioSolucao();
        $ben->bg_color = '';
        $ben->titulo = '';
        $ben->description = '';
        $ben->solucao_id = $obj->id;
        $ben->save();

        if ($obj->id) { 
            $ben->solucao()->associate($obj)->save();
        } 

        $fea = new \App\FeatureSolucao();
        $fea->bg_color = '';
        $fea->titulo = '';
        $fea->description = '';
        $fea->solucao_id = $obj->id;
        $fea->save();

        if ($obj->id) { 
            $fea->solucao()->associate($obj)->save();
        } 
        

        $dif = new \App\DificuldadeSolucao();
        $dif->bg_color = '';
        $dif->titulo = '';
        $dif->description = '';
        $dif->solucao_id = $obj->id;
        $dif->save();

        if ($obj->id) { 
            $dif->solucao()->associate($obj)->save();
        } 
        
        $logs = new Log();
        $logs->insertLog('Solução', $obj->id);           
        
        return redirect()->route('solucao.edit', $obj->id)->with('status', 'Registro Salvo!');
        //return redirect()->route('solucao.index')->with('status', 'Registro Salvo!');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        if (Gate::denies('solucoes-edit')){
            abort(403, "Não autorizado");
        }          

        $obj = Solucao::with('segmentos', 'beneficioSolucao', 'featureSolucao', 'dificuldadeSolucao', 'cases', 'noticias' )->find($id);
        
        $cases = BlogPost::where('tipo', '=', 'case')->get();
        $noticias = BlogPost::where('tipo', '=', 'blog')->get();
        $beneficioItens = BeneficioSolucaoItem::where('beneficio_solucao_id', '=', $obj->beneficioSolucao->id)->orderBy('order', 'ASC')->get();
        $dificuldadeItens = DificuldadeSolucaoItem::where('dificuldade_solucao_id', '=', $obj->dificuldadeSolucao->id)->get();
        $featureItens = FeatureSolucaoItem::where('feature_solucao_id', '=', $obj->featureSolucao->id)->orderBy('order', 'ASC')->get();
        $icones = Biblioteca::orderBy('id', 'ASC')->get();
        
        $segmentos = Segmento::all();
        
        
       
        $caminhos = [
            ['url' => '/admin', 'titulo' => 'Admin'],
            ['url' => route('solucao.index'), 'titulo' => 'Soluções'],
            ['url' => '', 'titulo' => 'Editar'],
        ];
        return view('admin.solucao.editar', compact('obj','caminhos','cases', 'noticias', 'segmentos','beneficioItens', 'featureItens', 'dificuldadeItens', 'icones'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        if (Gate::denies('solucoes-edit')){
            abort(403, "Não autorizado");
        }  

        $request->validate([
            'name' => 'required|max:255',
            'image' => ['file',
                        new SecureImage,
                ],
            'image_mobile' => ['file',
                        new SecureImage,
                ],
            'imagesegmento' => ['file',
                        new SecureImage,
                ],
            'videoimagecta' => ['file',
                        new SecureImage,
                ],
            'imagectafooter' => ['file',
                        new SecureImage,
                ],
        ]);

        $obj = Solucao::find($id);

        $nameFile = $nameFileSegmento = $nameFileCta = $nameFileMobile = '';

        if ($request->hasFile('image') && $request->file('image')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->image->extension();
            $nameFile = "{$name}.{$extension}";
            $upload = $request->image->storeAs(config('app.folder').'solucao', $nameFile);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        } else {
            $nameFile = $request['old_image'];
        }

        if ($request->hasFile('image_mobile') && $request->file('image_mobile')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->image_mobile->extension();
            $nameFileMobile = "{$name}.{$extension}";
            
            $upload = $request->image_mobile->storeAs(config('app.folder').'solucao', $nameFileMobile);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        } else {
            $nameFileMobile = $request['old_image_mobile'];
        }

        if ($request->hasFile('imagectafooter') && $request->file('imagectafooter')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->imagectafooter->extension();
            $nameFileCta = "{$name}.{$extension}";
            $upload = $request->imagectafooter->storeAs(config('app.folder').'solucao', $nameFileCta);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        } else {
            $nameFileCta = $request['old_imagectafooter'];
        }

        if ($request->hasFile('videoimagecta') && $request->file('videoimagecta')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->videoimagecta->extension();
            $nameFileVideo = "{$name}.{$extension}";
            $upload = $request->videoimagecta->storeAs(config('app.folder').'solucao', $nameFileVideo);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        } else {
            $nameFileVideo = $request['old_videoimagecta'];
        }

        if ($request->hasFile('imagesegmento') && $request->file('imagesegmento')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->imagesegmento->extension();
            $nameFileSegmento = "{$name}.{$extension}";
            $upload = $request->imagesegmento->storeAs(config('app.folder').'solucao', $nameFileSegmento);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        } else {
            $nameFileSegmento = $request['old_imagesegmento'];
        }

        
        $lang = $request['language'];
        
        $newSlug = ($request['slug'] != '') ? $request['slug'] : $request['name'];
        $slug = Solucao::existeSolucao(Str::slug($newSlug, "-"), $lang, $id);
        
        $obj->name = $request['name'];
        $obj->shortname = $request['shortname'];
        $obj->image = $nameFile;
        $obj->depoimento_titulo = $request['depoimento_titulo'];
        $obj->title_produtos = $request['title_produtos'];
        $obj->description_produto = $request['description_produto'];
        $obj->title = $request['title'];
        $obj->description = $request['description'];
        $obj->btncta = $request['btncta'];
        $obj->linkbtncta = $request['linkbtncta'];
        $obj->targethero = ($request['targethero'] != 0) ? $request['targethero'] : 0;
        $obj->tituloctafooter = $request['tituloctafooter'];
        $obj->btnctafooter = $request['btnctafooter'];
        $obj->btnlinkctafooter = $request['btnlinkctafooter'];        
        $obj->imagectafooter = $nameFileCta;
        $obj->status = 1;
        $obj->slug = $slug;
        $obj->language_id = $lang;
        $obj->video = $request['video'];
        $obj->videobtncta = $request['videobtncta'];
        $obj->videolinkcta = $request['videolinkcta'];
        $obj->videoimagecta = $nameFileVideo;
        $obj->videotitulocta = $request['videotitulocta'];
        $obj->imagesegmento = $nameFileSegmento;
        $obj->meta_description = $request['meta_description'];
        $obj->meta_title = $request['meta_title'];
        $obj->image_mobile = $nameFileMobile;
        $obj->resumo = $request['resumo'];
        $obj->targetctafooter = ($request['targetctafooter'] != 0) ? $request['targetctafooter'] : 0;
        $obj->bt_color_cta = $request['bt_color_cta'];
        $obj->bt_color_cta_footer = $request['bt_color_cta_footer'];
        $obj->bt_color_video = $request['bt_color_video'];

        $obj->save();
        
        // if ($request['segmento_id']) { 
        //     $seg = Segmento::find($request['segmento_id']);    
        //     $obj->segmento()->associate($seg)->save();
        // }  
        
        if ($request['segmentos']) {
            foreach($request['segmentos'] as $segmento){
                $f = Segmento::find($segmento);
                $obj->adicionarSegmento($f);
            }
        }

        
        if ($request['cases']) {
            foreach($request['cases'] as $case){
                $f = BlogPost::find($case);
                $obj->adicionarCase($f);
            }
        }



        if ($request['noticias']) {
            foreach($request['noticias'] as $noticia){
                $f = BlogPost::find($noticia);
                $obj->adicionarNoticia($f);
            }
        }  
        
        $logs = new Log();
        $logs->updateLog('Solução', $id);        

        return redirect()->route('solucao.edit', $obj->id)->with('status', 'Registro Atualizado!');

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (Gate::denies('solucoes-delete')){
            abort(403, "Não autorizado");
        }  

        Solucao::find($id)->delete();
        
        $logs = new Log();
        $logs->deleteLog('Solução', $id); 

        return redirect()->route('solucao.index')->with('status', 'Registro Excluído!');
    }



    public function caseStore(Request $request, $id)
    {
        $solucao = Solucao::find($id);
        $dados = $request->all();
        if ($dados['cases']) {
            foreach($dados['cases'] as $case){
                $case = BlogPost::find($case);
                $solucao->adicionarCase($case);
            }
        }
        
        return redirect()->back()->with('status', 'Case(s) para o solução registrado!');;

    }

    //Remover relacionamento de Permissao com Solucao
    public function caseDestroy($id, $case_id)
    {
        $solucao = Solucao::find($id);
        $case = BlogPost::find($case_id);
        $solucao->removeCase($case);

        return redirect()->back();
    }


    public function segmentoStore(Request $request, $id)
    {
        $solucao = Solucao::find($id);
        $dados = $request->all();
        if ($dados['segmentos']) {
            foreach($dados['segmentos'] as $segmento){
                $segmento = Segmento::find($segmento);
                $solucao->adicionarSegmento($segmento);
            }
        }
        
        return redirect()->back()->with('status', 'Segmento(s) para o solução registrado!');;

    }

    //Remover relacionamento de Permissao com Solucao
    public function segmentoDestroy($id, $segmento_id)
    {
        $solucao = Solucao::find($id);
        $segmento = Segmento::find($segmento_id);
        $solucao->removeSegmento($segmento);

        return redirect()->back();
    }

    //Adicionar relacionamento de rule com usuario    
    public function noticiaStore(Request $request, $id)
    {
        $solucao = Solucao::find($id);
        $dados = $request->all();
        if ($dados['noticias']) {
            
            foreach($dados['noticias'] as $noticia){
                $noticia = BlogPost::find($noticia);
                $solucao->adicionarNoticia($noticia);
            }
        }
        
        return redirect()->back()->with('status', 'Notícia(s) para o solução registrado!');;

    }

    //Remover relacionamento de Permissao com Produto
    public function noticiaDestroy($id, $noticia_id)
    {
        $solucao = Solucao::find($id);
        $noticia = BlogPost::find($noticia_id);
        $solucao->removeNoticia($noticia);

        return redirect()->back();
    }


    //Adicionar relacionamento de rule com usuario    
    public function beneficioUpdate(Request $request, $id)
    {
        
        $solucao = Solucao::find($id);
        $ben = BeneficioSolucao::find($request['ben_id']);

        $request->validate([
            'imagebeneficio' => ['file',
                        new SecureImage,
                ],
        ]);

        if ($request->hasFile('imagebeneficio') && $request->file('imagebeneficio')->isValid()) {
            $name = uniqid(date('HisYmd'));
            $extension = $request->imagebeneficio->extension();
            $nameFileBeneficio = "{$name}.{$extension}";
            $upload = $request->imagebeneficio->storeAs(config('app.folder').'solucao', $nameFileBeneficio);
            if ( !$upload )
                return redirect()
                            ->back()
                            ->with('error', 'Falha ao fazer upload')
                            ->withInput();
        } else {
            $nameFileBeneficio = $request['old_imagebeneficio'];
        }


        $ben->bg_color = $request['ben_bg_color'];
        $ben->titulo = $request['ben_titulo'];
        $ben->description = $request['ben_description'];
        $ben->imagebeneficio = $nameFileBeneficio;
        $ben->solucao_id = $id;
        $ben->save();
        
        $ben->solucao()->associate($solucao)->save();

        return redirect()->back()->with('status', 'Benefício(s) para o solução atualizado!');;

    }    

    //Adicionar relacionamento de rule com usuario    
    public function beneficioItemStore(Request $request)
    {
        
        $beneficio = BeneficioSolucao::find($request['benId']);
        $biblioteca = Biblioteca::find($request['item_icon']);
        $ben = new \App\BeneficioSolucaoItem();
        $ben->biblioteca_id = $request['item_icon'];
        $ben->titulo = $request['item_titulo'];
        $ben->description = $request['item_description'];
        $ben->beneficio_solucao_id = $request['benId'];
        $ben->save();
        
        $ben->beneficioSolucao()->associate($beneficio)->save();
        $ben->biblioteca()->associate($biblioteca)->save();

        $obj = BeneficioSolucaoItem::where('beneficio_solucao_id', '=', $request['benId'])->orderBy('order', 'ASC')->get();
        $output = '<table class="table table-striped sortable">
                    <thead>
                        <tr>
                            <th> Id </th>
                            <th> Título </th>
                            <th> Ações </th>
                        </tr>
                    </thead>
                    <tbody>';
        if(count($obj) > 0) {
            foreach($obj as $row) {
                $output .= '
                
                <tr>
                <td>
                    <input type="hidden" name="ids_items[]" value="'.$row->id.'"> '.$row->id.'
                    <input type="hidden" name="model_items" value="SolucaoBeneficioItens"> 
                    <input type="hidden" name="parent_id_items" value="'.$beneficio->id.'"> 
                </td>
                <td>'.$row->titulo.'</td>
                <td  style="display:flex">
                    <a title="Editar" class="btn btn-icons btn-inverse-warning myBtn" data-list="listItensBeneficiosSolucao" data-obj="'.$beneficio->solucao_id.'" data-item="'. $row->id .'" data-pagina="beneficio_solucao_items"
                        data-titulo="'. $row->titulo .'"
                        data-descricao="'. $row->description .'"
                        data-icon="'. $row->biblioteca_id .'"><i class="mdi mdi-grease-pencil"></i></a>
                <form action='. route('solucao.beneficio.item.del') .'
                method="post" class="">
                '. method_field('DELETE') .'
                '. csrf_field() .'
                <button title="Deletar" class="btn btn-icons btn-inverse-danger itemBeneficioSolucaoDel" data-token="'. csrf_token() .'" data-solucao="'.$beneficio->solucao_id.'" 
                        data-beneficio="'.$beneficio->id.'" data-item="'.$row->id.'">
                        <i class="mdi mdi-delete " ></i></button>
            </form></td>
                </tr>
                ';
            }

        } else {
            $output .= '<tr>
                            <td colspan="6">Nenhum registro encontrado.</td>
                        </tr>';
        }
        $output .= '</tbody></table>';


        $response = array(
            'status' => 'success',
            'msg' => 'Setting created successfully',
            'output' => $output,
        ); 
        return $response;

    }  


    //Adicionar relacionamento de rule com usuario    
    public function featureUpdate(Request $request, $id)
    {
        
        $solucao = Solucao::find($id);
        $fea = FeatureSolucao::find($request['fea_id']);
        $fea->bg_color = $request['fea_bg_color'];
        $fea->titulo = $request['fea_titulo'];
        $fea->description = $request['fea_description'];
        $fea->solucao_id = $id;
        $fea->save();
        
        $fea->solucao()->associate($solucao)->save();

        return redirect()->back()->with('status', 'Feature(s) para o solução atualizado!');;

    }    

    //Adicionar relacionamento de rule com usuario    
    public function featureItemStore(Request $request)
    {
        
        $feature = FeatureSolucao::find($request['feaId']);
        
        $biblioteca = Biblioteca::find($request['item_icon']);
        $fea = new \App\FeatureSolucaoItem();
        $fea->biblioteca_id = $request['item_icon'];
        $fea->titulo = $request['item_titulo'];
        $fea->description = $request['item_description'];
        $fea->feature_solucao_id = $request['feaId'];
        $fea->save();
        
        $fea->featureSolucao()->associate($feature)->save();
        $fea->biblioteca()->associate($biblioteca)->save();

        $obj = FeatureSolucaoItem::where('feature_solucao_id', '=', $request['feaId'])->orderBy('order', 'ASC')->get();
        $output = '<table class="table table-striped" id="sortable">
                    <thead>
                        <tr>
                            <th> Id </th>
                            <th> Título </th>
                            <th> Ações </th>
                        </tr>
                    </thead>
                    <tbody>';
        if(count($obj) > 0) {
            foreach($obj as $row) {
                $output .= '
                
                <tr>
                <td>
                    <input type="hidden" name="ids[]" value="'.$row->id.'"> '.$row->id.'
                    <input type="hidden" name="model" value="SolucaofeatureItens"> 
                    <input type="hidden" name="parent_id" value="'.$feature->id.'"> 
                </td>
                <td>'.$row->titulo.'</td>
                <td style="display:flex"><a title="Editar" class="btn btn-icons btn-inverse-warning myBtn" data-list="listItensFeaturesSolucao" data-obj="'.$feature->solucao_id.'" data-item="'. $row->id .'" data-pagina="feature_solucao_items"
                    data-titulo="'. $row->titulo .'"
                    data-descricao="'. $row->description .'"
                    data-icon="'. $row->biblioteca_id .'"><i class="mdi mdi-grease-pencil"></i></a>
                <form action='. route('solucao.feature.item.del') .'
                method="post" class="">
                '. method_field('DELETE') .'
                '. csrf_field() .'
                <button title="Deletar" class="btn btn-icons btn-inverse-danger itemFeatureSolucaoDel" data-token="'. csrf_token() .'" 
                    data-solucao="'.$feature->solucao_id.'" data-feature="'.$feature->id.'" data-item="'.$row->id.'">
                    <i class="mdi mdi-delete "></i></button>
            </form></td>
                </tr>
                ';
            }

        } else {
            $output .= '<tr>
                            <td colspan="6">Nenhum registro encontrado.</td>
                        </tr>';
        }
        $output .= '</tbody></table>';


        $response = array(
            'status' => 'success',
            'msg' => 'Setting created successfully',
            'output' => $output,
        ); 
        return $response;

    }    



    //Adicionar relacionamento de rule com usuario    
    public function dificuldadeUpdate(Request $request, $id)
    {
        
        $solucao = Solucao::find($id);
        $fea = DificuldadeSolucao::find($request['dif_id']);
        $fea->bg_color = $request['dif_bg_color'];
        $fea->titulo = $request['dif_titulo'];
        $fea->description = $request['dif_description'];
        $fea->solucao_id = $id;
        $fea->save();
        
        $fea->solucao()->associate($solucao)->save();

        return redirect()->back()->with('status', 'Dificuldade(s) para o solução atualizado!');;

    }    

    //Adicionar relacionamento de rule com usuario    
    public function dificuldadeItemStore(Request $request)
    {
        
        $dificuldade = DificuldadeSolucao::find($request['feaId']);
        
        $biblioteca = Biblioteca::find($request['item_icon']);
        $fea = new \App\DificuldadeSolucaoItem();
        $fea->biblioteca_id = $request['item_icon'];
        $fea->titulo = $request['item_titulo'];
        $fea->description = $request['item_description'];
        $fea->dificuldade_solucao_id = $request['feaId'];
        $fea->save();
        
        $fea->dificuldadeSolucao()->associate($dificuldade)->save();
        $fea->biblioteca()->associate($biblioteca)->save();

        $obj = DificuldadeSolucaoItem::where('dificuldade_solucao_id', '=', $request['feaId'])->get();
        $output = '<table class="table table-striped">
                    <thead>
                        <tr>
                            <th> Id </th>
                            <th> Título </th>
                            <th> Ações </th>
                        </tr>
                    </thead>
                    <tbody>';
        if(count($obj) > 0) {
            foreach($obj as $row) {
                $output .= '
                
                <tr>
                <td>'.$row->biblioteca_id.'</td>
                <td>'.$row->titulo.'</td>
                <td style="display:flex">
                    <a title="Editar" class="btn btn-icons btn-inverse-warning myBtn" data-list="listItensDificuldadesSolucao" data-obj="'.$dificuldade->solucao_id.'" data-item="'. $row->id .'" data-pagina="dificuldade_solucao_items"
                        data-titulo="'. $row->titulo .'"
                        data-descricao="'. $row->description .'"
                        data-icon="'. $row->biblioteca_id .'"><i class="mdi mdi-grease-pencil"></i></a>
                <form action='. route('solucao.dificuldade.item.del') .'
                method="post" class=" ">
                '. method_field('DELETE') .'
                '. csrf_field() .'
                <button title="Deletar" class="btn btn-icons btn-inverse-danger itemDificuldadeSolucaoDel" data-token="'. csrf_token() .'" 
                    data-solucao="'.$dificuldade->solucao_id.'" data-dificuldade="'.$dificuldade->id.'" data-item="'.$row->id.'">
                    <i class="mdi mdi-delete " ></i></button>
            </form></td>
                </tr>
                ';
            }

        } else {
            $output .= '<tr>
                            <td colspan="6">Nenhum registro encontrado.</td>
                        </tr>';
        }
        $output .= '</tbody></table>';


        $response = array(
            'status' => 'success',
            'msg' => 'Setting created successfully',
            'output' => $output,
        ); 
        return $response;

    }    
}
