%PDF- %PDF-
Direktori : /usr/local/apache/htdocs/app/Http/Controllers/ |
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 😔'); } } }