<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\MensagensChat;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Hash;
use DateTime;
use Illuminate\Support\Facades\DB;
use App\Events\EnviarMensagemCliente;
use App\Events\CriarTalk;
use App\Models\Conversa;
use App\Models\Mensagem;
use App\Models\Funcionario;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\File;
use App\Events\TrocaMsgClienteFuncionario;

class MyMessageController extends Controller
{
   /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {    $user=user::where('id',1)->first();

        $conversas=Conversa::where('user_id',Auth::id())->orderBy('id','desc')->get();
            //  foreach($conversas as $chat)
            //      echo $chat->avatar;
            //      return;

            //dd($conversas);

        return view('usuarios.clientes.chat.chatNotificacao',['user'=>$user,'conversas'=>$conversas]);
       // $users=user::all(); 
        //return view('usuarios.clientes.chat.chat2',['users'=>$users]);
    }

        //Exibir todos os assuntos para tela do cliente
    public function trazerChatAssuntos()
    {   $dados="";
        //dd($user->id);
        
        $estado = 'Activo';
        $icon = 'online';
        //end
        
        $user=user::where('id',1)->first();
        //$idclicadoMyImag=User::where('id',1)->first();
        $userlogado=1;//$userlogadoClass->id;
        $clicado_id=$user->id; //id do destinatario

        $image="<img  class=\"avatar-md \"   data-toggle=\"tooltip\" data-placement=\"top\" title=\"Lean\" alt=\"avatar\" src=\"".asset('storage/img/'.$user->avatar)."\"/>";
        

        $conversas=Conversa::where('user_id',Auth::id())->where('estado',"aberta")->orderBy('id','desc')->get();
        // $idmax_conversas= $id=DB::table('conversas')->select('id')->max('id');
        
                //Fazer um inner no menu de conversas abertas
                foreach($conversas as $conversa)
                {  
                    $dados=$dados."<a href=\"#list-$user->name\" onclick=\"sd($user->id,$conversa->id)\" class=\"filterDiscussions nova single\">
                                      <input type=\"number\" value=\"$user->id\" nome=\"iuser1\" id=\"iuser1\" hidden><input type=\"number\" value=\"$conversa->id\" name=\"conversa_id1\" id=\"conversa_id1\" hidden>
                                            <img class=\"avatar-md\" src=\"".asset('storage/img/'.$user->avatar)."\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"$user->name\" alt=\"avatar\">
                                            <div class=\"status\">
                                                <i class=\"material-icons online\">fiber_manual_record</i>
                                            </div>
                                            <div class=\"new bg-yellow\">
                                                <span>log</span>
                                            </div>
                                            <div class=\"data\">
                                                <h5>$user->name</h5>
                                                <span>$conversa->created_at</span>
                                            <p>$conversa->tema</p>
                                            </div>
                                        </a>";
                 
                }

                $infoReturn[] = array(

                    "chat" => $dados,
                    "nome" => $user->name,
                    "estado"=>$estado,
                    "icon"=>$icon,
                    "avatar"=>$image,
                    "id_clicado"=>$userlogado,
                    "id_conversa"=>$conversa->id,
            
                  );
                //dd($infoReturn);
            return  json_encode($infoReturn);
        //return $dados;
    }


