<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use DB;

use PDF;

class TransfertboutiqueController extends Controller
{
    //
    function valider1 () {

        $id=request('id');	

		DB::table('transfertboutique')->where('id', $id)->update(
			[
				'etat1' => "Validé",
			]
        );
        
		DB::table('ligne_transfertboutique')->where('transfert_id', $id)->update(
			[
				'etat1' => "Validé",
			]
        );
        
        return redirect()->route('nouveau_transfert_boutique')->with('status', 'Transfert validé avec succès !');
       
	}
	
	function valider2 () {

        $id=request('id');	

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

        $ligne = DB::table('ligne_transfertboutique')->where('transfert_id', $id)->get();

        $magx = DB::table('transfertboutique')->where('id', $id)->first()->magasinx_id;

        $nommagx = DB::table('magasin')->where('id', $magx)->first()->nom;
        
        $magy = DB::table('transfertboutique')->where('id', $id)->first()->magasiny_id;

        $nommagy = DB::table('magasin')->where('id', $magy)->first()->nom;
        
        $dd = DB::table('transfertboutique')->where('id', $id)->first()->date;
        foreach($ligne as $lignes){

            $qteval = $lignes->qte;

            //$qtestox = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magx)->orderbydesc('id')->take(1)->first()->stock_general;

            
            $smxc = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magx)->get()->count();
            if ( $smxc == 0){
                $smx = 0;
            } else {
                $smx = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magx)->orderbydesc('id')->take(1)->first()->apres;
            }
            DB::table('stock_magasin')->insert(
                [
                    'date' => $dd,
                    'magasin_id' => $magx,
                    'produit_id' => $lignes->produit_id,
                    'qte' => $qteval,
                    'type_operation' => 'Transfert',
                    'notes' => 'Transfert '.$nommagx.' vers '.$nommagy,
                    'en_stock' => $smx,
                    'apres' => ($smx - $qteval),
                    'user_id' => session('user')->id,
                ]
            );

