public function store(CreateReportRequest $request) { if (Gate::denies('managerOnly')) { abort(403); } $input = $request->all(); $result = DB::transaction(function ($input) use($input) { $report = new Report(); $report->name = $input['name']; $report->start_date = $input['start_date']; $report->end_date = $input['end_date']; $report->owner()->associate(Auth::user()); $report->save(); foreach ($input['users'] as $user) { $report->users()->attach($user['id'], ['view_self' => $user['pivot']['view_self'], 'view_all' => $user['pivot']['view_all']]); } foreach ($input['indicators'] as $indicator) { $report->indicators()->attach($indicator['id'], ['show_value' => $indicator['pivot']['show_value'], 'show_points' => $indicator['pivot']['show_points']]); } return $report; }); return $result; }