<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use PDF;

class FournisseurController extends Controller
{
    //

	function VoirSuppression ($id) {

        $fourn= DB::table('fournisseur')->where('id',$id)->first();
        return [

            'fourn' => $fourn,
        ];
    }

    function supprimer () {

        $id=request('id');

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

        if($veri) {

            return redirect()->route('nouveau-fournisseur')->with('error', 'Suppression impossible ! Appro déjà effectuée sur ce fournisseur');
        
        }else{

            DB::table('fournisseur')->where('id', $id)->delete();
    
            return redirect()->route('nouveau-fournisseur')->with('status', 'Suppression effectuée avec succes');
        }
   
    }


    function fournisseur()
    {
        if(session('user')== null) {
            return redirect('/');
        }
		$fournisseur = DB::table('fournisseur')->orderBydesc('id')->get();
	return view('fournisseurs/nouveau', [
		'fournisseur' => $fournisseur,
	]);
    }
    function liste() {
        if(session('user')== null) {
            return redirect('/');
        }
        $fournisseur = DB::table('fournisseur')->orderBydesc('id')->get();
        return view('fournisseurs/liste',[
            'fournisseur' => $fournisseur,
        ]);
    }
    function listehors() {
        if(session('user')== null) {
            return redirect('/');
        }
        $fournisseur = DB::table('fournisseur')->where('statut', 0)->orderBydesc('id')->get();
        return view('fournisseurs/listehors',[
            'fournisseur' => $fournisseur,
        ]);
    }
    function listesuspendu() {
        if(session('user')== null) {
            return redirect('/');
        }
        $fournisseur = DB::table('fournisseur')->where('statut', 2)->orderBydesc('id')->get();
        return view('fournisseurs/listesuspendu',[
            'fournisseur' => $fournisseur,
        ]);
    }
    function modifier($id) {
        if(session('user')== null) {
            return redirect('/');
        }
        $fournisseur=DB::table('fournisseur')->get();
        $fou1 = DB::table('fournisseur')->where('id', $id)->first();
        return view('fournisseurs/modifier',[
            'fournisseur' => $fournisseur,
            'fou1'=>$fou1,
        ]);
    }

    function enregistrer(Request $request)
    {

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

        $verification= DB::table('fournisseur')->where('nom',$nom)->first();
        if($verification){
            $message = [
                "title" => 'Error',
                "type" => 'error',
                "response" => 'Cet enregistrement existe déjà',
            ];

            return $message;
        }
        else {
            DB::table('fournisseur')->insert(
                [
                    'nom' => $nom,
                    'telephone' => $telephone,
                    //'date' => $today,
                ]
            );
		}
		
            $message = [
                "title" => 'success',
                "type" => 'success',
                "response" => 'Enregistrement effectué avec succès !',
            ];

            return $message;
		}

    function valider(Request $request, $id)
    {

        $nom=request('nom');
        $telephone=request('telephone');

        DB::table('fournisseur')->where('id', $id)->update(
                [
                    'nom' => $nom,
                    'telephone' => $telephone,
                ]
            );
            return redirect()->route('nouveau-fournisseur')->with('status', 'Modification effectuée avec succès');
    }

