コード例 #1
0
 /**
  * Post: Create a new Taxi Complaint Report
  *
  * @param object $request Data from Report Taxi Form
  *
  * @return json Taxi ID
  */
 public function report(Request $request)
 {
     $user = Auth::user();
     $rules = ['plate_number' => 'required', 'name' => 'required', 'incident_date' => 'required', 'violations' => 'required'];
     // if not authenticated, add additional rules - for user account
     if (is_null($user)) {
         $rules += ['email' => 'required|email', 'full_name' => 'required', 'contact_number' => 'required', 'reg_password' => 'required|confirmed'];
     }
     // iterate on each pictures and add a valid rule
     $txp = count($request->taxi_pictures) - 1;
     foreach (range(0, $txp) as $index) {
         $rules['taxi_pictures.' . $index] = 'image';
     }
     $this->validate($request, $rules);
     $data = Taxi::store($request, $user);
     // db transaction (search) yielded to many results
     // redirect to search page using the plate_number as keyword
     if (!empty($data) && is_array($data) && isset($data['plate_number'])) {
         // return redirect('search/' . $data['plate_number']);
         return response()->json(['data' => ['plate_number' => $data['plate_number']], 200]);
     }
     // user is not logged-in, try auto login the current reporter
     if (is_null($user)) {
         Auth::attempt(['email' => $request->email, 'password' => $request->password]);
     }
     if (!empty($data) && is_array($data) && isset($data['taxi_id'])) {
         return response()->json(['data' => ['taxi_id' => $data['taxi_id']], 200]);
     } else {
         return response()->json(['message' => 'Failed add new report', 500]);
     }
 }