    //liostar mensagens no lado do cliente, tanto ppara off e on
    public function listarMenssage(Request $request)
    {
        $userlogado=Auth::user()->id;
        $clicado_id=$request->id;
        $userlogadoClass=User::where('id',$request->id)->first();
        $meuTema=Conversa::where('id',$request->id_conversa)->select('tema')->first();

        $image="<img  class=\"avatar-md \"   data-toggle=\"tooltip\" data-placement=\"top\" title=\"Lean\" alt=\"GESTDOC\" src=\"".asset('img/logo.png')."\" />";
     
        $mensagem=MensagensChat::join('mensagens','mensagens.chat_id','=','mensagenschats.id')
                    ->where('mensagens.conversa_id',$request->id_conversa)
                    ->orderBy('mensagenschats.created_at','asc')
                    ->orderBy('mensagenschats.id', 'desc')->get();    
                    $dados="";
                    //dd($mensagem);
                    foreach($mensagem as $mensagens){   
                       
                        if( $mensagens->user_from==$userlogado)
                        {

                                if( empty($mensagens->ficheiro) || $mensagens->ficheiro===null){
                                        //______CASO NAO TIVER EXIBE A MENSAGEM________

                                        $dados=$dados.'<div class=\'message me\'>
                                        <div class=\'text-main\'>
                                            <div class=\'text-group me\'>
                                                <div class=\'text me\'>
                                                    <p>'.$mensagens->mensagem.'</p>
                                                </div>
                                            </div>
                                            <span id=\'dataMessage_me\'>'.$mensagens->created_at.'</span>
                                        </div>
                                    </div>';
                                }
                                else{  
                                    //dd("entrarste aqui tem imagem");


                                    //__________ E  X  I  S  T  E T  E  X   T   O____________
                                    $meu_vectorNew=explode(".",$mensagens->nomeoriginal);
                                    $meu_vectorNew=end($meu_vectorNew);
                                    //dd($meu_vectorNew);
                                    $formato = ['pdf','psd','raw','eps','png','xlsx','doc','pptx','txt','xlsm','xlsb','xltx','ddl'];
                                    if( in_array($meu_vectorNew,$formato) )
                                        {
                                             $dados=$dados."<div class=\"message me\">
                                                    <div class=\"text-main me\">
                                                        <div class=\"text-group\">
                                                            <div class=\"text me\">
                                                                <div class=\"attachment\">
                                                                    <button class=\"btn attach\">
                                                                        <div class=\"botaorem\" onclick=\"deletardiv(this)\" ></div>
                                                                        <i class=\"material-icons md-18 botaosucess\">insert_drive_file</i>
                                                                    </button>
                                                                    <div class=\"file\">
                                                                        <h5><a href=\"".asset('storage/'.$mensagens->ficheiro)."\" target=\"_blank\">".$mensagens->nomeoriginal."</a></h5>
                                                                        <span>".$mensagens->tamanhoarquivo." Documento </span>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <span>".$mensagens->created_at."</span>
                                                    </div></div>";
                                        }
                                        else{
                                                $dados=$dados."<div class=\"message me\">
                                                            <div class=\"text-main\">
                                                                <div class=\"my img\">
                                                                    <div class=\"widget-tools pull-right\">
                                                                    
                                                                    </div>
                                                                
                                                                    <img class=\"avatar\" src=\"".asset('storage/'.$mensagens->ficheiro)."\"  data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" alt=\"avatar\" style=\"width:100px;height:100px;\" >
                                                                </div>	
                                                                                                        
                                                                    <span>$mensagens->created_at</span>
                                                            </div></div>";
                                            }
                                }
    
                                    
                        }else
                        {
                            
                            if( empty($mensagens->ficheiro) || $mensagens->ficheiro==null){
                                //______CASO NAO TIVER EXIBE A MENSAGEM________

                                    $dados=$dados."<div class=\"message\">
                                    <img class=\"avatar-md\" src=\"dist/img/avatars/avatar-female-5.jpg\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Keith\" alt=\"avatar\">
                                    <div class=\"text-main\">
                                        <div class=\"text-group\">
                                            <div class=\"text\">
                                                <p>".$mensagens->mensagem."</p>
                                            </div>
                                        </div>
                                        <span>".$mensagens->created_at."</span>
                                    </div>
                                </div>";
                            }
                            else
                             {  

                                    //__________EXISTE TEXTO
                                    $meu_vectorNew=explode(".",$mensagens->nomeoriginal);
                                    $meu_vectorNew=end($meu_vectorNew);
                                    //dd($meu_vectorNew);
                                    $formato = ['pdf','psd','raw','eps','png','doc','pptx','txt','xlsm','xlsb','xltx','ddl'];
                                if( in_array($meu_vectorNew,$formato) )
                                    {
                                         $dados=$dados."<div class=\"message\">
                                         <img class=\"avatar-md\" src=\"dist/img/avatars/avatar-female-5.jpg\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Keith\" alt=\"avatar\">
                                        <div class=\"text-main\">
                                            <div class=\"text-group\">
                                                <div class=\"text\">
                                                    <div class=\"attachment\">
                                                        <button class=\"btn attach\">
                                                            <div class=\"botaorem\" onclick=\"deletardiv(this)\" ></div>
                                                            <i class=\"material-icons md-18 botaosucess\">insert_drive_file</i>
                                                        </button>
                                                        <div class=\"file\">
                                                            <h5><a href=\"".asset('storage/'.$mensagens->ficheiro)."\" target=\"_blank\">".$mensagens->nomeoriginal."</a></h5>
                                                            <span>".$mensagens->tamanhoarquivo." Documento </span>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                            <span>".$mensagens->created_at."</span>
                                        </div></div>";
                                    }
                                    else{

                                            $dados=$dados."<div class=\"message\">
                                                            <img class=\"avatar-md\" src=\"".asset('storage/img/'.$userlogadoClass->avatar)."\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Keith\" alt=\"avatar\">
                                                            <div class=\"text-main\">
                                                                <div class=\"my img\">
                                                                    <div class=\"widget-tools pull-left\">
                                                                    
                                                                    </div>
                                                                
                                                                    <img class=\"avatar\" src=\"".asset('storage/'.$mensagens->ficheiro)."\"  data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" alt=\"avatar\" style=\"width:100px;height:100px;\" >
                                                                </div>	
                                                                                                        
                                                                    <span>$mensagens->created_at</span>
                                                            </div></div>";
                                        }

                             }
                            
                        }
                    }

                    
                    $infoReturn[] = array(

                        "chat" => $dados,
                        "id_clicado"=>$clicado_id,
                        "avatar"=>$image,
                
                      );
                    //dd($infoReturn);
                return  json_encode($infoReturn);
          //return $dados;
                   
    }


