Files
sam-api/app/Http/Requests/Client/ClientUpdateRequest.php
김보곤 7cf70dbcaa fix: [address] 주소 필드 255자 → 500자 확장
- DB 마이그레이션: clients, tenants, site_briefings, sites 테이블 address 컬럼 varchar(500)
- FormRequest 8개 파일 max:255 → max:500 변경
2026-03-04 11:29:08 +09:00

103 lines
3.4 KiB
PHP

<?php
namespace App\Http\Requests\Client;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class ClientUpdateRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
protected function prepareForValidation(): void
{
$this->convertCommonCodeNameToCode('client_type');
$this->convertCommonCodeNameToCode('bad_debt_progress');
}
/**
* common_codes의 name을 code로 변환
*/
private function convertCommonCodeNameToCode(string $field): void
{
$value = $this->input($field);
if (! $value) {
return;
}
// 이미 code인지 확인
$existsAsCode = \DB::table('common_codes')
->where('code_group', $field)
->where('code', $value)
->exists();
if ($existsAsCode) {
return;
}
// name으로 code 조회
$code = \DB::table('common_codes')
->where('code_group', $field)
->where('name', $value)
->value('code');
if ($code) {
$this->merge([$field => $code]);
}
}
public function rules(): array
{
return [
'client_group_id' => 'nullable|integer',
'client_code' => 'sometimes|string|max:50',
'name' => 'sometimes|string|max:100',
'client_type' => [
'nullable',
Rule::exists('common_codes', 'code')->where('code_group', 'client_type'),
],
// 연락처 정보
'contact_person' => 'nullable|string|max:100',
'phone' => 'nullable|string|max:20',
'mobile' => 'nullable|string|max:20',
'fax' => 'nullable|string|max:20',
'email' => 'nullable|email|max:100',
'address' => 'nullable|string|max:500',
// 담당자 정보
'manager_name' => 'nullable|string|max:50',
'manager_tel' => 'nullable|string|max:20',
'system_manager' => 'nullable|string|max:50',
// 발주처 설정
'account_id' => 'nullable|string|max:50',
'account_password' => 'nullable|string|max:255',
'purchase_payment_day' => 'nullable|string|max:20',
'sales_payment_day' => 'nullable|string|max:20',
// 사업자 정보
'business_no' => 'nullable|string|max:20',
'business_type' => 'nullable|string|max:50',
'business_item' => 'nullable|string|max:100',
// 약정 세금
'tax_agreement' => 'nullable|boolean',
'tax_amount' => 'nullable|numeric|min:0',
'tax_start_date' => 'nullable|date',
'tax_end_date' => 'nullable|date|after_or_equal:tax_start_date',
// 악성채권 정보
'bad_debt' => 'nullable|boolean',
'bad_debt_amount' => 'nullable|numeric|min:0',
'bad_debt_receive_date' => 'nullable|date',
'bad_debt_end_date' => 'nullable|date|after_or_equal:bad_debt_receive_date',
'bad_debt_progress' => [
'nullable',
Rule::exists('common_codes', 'code')->where('code_group', 'bad_debt_progress'),
],
// 기타
'memo' => 'nullable|string',
'is_active' => 'nullable|boolean',
'is_overdue' => 'nullable|boolean',
];
}
}