<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Classes\ChiffreEnLettre;
use DB;

use PDF;

class LivraisonController extends Controller
{
    public function livraison($id){
      
        if(session('user')== null) {
            return redirect('/');
        }
		
		$vente= DB::table('vente_client')->where('id',$id)->first();
		$ligne= DB::table('ligne_vente_client')->where('vente_id',$id)->get();
		$livraison= DB::table('livraison')->where('vente_id',$id)->get();
		
        return view('livraison/nouveau',[

		'vente' => $vente,
		'ligne' => $ligne,
		'livraison' => $livraison,
		'id' => $id,
	  ]);
	}
	function livraisonpost()
    {

		$dat = date('d/m/Y');

        $hour = date('H:i:s');

		$today = implode('-', array_reverse(explode('/', $dat)));
		$todayyy = date('Y-m-d'); 
		$client_id=request('client_id');
		$vente_id=request('vente_id');
		$peps=collect(request('peps'))->chunk(2);
		if ($peps != ""){
		DB::table('livraison')->insert(
				[
					'date' => $today,
					'client_id' => $client_id,
					'vente_id' => $vente_id,
					'user_id' => session('user')->id,
					'magasin_id' => session('user')->magasin_id,
				]
			);

			$idLastliv = DB::table('livraison')->get()->last()->id;
			$idLast= strlen($idLastliv);
	
			if ($idLast==1){
				DB::table('livraison')->where('id', $idLastliv)->update(
					[
						'reference' => '000'.$idLastliv,
					]
				);
			} elseif ($idLast==2){
		
				DB::table('livraison')->where('id', $idLastliv)->update(
					[
						'reference' => '00'.$idLastliv,
					]
				);
			} elseif ($idLast==3){
				DB::table('livraison')->where('id', $idLastliv)->update(
					[
						'reference' => '0'.$idLastliv,
					]
				);
			} else {
				DB::table('livraison')->where('id', $idLastliv)->update(
					[
						'reference' => $idLastliv,
					]
				);
			}
	
			$i=0;
			
	foreach ($peps as $key=> $pep){
				$desi =  DB::table('produit_vendable')->where('id', $pep[0 +$i])->first()->desi;
				$qtestoc =  DB::table('ligne_vente_client')->where('produit_id', $pep[0 +$i])->where('vente_id', $vente_id)->first()->reste;
				$qtee =  DB::table('ligne_vente_client')->where('produit_id', $pep[0 +$i])->where('vente_id', $vente_id)->first()->qte;
                if ($qtestoc < $pep[1 +$i]){
					DB::table('livraison')->where('id', $idLastliv)->delete();
                    DB::table('ligne_livraison')->where('livraison_id', $idLastliv)->delete();
					$message = [
                        "title" => 'Erreur de stock',
                        "type" => 'error',
                        "response" => 'Le stock de livraison de '.$desi.' ne doit pas dépasser le reste à livrer !'.$qtestoc,
                    ];
        
                    return $message;
				} else {
			
					DB::table('ligne_livraison')->insert(
						[
								'livraison_id' => $idLastliv,
								'produit_id' => $pep[0 +$i],
								'qte' => $pep[1 +$i],
								'reste' => ($qtestoc - $pep[1 +$i]),
								'date' => $todayyy, 
								'user_id' => session('user')->id,
								'magasin_id' => session('user')->magasin_id,
						]
					);
					DB::table('ligne_vente_client')->where('vente_id', $vente_id)->where('produit_id', $pep[0 +$i])->where('qte', $qtee)->update(
						[
							'reste' => ($qtestoc - $pep[1 +$i]),
						]
					);
						$i += count($pep->toArray()); 
				}  
	}
	$message = [
				"title" => 'success',
				"type" => 'success',
				"response" => 'Opération effectuée avec succes !',
			];
	
			return $message;
	}
	}
	function voirlivraison ($id) {

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

            'livraison' => $livraison,
        ];
    }
	function supprimerlivraison () {

        $id=request('id');
		

        DB::table('livraison')->where('id', $id)->first();
        $vente_id = DB::table('livraison')->where('id', $id)->first()->vente_id;
        $ligne = DB::table('ligne_livraison')->where('livraison_id', $id)->get();
		foreach ($ligne as $key=> $lignes){
			$qtestoc =  DB::table('ligne_vente_client')->where('produit_id', $lignes->produit_id)->where('vente_id', $vente_id)->first()->reste;
			$qtee =  DB::table('ligne_vente_client')->where('produit_id', $lignes->produit_id)->where('vente_id', $vente_id)->first()->qte;
			$qte = $lignes->qte;
			DB::table('ligne_vente_client')->where('vente_id', $vente_id)->where('produit_id', $lignes->produit_id)->where('qte', $qtee)->update(
				[
					'reste' => ($qtestoc + $qte),
				]
			);	
		}
		DB::table('livraison')->where('id', $id)->delete();
		DB::table('ligne_livraison')->where('livraison_id', $id)->delete();
	return redirect()->route('livraison',['id'=> $vente_id])->with('status', 'Suppression effectuée avec succes');
    }
	public function detaillivraison($id)
	{
        if(session('user')== null) {
            return redirect('/');
        }

		$detail=DB::table('ligne_livraison')->where('livraison_id',$id)->get();
		return view('livraison/detail-livraison', [
			'detail'=> $detail,
		]);
	}
	function facturelivraison($id)
    {
		if(session('user')== null) {
            return redirect('/');
		}
		
		$livraison = DB::table('livraison')->where('id',$id)->first();
		$ligne = DB::table('ligne_livraison')->where('livraison_id',$id)->get();

        $pdf = PDF::loadView('/livraison/facturelivraison', [

            'ligne' => $ligne,
			'livraison' => $livraison,
		]);
		
        return $pdf->stream();
    }
}