    public function listarMessageGestDock(Request $request)
    {
        dd($request->all());

        $userlogadoClass=User::where('id',Auth::user()->id)->first();
        $userlogado=$userlogadoClass->id;
        $clicado_id=$request->id;
        $mensagem=MensagensChat::join('mensagens','mensagens.chat_id','=','mensagenschats.id')
                    ->where('mensagens.conversa_id',$request->id_conversa)
                    ->where(
                        function ($query) use ($userlogado,$clicado_id)
                        {
                            $query->where([
                                'user_from'=>$userlogado,
                                'user_to'=>$clicado_id,]);
                        })
                    ->orWhere(
                        function ($query) use ($userlogado,$clicado_id)
                        {
                            $query->where([
                                'user_from'=>$clicado_id,
                                'user_to'=>$userlogado,]);
                        })
                    
                    ->orderBy('mensagenschats.created_at','asc')
                    ->orderBy('mensagenschats.id', 'desc')->get();    
                    $dados="";

                    foreach($mensagem as $mensagens){   
                  
                        if( $mensagens->user_from==$userlogado)
                        {

                                //________________SE tIVER iMAGEM_____
                                //ADICONA NESTA MESMA MAVRIAVEL

                            // "<div class=\"message me a\">
                                //     <div class=\"col-lg-4 col-md-4 col-sm-18\" id=\"myCapaImagem\">
                                //        <div>
                                //           <div class=\"cabeca\">
                                //                 <div class=\"widget-tools pull-right\">
                                //                 </div>
                                //             </div>
                                //             <div class=\"widget-body\" id=\"divafterbody\"><img src=\"bhjh\" class=\"myhover\" alt=\"de\" style=\"width:120px\">
                                //             </div>
                                //         </div>
                                //     </div>
                            // </div>"


                                //______CASO NAO TIVER EXIBE A MENSAGEM________

                            $dados.="
                                <div class=\"message me\">
                                    <div class=\"text-main\">
                                        <div class=\"text-group me\">
                                            <div class=\"text me\">
                                                <p>".$mensagens->mensagem."</p>
                                            </div>
                                        </div>
                                        <span>$mensagens->created_at</span>
                                    </div>
                                </div>
                                ";
                            
                        }else
                        {
                            $dados.="
                            <div class=\"message\">
                            <img class=\"avatar-md\" src=\"".asset('storage/img/'.$userlogadoClass->avatar)."\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Keith\" alt=\"avatar\">
                             <div class=\"text-main\">
                                 <div class=\"text-group\">
                                     <div class=\"text\">
                                         <p>".$mensagens->mensagem."</p>
                                     </div>
                                 </div>
                                 <span>$mensagens->created_at</span>
                             </div>
                         </div>
                         ";
                         
                        }
                    }
          return $dados;
    }

