443 lines
12 KiB
TypeScript
443 lines
12 KiB
TypeScript
import { DataTypes, Model, Optional } from 'sequelize';
|
|
import { sequelize } from '../config/database';
|
|
|
|
interface DealerAttributes {
|
|
dealerId: string;
|
|
salesCode?: string | null;
|
|
serviceCode?: string | null;
|
|
gearCode?: string | null;
|
|
gmaCode?: string | null;
|
|
region?: string | null;
|
|
dealership?: string | null;
|
|
state?: string | null;
|
|
district?: string | null;
|
|
city?: string | null;
|
|
location?: string | null;
|
|
cityCategoryPst?: string | null;
|
|
layoutFormat?: string | null;
|
|
tierCityCategory?: string | null;
|
|
onBoardingCharges?: string | null;
|
|
date?: string | null;
|
|
singleFormatMonthYear?: string | null;
|
|
domainId?: string | null;
|
|
replacement?: string | null;
|
|
terminationResignationStatus?: string | null;
|
|
dateOfTerminationResignation?: string | null;
|
|
lastDateOfOperations?: string | null;
|
|
oldCodes?: string | null;
|
|
branchDetails?: string | null;
|
|
dealerPrincipalName?: string | null;
|
|
dealerPrincipalEmailId?: string | null;
|
|
dpContactNumber?: string | null;
|
|
dpContacts?: string | null;
|
|
showroomAddress?: string | null;
|
|
showroomPincode?: string | null;
|
|
workshopAddress?: string | null;
|
|
workshopPincode?: string | null;
|
|
locationDistrict?: string | null;
|
|
stateWorkshop?: string | null;
|
|
noOfStudios?: number | null;
|
|
websiteUpdate?: string | null;
|
|
gst?: string | null;
|
|
pan?: string | null;
|
|
firmType?: string | null;
|
|
propManagingPartnersDirectors?: string | null;
|
|
totalPropPartnersDirectors?: string | null;
|
|
docsFolderLink?: string | null;
|
|
workshopGmaCodes?: string | null;
|
|
existingNew?: string | null;
|
|
dlrcode?: string | null;
|
|
isActive: boolean;
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
}
|
|
|
|
interface DealerCreationAttributes extends Optional<DealerAttributes, 'dealerId' | 'isActive' | 'createdAt' | 'updatedAt'> {}
|
|
|
|
class Dealer extends Model<DealerAttributes, DealerCreationAttributes> implements DealerAttributes {
|
|
public dealerId!: string;
|
|
public salesCode?: string | null;
|
|
public serviceCode?: string | null;
|
|
public gearCode?: string | null;
|
|
public gmaCode?: string | null;
|
|
public region?: string | null;
|
|
public dealership?: string | null;
|
|
public state?: string | null;
|
|
public district?: string | null;
|
|
public city?: string | null;
|
|
public location?: string | null;
|
|
public cityCategoryPst?: string | null;
|
|
public layoutFormat?: string | null;
|
|
public tierCityCategory?: string | null;
|
|
public onBoardingCharges?: string | null;
|
|
public date?: string | null;
|
|
public singleFormatMonthYear?: string | null;
|
|
public domainId?: string | null;
|
|
public replacement?: string | null;
|
|
public terminationResignationStatus?: string | null;
|
|
public dateOfTerminationResignation?: string | null;
|
|
public lastDateOfOperations?: string | null;
|
|
public oldCodes?: string | null;
|
|
public branchDetails?: string | null;
|
|
public dealerPrincipalName?: string | null;
|
|
public dealerPrincipalEmailId?: string | null;
|
|
public dpContactNumber?: string | null;
|
|
public dpContacts?: string | null;
|
|
public showroomAddress?: string | null;
|
|
public showroomPincode?: string | null;
|
|
public workshopAddress?: string | null;
|
|
public workshopPincode?: string | null;
|
|
public locationDistrict?: string | null;
|
|
public stateWorkshop?: string | null;
|
|
public noOfStudios?: number | null;
|
|
public websiteUpdate?: string | null;
|
|
public gst?: string | null;
|
|
public pan?: string | null;
|
|
public firmType?: string | null;
|
|
public propManagingPartnersDirectors?: string | null;
|
|
public totalPropPartnersDirectors?: string | null;
|
|
public docsFolderLink?: string | null;
|
|
public workshopGmaCodes?: string | null;
|
|
public existingNew?: string | null;
|
|
public dlrcode?: string | null;
|
|
public isActive!: boolean;
|
|
public readonly createdAt!: Date;
|
|
public readonly updatedAt!: Date;
|
|
}
|
|
|
|
Dealer.init(
|
|
{
|
|
dealerId: {
|
|
type: DataTypes.UUID,
|
|
primaryKey: true,
|
|
defaultValue: DataTypes.UUIDV4,
|
|
field: 'dealer_id'
|
|
},
|
|
salesCode: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'sales_code',
|
|
comment: 'Sales Code'
|
|
},
|
|
serviceCode: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'service_code',
|
|
comment: 'Service Code'
|
|
},
|
|
gearCode: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'gear_code',
|
|
comment: 'Gear Code'
|
|
},
|
|
gmaCode: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'gma_code',
|
|
comment: 'GMA CODE'
|
|
},
|
|
region: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
comment: 'Region'
|
|
},
|
|
dealership: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
comment: 'Dealership name'
|
|
},
|
|
state: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
comment: 'State'
|
|
},
|
|
district: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
comment: 'District'
|
|
},
|
|
city: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
comment: 'City'
|
|
},
|
|
location: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
comment: 'Location'
|
|
},
|
|
cityCategoryPst: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'city_category_pst',
|
|
comment: 'City category (PST)'
|
|
},
|
|
layoutFormat: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'layout_format',
|
|
comment: 'Layout format'
|
|
},
|
|
tierCityCategory: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
field: 'tier_city_category',
|
|
comment: 'TIER City Category'
|
|
},
|
|
onBoardingCharges: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'on_boarding_charges',
|
|
comment: 'On Boarding Charges (stored as text to allow text values)'
|
|
},
|
|
date: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
comment: 'DATE (stored as text to avoid format validation)'
|
|
},
|
|
singleFormatMonthYear: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'single_format_month_year',
|
|
comment: 'Single Format of Month/Year (stored as text)'
|
|
},
|
|
domainId: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'domain_id',
|
|
comment: 'Domain Id'
|
|
},
|
|
replacement: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
comment: 'Replacement (stored as text to allow longer values)'
|
|
},
|
|
terminationResignationStatus: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'termination_resignation_status',
|
|
comment: 'Termination / Resignation under Proposal or Evaluation'
|
|
},
|
|
dateOfTerminationResignation: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'date_of_termination_resignation',
|
|
comment: 'Date Of termination/ resignation (stored as text to avoid format validation)'
|
|
},
|
|
lastDateOfOperations: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'last_date_of_operations',
|
|
comment: 'Last date of operations (stored as text to avoid format validation)'
|
|
},
|
|
oldCodes: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'old_codes',
|
|
comment: 'Old Codes'
|
|
},
|
|
branchDetails: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'branch_details',
|
|
comment: 'Branch Details'
|
|
},
|
|
dealerPrincipalName: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'dealer_principal_name',
|
|
comment: 'Dealer Principal Name'
|
|
},
|
|
dealerPrincipalEmailId: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'dealer_principal_email_id',
|
|
comment: 'Dealer Principal Email Id'
|
|
},
|
|
dpContactNumber: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'dp_contact_number',
|
|
comment: 'DP CONTACT NUMBER (stored as text to allow multiple numbers)'
|
|
},
|
|
dpContacts: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'dp_contacts',
|
|
comment: 'DP CONTACTS (stored as text to allow multiple contacts)'
|
|
},
|
|
showroomAddress: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'showroom_address',
|
|
comment: 'Showroom Address'
|
|
},
|
|
showroomPincode: {
|
|
type: DataTypes.STRING(10),
|
|
allowNull: true,
|
|
field: 'showroom_pincode',
|
|
comment: 'Showroom Pincode'
|
|
},
|
|
workshopAddress: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'workshop_address',
|
|
comment: 'Workshop Address'
|
|
},
|
|
workshopPincode: {
|
|
type: DataTypes.STRING(10),
|
|
allowNull: true,
|
|
field: 'workshop_pincode',
|
|
comment: 'Workshop Pincode'
|
|
},
|
|
locationDistrict: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
field: 'location_district',
|
|
comment: 'Location / District'
|
|
},
|
|
stateWorkshop: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
field: 'state_workshop',
|
|
comment: 'State (for workshop)'
|
|
},
|
|
noOfStudios: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
defaultValue: 0,
|
|
field: 'no_of_studios',
|
|
comment: 'No Of Studios'
|
|
},
|
|
websiteUpdate: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'website_update',
|
|
comment: 'Website update (stored as text to allow longer values)'
|
|
},
|
|
gst: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
comment: 'GST'
|
|
},
|
|
pan: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
comment: 'PAN'
|
|
},
|
|
firmType: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
field: 'firm_type',
|
|
comment: 'Firm Type'
|
|
},
|
|
propManagingPartnersDirectors: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'prop_managing_partners_directors',
|
|
comment: 'Prop. / Managing Partners / Managing Directors'
|
|
},
|
|
totalPropPartnersDirectors: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'total_prop_partners_directors',
|
|
comment: 'Total Prop. / Partners / Directors'
|
|
},
|
|
docsFolderLink: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
field: 'docs_folder_link',
|
|
comment: 'DOCS Folder Link'
|
|
},
|
|
workshopGmaCodes: {
|
|
type: DataTypes.STRING(255),
|
|
allowNull: true,
|
|
field: 'workshop_gma_codes',
|
|
comment: 'Workshop GMA Codes'
|
|
},
|
|
existingNew: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
field: 'existing_new',
|
|
comment: 'Existing / New'
|
|
},
|
|
dlrcode: {
|
|
type: DataTypes.STRING(50),
|
|
allowNull: true,
|
|
comment: 'dlrcode'
|
|
},
|
|
isActive: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true,
|
|
field: 'is_active',
|
|
comment: 'Whether the dealer is currently active'
|
|
},
|
|
createdAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
defaultValue: DataTypes.NOW,
|
|
field: 'created_at'
|
|
},
|
|
updatedAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
defaultValue: DataTypes.NOW,
|
|
field: 'updated_at'
|
|
}
|
|
},
|
|
{
|
|
sequelize,
|
|
tableName: 'dealers',
|
|
modelName: 'Dealer',
|
|
timestamps: true,
|
|
underscored: true,
|
|
indexes: [
|
|
{
|
|
fields: ['sales_code'],
|
|
name: 'idx_dealers_sales_code'
|
|
},
|
|
{
|
|
fields: ['service_code'],
|
|
name: 'idx_dealers_service_code'
|
|
},
|
|
{
|
|
fields: ['gma_code'],
|
|
name: 'idx_dealers_gma_code'
|
|
},
|
|
{
|
|
fields: ['domain_id'],
|
|
name: 'idx_dealers_domain_id'
|
|
},
|
|
{
|
|
fields: ['region'],
|
|
name: 'idx_dealers_region'
|
|
},
|
|
{
|
|
fields: ['state'],
|
|
name: 'idx_dealers_state'
|
|
},
|
|
{
|
|
fields: ['city'],
|
|
name: 'idx_dealers_city'
|
|
},
|
|
{
|
|
fields: ['district'],
|
|
name: 'idx_dealers_district'
|
|
},
|
|
{
|
|
fields: ['dlrcode'],
|
|
name: 'idx_dealers_dlrcode'
|
|
},
|
|
{
|
|
fields: ['is_active'],
|
|
name: 'idx_dealers_is_active'
|
|
}
|
|
]
|
|
}
|
|
);
|
|
|
|
export { Dealer };
|
|
export type { DealerAttributes, DealerCreationAttributes };
|