|
|
- <?php
-
- namespace App\Http\Controllers;
-
- use Illuminate\Http\Request;
- use Twitter;
- use App\Tweet;
- use App\Events\NewTweetEvent, App\Events\TweetClaimedEvent, App\Events\TweetAcceptedEvent;
- use DB;
-
- class DashboardController extends Controller
- {
- /**
- * Create a new controller instance.
- *
- * @return void
- */
- public function __construct()
- {
- $this->middleware('auth');
- }
-
- /**
- * Show the application dashboard.
- *
- * @return \Illuminate\Http\Response
- */
- public function index()
- {
- return view('dashboard', []);
- }
-
- public function queue() {
- Tweet::claimed_timeout();
-
- $tweets = Tweet::queued()->get();
- $queue = [];
- foreach($tweets as $tweet) {
- $queue[] = new NewTweetEvent($tweet);
- }
-
- return response()->json(['queue'=>$queue]);
- }
-
- public function ping() {
- Tweet::claimed_timeout();
- return response()->json(['result'=>'ok']);
- }
-
- public function claim_tweet(Request $request) {
- $tweet = Tweet::where('id', $request->input('tweet_id'))->first();
- if($tweet) {
- if($request->input('status') == 'unclaimed') {
- $tweet->claimed_at = null;
- $tweet->save();
- event(new NewTweetEvent($tweet));
- } else {
- $tweet->claimed_at = date('Y-m-d H:i:s');
- $tweet->save();
- // Broadcast that this tweet was claimed
- event(new TweetClaimedEvent($tweet));
- }
- }
- return response()->json(['result'=>'ok']);
- }
-
- public function reject_tweet(Request $request) {
- $tweet = Tweet::where('id', $request->input('tweet_id'))->first();
- if($tweet) {
- $tweet->processed = 1;
- $tweet->accepted = 0;
- $tweet->m1_transit_line_id = null;
- $tweet->m1_non_trimet = null;
- $tweet->m2_transit_center_id = null;
- $tweet->m2_with_other_team = 0;
- $tweet->m3_complete = null;
- $tweet->m4_complete = null;
- $tweet->m5_complete = null;
- $tweet->m5_tip = null;
- $tweet->m6_complete = null;
- $tweet->m7_document_id = null;
- $tweet->save();
- }
- return response()->json(['result'=>'ok']);
- }
-
- public function score_tweet(Request $request) {
- $tweet = Tweet::where('id', $request->input('tweet_id'))->first();
- if($tweet) {
- // Calculate the previous mission status before saving this tweet
- if($tweet->team)
- $previousMissionStatus = $tweet->mission->complete($tweet->team);
- else
- $previousMissionStatus = false;
-
- $tweet->m1_transit_line_id = null;
- $tweet->m1_non_trimet = null;
- $tweet->m2_transit_center_id = null;
- $tweet->m2_with_other_team = 0;
- $tweet->m3_complete = null;
- $tweet->m4_complete = null;
- $tweet->m5_complete = null;
- $tweet->m5_tip = null;
- $tweet->m6_complete = null;
- $tweet->m7_document_id = null;
- foreach($request->input('score_data') as $k=>$v) {
- $tweet->{$k} = $v;
- }
- $tweet->processed = 1;
- $tweet->accepted = 1;
- $tweet->save();
- event(new TweetAcceptedEvent($tweet, $previousMissionStatus));
- }
- return response()->json(['result'=>'ok']);
- }
-
- public function load_dropdowns() {
- $documents = DB::table('m7_documents')->orderBy('id')->get();
- $transit_centers = DB::table('transit_centers')->orderBy('name')->get();
- $transit_lines = DB::table('transit_lines')->orderBy('sort')->get();
-
- return response()->json([
- 'documents' => $documents,
- 'transit_centers' => $transit_centers,
- 'transit_lines' => $transit_lines
- ]);
- }
-
- public function reply_to_tweet(Request $request) {
- $tweet = Tweet::where('id', $request->input('tweet_id'))->first();
- if($tweet) {
-
- $params = [
- 'auto_populate_reply_metadata' => true,
- 'in_reply_to_status_id' => $tweet->tweet_id,
- 'status' => $request->input('text')
- ];
- $response = Twitter::postTweet($params);
- if($response && $response->id_str) {
- return response()->json(['result'=>'ok']);
- }
-
- }
- return response()->json(['result'=>'error']);
- }
- }
|