<?php

namespace App\Http\Controllers;

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

class RetourappromatiereController extends Controller
{
	function voir ($id) {

        $retour= DB::table('retourappromatiere')->where('id',$id)->first();
        return [
            'retour' => $retour,
        ];
	}
	function valider () {

		$id=request('id');	
		
		DB::table('retourappromatiere')->where('id', $id)->update(
			[
				'etat' => "Validée",
			]
		);
		DB::table('ligneretourappromatiere')->where('retourappromatiere_id', $id)->update(
			[
				'etat' => "Validée",
			]
		);

		$vo = DB::table('ligneretourappromatiere')->where('retourappromatiere_id', $id)->where('etat','Validée')->get();

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


		foreach($vo as $vos){
					
					//$sg = DB::table('matiere')->where('id', $vos->matiere_id)->first()->stock_general;
					$qtestoc = DB::table('stock_matiere')->where('matiere_id', $vos->matiere_id)->first();
					if ($qtestoc){
					$qtesto = DB::table('stock_matiere')->where('matiere_id', $vos->matiere_id)->orderBydesc('id')->take(1)->first()->apres;
					} else {
						$qtesto = 0;
					}
					$qteval = $vos->qte;
					DB::table('stock_matiere')->insert(
							[
								'date' => $today,
								'matiere_id' => $vos->matiere_id,
								'qte' => $qteval,
								'type_operation' => 'Retourappro',
								'en_stock' => $qtesto,
								'apres' => ($qtesto - $qteval),
							]
						);
						
			}
		return redirect()->route('retourappromatiere')->with('status', 'Retour validé avec succès !');
	}
	
	function annuler () {

		$id=request('id');	
		
		DB::table('retourappromatiere')->where('id', $id)->update(
			[
				'etat' => "Annulée",
			]
		);
		DB::table('ligneretourappromatiere')->where('retourappromatiere_id', $id)->update(
			[
				'etat' => "Annulée",
			]
		);

		$vo = DB::table('ligneretourappromatiere')->where('retourappromatiere_id', $id)->get();

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


		foreach($vo as $vos){
					
					//$sg = DB::table('matiere')->where('id', $vos->matiere_id)->first()->stock_general;
					$qtestoc = DB::table('stock_matiere')->where('matiere_id', $vos->matiere_id)->first();
					if ($qtestoc){
					$qtesto = DB::table('stock_matiere')->where('matiere_id', $vos->matiere_id)->orderBydesc('id')->take(1)->first()->apres;
					} else {
						$qtesto = 0;
					}
					$qteval = $vos->qte;
					DB::table('stock_matiere')->insert(
							[
								'date' => $today,
								'matiere_id' => $vos->matiere_id,
								'qte' => $qteval,
								'type_operation' => 'Annulationretourappro',
								'en_stock' => $qtesto,
								'apres' => ($qtesto + $qteval),
							]
						);
						
			}
		return redirect()->route('retourappromatiere')->with('status', 'Retour annulé avec succès !');
	}
	
