1111use VentureDrake \LaravelCrm \Models \Client ;
1212use VentureDrake \LaravelCrm \Models \Organisation ;
1313use VentureDrake \LaravelCrm \Models \Person ;
14+ use VentureDrake \LaravelCrm \Models \Pipeline ;
1415use VentureDrake \LaravelCrm \Models \Quote ;
1516use VentureDrake \LaravelCrm \Services \OrderService ;
1617use VentureDrake \LaravelCrm \Services \OrganisationService ;
@@ -61,6 +62,17 @@ public function __construct(QuoteService $quoteService, PersonService $personSer
6162 */
6263 public function index (Request $ request )
6364 {
65+ $ viewSetting = auth ()->user ()->crmSettings ()->where ('name ' , 'view_quotes ' )->first ();
66+
67+ if (! $ viewSetting ) {
68+ auth ()->user ()->crmSettings ()->create ([
69+ 'name ' => 'view_quotes ' ,
70+ 'value ' => 'list ' ,
71+ ]);
72+ } elseif ($ viewSetting ->value == 'board ' ) {
73+ return redirect (route ('laravel-crm.quotes.board ' ));
74+ }
75+
6476 Quote::resetSearchValue ($ request );
6577 $ params = Quote::filters ($ request );
6678
@@ -71,7 +83,9 @@ public function index(Request $request)
7183 }
7284
7385 return view ('laravel-crm::quotes.index ' , [
74- 'quotes ' => $ quotes
86+ 'quotes ' => $ quotes ,
87+ 'viewSetting ' => $ viewSetting ->value ?? null ,
88+ 'pipeline ' => Pipeline::where ('model ' , get_class (new Quote ()))->first (),
7589 ]);
7690 }
7791
@@ -108,6 +122,8 @@ public function create(Request $request)
108122 'prefix ' => $ this ->settingService ->get ('quote_prefix ' ),
109123 'number ' => (Quote::latest ()->first ()->number ?? 1000 ) + 1 ,
110124 'quoteTerms ' => $ quoteTerms ,
125+ 'pipeline ' => Pipeline::where ('model ' , get_class (new Quote ()))->first (),
126+ 'stage ' => $ request ->stage ?? null
111127 ]);
112128 }
113129
@@ -213,6 +229,7 @@ public function edit(Quote $quote)
213229 'email ' => $ email ?? null ,
214230 'phone ' => $ phone ?? null ,
215231 'address ' => $ address ?? null ,
232+ 'pipeline ' => Pipeline::where ('model ' , get_class (new Quote ()))->first ()
216233 ]);
217234 }
218235
@@ -417,4 +434,45 @@ public function download(Quote $quote)
417434 'logo ' => $ this ->settingService ->get ('logo_file ' )->value ?? null ,
418435 ])->download ('quote- ' .strtolower ($ quote ->quote_id ).'.pdf ' );
419436 }
437+
438+ public function list (Request $ request )
439+ {
440+ auth ()->user ()->crmSettings ()->updateOrCreate ([
441+ 'name ' => 'view_quotes ' ,
442+ ], [
443+ 'value ' => 'list ' ,
444+ ]);
445+
446+ return redirect (route ('laravel-crm.quotes.index ' ));
447+ }
448+
449+ /**
450+ * Display a listing of the resource.
451+ *
452+ * @return \Illuminate\Http\Response
453+ */
454+ public function board (Request $ request )
455+ {
456+ $ viewSetting = auth ()->user ()->crmSettings ()->where ('name ' , 'view_quotes ' )->first ();
457+
458+ auth ()->user ()->crmSettings ()->updateOrCreate ([
459+ 'name ' => 'view_quotes ' ,
460+ ], [
461+ 'value ' => 'board ' ,
462+ ]);
463+
464+ Quote::resetSearchValue ($ request );
465+ $ params = Quote::filters ($ request );
466+
467+ if (Quote::filter ($ params )->get ()->count () < 30 ) {
468+ $ quotes = Quote::filter ($ params )->latest ()->get ();
469+ } else {
470+ $ quotes = Quote::filter ($ params )->latest ()->paginate (30 );
471+ }
472+
473+ return view ('laravel-crm::quotes.board ' , [
474+ 'quotes ' => $ quotes ,
475+ 'viewSetting ' => $ viewSetting ->value ?? null
476+ ]);
477+ }
420478}
0 commit comments