diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index a04cd8356b..d60e201e77 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -394,7 +394,13 @@ class ReportsController extends Controller $customfields = CustomField::get(); $saved_reports = SavedReport::get(); - return view('reports/custom')->with('customfields', $customfields)->with('saved_reports', $saved_reports); + return view('reports/custom', [ + 'customfields' => $customfields, + 'saved_reports' => $saved_reports, + // @todo: temporary + 'savedReport' => $saved_reports->first(), + // 'savedReport' => new SavedReport, + ]); } /** @@ -407,6 +413,7 @@ class ReportsController extends Controller */ public function postCustom(Request $request) { + dd('postCustom', $request->all()); ini_set('max_execution_time', env('REPORT_TIME_LIMIT', 12000)); //12000 seconds = 200 minutes $this->authorize('reports.view'); diff --git a/app/Http/Controllers/SavedReportsController.php b/app/Http/Controllers/SavedReportsController.php index 519e07b79b..a28af2aa9e 100644 --- a/app/Http/Controllers/SavedReportsController.php +++ b/app/Http/Controllers/SavedReportsController.php @@ -2,17 +2,21 @@ namespace App\Http\Controllers; +use App\Models\SavedReport; use Illuminate\Http\Request; class SavedReportsController extends Controller { - //a method to the madness public function store(Request $request) { + // @todo: make this dynamic + $savedReport = SavedReport::first(); + $savedReport->options = $request->except('_token'); - dd($request->all()); + $savedReport->save(); + // @todo: redirect back with the saved report pre-populated? + return redirect()->back(); } - } diff --git a/app/Models/SavedReport.php b/app/Models/SavedReport.php index cd1cdd7e58..417a6ccadf 100644 --- a/app/Models/SavedReport.php +++ b/app/Models/SavedReport.php @@ -23,4 +23,59 @@ class SavedReport extends Model 'name', 'options', ]; + + public function checkmarkValue($property): string + { + // Assuming we're using the null object pattern, + // return the default value if the object is not saved yet. + if (is_null($this->id)) { + return '1'; + } + + // Return the property's value if it exists + // and return the default value if not. + return $this->options[$property] ?? '0'; + } + + public function radioValue($property, $value, $return) + { + // @todo: this method feels more like "radioShouldBeChecked" or something... + + if (array_has($this->options, $property) && $this->options[$property] === $value) { + return $return; + } + + return null; + } + + public function selectValue($property) + { + return $this->options[$property] ?? null; + } + + public function selectValues($property) + { + if (!isset($this->options[$property])) { + return null; + } + + if ($this->options[$property] === [null]) { + return null; + } + + return $this->options[$property]; + } + + public function textValue($property): string + { + // Assuming we're using the null object pattern, + // return the default value if the object is not saved yet. + if (is_null($this->id)) { + return ''; + } + + // Return the property's value if it exists + // and return the default value if not. + return $this->options[$property] ?? ''; + } } diff --git a/database/factories/SavedReportFactory.php b/database/factories/SavedReportFactory.php new file mode 100644 index 0000000000..72279bd3e5 --- /dev/null +++ b/database/factories/SavedReportFactory.php @@ -0,0 +1,21 @@ + $this->faker->word(), + 'options' => json_encode([]), + ]; + } +} diff --git a/resources/views/partials/forms/edit/category-select.blade.php b/resources/views/partials/forms/edit/category-select.blade.php index 684b8d76da..ea473d9c5e 100644 --- a/resources/views/partials/forms/edit/category-select.blade.php +++ b/resources/views/partials/forms/edit/category-select.blade.php @@ -5,6 +5,18 @@
+ @isset ($selected) + @foreach ($selected as $company_id) + + @endforeach + @endisset @if ($company_id = Request::old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))