- Mail campaign: mẫu nhắc gia hạn thanh toán QR, chọn dịch vụ + chu kỳ từng dòng (renewal_services) - Hosting: nhiều server Plesk cho một gói (service_plan_servers), chuyển server khi server chết - Admin xem/sửa giấy tờ định danh khách, tuỳ chọn gia hạn cho khách, nhật ký cấp phát dịch vụ - Đánh dấu mẫu email dịch vụ là non-marketing Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
41 lines
1.7 KiB
PHP
41 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Api\Client;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class ClientUpdateCccdRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return auth('client')->check();
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'cmnd' => 'required|string|regex:/^\d{9}(\d{3})?$/',
|
|
'cmnd_before' => 'required|file|mimetypes:image/webp|mimes:webp|max:5120|dimensions:min_width=300,min_height=300,max_width=2000,max_height=2000',
|
|
'cmnd_after' => 'required|file|mimetypes:image/webp|mimes:webp|max:5120|dimensions:min_width=300,min_height=300,max_width=2000,max_height=2000',
|
|
];
|
|
}
|
|
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'cmnd.required' => 'Số CMT/CCCD là bắt buộc',
|
|
'cmnd.regex' => 'Số CMT/CCCD phải gồm 9 hoặc 12 chữ số',
|
|
'cmnd_before.required' => 'Ảnh mặt trước là bắt buộc',
|
|
'cmnd_before.mimetypes' => 'Ảnh mặt trước phải là ảnh WebP',
|
|
'cmnd_before.mimes' => 'Ảnh mặt trước phải là ảnh WebP',
|
|
'cmnd_before.max' => 'Ảnh mặt trước tối đa 5MB',
|
|
'cmnd_before.dimensions' => 'Ảnh mặt trước phải từ 300px đến 2000px mỗi cạnh',
|
|
'cmnd_after.required' => 'Ảnh mặt sau là bắt buộc',
|
|
'cmnd_after.mimetypes' => 'Ảnh mặt sau phải là ảnh WebP',
|
|
'cmnd_after.mimes' => 'Ảnh mặt sau phải là ảnh WebP',
|
|
'cmnd_after.max' => 'Ảnh mặt sau tối đa 5MB',
|
|
'cmnd_after.dimensions' => 'Ảnh mặt sau phải từ 300px đến 2000px mỗi cạnh',
|
|
];
|
|
}
|
|
}
|