diff --git a/src/app/domains/consumer/components/license-info-dialog.component.ts b/src/app/domains/consumer/components/license-info-dialog.component.ts index abdd0aa..9eac3bf 100644 --- a/src/app/domains/consumer/components/license-info-dialog.component.ts +++ b/src/app/domains/consumer/components/license-info-dialog.component.ts @@ -20,10 +20,7 @@ export class ConsumerLicenseInfoDialogComponent extends AbstractDialog { if (!this.store.entity()?.license?.expires_at) { return null; } - if ( - new Date().toDateString() > - new Date(this.store.entity()?.license?.expires_at || '').toDateString() - ) { + if (new Date().getTime() > new Date(this.store.entity()?.license?.expires_at || '').getTime()) { return licenseStatus.EXPIRED; } return licenseStatus.ACTIVE; diff --git a/src/app/domains/consumer/layouts/layout.component.ts b/src/app/domains/consumer/layouts/layout.component.ts index 4d2894b..5ab9694 100644 --- a/src/app/domains/consumer/layouts/layout.component.ts +++ b/src/app/domains/consumer/layouts/layout.component.ts @@ -24,10 +24,7 @@ export class LayoutComponent { if (!this.store.entity()?.license?.expires_at) { return null; } - if ( - new Date().toDateString() > - new Date(this.store.entity()?.license?.expires_at || '').toDateString() - ) { + if (new Date().getTime() > new Date(this.store.entity()?.license?.expires_at || '').getTime()) { return licenseStatus.EXPIRED; } return licenseStatus.ACTIVE; diff --git a/src/app/domains/consumer/modules/accounts/views/list.component.ts b/src/app/domains/consumer/modules/accounts/views/list.component.ts index 6f93257..703abb6 100644 --- a/src/app/domains/consumer/modules/accounts/views/list.component.ts +++ b/src/app/domains/consumer/modules/accounts/views/list.component.ts @@ -16,7 +16,7 @@ export class ConsumerAccountsComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'username', header: 'نام کاربری', type: 'nested', nestedPath: 'account.username' }, { field: 'role', header: 'نقش' }, { field: 'status', header: 'وضعیت', type: 'nested', nestedPath: 'account.status' }, diff --git a/src/app/domains/consumer/modules/businessActivities/components/complexes/list.component.ts b/src/app/domains/consumer/modules/businessActivities/components/complexes/list.component.ts index f7cb3e9..5596eb5 100644 --- a/src/app/domains/consumer/modules/businessActivities/components/complexes/list.component.ts +++ b/src/app/domains/consumer/modules/businessActivities/components/complexes/list.component.ts @@ -20,7 +20,7 @@ export class ConsumerComplexListComponent extends AbstractList @Input({ required: true }) businessId!: string; @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'created_at', diff --git a/src/app/domains/consumer/modules/businessActivities/components/goods/list.component.ts b/src/app/domains/consumer/modules/businessActivities/components/goods/list.component.ts index dc11ea0..86c5046 100644 --- a/src/app/domains/consumer/modules/businessActivities/components/goods/list.component.ts +++ b/src/app/domains/consumer/modules/businessActivities/components/goods/list.component.ts @@ -20,7 +20,7 @@ export class ConsumerComplexGoodsListComponent extends AbstractList { @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'guild', header: 'صنف', type: 'nested', nestedPath: 'name' }, { diff --git a/src/app/domains/consumer/modules/businessActivities/components/poses/list.component.ts b/src/app/domains/consumer/modules/businessActivities/components/poses/list.component.ts index 593ba48..f3df9d6 100644 --- a/src/app/domains/consumer/modules/businessActivities/components/poses/list.component.ts +++ b/src/app/domains/consumer/modules/businessActivities/components/poses/list.component.ts @@ -21,7 +21,7 @@ export class ConsumerPosesComponent extends AbstractList { @Input({ required: true }) complexId!: string; @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'serial', header: 'شماره سریال' }, { field: 'device', header: 'دستگاه', type: 'nested', nestedPath: 'device.name' }, diff --git a/src/app/domains/consumer/modules/businessActivities/views/list.component.ts b/src/app/domains/consumer/modules/businessActivities/views/list.component.ts index 48a646a..a922e9b 100644 --- a/src/app/domains/consumer/modules/businessActivities/views/list.component.ts +++ b/src/app/domains/consumer/modules/businessActivities/views/list.component.ts @@ -15,7 +15,7 @@ export class ConsumerBusinessActivitiesComponent extends AbstractList { @Input() businessId!: string; @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'created_at', diff --git a/src/app/domains/superAdmin/modules/consumers/components/form.component.html b/src/app/domains/superAdmin/modules/consumers/components/form.component.html index 653a6d6..4187dec 100644 --- a/src/app/domains/superAdmin/modules/consumers/components/form.component.html +++ b/src/app/domains/superAdmin/modules/consumers/components/form.component.html @@ -42,16 +42,17 @@ [invalid]="form.controls.confirmPassword.touched && form.controls.confirmPassword.invalid" /> + اطلاعات لایسنس + + + } - اطلاعات لایسنس - - - + diff --git a/src/app/domains/superAdmin/modules/consumers/components/poses/list.component.ts b/src/app/domains/superAdmin/modules/consumers/components/poses/list.component.ts index 0e9ddd7..40e201d 100644 --- a/src/app/domains/superAdmin/modules/consumers/components/poses/list.component.ts +++ b/src/app/domains/superAdmin/modules/consumers/components/poses/list.component.ts @@ -22,7 +22,7 @@ export class ConsumerPosesComponent extends AbstractList { @Input({ required: true }) complexId!: string; @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'serial', header: 'شماره سریال' }, { field: 'device', header: 'دستگاه', type: 'nested', nestedPath: 'device.name' }, diff --git a/src/app/domains/superAdmin/modules/consumers/views/list.component.ts b/src/app/domains/superAdmin/modules/consumers/views/list.component.ts index 07888c5..95453bd 100644 --- a/src/app/domains/superAdmin/modules/consumers/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/consumers/views/list.component.ts @@ -1,6 +1,7 @@ // import { CatalogRoleTagComponent } from '@/shared/catalog/roles'; import { AbstractList } from '@/shared/abstractClasses/abstract-list'; import { PageDataListComponent } from '@/shared/components/pageDataList/page-data-list.component'; +import { formatJalali } from '@/utils'; import { Component, inject } from '@angular/core'; import { Router } from '@angular/router'; import { ConsumerUserFormComponent } from '../components/form.component'; @@ -19,7 +20,7 @@ export class ConsumersComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'fullname', header: 'نام' }, { field: 'mobile_number', header: 'شماره موبایل' }, { field: 'status', header: 'وضعیت' }, @@ -28,7 +29,7 @@ export class ConsumersComponent extends AbstractList { header: 'تاریخ انقضای لایسنس', customDataModel(item) { if (item.license) { - return item.license.expires_at; + return formatJalali(item.license.expires_at); } return 'بدون لایسنس'; }, diff --git a/src/app/domains/superAdmin/modules/consumers/views/single.component.ts b/src/app/domains/superAdmin/modules/consumers/views/single.component.ts index f946027..7d9fb58 100644 --- a/src/app/domains/superAdmin/modules/consumers/views/single.component.ts +++ b/src/app/domains/superAdmin/modules/consumers/views/single.component.ts @@ -43,10 +43,7 @@ export class ConsumerComponent { if (!this.store.entity()?.license?.expires_at) { return null; } - if ( - new Date().toDateString() > - new Date(this.store.entity()?.license?.expires_at || '').toDateString() - ) { + if (new Date().getTime() > new Date(this.store.entity()?.license?.expires_at || '').getTime()) { return licenseStatus.EXPIRED; } return licenseStatus.ACTIVE; diff --git a/src/app/domains/superAdmin/modules/deviceBrands/views/list.component.ts b/src/app/domains/superAdmin/modules/deviceBrands/views/list.component.ts index a01a6de..90882e7 100644 --- a/src/app/domains/superAdmin/modules/deviceBrands/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/deviceBrands/views/list.component.ts @@ -16,7 +16,7 @@ export class DeviceBrandsComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'created_at', diff --git a/src/app/domains/superAdmin/modules/devices/views/list.component.ts b/src/app/domains/superAdmin/modules/devices/views/list.component.ts index 5e502ac..05ed16d 100644 --- a/src/app/domains/superAdmin/modules/devices/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/devices/views/list.component.ts @@ -16,7 +16,7 @@ export class DevicesComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'brand', header: 'برند دستگاه', type: 'nested', nestedPath: 'name' }, { diff --git a/src/app/domains/superAdmin/modules/guilds/components/categories/list.component.ts b/src/app/domains/superAdmin/modules/guilds/components/categories/list.component.ts index 5510f27..3c989a6 100644 --- a/src/app/domains/superAdmin/modules/guilds/components/categories/list.component.ts +++ b/src/app/domains/superAdmin/modules/guilds/components/categories/list.component.ts @@ -18,7 +18,7 @@ export class GuildGoodCategoriesListComponent extends AbstractList { @Input() guildId!: string; @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'sku', header: 'شناسه‌ی عمومی' }, { field: 'category', header: 'دسته‌بندی', type: 'nested', nestedPath: 'category.name' }, diff --git a/src/app/domains/superAdmin/modules/guilds/views/list.component.ts b/src/app/domains/superAdmin/modules/guilds/views/list.component.ts index b539564..e2ac61d 100644 --- a/src/app/domains/superAdmin/modules/guilds/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/guilds/views/list.component.ts @@ -24,7 +24,7 @@ export class GuildsComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'عنوان' }, { field: 'code', header: 'کد' }, { field: 'businessActivitiesCount', header: 'تعداد فعالیت‌‌های اقتصادی‌ مرتبط' }, diff --git a/src/app/domains/superAdmin/modules/licenses/constants/apiRoutes/index.ts b/src/app/domains/superAdmin/modules/licenses/constants/apiRoutes/index.ts index 972e314..919aa65 100644 --- a/src/app/domains/superAdmin/modules/licenses/constants/apiRoutes/index.ts +++ b/src/app/domains/superAdmin/modules/licenses/constants/apiRoutes/index.ts @@ -1,4 +1,4 @@ -const baseUrl = '/api/v1/admin/partners'; +const baseUrl = '/api/v1/admin/licenses'; export const LICENSES_API_ROUTES = { list: () => `${baseUrl}`, diff --git a/src/app/domains/superAdmin/modules/licenses/views/list.component.html b/src/app/domains/superAdmin/modules/licenses/views/list.component.html index 5552a1f..6fe7c72 100644 --- a/src/app/domains/superAdmin/modules/licenses/views/list.component.html +++ b/src/app/domains/superAdmin/modules/licenses/views/list.component.html @@ -1,18 +1,11 @@ - diff --git a/src/app/domains/superAdmin/modules/licenses/views/list.component.ts b/src/app/domains/superAdmin/modules/licenses/views/list.component.ts index 0a16b28..318d887 100644 --- a/src/app/domains/superAdmin/modules/licenses/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/licenses/views/list.component.ts @@ -2,25 +2,34 @@ import { AbstractList } from '@/shared/abstractClasses/abstract-list'; import { PageDataListComponent } from '@/shared/components/pageDataList/page-data-list.component'; import { Component, inject } from '@angular/core'; -import { LicenseFormComponent } from '../components/form.component'; import { ILicenseResponse } from '../models'; import { LicensesService } from '../services/main.service'; @Component({ selector: 'admin-licenses', templateUrl: './list.component.html', - imports: [PageDataListComponent, LicenseFormComponent], + imports: [PageDataListComponent], }) export class LicensesComponent extends AbstractList { private readonly service = inject(LicensesService); override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { - field: 'created_at', - header: 'تاریخ ایجاد', - type: 'date', + field: 'consumer', + header: 'مشتری', + customDataModel(item) { + return `${item.consumer.first_name} ${item.consumer.last_name}`; + }, + }, + { field: 'expires_at', header: 'تاریخ انقضا', type: 'date' }, + { + field: 'partner', + header: 'ارایه شده توسط', + customDataModel(item) { + return item.partner?.name || 'برند نرم‌افزار'; + }, }, ]; } diff --git a/src/app/domains/superAdmin/modules/partners/components/accounts/list.component.ts b/src/app/domains/superAdmin/modules/partners/components/accounts/list.component.ts index cd0d396..28a9202 100644 --- a/src/app/domains/superAdmin/modules/partners/components/accounts/list.component.ts +++ b/src/app/domains/superAdmin/modules/partners/components/accounts/list.component.ts @@ -18,7 +18,7 @@ export class ConsumerAccountListComponent extends AbstractList + + diff --git a/src/app/domains/superAdmin/modules/partners/components/licenses/list.component.ts b/src/app/domains/superAdmin/modules/partners/components/licenses/list.component.ts new file mode 100644 index 0000000..618dd67 --- /dev/null +++ b/src/app/domains/superAdmin/modules/partners/components/licenses/list.component.ts @@ -0,0 +1,35 @@ +// import { CatalogRoleTagComponent } from '@/shared/catalog/roles'; +import { AbstractList } from '@/shared/abstractClasses/abstract-list'; +import { PageDataListComponent } from '@/shared/components/pageDataList/page-data-list.component'; +import { Component, inject, Input } from '@angular/core'; +import { IPartnerLicenseResponse } from '../../models'; +import { AdminPartnerLicensesService } from '../../services/licenses.service'; + +@Component({ + selector: 'admin-partner-licenses', + templateUrl: './list.component.html', + imports: [PageDataListComponent], +}) +export class AdminPartnerLicensesComponent extends AbstractList { + @Input({ required: true }) partnerId!: string; + + private readonly service = inject(AdminPartnerLicensesService); + + override setColumns(): void { + this.columns = [ + { field: 'id', header: 'شناسه', type: 'id' }, + { + field: 'consumer', + header: 'مشتری', + customDataModel(item) { + return `${item.consumer.first_name} ${item.consumer.last_name}`; + }, + }, + { field: 'expires_at', header: 'تاریخ انقضا', type: 'date' }, + ]; + } + + override getDataRequest() { + return this.service.getAll(this.partnerId); + } +} diff --git a/src/app/domains/superAdmin/modules/partners/constants/apiRoutes/licenses.ts b/src/app/domains/superAdmin/modules/partners/constants/apiRoutes/licenses.ts new file mode 100644 index 0000000..be7811b --- /dev/null +++ b/src/app/domains/superAdmin/modules/partners/constants/apiRoutes/licenses.ts @@ -0,0 +1,5 @@ +const baseUrl = (partnerId: string) => `/api/v1/admin/partners/${partnerId}/licenses`; + +export const PARTNER_LICENSES_API_ROUTES = { + list: (partnerId: string) => `${baseUrl(partnerId)}`, +}; diff --git a/src/app/domains/superAdmin/modules/partners/models/index.ts b/src/app/domains/superAdmin/modules/partners/models/index.ts index 388437e..5954d6e 100644 --- a/src/app/domains/superAdmin/modules/partners/models/index.ts +++ b/src/app/domains/superAdmin/modules/partners/models/index.ts @@ -1,2 +1,3 @@ export * from './accounts_io'; export * from './io'; +export * from './licenses_io'; diff --git a/src/app/domains/superAdmin/modules/partners/models/licenses_io.d.ts b/src/app/domains/superAdmin/modules/partners/models/licenses_io.d.ts new file mode 100644 index 0000000..6408f22 --- /dev/null +++ b/src/app/domains/superAdmin/modules/partners/models/licenses_io.d.ts @@ -0,0 +1,12 @@ +export interface IPartnerLicenseRawResponse { + id: string; + starts_at: string; + expires_at: string; + status: TLicenseStatus; + consumer: { + first_name: string; + last_name: string; + mobile_number: string; + }; +} +export interface IPartnerLicenseResponse extends IPartnerLicenseRawResponse {} diff --git a/src/app/domains/superAdmin/modules/partners/services/licenses.service.ts b/src/app/domains/superAdmin/modules/partners/services/licenses.service.ts new file mode 100644 index 0000000..d4b21bf --- /dev/null +++ b/src/app/domains/superAdmin/modules/partners/services/licenses.service.ts @@ -0,0 +1,19 @@ +import { IPaginatedResponse } from '@/core/models/service.model'; +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { PARTNER_LICENSES_API_ROUTES } from '../constants/apiRoutes/licenses'; +import { IPartnerLicenseRawResponse, IPartnerLicenseResponse } from '../models'; + +@Injectable({ providedIn: 'root' }) +export class AdminPartnerLicensesService { + constructor(private http: HttpClient) {} + + private apiRoutes = PARTNER_LICENSES_API_ROUTES; + + getAll(partnerId: string): Observable> { + return this.http.get>( + this.apiRoutes.list(partnerId), + ); + } +} diff --git a/src/app/domains/superAdmin/modules/partners/views/list.component.ts b/src/app/domains/superAdmin/modules/partners/views/list.component.ts index 9fa61aa..c8f2d3a 100644 --- a/src/app/domains/superAdmin/modules/partners/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/partners/views/list.component.ts @@ -19,7 +19,7 @@ export class PartnersComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'نام' }, { field: 'code', header: 'کد' }, { field: 'license_quota', header: 'تعداد لایسنس خریداری شده' }, diff --git a/src/app/domains/superAdmin/modules/partners/views/single.component.html b/src/app/domains/superAdmin/modules/partners/views/single.component.html index 0d64215..e497d60 100644 --- a/src/app/domains/superAdmin/modules/partners/views/single.component.html +++ b/src/app/domains/superAdmin/modules/partners/views/single.component.html @@ -2,7 +2,6 @@ شارژ لایسنس‌ - {{ visibleChargeFormDialog() }}
@@ -14,6 +13,8 @@
+ + { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'name', header: 'نام' }, { field: 'created_at', diff --git a/src/app/domains/superAdmin/modules/users/components/accounts/list.component.ts b/src/app/domains/superAdmin/modules/users/components/accounts/list.component.ts index 6d1d578..e91c24d 100644 --- a/src/app/domains/superAdmin/modules/users/components/accounts/list.component.ts +++ b/src/app/domains/superAdmin/modules/users/components/accounts/list.component.ts @@ -18,7 +18,7 @@ export class UsersComponent extends AbstractList { @Input() userId!: string; @Input() fullHeight?: boolean; @Input() header: IColumn[] = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'username', header: 'نام کاربری' }, { field: 'type', header: 'نوع حساب' }, { diff --git a/src/app/domains/superAdmin/modules/users/views/list.component.ts b/src/app/domains/superAdmin/modules/users/views/list.component.ts index 31e908a..4ea64df 100644 --- a/src/app/domains/superAdmin/modules/users/views/list.component.ts +++ b/src/app/domains/superAdmin/modules/users/views/list.component.ts @@ -19,7 +19,7 @@ export class UsersComponent extends AbstractList { override setColumns(): void { this.columns = [ - { field: 'id', header: 'شناسه' }, + { field: 'id', header: 'شناسه', type: 'id' }, { field: 'fullname', header: 'نام' }, { field: 'mobile_number', header: 'شماره موبایل' }, { field: 'national_code', header: 'کد ملی' }, diff --git a/src/assets/rtlSupport.scss b/src/assets/rtlSupport.scss index 3a236e5..bedbf2c 100644 --- a/src/assets/rtlSupport.scss +++ b/src/assets/rtlSupport.scss @@ -48,7 +48,7 @@ input.p-inputtext { margin-inline-end: 0.5rem; } -.p-inputgroup > .p-component:first-child { +.p-inputgroup > .p-component.hasSuffix:first-child { border-start-start-radius: 0 !important; border-end-start-radius: 0 !important; border-end-end-radius: var(--p-inputgroup-addon-border-radius);