feat: add consumer accounts and business activities management

- Implemented AccountsService for managing consumer accounts including create, update, delete, and find operations.
- Created DTOs for account creation and updates.
- Developed BusinessActivitiesController and BusinessActivitiesService for handling business activities related to consumers.
- Added complexes management with ComplexesController and ComplexesService.
- Introduced POS management with ComplexPosesController and ComplexPosesService.
- Created necessary DTOs for business activities and POS.
- Established Licenses management with LicensesController and LicensesService.
- Integrated consumer management with PartnerConsumersController and PartnerConsumersService.
- Added Prisma module imports and service connections across modules.
This commit is contained in:
2026-04-23 20:59:39 +03:30
parent f9e1ad69dc
commit a350ec7990
104 changed files with 13233 additions and 4105 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
model AdminAccount {
id String @id @default(uuid())
id String @id @default(ulid())
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
@@ -14,7 +14,7 @@ model AdminAccount {
}
model Admin {
id String @id @default(uuid())
id String @id @default(ulid())
mobile_number String @unique()
national_code String? @unique()
first_name String
+3 -3
View File
@@ -1,5 +1,5 @@
model Account {
id String @id @default(uuid())
id String @id @default(ulid())
username String @unique()
password String
status AccountStatus
@@ -17,7 +17,7 @@ model Account {
}
// model Token {
// id String @id @d @uniqueefault(uuid())
// id String @id @d @uniqueefault(ulid())
// token String @unique
// type TokenType
// created_at DateTime @default(now())
@@ -31,7 +31,7 @@ model Account {
// }
// model VerificationCode {
// id String @id @default(uuid())
// id String @id @default(ulid())
// code String
// is_used Boolean @default(false)
// created_at DateTime @default(now())
+28 -19
View File
@@ -1,5 +1,5 @@
model ConsumerAccount {
id String @id @default(uuid())
id String @id @default(ulid())
role ConsumerRole
created_at DateTime @default(now()) @db.Timestamp(0)
@@ -8,7 +8,7 @@ model ConsumerAccount {
consumer_id String
consumer Consumer @relation(fields: [consumer_id], references: [id])
account_id String @unique
account_id String @unique()
account Account @relation(fields: [account_id], references: [id])
permission PermissionConsumer?
@@ -18,8 +18,9 @@ model ConsumerAccount {
}
model Consumer {
id String @id @default(uuid())
mobile_number String @unique()
id String @id @default(ulid())
mobile_number String
national_code String
first_name String
last_name String
status ConsumerStatus @default(ACTIVE)
@@ -27,17 +28,23 @@ model Consumer {
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
partner_id String
partner Partner @relation(fields: [partner_id], references: [id])
consumer_accounts ConsumerAccount[]
business_activities BusinessActivity[]
activated_licenses ActivatedLicense[]
consumer_devices ConsumerDevices[]
@@unique([mobile_number, partner_id])
@@unique([national_code, partner_id])
@@map("consumers")
}
model BusinessActivity {
id String @id @default(uuid())
name String
id String @id @default(ulid())
economic_code String @unique()
name String
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
@@ -49,15 +56,16 @@ model BusinessActivity {
complexes Complex[]
permission_businesses PermissionBusiness[]
license_activation LicenseActivation?
@@map("business_activities")
}
model Complex {
id String @id @default(uuid())
name String
address String?
tax_id String?
id String @id @default(ulid())
name String
branch_code String
address String?
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
@@ -77,14 +85,15 @@ model Complex {
}
model Pos {
id String @id @default(uuid())
name String
serial String @unique
model String?
status POSStatus @default(ACTIVE)
pos_type POSType
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
id String @id @default(ulid())
name String
serial String @unique()
model String?
status POSStatus @default(ACTIVE)
pos_type POSType
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
complex_id String
complex Complex @relation(fields: [complex_id], references: [id])
+2 -2
View File
@@ -1,5 +1,5 @@
model DeviceBrand {
id String @id @default(uuid())
id String @id @default(ulid())
name String
created_at DateTime @default(now()) @db.Timestamp(0)
@@ -11,7 +11,7 @@ model DeviceBrand {
}
model Device {
id String @id @default(uuid())
id String @id @default(ulid())
name String
os_version String?
+81 -12
View File
@@ -1,19 +1,21 @@
model License {
id String @id @default(uuid())
id String @id @default(ulid())
accounts_limit Int @default(3)
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
charged_license_transaction_id String
charged_license_transaction ChargedLicenseTransactions @relation(fields: [charged_license_transaction_id], references: [id])
charge_transaction_id String
charge_transaction LicenseChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
activated_license ActivatedLicense?
activation LicenseActivation?
allocations PartnerAccountQuotaAllocation[]
@@map("licenses")
}
model ActivatedLicense {
id String @id @unique() @default(uuid())
model LicenseActivation {
id String @id @unique() @default(ulid())
starts_at DateTime
expires_at DateTime
@@ -23,16 +25,18 @@ model ActivatedLicense {
license_id String @unique
license License @relation(fields: [license_id], references: [id])
consumer_id String
consumer Consumer @relation(fields: [consumer_id], references: [id])
business_activity_id String @unique
business_activity BusinessActivity @relation(fields: [business_activity_id], references: [id])
license_renews LicenseRenew[]
@@map("activated_licenses")
@@map("licenses_activated")
}
model ChargedLicenseTransactions {
id String @id @default(uuid())
model LicenseChargeTransaction {
id String @id @default(ulid())
activation_expires_at DateTime
tracking_code String @unique()
purchased_count Int
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
@@ -42,5 +46,70 @@ model ChargedLicenseTransactions {
licenses License[]
@@map("charged_license_transactions")
@@map("license_charged_transactions")
}
model LicenseRenew {
id String @id @default(ulid())
expires_at DateTime
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
charge_transaction_id String
charge_transaction LicenseRenewChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
activation_id String
activation LicenseActivation @relation(fields: [activation_id], references: [id])
@@map("license_renew")
}
model LicenseRenewChargeTransaction {
id String @id @default(ulid())
activation_expires_at DateTime
tracking_code String @unique()
purchased_count Int
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
partner_id String
partner Partner @relation(fields: [partner_id], references: [id])
license_renews LicenseRenew[]
@@map("license_renew_charge_transaction")
}
model PartnerAccountQuotaChargeTransaction {
id String @id @default(ulid())
activation_expires_at DateTime
tracking_code String @unique()
purchased_count Int
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
partner_id String
partner Partner @relation(fields: [partner_id], references: [id])
allocations PartnerAccountQuotaAllocation[]
@@map("partner_account_quota_charge_transaction")
}
model PartnerAccountQuotaAllocation {
id String @id @default(ulid())
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @updatedAt() @db.Timestamp(0)
charge_transaction_id String
charge_transaction PartnerAccountQuotaChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
license_id String?
license License? @relation(fields: [license_id], references: [id])
@@map("partner_account_quota_allocation")
}
+7 -4
View File
@@ -1,5 +1,5 @@
model PartnerAccount {
id String @id @default(uuid())
id String @id @default(ulid())
role PartnerRole
created_at DateTime @default(now()) @db.Timestamp(0)
@@ -15,7 +15,7 @@ model PartnerAccount {
}
model Partner {
id String @id @default(uuid())
id String @id @default(ulid())
name String
code String @unique()
status PartnerStatus @default(ACTIVE)
@@ -23,8 +23,11 @@ model Partner {
created_at DateTime @default(now()) @db.Timestamp(0)
updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)
partner_accounts PartnerAccount[]
chargedLicenseTransactions ChargedLicenseTransactions[]
consumers Consumer[]
partner_accounts PartnerAccount[]
license_charge_transactions LicenseChargeTransaction[]
account_quota_charge_transactions PartnerAccountQuotaChargeTransaction[]
license_renew_charge_transactions LicenseRenewChargeTransaction[]
@@map("partners")
}
+4 -4
View File
@@ -1,5 +1,5 @@
model PermissionConsumer {
id String @id @default(uuid())
id String @id @default(ulid())
consumer_account_id String @unique
consumer_account ConsumerAccount @relation(fields: [consumer_account_id], references: [id], onDelete: Cascade)
@@ -12,7 +12,7 @@ model PermissionConsumer {
}
model PermissionPos {
id String @id @default(uuid())
id String @id @default(ulid())
role POSRole
pos_id String
@@ -26,7 +26,7 @@ model PermissionPos {
}
model PermissionComplex {
id String @id @default(uuid())
id String @id @default(ulid())
role ComplexRole
complex_id String
@@ -40,7 +40,7 @@ model PermissionComplex {
}
model PermissionBusiness {
id String @id @default(uuid())
id String @id @default(ulid())
role BusinessRole
business_id String
+2 -2
View File
@@ -1,5 +1,5 @@
model ProviderAccount {
id String @id @default(uuid())
id String @id @default(ulid())
role ProviderRole
created_at DateTime @default(now()) @db.Timestamp(0)
@@ -15,7 +15,7 @@ model ProviderAccount {
}
model Provider {
id String @id @default(uuid())
id String @id @default(ulid())
code String @unique()
status PartnerStatus @default(ACTIVE)
name String
@@ -1,5 +1,5 @@
model ApplicationReleasedInfo {
id String @id @default(uuid())
id String @id @default(ulid())
version String
build_number String
is_minimum_supported Boolean @default(false)
+1 -1
View File
@@ -1,5 +1,5 @@
model Customer {
id String @id @default(uuid())
id String @id @default(ulid())
is_favorite Boolean? @default(false)
created_at DateTime @default(now()) @db.Timestamp(0)
+2 -2
View File
@@ -1,5 +1,5 @@
model Good {
id String @id @default(uuid())
id String @id @default(ulid())
name String @db.VarChar(255)
is_default_guild_good Boolean @default(false)
sku String @db.VarChar(100)
@@ -27,7 +27,7 @@ model Good {
}
model GoodCategory {
id String @id @default(uuid())
id String @id @default(ulid())
name String @db.VarChar(100)
description String? @db.Text
image_url String? @db.VarChar(255)
+1 -1
View File
@@ -1,5 +1,5 @@
model Guild {
id String @id @default(uuid())
id String @id @default(ulid())
name String
code String?
+3 -3
View File
@@ -1,5 +1,5 @@
model SalesInvoice {
id String @id @default(uuid())
id String @id @default(ulid())
code String @unique @db.VarChar(100)
total_amount Decimal @db.Decimal(15, 2)
notes String? @db.Text
@@ -22,7 +22,7 @@ model SalesInvoice {
}
model SalesInvoiceItem {
id String @id @default(uuid())
id String @id @default(ulid())
quantity Decimal @db.Decimal(10, 0)
unit_type UnitType
unit_price Decimal @default(0.00) @db.Decimal(15, 2)
@@ -46,7 +46,7 @@ model SalesInvoiceItem {
}
model SalesInvoicePayment {
id String @id @default(uuid())
id String @id @default(ulid())
invoice_id String
amount Decimal @db.Decimal(15, 2)
payment_method PaymentMethodType
+2 -2
View File
@@ -1,5 +1,5 @@
model Service {
id String @id @default(uuid())
id String @id @default(ulid())
name String @db.VarChar(255)
description String? @db.Text
sku String @unique() @db.VarChar(100)
@@ -21,7 +21,7 @@ model Service {
}
model ServiceCategory {
id String @id @default(uuid())
id String @id @default(ulid())
name String @db.VarChar(100)
description String? @db.Text
image_url String? @db.VarChar(255)