airlineRepo = $airlineRepo; $this->aircraftRepo = $aircraftRepo; $this->pirepRepo = $pirepRepo; $this->airportRepo = $airportRepo; $this->pirepFieldRepo = $pirepFieldRepo; } public function index(Request $request) { $user = Auth::user(); $pireps = $this->pirepRepo ->where('user_id', $user->id) ->orderBy('created_at', 'desc') ->get(); return $this->view('pireps.index', [ 'user' => $user, 'pireps' => $pireps, ]); } public function create() { $aircraft = $this->aircraftList(); return $this->view('pireps.create', [ 'airports' => $this->airportRepo->selectBoxList(), 'airlines' => $this->airlineRepo->all()->pluck('name', 'id'), 'aircraft' => $this->aircraftRepo->selectBoxList(), 'pirepfields' => $this->pirepFieldRepo->all(), 'fieldvalues' => [], ]); } public function store(Request $request) { $pirep_fields = $request->all(); // Create the main PIREP $pirep = new Pirep($pirep_fields); // Any special fields $pirep->pilot()->associate(Auth::user()); $pirep->flight_time = ((int)$pirep_fields['hours'] * 60 * 60) + ((int)$pirep_fields['minutes'] * 60); // The custom fields from the form $custom_fields = []; foreach($pirep_fields as $field_name => $field_val) { if (strpos($field_name, 'field_') === false) { continue; } $field_id = explode('field_', $field_name)[1]; $cfield = PirepField::find($field_id); $custom_fields[] = [ 'name' => $cfield->name, 'value' => $field_val, 'source' => config('enums.sources.MANUAL') ]; } $pirepSvc = app('\App\Services\PIREPService'); $pirep = $pirepSvc->create($pirep, $custom_fields); //Flash::success('PIREP submitted successfully!'); return redirect(route('frontend.pireps.index')); } public function show($id) { $pirep = Pirep::where('id', $id); return $this->view('pireps.show', [ 'pirep' => $pirep, ]); } }