first commit

This commit is contained in:
Noor E Ilahi
2026-01-09 12:54:53 +05:30
commit 7ccf44f7da
1070 changed files with 113036 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Reports\UniversalReport;
use App\Http\Requests\CattrFormRequest;
class UniversalReportDestroyRequest extends CattrFormRequest
{
public function _authorize(): bool
{
return auth()->check();
}
public function _rules(): array
{
return [
'id' => 'required|int|exists:universal_reports,id',
];
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace App\Http\Requests\Reports\UniversalReport;
use App\Enums\UniversalReportType;
use App\Enums\UniversalReportBase;
use App\Exceptions\Entities\InvalidMainException;
use App\Http\Requests\CattrFormRequest;
use Exception;
use Illuminate\Validation\Rules\Enum;
class UniversalReportEditRequest extends CattrFormRequest
{
public function _authorize(): bool
{
return auth()->check();
}
public function _rules(): array
{
$enumCase = UniversalReportBase::tryFrom(request('base'));
switch ($enumCase) {
case UniversalReportBase::PROJECT:
$table = 'projects';
break;
case UniversalReportBase::USER:
$table = 'users';
break;
case UniversalReportBase::TASK:
$table = 'tasks';
break;
default:
return throw new InvalidMainException();
}
return [
'id' => 'required|int|exists:universal_reports,id',
'name' => 'required|string',
'base' => ['required', new Enum(UniversalReportBase::class)],
'fields' => 'required|array',
'fields.*' => 'array',
'fields.*.*' => 'required|string|in:'.implode(',', array_map(fn($item) => implode(',', $item), $enumCase->fields())),
'dataObjects' => 'required|array',
'dataObjects.*' => "required|int|exists:$table,id",
'charts' => 'nullable|array',
'charts.*' => 'required|string|in:'.implode(',', array_map(fn($item) => $item, $enumCase->charts())),
'type' => ['required', 'string', new Enum(UniversalReportType::class)],
];
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Requests\Reports\UniversalReport;
use App\Enums\UniversalReportBase;
use App\Http\Requests\CattrFormRequest;
use Exception;
use Illuminate\Validation\Rules\Enum;
class UniversalReportRequest extends CattrFormRequest
{
public function _authorize(): bool
{
return auth()->check();
}
public function _rules(): array
{
return [
'id' => 'required|exists:universal_reports,id|int',
'start_at' => 'nullable|date',
'end_at' => 'nullable|date',
];
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Reports\UniversalReport;
use App\Enums\UniversalReportBase;
use App\Http\Requests\CattrFormRequest;
use Exception;
use Illuminate\Validation\Rules\Enum;
class UniversalReportShowRequest extends CattrFormRequest
{
public function _authorize(): bool
{
return auth()->check();
}
public function _rules(): array
{
return [
'id' => 'required|exists:universal_reports,id|int'
];
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Http\Requests\Reports\UniversalReport;
use App\Enums\UniversalReportType;
use App\Enums\UniversalReportBase;
use App\Exceptions\Entities\InvalidMainException;
use App\Http\Requests\CattrFormRequest;
use Exception;
use Illuminate\Validation\Rules\Enum;
class UniversalReportStoreRequest extends CattrFormRequest
{
public function _authorize(): bool
{
return auth()->check();
}
public function _rules(): array
{
$enumCase = UniversalReportBase::tryFrom(request('base'));
switch ($enumCase) {
case UniversalReportBase::PROJECT:
$table = 'projects';
break;
case UniversalReportBase::USER:
$table = 'users';
break;
case UniversalReportBase::TASK:
$table = 'tasks';
break;
default:
return throw new InvalidMainException();
}
return [
'name' => 'required|string',
'base' => ['required', new Enum(UniversalReportBase::class)],
'fields' => 'required|array',
'fields.*' => 'array',
'fields.*.*' => 'required|string|in:'.implode(',', array_map(fn($item) => implode(',', $item), $enumCase->fields())),
'dataObjects' => 'required|array',
'dataObjects.*' => "required|int|exists:$table,id",
'charts' => 'nullable|array',
'charts.*' => 'required|string|in:'.implode(',', array_map(fn($item) => $item, $enumCase->charts())),
'type' => ['required', 'string', new Enum(UniversalReportType::class)]
];
}
}