11<?php namespace TeachMe \Http \Controllers ;
22
3- use TeachMe \Entities \Ticket ;
4- use TeachMe \Http \Requests ;
5- use TeachMe \Http \Controllers \Controller ;
6-
3+ use Illuminate \Auth \Guard ;
4+ use Illuminate \Support \Facades \Redirect ;
75use Illuminate \Http \Request ;
86
7+ use TeachMe \Repositories \TicketRepository ;
8+
99class TicketsController extends Controller {
1010
11+ private $ ticketRepository ;
12+
13+ public function __construct (TicketRepository $ ticketRepository )
14+ {
15+ $ this ->ticketRepository = $ ticketRepository ;
16+ }
17+
1118 public function latest ()
1219 {
13- $ tickets = Ticket::orderBy ('created_at ' , 'DESC ' )->paginate (20 );
20+ $ tickets = $ this ->ticketRepository ->paginateLatest ();
21+
1422 return view ('tickets/list ' , compact ('tickets ' ));
1523 }
1624
@@ -21,20 +29,39 @@ public function popular()
2129
2230 public function open ()
2331 {
24- $ tickets = Ticket:: where ( ' status ' , ' open ' )-> orderBy ( ' created_at ' , ' DESC ' )-> paginate ( 20 );
32+ $ tickets = $ this -> ticketRepository -> paginateOpen ( );
2533 return view ('tickets/list ' , compact ('tickets ' ));
2634 }
2735
2836 public function closed ()
2937 {
30- $ tickets = Ticket:: where ( ' status ' , ' closed ' )-> orderBy ( ' created_at ' , ' DESC ' )-> paginate ( 20 );
38+ $ tickets = $ this -> ticketRepository -> paginateClosed ( );
3139 return view ('tickets/list ' , compact ('tickets ' ));
3240 }
3341
3442 public function details ($ id )
3543 {
36- $ ticket = Ticket:: findOrFail ($ id );
44+ $ ticket = $ this -> ticketRepository -> findOrFail ($ id );
3745 return view ('tickets/details ' , compact ('ticket ' ));
3846 }
3947
48+ public function create ()
49+ {
50+ return view ('tickets.create ' );
51+ }
52+
53+ public function store (Request $ request )
54+ {
55+ $ this ->validate ($ request , [
56+ 'title ' => 'required|max:120 '
57+ ]);
58+
59+ $ ticket = $ this ->ticketRepository ->openNew (
60+ currentUser (),
61+ $ request ->get ('title ' )
62+ );
63+
64+ return Redirect::route ('tickets.details ' , $ ticket ->id );
65+ }
66+
4067}
0 commit comments