Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-05-07 23:28:12 +03:30
parent b2a1eb8e5b
commit ce40bd8c75
54 changed files with 260 additions and 183 deletions
@@ -20,4 +20,5 @@ export const ENUMS_API_ROUTES = {
goodPricingModel: `${baseUrl}/good_pricing_model`,
consumerRole: `${baseUrl}/consumer_role`,
fiscalResponseStatus: `${baseUrl}/tsp_provider_response_status`,
invoice_template_type: `${baseUrl}/invoice_templates`,
};
@@ -0,0 +1,13 @@
import { Component, Input } from '@angular/core';
import { FormControl, ReactiveFormsModule } from '@angular/forms';
@Component({
selector: 'abstract-field',
template: '',
imports: [ReactiveFormsModule],
})
export abstract class AbstractFieldComponent<T = string> {
@Input({ required: true }) control!: FormControl<T>;
@Input({ required: true }) name!: string;
@Input({ required: true }) label!: string;
}
@@ -10,6 +10,7 @@ export * from './email.component';
export * from './first_name.component';
export * from './fiscal_id.component';
export * from './guild_id.component';
export * from './invoice_templates.component';
export * from './last_name.component';
export * from './legal_name.component';
export * from './license_starts_at.component';
@@ -0,0 +1,19 @@
import { EnumSelectComponent } from '@/shared/apiEnum/select.component';
import { Component, Input } from '@angular/core';
import { FormControl, ReactiveFormsModule } from '@angular/forms';
@Component({
selector: 'field-invoice-templates',
template: `<app-enum-select
type="invoice_template_type"
[customLabel]="label"
[control]="control"
[name]="name"
/>`,
imports: [ReactiveFormsModule, EnumSelectComponent],
})
export class FieldInvoiceTemplatesComponent {
@Input({ required: true }) control = new FormControl<string>('');
@Input() name = 'invoice-template';
@Input() label = 'قالب فاکتور';
}
+25 -3
View File
@@ -1,4 +1,10 @@
import { fiscalCodeValidator, mobileValidator, postalCodeValidator } from '@/core/validators';
import {
fiscalCodeValidator,
mobileValidator,
password,
postalCodeValidator,
usernameValidator,
} from '@/core/validators';
import { nationalIdValidator } from '@/core/validators/national-id.validator';
import { ValidatorFn, Validators } from '@angular/forms';
@@ -7,6 +13,10 @@ type ControlConfig = [any, ValidatorFn[]];
export const fieldControl = {
name: (value = '', isRequired = true): ControlConfig => [value, isRequired ? required() : []],
invoice_template: (value = '', isRequired = true): ControlConfig => [
value,
isRequired ? required() : [],
],
code: (value = '', isRequired = true): ControlConfig => [value, isRequired ? required() : []],
description: (value = '', isRequired = false): ControlConfig => [
value,
@@ -61,11 +71,14 @@ export const fieldControl = {
value,
isRequired ? [Validators.required, nationalIdValidator()] : [nationalIdValidator()],
],
postal_code: (value = '', isRequired = true): ControlConfig => [
postal_code: (value = '', isRequired = false): ControlConfig => [
value,
isRequired ? [Validators.required, postalCodeValidator()] : [postalCodeValidator()],
],
username: (value = '', isRequired = true): ControlConfig => [value, isRequired ? required() : []],
username: (value = '', isRequired = true): ControlConfig => [
value,
isRequired ? [...required(), usernameValidator()] : [usernameValidator()],
],
economic_code: (value = '', isRequired = true): ControlConfig => [
value,
isRequired ? required() : [],
@@ -174,4 +187,13 @@ export const fieldControl = {
value,
isRequired ? required() : [],
],
password: (value = '', isRequired = true): ControlConfig => [
value,
isRequired ? [...required(), password()] : [password()],
],
confirmPassword: (value = '', isRequired = true): ControlConfig => [
value,
isRequired ? required() : [],
],
};