            $verif = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magy)->get()->count();

            if ($verif > 0){

                $qtestoy = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magy)->orderbydesc('id')->take(1)->first()->stock_general;

                $smy = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magy)->orderbydesc('id')->take(1)->first()->apres;

                DB::table('stock_magasin')->insert(
                    [
                        'date' => $dd,
                        'magasin_id' => $magy,
                        'produit_id' => $lignes->produit_id,
                        'qte' => $qteval,
                        'type_operation' => 'TransfertRecu',
                        'notes' => 'Transfert reçu de '.$nommagx,
						'en_stock' => $smy,
						'apres' => ($smy + $qteval),
						'user_id' => session('user')->id,
                    ]
                );

            }else{

                $smy = 0;

                $qtestoy = 0;

				DB::table('stock_magasin')->insert(
                    [
                        'date' => $dd,
                        'magasin_id' => $magy,
                        'produit_id' => $lignes->produit_id,
                        'qte' => $qteval,
                        'type_operation' => 'TransfertRecu',
                        'notes' => 'Transfert reçu de '.$nommagx,
						'en_stock' => $smy,
						'apres' => ($smy + $qteval),
                        'user_id' => session('user')->id,
                        
                    ]
                ); 

            }

        }

        
		DB::table('transfertboutique')->where('id', $id)->update(
			[
				'etat2' => "Validé",
			]
        );
        
		DB::table('ligne_transfertboutique')->where('transfert_id', $id)->update(
			[
				'etat2' => "Validé",
			]
        );
        
        return redirect()->route('liste_transfert_recu_boutique')->with('status', 'Transfert validé avec succès !');
       
	}
	
	function annuler () {

        $id=request('id');	

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

        $ligne = DB::table('ligne_transfertboutique')->where('transfert_id', $id)->get();

        $magx = DB::table('transfertboutique')->where('id', $id)->first()->magasinx_id;

        $nommagx = DB::table('magasin')->where('id', $magx)->first()->nom;
        
        $magy = DB::table('transfertboutique')->where('id', $id)->first()->magasiny_id;

        $nommagy = DB::table('magasin')->where('id', $magy)->first()->nom;

        foreach($ligne as $lignes){

            $qteval = $lignes->qte;

            //$qtestox = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magx)->orderbydesc('id')->take(1)->first()->stock_general;

            
            $smxc = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magx)->get()->count();
            if ( $smxc == 0){
                $smx = 0;
            } else {
                $smx = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magx)->orderbydesc('id')->take(1)->first()->apres;
            }
            DB::table('stock_magasin')->insert(
                [
                    'date' => $today,
                    'magasin_id' => $magx,
                    'produit_id' => $lignes->produit_id,
                    'qte' => $qteval,
                    'type_operation' => 'Transfert annulé',
                    'notes' => 'Transfert annulé '.$nommagx.' vers '.$nommagy,
                    'en_stock' => $smx,
                    'apres' => ($smx + $qteval),
                    //'stock_general' => $qtestox,
                ]
            );

            $verif = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magy)->get()->count();

            if ($verif > 0){

                $qtestoy = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magy)->orderbydesc('id')->take(1)->first()->stock_general;

                $smy = DB::table('stock_magasin')->where('produit_id', $lignes->produit_id)->where('magasin_id', $magy)->orderbydesc('id')->take(1)->first()->apres;

                DB::table('stock_magasin')->insert(
                    [
                        'date' => $today,
                        'magasin_id' => $magy,
                        'produit_id' => $lignes->produit_id,
                        'qte' => $qteval,
                        'type_operation' => 'Annulation transfert',
                        'notes' => 'Transfert annulé de '.$nommagx,
						'en_stock' => $smy,
						'apres' => ($smy - $qteval),
						//'stock_general' => $qtestox,
                    ]
                );

            }else{

                $smy = 0;

                $qtestoy = 0;

				DB::table('stock_magasin')->insert(
                    [
                        'date' => $today,
                        'magasin_id' => $magy,
                        'produit_id' => $lignes->produit_id,
                        'qte' => $qteval,
                        'type_operation' => 'Annulation transfert',
                        'notes' => 'Transfert annulé de '.$nommagx,
						'en_stock' => $smy,
						'apres' => ($smy - $qteval),
                        //'stock_general' => $qteval,
                        
                    ]
                ); 

            }

        }

        
		DB::table('transfertboutique')->where('id', $id)->update(
			[
				'etat2' => "Annulé",
			]
        );
        
		DB::table('ligne_transfertboutique')->where('transfert_id', $id)->update(
			[
				'etat2' => "Annulé",
			]
        );
        
        return redirect()->route('liste-transfert-boutique')->with('status', 'Transfert annulé avec succès !');
       
	}


    function voirvalider ($id) {

        $tran= DB::table('transfertboutique')->where('id',$id)->first();

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

    public function detail($id){

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

        $ligne=DB::table('ligne_transfertboutique')->where('transfert_id',$id)->get();
        
		return view('transfertboutique/detail', [

            'ligne'=> $ligne,
            
		]);
	}


    function liste1(){

        if(session('user')== null) {
            return redirect('/');
        }
            $transfert = DB::table('transfertboutique')->where('magasinx_id', session('user')->magasin_id)->get();
           
			return view('transfertboutique/transfert_effectue',[

            'transfert' => $transfert,
            
        ]);	
    }
    

    function liste2(){

        if(session('user')== null) {
            return redirect('/');
        }
            $transfert = DB::table('transfertboutique')->where('magasiny_id', session('user')->magasin_id)->orderBydesc('id')->get();
           
			return view('transfertboutique/transfert_recu',[

            'transfert' => $transfert,
            
        ]);	
    }
    

    public function transfert(){
		
        if(session('user')== null) {
            return redirect('/');
        }
		
		/*if (session('user')->roles== "Admin"){
        $magx = DB::table('magasin')->get();
		} else {
		$magx = session('user')->magasin_id ;
		}*/
		
		//$produit=DB::table('produit_vendable')->where('stock_general', '>', 0)->orderby('designation','asc')->get();
        $produit=DB::table('produit_vendable')->orderby('designation','asc')->get();
        $magasin = DB::table('magasin')->where('id', session('user')->magasin_id)->get();
        $magasin2 = DB::table('magasin')->where('id','!=',session('user')->magasin_id)->get();
		$categorie=DB::table('categorie')->get();
        //$transfert = DB::table('transfertboutique')->where('magasinx_id', session('user')->magasin_id)->orderBy('etat1','asc')->get();
        $transfert = DB::table('transfertboutique')->where('magasinx_id', session('user')->magasin_id)->orderBydesc('id')->take(50)->get();
		
		return view('transfertboutique/nouveau', [

			'produit'=> $produit,
            'magasin'=> $magasin,
            'magasin2'=> $magasin2,
            'transfert'=> $transfert,
            'cat'=> $categorie,
			
		]);
    }
    
     public function listetransfert(){
		
        if(session('user')== null) {
            return redirect('/');
        }
        $transfert = DB::table('transfertboutique')->orderBydesc('id')->get();
		
		return view('transfertboutique/liste', [
            'transfert'=> $transfert,
			
		]);
    }
    
    

    function enregistrer(Request $request)
    {

        //$datetransfert= implode('-', array_reverse(explode('/', request('datetransfert'))));
        $datetransfert= date('Y-m-d');
		$magasinx=request('magasinx');
        $magasiny=request('magasiny');
        $transmag = request('item');
       
        DB::table('transfertboutique')->insert(
            [
                'date' => $datetransfert,
                'magasinx_id' => $magasinx,
                'magasiny_id' => $magasiny,
                'etat1' => "En cours",
                'user_id' => session('user')->id,
            ]
        );

        $idLasttranfert = DB::table('transfertboutique')->get()->last()->id;

        $idLastmagx = DB::table('transfertboutique')->get()->last()->magasinx_id;

        $idLastmagy = DB::table('transfertboutique')->get()->last()->magasiny_id;

        $idLastetat1 = DB::table('transfertboutique')->get()->last()->etat1;

        $idLastuser = DB::table('transfertboutique')->get()->last()->user_id;

        $idLast= strlen($idLasttranfert);

        if ($idLast==1){
            DB::table('transfertboutique')->where('id', $idLasttranfert)->update(
                [
                    'numero' => 'TRANSFERT-'.'000'.$idLasttranfert,
                ]
            );
        } elseif ($idLast==2){
    
            DB::table('transfertboutique')->where('id', $idLasttranfert)->update(
                [
                    'numero' => 'TRANSFERT-'.'00'.$idLasttranfert,
                ]
            );
        } elseif ($idLast==3){
            DB::table('transfertboutique')->where('id', $idLasttranfert)->update(
                [
                    'numero' => 'TRANSFERT-'.'0'.$idLasttranfert,
                ]
            );
        } else {
            DB::table('transfertboutique')->where('id', $idLasttranfert)->update(
                [
                    'numero' => 'TRANSFERT-'.$idLasttranfert,
                ]
            );
        }


        $i=0;
			
	    foreach ($transmag as $key=> $transmags){

            $desi =  DB::table('produit_vendable')->where('id', $transmags[0 +$i])->first()->designation;
            //$qtestocx =  DB::table('stock_magasin')->where('produit_id', $transmags[1 +$i])->where('magasin_id', $idLastmagx)->get()->last()->apres;
           
            /*$veriprodx =  DB::table('stock_magasin')->where('magasin_id', $idLastmagx)->where('produit_id', $transmags[1 +$i])->first();

            if($veriprodx){

                $qtestocx =  DB::table('stock_magasin')->where('produit_id', $transmags[1 +$i])->where('magasin_id', $idLastmagx)->get()->last()->apres;

            if ($qtestocx <= 0){

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

                DB::table('ligne_transfertboutique')->where('transfert_id', $idLasttranfert)->delete();

                $message = [
                    "title" => 'Erreur de stock',
                    "type" => 'error',
                    "response" => 'Aucun stock de '.$desi.' n\'est disponible dans ce dépôt !',
                ];
    
                return $message;
            } else {

                if ($qtestocx < $transmags[2 +$i]){

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

                    DB::table('ligne_transfert')->where('transfert_id', $idLasttranfert)->delete();
    
                    $message = [
                        "title" => 'Erreur de stock',
                        "type" => 'error',
                        "response" => 'Stock de '.$desi.' insuffisant !',
                    ];
        
                    return $message;
                    
                }else{ */


                    DB::table('ligne_transfertboutique')->insert(
						[
								'transfert_id' => $idLasttranfert,
								'produit_id' => $transmags[0 +$i],
								'qte' => $transmags[1 +$i],
								'etat1' => $idLastetat1,   
								'magx' => $idLastmagx,
								'magy' => $idLastmagy, 
								'user_id' => $idLastuser,
								
						]
					);
						$i; 

                }

            

           /* }else{

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

                DB::table('ligne_transfertboutique')->where('transfert_id', $idLasttranfert)->delete();

                $message = [
                    "title" => 'Erreur de stock',
                    "type" => 'error',
                    "response" => 'Aucun stock de '.$desi.' n\'est disponible dans ce dépôt !',
                ];
    
                return $message;

            }*/

        return redirect()->route('nouveau_transfert_boutique')->with('status', 'Transfert enregistré avec succès !');

        /*$message = [
            "title" => 'success',
            "type" => 'success',
            "response" => 'Opération effectué avec succes !',
        ];

        return $message; */

    }


    function supprimer () {

        $id=request('id');

        DB::table('ligne_transfertboutique')->where('transfert_id', $id)->delete();
        
        DB::table('transfertboutique')->where('id', $id)->delete();
        
        return redirect()->route('nouveau_transfert_boutique')->with('status', 'Suppression effectuée avec succès');

    }








}
