add projet

This commit is contained in:
root
2026-03-05 12:29:37 -05:00
parent 8d1eef8ba8
commit 23b7db1107
9109 changed files with 1106501 additions and 73 deletions
@@ -0,0 +1,39 @@
<?php
namespace App\Http\Requests\Api\Admin;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class IndexAdminProgressRequest extends FormRequest
{
public function authorize(): bool
{
// Replace with your policy/permission logic
return true;
}
public function rules(): array
{
return [
'from' => ['nullable', 'date'],
'to' => ['nullable', 'date'],
'class_section_id' => ['nullable', 'integer'],
'status' => [
'nullable',
'string',
Rule::in(array_keys(config('progress.status_options', []))),
],
];
}
protected function prepareForValidation(): void
{
$this->merge([
'from' => $this->filled('from') ? (string) $this->query('from') : '',
'to' => $this->filled('to') ? (string) $this->query('to') : '',
'class_section_id' => $this->filled('class_section_id') ? (string) $this->query('class_section_id') : '',
'status' => $this->filled('status') ? (string) $this->query('status') : '',
]);
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class SaveAdminNotificationSubjectsRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'subjects' => ['required', 'array'],
// dynamic structure: subjects[adminId][subjectKey]=true OR array of subject strings
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class SavePrintNotificationRecipientsRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'notify' => ['required', 'array'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class SendTeacherSubmissionNotificationsRequest extends FormRequest
{
public function authorize(): bool
{
return true; // protected by auth/admin middleware
}
public function rules(): array
{
return [
'notify' => ['required', 'array', 'min:1'],
// nested keys are dynamic [section_id][teacher_id], keep flexible
'missing_items' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,35 @@
<?php
namespace App\Http\Requests\AttendanceCommentTemplate;
use Illuminate\Foundation\Http\FormRequest;
class StoreAttendanceCommentTemplateRequest extends FormRequest
{
public function authorize(): bool
{
return true; // add auth/policy if needed
}
public function rules(): array
{
return [
'min_score' => ['required', 'integer', 'min:0', 'max:100'],
'max_score' => ['required', 'integer', 'min:0', 'max:100', 'gte:min_score'],
'template_text' => ['required', 'string', 'max:5000'],
'is_active' => ['sometimes', 'boolean'],
];
}
protected function prepareForValidation(): void
{
if ($this->has('is_active')) {
$this->merge([
'is_active' => filter_var($this->input('is_active'), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
?? $this->input('is_active'),
]);
} else {
$this->merge(['is_active' => true]);
}
}
}
@@ -0,0 +1,46 @@
<?php
namespace App\Http\Requests\AttendanceCommentTemplate;
use Illuminate\Foundation\Http\FormRequest;
class UpdateAttendanceCommentTemplateRequest extends FormRequest
{
public function authorize(): bool
{
return true; // add auth/policy if needed
}
public function rules(): array
{
return [
'min_score' => ['sometimes', 'integer', 'min:0', 'max:100'],
'max_score' => ['sometimes', 'integer', 'min:0', 'max:100'],
'template_text' => ['sometimes', 'string', 'max:5000'],
'is_active' => ['sometimes', 'boolean'],
];
}
public function withValidator($validator): void
{
$validator->after(function ($validator) {
$min = $this->has('min_score') ? (int) $this->input('min_score') : null;
$max = $this->has('max_score') ? (int) $this->input('max_score') : null;
// If both provided, validate relation
if ($min !== null && $max !== null && $max < $min) {
$validator->errors()->add('max_score', 'The max_score field must be greater than or equal to min_score.');
}
});
}
protected function prepareForValidation(): void
{
if ($this->has('is_active')) {
$this->merge([
'is_active' => filter_var($this->input('is_active'), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
?? $this->input('is_active'),
]);
}
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreStudentAssignmentRequest extends FormRequest
{
public function authorize(): bool
{
return true; // add policy/permission check if needed
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'exists:students,id'],
'class_section_id' => ['required', 'integer', 'exists:class_sections,id'],
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
'description' => ['nullable', 'string'],
];
}
}