<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use DB;

use Image;

use Illuminate\Mail\Mailable;
use App\Mail\Confirmation;
use Illuminate\Support\Facades\Mail;


class ProduitController extends Controller
{
    //
	
	
    function VoirSupp ($id) {

        $licom= DB::table('ligne_commande')->where('id',$id)->first();
        return [
            'licom' => $licom,
        ];
    }


    function lphoto($id) {

        if(session('user')== null) {
            return redirect('/admin');
        }

        $simi = DB::table('similaire')->where('produit_id', $id)->get();

        return view('produit/liste_photo',[

            'simi' => $simi,

        ]);
    }


    function enregistrerphoto (Request $request, $id) {

        $photo=$request->file('photo');

         foreach ($photo as $photos){

            $name_tof = $photos->getClientOriginalName();

            DB::table('similaire')->insert(
                [
                    'produit_id' => $id,
                    'img' => $photos->storeAs('Image_produit', time(). '_'.$name_tof, 'public'),
                ]
            );
         }

        return redirect()->route('Liste_produit')->with('status', 'Photo(s) ajoutée(s) avec succes');
    }


    function ajouterphoto($id)
    {
        if(session('user')== null) {
            return redirect('/');
        }

        return view('produit/nouveau_photo',[

            'idpro' => $id,

        ]);
    }


    function listecart() {

        if(session('client')== null) {
            return redirect('/client');
        }

        $idcli =  session('client')->id;

        $cart = DB::table('ligne_commande')->where('client_id', $idcli)->where('etat', 'En cours')->get();

        return view('produit/liste_cart',[

            'cart' => $cart,

        ]);

    }

    function suppcart () {

         $id=request('id');

         DB::table('ligne_commande')->where('id', $id)->delete();

         return redirect()->back()->with('status', 'Produit supprimé du panier avec succes');

 }





    function add($id) {
		
		$lang = app()->getLocale();

        if(session('client')== null) {
            return redirect('/client');
        }
		
		   $product = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
            ->where('id',$id)
            ->first();
			
			$cat_id = $product->categorie_id;

			$rela = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
			->where('categorie_id',$cat_id)
            ->limit(9)
            ->get();

        $simimg = DB::table('similaire')->where('produit_id',$id)->get()->except([$id]);




        return view('produit/add_to_cart',[

            'product' => $product,

            'simimg' => $simimg,

            'rela' => $rela,

        ]);

    }




    function VoirSuppression ($id) {
		
		$lang = app()->getLocale();
		
		$produ = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
            ->where('id',$id)
            ->first();

        return [
            'produ' => $produ,
        ];
    }



    function supprimer () {

        $id=request('id');


        $veri = DB::table('offre')->where('produit_id', $id)->first();

        if( $veri){

            return redirect()->route('Liste_produit')->with('error', 'Suppression impossible...Produit déja utilisée');

        }else{


            $verif = DB::table('ligne_commande')->where('produit_id', $id)->first();

            if($verif){

                return redirect()->route('Liste_produit')->with('error', 'Suppression impossible...Produit déja utilisée');

            }else{

                DB::table('produit')->where('id', $id)->delete();

                return redirect()->route('Liste_produit')->with('status', 'Produit supprimé avec succes');

            }

        }

    }


    function modifier($id) {

        if(session('user')== null) {
            return redirect('/');
        }

        $cat = DB::table('categorie')->orderBy('libelle_en','asc')->get();
        //$idcli = session('client')->id;
       $fou = DB::table('client')->where('profil', 'Vendeur')->orderBy('nom','asc')->get();
        $pro = DB::table('produit')->where('id', $id)->first();

        return view('produit/modification',[

            'pro' => $pro,
            //'idcli' => $idcli,
			'fou' => $fou,
            'cat' => $cat,

        ]);
    }



    function liste()
    {
	    if(session('user')== null) {
            return redirect('/');
        }
		
        $prod = DB::table('produit')->orderBydesc('id')->paginate(7);


        return view('produit/liste', [

            'prod' => $prod,

            ]);
    }
	function boutique()
    {

        $lang = app()->getLocale();
		
		$cat = DB::table('categorie')
            ->select(
                'id',
                DB::raw("libelle_$lang as libelle"),
                'image_categorie',
            )
            ->orderBy("libelle_$lang")
            ->get();


        $prod = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
            ->where('etat_pub', 'Publié')
            ->orderByDesc('id')
            ->paginate(9);


        return view('boutique', [

            'prod' => $prod,
            'cat' => $cat,

            ]);
    }


