1111use VentureDrake \LaravelCrm \Models \Deal ;
1212use VentureDrake \LaravelCrm \Models \Organisation ;
1313use VentureDrake \LaravelCrm \Models \Person ;
14+ use VentureDrake \LaravelCrm \Models \Pipeline ;
1415use VentureDrake \LaravelCrm \Services \DealService ;
1516use VentureDrake \LaravelCrm \Services \OrganisationService ;
1617use VentureDrake \LaravelCrm \Services \PersonService ;
@@ -46,6 +47,18 @@ public function __construct(DealService $dealService, PersonService $personServi
4647 */
4748 public function index (Request $ request )
4849 {
50+ $ viewSetting = auth ()->user ()->crmSettings ()->where ('name ' , 'view_deals ' )->first ();
51+
52+ if (! $ viewSetting ) {
53+ auth ()->user ()->crmSettings ()->create ([
54+ 'name ' => 'view_deals ' ,
55+ 'value ' => 'list ' ,
56+ ]);
57+ } elseif ($ viewSetting ->value == 'board ' ) {
58+ return redirect (route ('laravel-crm.deals.board ' ));
59+ }
60+
61+
4962 Deal::resetSearchValue ($ request );
5063 $ params = Deal::filters ($ request );
5164
@@ -57,6 +70,8 @@ public function index(Request $request)
5770
5871 return view ('laravel-crm::deals.index ' , [
5972 'deals ' => $ deals ,
73+ 'viewSetting ' => $ viewSetting ->value ?? null ,
74+ 'pipeline ' => Pipeline::where ('model ' , get_class (new Deal ()))->first (),
6075 ]);
6176 }
6277
@@ -361,4 +376,45 @@ public function reopen(Deal $deal)
361376
362377 return back ();
363378 }
379+
380+ public function list (Request $ request )
381+ {
382+ auth ()->user ()->crmSettings ()->updateOrCreate ([
383+ 'name ' => 'view_deals ' ,
384+ ], [
385+ 'value ' => 'list ' ,
386+ ]);
387+
388+ return redirect (route ('laravel-crm.deals.index ' ));
389+ }
390+
391+ /**
392+ * Display a listing of the resource.
393+ *
394+ * @return \Illuminate\Http\Response
395+ */
396+ public function board (Request $ request )
397+ {
398+ $ viewSetting = auth ()->user ()->crmSettings ()->where ('name ' , 'view_deals ' )->first ();
399+
400+ auth ()->user ()->crmSettings ()->updateOrCreate ([
401+ 'name ' => 'view_deals ' ,
402+ ], [
403+ 'value ' => 'board ' ,
404+ ]);
405+
406+ Deal::resetSearchValue ($ request );
407+ $ params = Deal::filters ($ request );
408+
409+ if (Deal::filter ($ params )->get ()->count () < 30 ) {
410+ $ deals = Deal::filter ($ params )->latest ()->get ();
411+ } else {
412+ $ deals = Deal::filter ($ params )->latest ()->paginate (30 );
413+ }
414+
415+ return view ('laravel-crm::deals.board ' , [
416+ 'deals ' => $ deals ,
417+ 'viewSetting ' => $ viewSetting ->value ?? null
418+ ]);
419+ }
364420}
0 commit comments