diff --git a/src/configs/typeorm.config.ts b/src/configs/typeorm.config.ts index 8d8378f..9391ab2 100755 --- a/src/configs/typeorm.config.ts +++ b/src/configs/typeorm.config.ts @@ -13,7 +13,7 @@ export function databaseConfigs(): TypeOrmModuleAsyncOptions { username: configService.getOrThrow("DB_USER"), password: configService.getOrThrow("DB_PASS"), autoLoadEntities: true, - synchronize: configService.getOrThrow("NODE_ENV") == "production" ? false : true, + synchronize: configService.getOrThrow("NODE_ENV") == "production" ? false : false, logging: configService.getOrThrow("NODE_ENV") == "production" ? false : true, migrationsTableName: "typeorm_migrations", migrationsRun: false, diff --git a/src/modules/discounts/repositories/discounts.repository.ts b/src/modules/discounts/repositories/discounts.repository.ts index e1a7c96..a473820 100755 --- a/src/modules/discounts/repositories/discounts.repository.ts +++ b/src/modules/discounts/repositories/discounts.repository.ts @@ -69,7 +69,17 @@ export class DiscountRepository extends Repository { .andWhere("discount.isActive = true") .andWhere("discount.startDate <= :now", { now: new Date() }) .andWhere("discount.endDate >= :now", { now: new Date() }) - .andWhere("discount.applicationType = :type", { type: DiscountApplicationType.CODE_BASED }); + .andWhere("discount.applicationType = :type", { type: DiscountApplicationType.CODE_BASED }) + .select([ + "discount.id", + "discount.title", + "discount.type", + "discount.code", + "discount.value", + "discount.startDate", + "discount.endDate", + "discount.createdAt", + ]); if (queryDto.q) { queryBuilder.andWhere("discount.title ILIKE :query", { query: `%${queryDto.q}%` }); diff --git a/src/modules/invoices/invoices.controller.ts b/src/modules/invoices/invoices.controller.ts index de83c2f..f44c23d 100755 --- a/src/modules/invoices/invoices.controller.ts +++ b/src/modules/invoices/invoices.controller.ts @@ -7,7 +7,6 @@ import { InvoicesSearchQueryDto, UserInvoicesSearchQueryDto } from "./DTO/invoic import { UpdateInvoiceDto } from "./DTO/update-invoice.dto"; import { InvoicesService } from "./providers/invoices.service"; import { AuthGuards } from "../../common/decorators/auth-guard.decorator"; -import { Pagination } from "../../common/decorators/pagination.decorator"; import { PermissionsDec } from "../../common/decorators/permission.decorator"; import { UserDec } from "../../common/decorators/user.decorator"; import { ParamDto } from "../../common/DTO/param.dto"; @@ -35,14 +34,12 @@ export class InvoicesController { @ApiOperation({ summary: "get all invoices ==> admin route" }) @PermissionsDec(PermissionEnum.INVOICES) - @Pagination() @Get() getInvoices(@Query() queryDto: InvoicesSearchQueryDto) { return this.invoiceService.getInvoices(queryDto); } @ApiOperation({ summary: "get all user invoices" }) - @Pagination() @Get("user") getUserInvoices(@Query() queryDto: UserInvoicesSearchQueryDto, @UserDec("id") userId: string) { return this.invoiceService.getUserInvoices(queryDto, userId); diff --git a/src/modules/invoices/providers/invoices.service.ts b/src/modules/invoices/providers/invoices.service.ts index f2c92e5..53331ed 100755 --- a/src/modules/invoices/providers/invoices.service.ts +++ b/src/modules/invoices/providers/invoices.service.ts @@ -397,15 +397,16 @@ export class InvoicesService { async getInvoices(queryDto: InvoicesSearchQueryDto) { const [invoices, count] = await this.invoiceRepository.getInvoicesForAdmin(queryDto); - const usersWithInvoices = await this.invoiceRepository + const usersThatHaveInvoices = await this.invoiceRepository .createQueryBuilder("invoice") - .leftJoinAndSelect("invoice.user", "user") - .select(["user.id", "user.firstName", "user.lastName", "user.email"]) - .distinctOn(["user.id"]) - .getMany(); + .select( + "DISTINCT ON (user.id) user.id as id, user.firstName as firstName, user.lastName as lastName, user.email as email, user.phone as phone", + ) + .leftJoin("invoice.user", "user") + .getRawMany(); return { - users: usersWithInvoices.map((inv) => inv.user), + users: usersThatHaveInvoices, invoices, count, paginate: true, diff --git a/src/modules/invoices/repositories/invoices.repository.ts b/src/modules/invoices/repositories/invoices.repository.ts index deec682..ae7052e 100755 --- a/src/modules/invoices/repositories/invoices.repository.ts +++ b/src/modules/invoices/repositories/invoices.repository.ts @@ -18,7 +18,8 @@ export class InvoicesRepository extends Repository { const queryBuilder = this.createQueryBuilder("invoice"); queryBuilder - .leftJoinAndSelect("invoice.user", "user") + .leftJoin("invoice.user", "user") + .addSelect(["user.id", "user.firstName", "user.lastName", "user.email", "user.phone"]) .leftJoinAndSelect("invoice.items", "items") .leftJoinAndSelect("items.subscriptionPlan", "subscriptionPlan", "subscriptionPlan.id IS NOT NULL") .leftJoinAndSelect("subscriptionPlan.plan", "plan", "subscriptionPlan.id IS NOT NULL")