    public function listarInfo(Request $request)
    {  
        $dados=User::find($request->id)->first();
            return $dados->name;
    }

    public function abrirMensagem(Request $request)
    {
        $chat=MensagensChat::where('id',$request->idMsg)->first();

        return $chat->mensagem;

    }


    //do clinete para os restantes
    public function enviarMenssage(Request $request)
    {  
        //dd($request->all());
        $data = new DateTime();
        $data= $data->format('d-m-Y H:i');
        if(empty($request->menssagem))
        {    return;
            //dd("string vazia");
        }

            $msg=new MensagensChat();
            $msg->mensagem=filter_var($request->menssagem,FILTER_SANITIZE_STRIPPED);
            $msg->user_from=Auth::user()->id;
            $msg->user_to=1;
            $msg->estadomensagem="naolido";
            $msg->save();

            $idchat=$msg->id;

            $mensagem=new Mensagem();
            $mensagem->conversa_id=$request->id_conversa;
            $mensagem->chat_id=$msg->id;
            $mensagem->save();

        //    MensagensChat::create([
        //                'mensagem'=>filter_var($request->menssagem,FILTER_SANITIZE_STRIPPED),
        //                'user_from'=>Auth::user()->id,
        //                'user_to'=>$request->id_clicado,
        //                ]);

                      $idTrnas=intval($idchat);
                      event (new TrocaMsgClienteFuncionario($idTrnas) );
          
                          $dados="<div class=\"message me\">
                                <div class=\"text-main\">
                                  <div class=\"text-group me\">
                                      <div class=\"text me\">
                                          <p>".$request->menssagem."</p>
                                      </div>
                                  </div>
                                  <span id=\"dataMessage_me\">".$data."</span>
                              </div>
                          </div>";
                    
                          $infoConversanew[]=array(
                            "chat"=>$dados,
                            "id_conversa"=>$request->id_conversa,
                            "id_userto"=>1,
                        );
                 return json_encode($infoConversanew);
    }


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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = new DateTime();
        $data= $data->format('d-m-Y H:i');
        if(empty($request->menssagem))
        {    return;
            //dd("string vazia");
        }
         $idconversa=$request->id_conversa;
         $conversa=Conversa::where('id',$request->id_conversa)->first();
 
       // return "hayy";
        //dd($conversa);
        //dd(count($request->allFiles()['minhaimagem']));

