diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index bf00e0ce23..ba098d78a5 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -397,9 +397,7 @@ class ReportsController extends Controller return view('reports/custom', [ 'customfields' => $customfields, 'saved_reports' => $saved_reports, - // @todo: temporary - 'savedReport' => $saved_reports->find($request->input('report')), - // 'savedReport' => new SavedReport, + 'savedReport' => $saved_reports->find($request->input('report')) ?? new SavedReport, ]); } diff --git a/app/Http/Controllers/SavedReportsController.php b/app/Http/Controllers/SavedReportsController.php index a28af2aa9e..603cb76c08 100644 --- a/app/Http/Controllers/SavedReportsController.php +++ b/app/Http/Controllers/SavedReportsController.php @@ -2,21 +2,17 @@ namespace App\Http\Controllers; -use App\Models\SavedReport; use Illuminate\Http\Request; class SavedReportsController extends Controller { public function store(Request $request) { - // @todo: make this dynamic - $savedReport = SavedReport::first(); + $report = $request->user()->savedReports()->create([ + 'name' => $request->get('report_name'), + 'options' => $request->except(['_token', 'report_name']), + ]); - $savedReport->options = $request->except('_token'); - - $savedReport->save(); - - // @todo: redirect back with the saved report pre-populated? - return redirect()->back(); + return redirect()->route('reports/custom', ['report' => $report->id]); } } diff --git a/app/Models/SavedReport.php b/app/Models/SavedReport.php index 787e31e825..2a5d59ff72 100644 --- a/app/Models/SavedReport.php +++ b/app/Models/SavedReport.php @@ -24,6 +24,8 @@ class SavedReport extends Model 'options', ]; + // @todo: add $rules + //we will need a bit to catch and store the name of the report. //for now the blip above is creating the name, but can be confusing if multiple are made at once diff --git a/app/Models/User.php b/app/Models/User.php index 98a3ec346b..95713fb655 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -14,6 +14,7 @@ use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Translation\HasLocalePreference; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Notifications\Notifiable; @@ -329,6 +330,11 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo return $this->belongsToMany(\App\Models\License::class, 'license_seats', 'assigned_to', 'license_id')->withPivot('id'); } + public function savedReports(): HasMany + { + return $this->hasMany(SavedReport::class); + } + /** * Establishes a count of all items assigned * diff --git a/resources/views/reports/custom.blade.php b/resources/views/reports/custom.blade.php index 48138dc62f..3c007af500 100644 --- a/resources/views/reports/custom.blade.php +++ b/resources/views/reports/custom.blade.php @@ -371,14 +371,11 @@ {{ trans('general.generate') }} -
- - {{ trans('admin/reports/general.apply_and_generate') }} -
@csrf + {{-- this will be a box to name the report? --}}
@@ -445,7 +459,17 @@ $("#savetemplateform").submit(function(e) { e.preventDefault(e); - $('#custom-report-form').attr('action', '/reports/savedtemplate').submit() + + let form = $('#custom-report-form'); + + $('').attr({ + type: 'hidden', + name: 'report_name', + value: $('#report_name').val(), + }).appendTo(form); + + form.attr('action', '/reports/savedtemplate').submit(); + // let elements = Array.from(document.getElementById("custom-report-form").elements).map(item=>item.name); // console.log(elements); //