add controllers, servoices

This commit is contained in:
root
2026-03-09 02:52:13 -04:00
parent c8de5f7edc
commit d76c871cb7
501 changed files with 34439 additions and 21843 deletions
+23
View File
@@ -8,6 +8,29 @@ use Illuminate\Http\Exceptions\HttpResponseException;
abstract class ApiFormRequest extends FormRequest
{
public function validationData(): array
{
$json = json_decode($this->getContent() ?: '', true);
$json = is_array($json) ? $json : [];
return array_merge(
$this->query->all(),
$this->request->all(),
$this->json()->all(),
$json
);
}
protected function prepareForValidation(): void
{
$json = json_decode($this->getContent() ?: '', true);
if (is_array($json)) {
$this->merge($json);
} else {
$this->merge($this->json()->all());
}
}
protected function failedValidation(Validator $validator): void
{
throw new HttpResponseException(
@@ -0,0 +1,44 @@
<?php
namespace App\Http\Requests\Auth;
use App\Http\Requests\ApiFormRequest;
class RegisterRequest extends ApiFormRequest
{
public static function ruleset(): array
{
return (new self())->rules();
}
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'firstname' => ['required', 'regex:/^[a-zA-Z\s-]+$/', 'min:2', 'max:30'],
'lastname' => ['required', 'regex:/^[a-zA-Z\s-]+$/', 'min:2', 'max:30'],
'gender' => ['required', 'in:Male,Female'],
'email' => ['required', 'email', 'max:50'],
'confirm_email' => ['required', 'same:email'],
'cellphone' => ['required', 'regex:/^[\d\s\-\(\)\.]+$/', 'min:10', 'max:20'],
'address_street' => ['nullable', 'regex:/^[a-zA-Z0-9\s\-]+$/', 'max:150'],
'apt' => ['nullable', 'regex:/^[a-zA-Z0-9\s-]+$/', 'max:10'],
'city' => ['required', 'regex:/^[a-zA-Z\s]+$/', 'min:2', 'max:30'],
'state' => ['required', 'in:CT,ME,MA,NH,NY,RI,VT'],
'zip' => ['required', 'regex:/^\d{5}$/'],
'accept_school_policy' => ['required'],
'captcha' => ['required', 'alpha_num', 'min:4', 'max:10'],
'is_parent' => ['nullable', 'boolean'],
'no_second_parent_info' => ['nullable', 'boolean'],
'second_firstname' => ['exclude_if:no_second_parent_info,1', 'required_if:is_parent,1', 'regex:/^[a-zA-Z\s\-]+$/', 'min:2', 'max:30'],
'second_lastname' => ['exclude_if:no_second_parent_info,1', 'required_if:is_parent,1', 'regex:/^[a-zA-Z\s\-]+$/', 'min:2', 'max:30'],
'second_gender' => ['exclude_if:no_second_parent_info,1', 'required_if:is_parent,1', 'in:Male,Female'],
'second_email' => ['exclude_if:no_second_parent_info,1', 'required_if:is_parent,1', 'email', 'max:50'],
'second_cellphone' => ['exclude_if:no_second_parent_info,1', 'required_if:is_parent,1', 'regex:/^[\d\s\-\(\)\.]+$/', 'min:10', 'max:20'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Discounts;
use App\Http\Requests\ApiFormRequest;
class ApplyDiscountVoucherRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'voucher_id' => ['required', 'integer', 'min:1', 'exists:discount_vouchers,id'],
'parent_ids' => ['required', 'array', 'min:1'],
'parent_ids.*' => ['integer', 'min:1'],
'allow_additional' => ['nullable', 'boolean'],
];
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Requests\Discounts;
use App\Http\Requests\ApiFormRequest;
class StoreDiscountVoucherRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'code' => ['required', 'string', 'max:50'],
'discount_type' => ['required', 'in:percent,fixed'],
'discount_value' => ['required', 'numeric', 'min:0'],
'max_uses' => ['nullable', 'integer', 'min:0'],
'valid_from' => ['nullable', 'date_format:Y-m-d'],
'valid_until' => ['nullable', 'date_format:Y-m-d', 'after_or_equal:valid_from'],
'is_active' => ['nullable', 'boolean'],
'description' => ['nullable', 'string'],
'school_year' => ['nullable', 'string'],
'semester' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Requests\Discounts;
use App\Http\Requests\ApiFormRequest;
class UpdateDiscountVoucherRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'code' => ['sometimes', 'string', 'max:50'],
'discount_type' => ['sometimes', 'in:percent,fixed'],
'discount_value' => ['sometimes', 'numeric', 'min:0'],
'max_uses' => ['nullable', 'integer', 'min:0'],
'valid_from' => ['nullable', 'date_format:Y-m-d'],
'valid_until' => ['nullable', 'date_format:Y-m-d', 'after_or_equal:valid_from'],
'is_active' => ['nullable', 'boolean'],
'description' => ['nullable', 'string'],
'school_year' => ['nullable', 'string'],
'semester' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\Expenses;
use App\Http\Requests\ApiFormRequest;
class StoreExpenseRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'category' => ['required', 'in:Expense,Purchase,Reimbursement,Donation'],
'amount' => ['required', 'numeric', 'gt:0'],
'purchased_by' => ['required', 'integer', 'min:1'],
'retailor' => ['nullable', 'string', 'max:255'],
'date_of_purchase' => ['required', 'date_format:Y-m-d'],
'description' => ['nullable', 'string'],
'receipt' => ['required', 'file', 'max:2048', 'mimes:jpg,jpeg,png,webp,gif,pdf'],
'school_year' => ['nullable', 'string'],
'semester' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Requests\Expenses;
use App\Http\Requests\ApiFormRequest;
class UpdateExpenseRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'category' => ['required', 'in:Expense,Purchase,Reimbursement,Donation'],
'amount' => ['required', 'numeric', 'gt:0'],
'purchased_by' => ['required', 'integer', 'min:1'],
'retailor' => ['nullable', 'string', 'max:255'],
'date_of_purchase' => ['required', 'date_format:Y-m-d'],
'description' => ['nullable', 'string'],
'receipt' => ['nullable', 'file', 'max:2048', 'mimes:jpg,jpeg,png,webp,gif,pdf'],
'remove_receipt' => ['nullable', 'boolean'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Expenses;
use App\Http\Requests\ApiFormRequest;
class UpdateExpenseStatusRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'status' => ['required', 'in:approved,denied'],
'reason' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\ExtraCharges;
use App\Http\Requests\ApiFormRequest;
class StoreExtraChargeRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'parent_id' => ['required', 'integer', 'min:1'],
'title' => ['required', 'string', 'min:2'],
'amount' => ['required', 'numeric'],
'charge_type' => ['required', 'in:add,deduct'],
'due_date' => ['nullable', 'date_format:Y-m-d'],
'invoice_id' => ['nullable', 'integer', 'min:1'],
'description' => ['nullable', 'string'],
'school_year' => ['nullable', 'string'],
'semester' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\ExtraCharges;
use App\Http\Requests\ApiFormRequest;
class UpdateExtraChargeRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'title' => ['required', 'string', 'min:2'],
'amount' => ['required', 'numeric'],
'charge_type' => ['required', 'in:add,deduct'],
'due_date' => ['nullable', 'date_format:Y-m-d'],
'description' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Requests\Files;
use App\Http\Requests\ApiFormRequest;
class FileNameRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255', 'regex:/^[^\/\\\\]+$/'],
];
}
protected function prepareForValidation(): void
{
if ($this->route('name') !== null) {
$this->merge(['name' => $this->route('name')]);
}
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Finance;
use App\Http\Requests\ApiFormRequest;
class FinancialReportRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'date_from' => ['nullable', 'date_format:Y-m-d'],
'date_to' => ['nullable', 'date_format:Y-m-d', 'after_or_equal:date_from'],
'school_year' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,7 @@
<?php
namespace App\Http\Requests\Finance;
class FinancialSummaryRequest extends FinancialReportRequest
{
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Finance;
use App\Http\Requests\ApiFormRequest;
class FinancialUnpaidParentsRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class BelowSixtyEmailRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class BelowSixtyListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class BelowSixtyMeetingRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,25 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class BelowSixtyMeetingSaveRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'date' => ['required', 'string', 'max:20'],
'time' => ['nullable', 'string', 'max:20'],
'notes' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class BelowSixtySendRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'subject' => ['nullable', 'string', 'max:255'],
'html' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class BelowSixtyStatusRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'status' => ['required', 'string', 'in:Open,Closed,open,closed'],
'note' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class GradingLockAllRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class GradingLockRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class GradingOverviewRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_id' => ['nullable', 'integer', 'min:1'],
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class GradingRefreshRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class GradingScoreShowRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class GradingScoreUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'type' => ['required', 'string', 'in:homework,quiz,project,midterm,final,test,comments'],
'student_id' => ['required', 'integer', 'min:1'],
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'score_ids' => ['nullable', 'array'],
'scores' => ['nullable', 'array'],
'comments' => ['nullable', 'array'],
'score' => ['nullable', 'numeric'],
'comment' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class HomeworkTrackingRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
'page' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class PlacementBatchRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['required', 'string', 'max:50'],
'placement_test' => ['required', 'string', 'max:100'],
'placement_level' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class PlacementBatchUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['required', 'string', 'max:50'],
'placement_level' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class PlacementLevelRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'student_id' => ['required', 'integer', 'min:1'],
'school_year' => ['required', 'string', 'max:50'],
'placement_level' => ['nullable', 'integer', 'min:1', 'max:3'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class PlacementLevelsRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'school_year' => ['required', 'string', 'max:50'],
'placement_level' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Grading;
use App\Http\Requests\ApiFormRequest;
class PlacementRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['nullable', 'integer', 'min:1'],
'school_year' => ['required', 'string', 'max:50'],
'placement_test' => ['nullable', 'string', 'max:100'],
'open' => ['nullable', 'string', 'max:5'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Incidents;
use App\Http\Requests\ApiFormRequest;
class IncidentCancelRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'state_description' => ['nullable', 'string', 'max:2000'],
'action_taken' => ['nullable', 'string', 'max:2000'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Incidents;
use App\Http\Requests\ApiFormRequest;
class IncidentCloseRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'state_description' => ['required', 'string', 'max:2000'],
'action_taken' => ['nullable', 'string', 'max:2000'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Incidents;
use App\Http\Requests\ApiFormRequest;
class IncidentListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:50'],
'semester' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Incidents;
use App\Http\Requests\ApiFormRequest;
class IncidentStateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'incident_state' => ['required', 'string', 'in:Open,Closed,Canceled'],
];
}
}
@@ -0,0 +1,53 @@
<?php
namespace App\Http\Requests\Incidents;
use App\Http\Requests\ApiFormRequest;
class IncidentStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$incidentTypes = [
'payment',
'attendance',
'grade',
'behavior',
'talking_off_task',
'calling_out',
'minor_disruption',
'minor_dress_code',
'forgetting_materials',
'repeated_defiance',
'disrespectful_tone',
'minor_profanity',
'repeated_tardiness',
'device_misuse',
'minor_conflict',
'bullying_harassment',
'fighting_aggression',
'threats',
'theft',
'vandalism',
'sexual_harassment',
'serious_cyber_incident',
'contraband',
'weapons_drugs',
'other',
];
return [
'student_id' => ['required', 'integer', 'min:1', 'exists:students,id'],
'grade' => ['required', 'string', 'max:50'],
'incident' => ['required', 'string', 'in:' . implode(',', $incidentTypes)],
'description' => ['required', 'string', 'max:2000'],
'incident_state' => ['nullable', 'string', 'in:Open,Closed,Canceled'],
'state_description' => ['nullable', 'string', 'max:2000'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Invoices;
use App\Http\Requests\ApiFormRequest;
class InvoiceGenerateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'parent_id' => ['required', 'integer', 'exists:users,id'],
'school_year' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Invoices;
use App\Http\Requests\ApiFormRequest;
class InvoiceManagementRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Invoices;
use App\Http\Requests\ApiFormRequest;
class InvoiceParentRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Invoices;
use App\Http\Requests\ApiFormRequest;
class InvoiceStatusRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'status' => ['required', 'string', 'in:Unpaid,Partially Paid,Paid,unpaid,partially paid,paid'],
];
}
}
@@ -0,0 +1,15 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentByParentRequest extends ApiFormRequest
{
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentCreateRequest extends ApiFormRequest
{
public function rules(): array
{
return [
'parent_id' => ['required', 'integer', 'exists:users,id'],
'total_amount' => ['required', 'numeric', 'min:0.01'],
'number_of_installments' => ['required', 'integer', 'min:1'],
'payment_date' => ['nullable', 'date'],
'payment_method' => ['nullable', 'string', 'max:50'],
'payment_type' => ['nullable', 'string', 'max:50'],
'status' => ['nullable', 'string', 'max:50'],
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentEventChargesListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:50'],
'semester' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentEventChargesStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'parent_id' => ['required', 'integer', 'min:1'],
'event_name' => ['required', 'string', 'max:255'],
'description' => ['nullable', 'string', 'max:1000'],
'amount' => ['required', 'numeric', 'min:0'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'student_ids' => ['nullable', 'array'],
'student_ids.*' => ['integer', 'min:1'],
'student_id' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentManualEditRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'paid_amount' => ['required', 'numeric', 'min:0.01'],
'payment_method' => ['required', 'string', 'max:50'],
'check_number' => ['nullable', 'string', 'max:100'],
'payment_file' => ['nullable', 'file', 'mimes:jpg,jpeg,png,pdf', 'max:5120'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentManualSearchRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'search_term' => ['nullable', 'string', 'max:255'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentManualSuggestRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'q' => ['required', 'string', 'max:255'],
];
}
}
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentManualUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'amount' => ['required', 'numeric', 'min:0.01'],
'payment_method' => ['required', 'string', 'max:50'],
'payment_date' => ['nullable', 'date'],
'payment_type' => ['nullable', 'string', 'max:50'],
'check_number' => ['nullable', 'string', 'max:100'],
'payment_file' => ['nullable', 'file', 'mimes:jpg,jpeg,png,pdf', 'max:5120'],
'school_year' => ['nullable', 'string', 'max:50'],
'semester' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentNotificationListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'from' => ['nullable', 'date'],
'to' => ['nullable', 'date'],
'type' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentNotificationSendRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'parent_id' => ['nullable', 'integer', 'min:1'],
'type' => ['nullable', 'string', 'max:50'],
'force' => ['nullable', 'boolean'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentTransactionCreateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'transaction_id' => ['required', 'string', 'max:100'],
'payment_id' => ['required', 'integer', 'min:1'],
'transaction_date' => ['nullable', 'date'],
'amount' => ['required', 'numeric', 'min:0.01'],
'payment_method' => ['required', 'string', 'max:50'],
'payment_status' => ['nullable', 'string', 'max:50'],
'transaction_fee' => ['nullable', 'numeric', 'min:0'],
'payment_reference' => ['nullable', 'string', 'max:100'],
'is_full_payment' => ['nullable', 'boolean'],
'school_year' => ['nullable', 'string', 'max:50'],
'semester' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentTransactionStatusRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'status' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,15 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaymentUpdateBalanceRequest extends ApiFormRequest
{
public function rules(): array
{
return [
'paid_amount' => ['required', 'numeric', 'min:0.01'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaypalExecuteRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'payer_id' => ['required', 'string', 'max:100'],
'paypal_payment_id' => ['nullable', 'string', 'max:100'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Payments;
use App\Http\Requests\ApiFormRequest;
class PaypalTransactionsListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'q' => ['nullable', 'string', 'max:200'],
'per_page' => ['nullable', 'integer', 'min:1', 'max:100'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementBatchAdminFileRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'batch_id' => ['required', 'integer', 'min:1'],
'admin_id' => ['required', 'integer', 'min:0'],
'check_file' => ['required', 'file', 'max:5120', 'mimes:jpg,jpeg,png,webp,gif,pdf'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementBatchAssignmentRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'expense_id' => ['required', 'integer', 'min:1'],
'batch_id' => ['nullable', 'integer', 'min:0'],
'batch_number' => ['nullable', 'integer', 'min:0'],
'admin_id' => ['nullable', 'integer', 'min:0'],
'reimbursement_id' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementBatchCreateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'title' => ['nullable', 'string', 'max:255'],
];
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementBatchEmailRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'batch_id' => ['required', 'integer', 'min:1'],
'recipient_email' => ['required', 'email'],
'message' => ['nullable', 'string'],
'receipts' => ['nullable', 'array'],
'receipts.*' => ['integer', 'min:1'],
'checks' => ['nullable', 'array'],
'checks.*' => ['integer', 'min:1'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementBatchLockRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'batch_id' => ['required', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementExportBatchRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'batch_id' => ['required', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementExportRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'type' => ['nullable', 'in:processed,under_processing'],
'school_year' => ['nullable', 'string', 'max:20'],
'semester' => ['nullable', 'string', 'max:20'],
'status' => ['nullable', 'string', 'max:50'],
'user_id' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementIndexRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:20'],
'semester' => ['nullable', 'string', 'max:20'],
'status' => ['nullable', 'string', 'max:50'],
'user_id' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementMarkDonationRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'expense_id' => ['required', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementProcessRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'amount' => ['required', 'numeric', 'gt:0'],
'reimbursed_to' => ['required', 'integer', 'min:1'],
'reimbursement_method' => ['required', 'in:Cash,Check'],
'check_number' => ['required_if:reimbursement_method,Check', 'nullable', 'string', 'max:50'],
'receipt' => ['nullable', 'file', 'max:2048', 'mimes:jpg,jpeg,png,webp,gif,pdf'],
'expense_id' => ['nullable', 'integer', 'min:1'],
'description' => ['nullable', 'string'],
'school_year' => ['nullable', 'string', 'max:20'],
'semester' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'amount' => ['required', 'numeric', 'gt:0'],
'reimbursed_to' => ['required', 'integer', 'min:1'],
'reimbursement_method' => ['required', 'in:Cash,Check'],
'check_number' => ['required_if:reimbursement_method,Check', 'nullable', 'string', 'max:50'],
'receipt' => ['required_if:reimbursement_method,Check', 'nullable', 'file', 'max:2048', 'mimes:jpg,jpeg,png,webp,gif,pdf'],
'expense_id' => ['nullable', 'integer', 'min:1'],
'description' => ['nullable', 'string'],
'school_year' => ['nullable', 'string', 'max:20'],
'semester' => ['nullable', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,18 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementUnderProcessingRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [];
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Requests\Reimbursements;
use App\Http\Requests\ApiFormRequest;
class ReimbursementUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'amount' => ['required', 'numeric', 'gt:0'],
'reimbursed_to' => ['required', 'integer', 'min:1'],
'reimbursement_method' => ['required', 'in:Cash,Check'],
'check_number' => ['required_if:reimbursement_method,Check', 'nullable', 'string', 'max:50'],
'receipt' => ['nullable', 'file', 'max:2048', 'mimes:jpg,jpeg,png,webp,gif,pdf'],
'remove_receipt' => ['nullable', 'boolean'],
'description' => ['nullable', 'string'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreAddColumnRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreClassRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreCommentListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['nullable'],
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreCommentSaveRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'comments' => ['required', 'array'],
'missing_ok' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreCommentUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'comments' => ['nullable', 'array'],
'reviews' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreLockRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'missing_ok' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreOverviewRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['nullable', 'integer', 'min:1'],
'semester' => ['nullable', 'string', 'max:50'],
'school_year' => ['nullable', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScorePredictorRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['nullable', 'string', 'max:50'],
'class_section_id' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreStudentRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['required', 'string', 'max:50'],
];
}
}
@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Scores;
use App\Http\Requests\ApiFormRequest;
class ScoreUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'class_section_id' => ['required', 'integer', 'min:1'],
'semester' => ['required', 'string', 'max:50'],
'school_year' => ['required', 'string', 'max:50'],
'scores' => ['required', 'array'],
'missing_ok' => ['nullable', 'array'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Semesters;
use App\Http\Requests\ApiFormRequest;
class SchoolYearRangeRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['required', 'string', 'regex:/^\\d{4}-\\d{4}$/'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Semesters;
use App\Http\Requests\ApiFormRequest;
class SemesterNormalizeRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'semester' => ['required', 'string', 'max:20'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Semesters;
use App\Http\Requests\ApiFormRequest;
class SemesterRangeRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'school_year' => ['required', 'string', 'regex:/^\\d{4}-\\d{4}$/'],
'semester' => ['required', 'string', 'in:Fall,Spring,fall,spring'],
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Requests\Semesters;
use App\Http\Requests\ApiFormRequest;
class SemesterResolveRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'date' => ['nullable', 'date'],
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Requests\Users;
use App\Http\Requests\ApiFormRequest;
class LoginActivityRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'per_page' => ['nullable', 'integer', 'min:1', 'max:200'],
'page' => ['nullable', 'integer', 'min:1'],
];
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Requests\Users;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
class UserListRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'sort' => ['nullable', 'string', Rule::in(['id', 'firstname', 'lastname', 'email', 'status', 'updated_at'])],
'order' => ['nullable', 'string', Rule::in(['asc', 'desc'])],
];
}
}
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Requests\Users;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
class UserStoreRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'firstname' => ['required', 'string', 'max:255'],
'lastname' => ['required', 'string', 'max:255'],
'gender' => ['nullable', 'string', Rule::in(['Male', 'Female', 'male', 'female', 'MALE', 'FEMALE'])],
'cellphone' => ['required', 'string', 'max:25'],
'email' => ['required', 'email', 'max:255', 'unique:users,email'],
'address_street' => ['required', 'string', 'max:255'],
'apt' => ['nullable', 'string', 'max:25'],
'city' => ['required', 'string', 'max:255'],
'state' => ['required', 'string', 'max:25'],
'zip' => ['required', 'string', 'max:25'],
'accept_school_policy' => ['required', 'boolean'],
'role_id' => ['required', 'integer', 'exists:roles,id'],
'password' => ['required', 'string', 'min:6'],
'semester' => ['required', 'string', 'max:255'],
'school_year' => ['nullable', 'string', 'max:9'],
'school_id' => ['nullable', 'integer'],
'user_type' => ['nullable', 'string', Rule::in(['primary', 'secondary', 'tertiary'])],
'rfid_tag' => ['nullable', 'string', 'max:100'],
'status' => ['nullable', 'string', Rule::in(['Active', 'Inactive'])],
'is_verified' => ['nullable', 'boolean'],
'is_suspended' => ['nullable', 'boolean'],
'failed_attempts' => ['nullable', 'integer'],
'last_failed_at' => ['nullable', 'date'],
'token' => ['nullable', 'string', 'max:255'],
'account_id' => ['nullable', 'string', 'max:255'],
];
}
}
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Requests\Users;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
class UserUpdateRequest extends ApiFormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$userId = (int) ($this->route('userId') ?? 0);
return [
'firstname' => ['sometimes', 'string', 'max:255'],
'lastname' => ['sometimes', 'string', 'max:255'],
'gender' => ['sometimes', 'nullable', 'string', Rule::in(['Male', 'Female', 'male', 'female', 'MALE', 'FEMALE'])],
'cellphone' => ['sometimes', 'string', 'max:25'],
'email' => ['sometimes', 'email', 'max:255', Rule::unique('users', 'email')->ignore($userId)],
'address_street' => ['sometimes', 'string', 'max:255'],
'apt' => ['sometimes', 'nullable', 'string', 'max:25'],
'city' => ['sometimes', 'string', 'max:255'],
'state' => ['sometimes', 'string', 'max:25'],
'zip' => ['sometimes', 'string', 'max:25'],
'accept_school_policy' => ['sometimes', 'boolean'],
'semester' => ['sometimes', 'string', 'max:255'],
'school_year' => ['sometimes', 'nullable', 'string', 'max:9'],
'school_id' => ['sometimes', 'nullable', 'integer'],
'user_type' => ['sometimes', 'nullable', 'string', Rule::in(['primary', 'secondary', 'tertiary'])],
'rfid_tag' => ['sometimes', 'nullable', 'string', 'max:100'],
'status' => ['sometimes', 'string', Rule::in(['Active', 'Inactive'])],
'is_verified' => ['sometimes', 'boolean'],
'is_suspended' => ['sometimes', 'boolean'],
'failed_attempts' => ['sometimes', 'nullable', 'integer'],
'last_failed_at' => ['sometimes', 'nullable', 'date'],
'token' => ['sometimes', 'nullable', 'string', 'max:255'],
'account_id' => ['sometimes', 'nullable', 'string', 'max:255'],
];
}
}