        //__________CASO NA MSG CONSTAR IMAGEM______
        $myfile=$request->file('minhaimagem');
        if( !(empty($request->file('minhaimagem'))) )
        {      
                    foreach($myfile as $myfiles)
                    {
                        $meu_tema=$conversa->tema;

                        $nomeAl=Str::random(10);
                        if ($request->hasFile('minhaimagem'))
                        { 
                              //$myfile=$request->allFiles()['minhaimagem'][$i];
                                        $formato = ['jpg','jpeg','png','pdf','gif','bmp','tiff','pptx','txt','xlsm','xlsb','xltx','ddl',
                                        'psd','raw','eps','svg','webp','png','xlsx'];
                                        $nameFile = $data.''.$nomeAl.'.'.$myfiles->extension();
                                        //dd($nameFile);
                                        $meuNome=$myfiles->getClientOriginalName();
                                        $meutamanho="";
                                        $produtoMB=($myfiles->getSize()*0.000001);
                                        $produtoKB=($myfiles->getSize()*0.001);
                                        if( ($produtoMB>=0.1) )
                                        {      
                                            $produtoMB=number_format($produtoMB, 3, ',', '.');
                                            $meutamanho=$produtoMB."MB";
                                        } 
                                        else{
                                            $produtoKB=number_format($produtoKB, 3, ',', '.');
                                            $meutamanho=$produtoKB."KB";
                                            }
                
                            if(in_array($myfiles->extension(), $formato)){
                                //$nome = preg_replace('/ /', '-', $nameFile);
                                $meu_tema=preg_replace('/ /', '-', $meu_tema);
                                
                                //$saveImage = $request->file('image')->storeAs('chat/'.$n.'/',$nome);
                                //Storage::putFile('avatars',);
                                $saveImage = storage::putFile('chat/conversas/tema/'.$meu_tema.'/',$myfiles);
                                if($saveImage){
                                    MensagensChat::create([
                                        'ficheiro'=>$saveImage,
                                        'user_to'=>1,
                                        'user_from'=>Auth::user()->id,
                                        'mensagem'=>" ",
                                        'nomeoriginal'=>$meuNome,
                                        'tamanhoarquivo'=>$meutamanho,
                                        'tipomensagem'=>"ficheiro",
                                        ]);
                              
                                $idMensalgem_Last=MensagensChat::where('user_from',Auth::user()->id)->select('id')->max('id');
                                    

                               
                                }
                            }
                        }
                        //dd($saveImage);
                        Mensagem::create([
                            'chat_id'=>$idMensalgem_Last,
                            'conversa_id'=>$idconversa,

                            ]);

                        // //________________SÓ MENSGEM_______________         
                        $idTrnas=intval($idMensalgem_Last);

                        event (new TrocaMsgClienteFuncionario($idTrnas) );
                    }

                //se estiver vazio
              if( empty($request->menssagem) || $request->menssagem==="")
                        return;
              
                return $this->enviarMenssage($request);
            return;
             
        }  

        return;
        //_________________Sem FILE_______________
                 $chatmsg=new MensagensChat();
                 $chatmsg->user_to=1;
                 $chatmsg->user_from=Auth::user()->id;
                 $chatmsg->mensagem=$request->menssagem;
                 $chatmsg->tipomensagem="normal";
                 $chatmsg->save();
                
                 $idchatmsg=$chatmsg->id;
                  // $idMensalgem_Last=MensagensChat::where('user_from',Auth::user()->id)->select('id')->max('id');

                   $msg=new Mensagem();
                   $msg->chat_id=$idchatmsg;
                   $msg->conversa_id=$idconversa;
                   $msg->save();

            $idTrnas=intval($msg->id);
            event (new EnviarMensagemCliente($idTrnas,1) );

                $dados='<div class=\'message me\'>
                    <div class=\'text-main\'>
                        <div class=\'text-group me\'>
                            <div class=\'text me\'>
                                <p>'.$request->menssagem.'</p>
                            </div>
                        </div>
                        <span id=\'dataMessage_me\'>'.$data.'</span>
                    </div>
                </div>';
          
    
            return $dados;
    }

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

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Message  $message
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Message  $message
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Message  $message
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