	function supprimer () {

        $id=request('id');
		DB::table('ligneretourappromatiere')->where('retourappromatiere_id', $id)->delete();
		DB::table('retourappromatiere')->where('id', $id)->delete();
        return redirect()->route('retourappromatiere')->with('status', 'Suppression effectuée avec succès');
    }
	public function detail($id)
	{
        if(session('user')== null) {
            return redirect('/');
        }

		$detail=DB::table('ligneretourappromatiere')->where('retourappromatiere_id',$id)->get();
		$totqte = DB::table('ligneretourappromatiere')->where('retourappromatiere_id',$id)->get()->sum('qte');
		$totml = DB::table('ligneretourappromatiere')->where('retourappromatiere_id',$id)->get()->sum('montligne');
		return view('retourappromatiere/detail', [
			'detail'=> $detail,
			'totqte'=> $totqte,
			'totml'=> $totml,
		]);
	}
    public function nouveau(){
		
        if(session('user')== null) {
            return redirect('/');
        }
		
		//$matiere=DB::table('matiere_vendable')->where('stock_general', '>', 0)->orderby('designation','asc')->get();
		$matiere=DB::table('matiere')->orderby('designation','asc')->get();
		$retourappromatiere = DB::table('retourappromatiere')->orderBydesc('id')->get();
		return view('retourappromatiere/nouveau', [
			'matiere'=> $matiere,
			'retour'=> $retourappromatiere,
		]);
	}
	function enregistrer()
    {
		$dat = date('d/m/Y');
        $hour = date('H:i:s');
		$today = implode('-', array_reverse(explode('/', $dat)));
		$todayyy = date('Y-m-d'); 
		$numfact=request('numfact');
		$peps=collect(request('peps'))->chunk(2);
		
		$appro = DB::table('appro_matiere')->where('numero', $numfact)->first();
	    if ($appro){
		DB::table('retourappromatiere')->insert(
				[
					'date' => $today,
					'numfact' => $numfact,
					'user_id' => session('user')->id,
				]
			);

			$idLastretourappromatiere = DB::table('retourappromatiere')->get()->last()->id;
			$idLast= strlen($idLastretourappromatiere);
	
			if ($idLast==1){
				DB::table('retourappromatiere')->where('id', $idLastretourappromatiere)->update(
					[
						'numero' => '000'.$idLastretourappromatiere,
					]
				);
			} elseif ($idLast==2){
		
				DB::table('retourappromatiere')->where('id', $idLastretourappromatiere)->update(
					[
						'numero' => '00'.$idLastretourappromatiere,
					]
				);
			} elseif ($idLast==3){
				DB::table('retourappromatiere')->where('id', $idLastretourappromatiere)->update(
					[
						'numero' => '0'.$idLastretourappromatiere,
					]
				);
			} else {
				DB::table('retourappromatiere')->where('id', $idLastretourappromatiere)->update(
					[
						'numero' => $idLastretourappromatiere,
					]
				);
			}
	
			$i=0;
			
	foreach ($peps as $key=> $pep){
	            $verif = DB::table('ligne_appro_matiere')->where('appro_matiere_id', $appro->id)->where('matiere_id', $pep[0 +$i])->first();
	            if ($verif){
				$desi =  DB::table('matiere')->where('id', $pep[1 +$i])->first()->designation;
				$pa = DB::table('ligne_appro_matiere')->where('appro_matiere_id', $appro->id)->where('matiere_id', $pep[0 +$i])->first()->pa;
				$contenu = DB::table('ligne_appro_matiere')->where('appro_matiere_id', $appro->id)->where('matiere_id', $pep[0 +$i])->first()->contenu;
				DB::table('ligneretourappromatiere')->insert(
						[
							'retourappromatiere_id' => $idLastretourappromatiere,
							'matiere_id' => $pep[0 +$i],
							'qte' => $pep[1 +$i] * $contenu,
							'montligne' => ($pep[1 +$i] * $pa),
							'date' => $todayyy, 
							'user_id' => session('user')->id,
						]
					);
						$i += count($pep->toArray()); 
				
			
			$message = [
				"title" => 'success',
				"type" => 'success',
				"response" => 'Opération effectué avec succes !',
			];
	
			return $message;
    	} else {
    	    DB::table('retourappromatiere')->where('id', $idLastretourappromatiere)->delete();
	        DB::table('ligneretourappromatiere')->where('retourappromatiere_id', $idLastretourappromatiere)->delete();
    	    $message = [
				"title" => 'Attention',
				"type" => 'error',
				"response" => 'La matière sélectionnée ne fait pas partie du numéro de commande saisi !',
			];
	
			return $message;
    	}
	}
	} else {
	    $message = [
				"title" => 'Attention',
				"type" => 'error',
				"response" => 'Le numéro de facture appro matière saisi est inexistant !',
			];
	
			return $message;
	}
        
    }
		
}
