/** * 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]); } }