    function Voir ($id) {
        $emp= DB::table('fournisseur')->where('id',$id)->first();
        return [
            'emp' => $emp,
        ];
    }
	//PAIEMENT FOURNISSEUR
	function pf($id)
    {
        if(session('user')== null) {
            return redirect('/');
		}
		$appro = DB::table('appro_vendable')->where('id',$id)->first();
		$paie = DB::table('paiement_fou')->where('appro_id',$id)->get();
		return view('fournisseurs/paiement_appro',[
            'appro' => $appro,
            'paie' => $paie,
        ]);	
    }
	function enregistrer3(Request $request)
    {
        $appro_id=request('appro_id');
        $montant=request('montant');
        $mode=request('mode');
		$note=request('note');
		$numcheque=request('numcheque');
		//$today = date('Y-m-d H:i:s');
        //$today2 = date('Y-m-d');
        $today2= implode('-', array_reverse(explode('/', request('datepaie'))));
		$apayer = DB::table('appro_vendable')->where('id', $appro_id)->get()->sum('montant');
		$fou = DB::table('appro_vendable')->where('id', $appro_id)->first()->fournisseur_id;
		$sommePaiement =  DB::table('paiement_fou')->where('appro_id', $appro_id)->get()->sum('montant');
		$total = $sommePaiement + $montant ;
		$mtpd = DB::table('paiement_fou')->where('appro_id', $appro_id)->get()->sum('montant');
		$mtpd1 = $mtpd + $montant;
		$mtd = $apayer - $mtpd1;
		
		if( $total >  $apayer ) {
                $message = [
                "title" => 'Erreur',
                "type" => 'error',
                "response" => 'Le montant saisi ne doit pas dépasser le restant à payer :'. ' '. ($apayer - $sommePaiement).' F',
                ];

                return $message;
       }else{
                DB::table('paiement_fou')->insert(
                    [
                        'appro_id' => $appro_id,
                        'fournisseur_id' => $fou,
                        'montant' => $montant,
                        'mode' => $mode,
                        'date' => $today2,
                        'note' => $note,
                        'paye' => $mtpd1,
                        'reste' => $mtd,
                        

                    ]
                );
			 $message = [
                    "title" => 'success',
                    "type" => 'success',
                    "response" => 'Paiement enregistré avec succes !',
                    "id" => session('appro_id'),
                ];

                return $message;
				
		}
	}
	function voirpaie ($id) {

        $pai= DB::table('paiement_fou')->where('id',$id)->first();
        return [

            'pai' => $pai,
        ];
    }
    function supprimerpaie () {

        $id=request('id');
        $fid = DB::table('paiement_fou')->where('id', $id)->first()->appro_id;
        DB::table('paiement_fou')->where('id', $id)->delete();
        return redirect()->route('paiementfou',['id'=>$fid])->with('status', 'Suppression effectuée avec succes');
    }

    function vdpaie () {

        $id=request('id');
        $fid = DB::table('paiement_fou')->where('id', $id)->first()->appro_id;
        DB::table('paiement_fou')->where('id', $id)->update([
                'etat'=>'Validée'
            ]);
        
            return redirect()->route('paiementfou',['id'=>$fid])->with('status', 'Paiement validé avec succès');
        }
		//FACTURE PAIEMENT FOURNISSEUR
		function facturepaie($id)
			{
                if(session('user')== null) {
                    return redirect('/');
                }
				$paie = DB::table('paiement_fou')->where('id',$id)->first();
				$appro_id = DB::table('paiement_fou')->where('id',$id)->first()->appro_id;
				$fou = DB::table('paiement_fou')->where('id',$id)->first()->fournisseur_id;
				$ligne = DB::table('ligne_appro_vendable')->where('appro_id',$appro_id)->where('etat','Validée')->get();
				//$paye = DB::table('paiement_fou')->where('appro_id',$appro_id)->get()->sum('montant');
				$appro = DB::table('appro_vendable')->where('id',$appro_id)->where('etat','Validée')->first();
				

				$pdf = PDF::loadView('/fournisseurs/facture', [

					'paie' => $paie,
					'ligne' => $ligne,
					'appro' => $appro,
					'fou' => $fou,
					//'paye' => $paye,
				]);
				
				return $pdf->stream();
			}
		//AFFICHER CAISSE DEPENSE 
		
		function solde(){

        if(session('user')== null) {
            return redirect('/');
        }
		if (session('user')->roles == "Admin"){
			$solde = DB::table('caisse_depense')->orderBydesc('id')->get();
		} else {
			$solde = DB::table('caisse_depense')->where('magasin_id', session('user')->magasin_id)->orderBydesc('id')->get();
		}
		
			return view('solde/caisse-depense',[
            'solde' => $solde,
        ]);	
	}

}