	function search()
    {
		$lang = app()->getLocale();
		
		$rech = request('rech');
		
		$cat = DB::table('categorie')
            ->select(
                'id',
                DB::raw("libelle_$lang as libelle"),
                'image_categorie',
            )
            ->orderBy("libelle_$lang")
            ->get();


        $rechprod = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
			->where("designation_$lang",'like', "%$rech%")
            ->where('etat_pub', 'Publié')
            ->orderByDesc('id')
            ->paginate(9);
			
		$prodc = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
                'etat_pub',
                'etat_dispo'
            )
			->where("designation_$lang",'like', "%$rech%")
            ->where('etat_pub', 'Publié')
			->get()->count();
		

        return view('boutique3', [

            'rechprod' => $rechprod,
            'prodc' => $prodc,
            'cat' => $cat,
            'rech' => $rech,

            ]);
    }


	function boutique2()
    {
		
		$lang = app()->getLocale();
		
		$categ = request('categ');
		
		$cat = DB::table('categorie')
            ->select(
                'id',
                DB::raw("libelle_$lang as libelle"),
                'image_categorie',
            )
            ->orderBy("libelle_$lang")
            ->get();


        $prod = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
			->where('categorie_id', $categ)
			->where('etat_pub', 'Publié')
			->whereIn('etat_dispo', ['Vente/Location','Vente'])
			->paginate(9);

        return view('boutique2', [

            'prod' => $prod,
            'cat' => $cat,
            'categ' => $categ,

            ]);
    }
	function boutique3($id)
    {
		
		$lang = app()->getLocale();
		
		$id = request('id');
		
		$cat = DB::table('categorie')
            ->select(
                'id',
                DB::raw("libelle_$lang as libelle"),
                'image_categorie',
            )
            ->orderBy("libelle_$lang")
            ->get();


        $prod = DB::table('produit')
            ->select(
                'id',
                DB::raw("designation_$lang as designation"),
                DB::raw("description_$lang as description"),
                'image_produit',
                'categorie_id',
                'prix',
				'etat_pub',
                'etat_dispo'
            )
			->where('categorie_id', $id)
			->where('etat_pub', 'Publié')
			->paginate(9);



        return view('boutique2', [

            'prod' => $prod,
            'cat' => $cat,
            'categ' => $id,


            ]);

    }



    function nouveau () {

        if(session('user')== null) {
            return redirect('/admin');
        }

        $cat = DB::table('categorie')->orderBy('libelle_en','asc')->get();
        $fou = DB::table('client')->where('profil', 'Vendeur')->get();

        return view('produit/nouveau_produit', [

            'cat' => $cat,
            'fou' => $fou,

            ]);

    }



 


    function ajouterpanier (Request $request){

        $idpro= request("prod_id");

        $qte = request("qte");

        $cli =  session('client')->id;

        $today = date('Y-m-d');

        $veri = DB::table('commande')->where('client_id', $cli)->where('etat', 'En cours')->first();

            if($veri){

                $commande_id = DB::table('commande')->where('client_id', $cli)->where('etat', 'En cours')->first()->id;
				
				

                $veriprod = DB::table('ligne_commande')->where('commande_id', $commande_id)->where('client_id', $cli)->where('produit_id', $idpro)->first();

                if($veriprod){

                    return redirect()->back()->with('error', 'Produit déjà ajouté dans le panier !');

                }else{



                    $pri = DB::table('produit')->where('id', $idpro)->first()->prix;


                    DB::table('ligne_commande')->insert(

                        [
                            'commande_id' => $commande_id,
                            'produit_id' => $idpro,
                            'client_id' => $cli,
                            'qte' => $qte,
                            'etat' => 'En cours',
                            'etat1' => 'Non traitée',
                            'somligne' => $qte * $pri ,


                        ]
                    );

                    return redirect()->back()->with('status', 'Produit ajouté dans le panier avec succès!');

                }

            }

            else{

                    DB::table('commande')->insert(

                        [
                            'client_id' => $cli,
                            'etat' => 'En cours',
                            'etat1' => 'Non traitée',
                            'datecmde' => $today,
                        ]
                    );


                    $idLastcmde = DB::table('commande')
                    ->where('etat', 'En cours')->where('client_id', $cli)
                    ->get()->last()->id;


                    $pri = DB::table('produit')->where('id', $idpro)->first()->prix;

                    DB::table('ligne_commande')->insert(

                        [
                            'commande_id' => $idLastcmde,
                            'produit_id' => $idpro,
                            'client_id' => $cli,
                            'qte' => $qte,
                            'etat' => 'En cours',
                            'somligne' => $qte * $pri ,

                        ]
                    );


                    $idLast= strlen($idLastcmde);

                    if ($idLast==1){
                        DB::table('commande')->where('id', $idLastcmde)->update(
                            [
                                'reference' =>'000'.$idLastcmde.'/COMMANDE',
                            ]
                        );
                    } elseif ($idLast==2){

                        DB::table('commande')->where('id', $idLastcmde)->update(
                            [
                                'reference' =>'00'.$idLastcmde.'/COMMANDE',
                            ]
                        );
                    } elseif ($idLast==3){
                        DB::table('commande')->where('id', $idLastcmde)->update(
                            [
                                'reference' =>'0'.$idLastcmde.'/COMMANDE',
                            ]
                        );
                    } else {
                        DB::table('commande')->where('id', $idLastcmde)->update(
                            [
                                'reference' => $idLastcmde.'/COMMANDE',
                            ]
                        );
                    }
					/*
					Envoie de mail

					$email = "kbe.technologie@gmail.com";
					$mailable = new Vente();
					Mail::to($email)->send($mailable);

					*/
                    return redirect()->route('add_to_cart', ['id'=>$idpro])->with('status', 'Produit ajouté dans le panier avec succès!');

            }

    }


    function enregistrer (Request $request){

        $desien= request("desien");
        $desifr= request("desifr");
        $idcat = request("categorie");
        $prix= request("prix");
        $descrien=request("descriptionen");
        $descrifr=request("descriptionfr");

        $tof=$request->file('tof');

        $name_tof = time().'.'.$tof->getClientOriginalName();
		
        $veri = DB::table('produit')->where('designation_en', $desien)->where('designation_fr', $desifr)->where('categorie_id', $idcat)->first();
		
		if($veri){

              return redirect()->back()->with('error', 'Produit déjà enregistré !');

        }else{
			
		    DB::table('produit')->insert(

                [
                    'designation_en' => $desien,
                    'designation_fr' => $desifr,
                    'image_produit' => $tof->storeAs('Image_produit', time(). '_'.$name_tof, 'public'),
                    'nom_image_produit' => $name_tof,
                    'categorie_id' => $idcat,
                    'nouveau' => "Oui",
                    'description_en' => $descrien,
                    'description_fr' => $descrifr,
                    'prix' => $prix,
                    'etat_dispo' => "Vente",
                    'etat_pub' => "Publié",
                ]
            );

            return redirect()->route('Nouveau_produit')->with('status', 'Produit enregistré avec succes !');
			
		}

    }



    function valider (Request $request, $id){

        $desien= request("desien");
        $desifr= request("desifr");
        $idcat = request("categorie");
        $prix= request("prix");
        $descrien=request("descriptionen");
        $descrifr=request("descriptionfr");
        $tof=$request->file('tof');

        if($tof){

            $name_tof = $tof->getClientOriginalName();


            DB::table('produit')->where('id', $id)->update(

                [
                    'designation_en' => $desien,
                    'designation_fr' => $desifr,
                    'image_produit' => $tof->storeAs('Image_produit', time(). '_'.$name_tof, 'public'),
                    'nom_image_produit' => $name_tof,
                    'categorie_id' => $idcat,
                    'description_en' => $descrien,
                    'description_fr' => $descrifr,
                    'prix' => $prix,
                    'etat_dispo' => "Vente",
                    'etat_pub' => "Publié",
                ]
            );

        return redirect()->route('Liste_produit')->with('status', 'Modification effectuée avec succes !');


        } else{

            DB::table('produit')->where('id', $id)->update(

                [
                    'designation_en' => $desien,
                    'designation_fr' => $desifr,
                    'categorie_id' => $idcat,
                    'description_en' => $descrien,
                    'description_fr' => $descrifr,
                    'prix' => $prix,
                    'etat_dispo' => "Vente",
                    'etat_pub' => "Publié",

                ]
            );

        return redirect()->route('Liste_produit')->with('status', 'Modification effectuée avec succes !');

              }

    }


}
