@@ -22,15 +22,13 @@ public function __construct()
2222 public function index ()
2323 {
2424 try {
25- // get the leverancier data from the database
26- $ leverancierOverzicht = $ this ->leverancierModel ->getAllLeverancierData ();
27- // if there is no data in leverancierOverzicht then show us 404 Error
28- if (empty ($ leverancierOverzicht )) {
29- // Will throw HttpException(404) and stop execution
25+ // Paginate leveranciers via stored procedure (4 per page)
26+ $ leverancierOverzicht = $ this ->leverancierModel ->getLeveranciersPaginatedViaSp (4 );
27+
28+ if ($ leverancierOverzicht ->isEmpty ()) {
3029 abort (404 , 'Geen leveranciers gevonden ' );
3130 }
3231
33- // Returning the data to the view
3432 return view ('leverancier.index ' , [
3533 'title ' => 'Leverancier Overzicht ' ,
3634 'leveranciers ' => $ leverancierOverzicht ,
@@ -62,33 +60,100 @@ public function store(Request $request)
6260 /**
6361 * Display the specified resource.
6462 */
65- public function show (LeverancierModel $ leverancier )
63+ public function show (int $ leverancierId )
6664 {
65+ $ leverancier = $ this ->leverancierModel ->getLeverancierWithContact ($ leverancierId );
66+
67+ if (!$ leverancier ) {
68+ abort (404 , 'Leverancier niet gevonden ' );
69+ }
6770
68- $ products = collect ($ this ->leverancierModel ->getProductsByLeverancierId ($ leverancier -> Id ))
71+ $ products = collect ($ this ->leverancierModel ->getProductsByLeverancierId ($ leverancierId ))
6972 ->sortByDesc ('AantalInMagazijn ' )
7073 ->values ();
7174
7275 return view ('leverancier.show ' , [
7376 'leverancier ' => $ leverancier ,
7477 'products ' => $ products ,
75- 'title ' => 'Geleverde producten ' ,
78+ 'title ' => 'Leverancier Details ' ,
7679 ]);
7780 }
7881 /**
7982 * Show the form for editing the specified resource.
8083 */
8184 public function edit (LeverancierModel $ leverancier )
8285 {
83- //
86+ $ leverancier = $ this ->leverancierModel ->getLeverancierWithContact ($ leverancierId );
87+
88+ if (!$ leverancier ) {
89+ abort (404 , 'Leverancier niet gevonden ' );
90+ }
91+
92+ return view ('leverancier.edit ' , [
93+ 'leverancier ' => $ leverancier ,
94+ 'title ' => 'Wijzig Leveranciergegevens ' ,
95+ ]);
8496 }
8597
8698 /**
8799 * Update the specified resource in storage.
88100 */
89101 public function update (Request $ request , LeverancierModel $ leverancier )
90102 {
91- //
103+ $ leverancier = $ this ->leverancierModel ->getLeverancierWithContact ($ leverancierId );
104+
105+ if (!$ leverancier ) {
106+ abort (404 , 'Leverancier niet gevonden ' );
107+ }
108+
109+ $ request ->validate ([
110+ 'naam ' => 'required|string|max:60 ' ,
111+ 'contactpersoon ' => 'required|string|max:60 ' ,
112+ 'leveranciernummer ' => 'required|string|max:11 ' ,
113+ 'mobiel ' => 'required|string|max:15 ' ,
114+ 'straat ' => 'required|string|max:60 ' ,
115+ 'huisnummer ' => 'required|integer|min:1 ' ,
116+ 'postcode ' => 'required|string|max:10 ' ,
117+ 'stad ' => 'required|string|max:60 ' ,
118+ ]);
119+
120+ // Scenario_02: Simulate technical failure for specific condition
121+ // If leverancier is "De Bron" and trying to change Mobiel to 06-39398825
122+ if ($ leverancier ->Naam === 'De Bron ' && $ request ->input ('mobiel ' ) === '06-39398825 ' ) {
123+ Log::warning ('Leverancier update prevented (Scenario_02 simulated failure) ' , [
124+ 'leverancierId ' => $ leverancierId ,
125+ 'leverancier ' => $ leverancier ->Naam ,
126+ ]);
127+
128+ return back ()
129+ ->withInput ()
130+ ->with ([
131+ 'error ' => 'Door een technische storing is het niet mogelijk de wijziging door te voeren. Probeer het op een later moment nog eens ' ,
132+ 'redirect_to ' => route ('leverancier.show ' , $ leverancierId ),
133+ ]);
134+ }
135+
136+ // Scenario_01: Normal successful update
137+ $ updated = $ this ->leverancierModel ->updateLeverancierAndContact ($ leverancierId , $ request ->only ([
138+ 'naam ' ,
139+ 'contactpersoon ' ,
140+ 'leveranciernummer ' ,
141+ 'mobiel ' ,
142+ 'straat ' ,
143+ 'huisnummer ' ,
144+ 'postcode ' ,
145+ 'stad ' ,
146+ ]));
147+
148+ if (!$ updated ) {
149+ return back ()
150+ ->withInput ()
151+ ->with ('error ' , 'Bijwerken van leveranciergegevens is mislukt. Probeer het later opnieuw. ' );
152+ }
153+
154+ return redirect ()
155+ ->route ('leverancier.show ' , $ leverancierId )
156+ ->with ('success ' , 'De wijzigingen zijn doorgevoerd ' );
92157 }
93158
94159 /**
0 commit comments