diff --git a/src/product/product.service.ts b/src/product/product.service.ts index f113775..0d328f1 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -309,11 +309,14 @@ export class ProductService { supplier = (await this.supplierService.findByActive()).id; } + console.log(supplier, 'asldklaksd') + const baseQuery = this.productRepository .createQueryBuilder('product') .leftJoin('product.sub_categories', 'sub_categories') + .leftJoin('product.supplier', 'supplier') - .leftJoin('product.statusHistory', 'status_history') + // .leftJoin('product.statusHistory', 'status_history') .leftJoinAndMapOne( 'product.currentPrice', @@ -321,16 +324,40 @@ export class ProductService { 'current_price', 'current_price.partner_id is NULL and current_price.end_date is NULL', ) - .where( - `product.supplier_id = :supplier_id and status_history.status = 'ACTIVE' and status_history.partner_id is NULL`, - { - supplier_id: supplier, - }, - ) + .innerJoinAndMapOne( + 'product.currentStatus', + 'product.statusHistory', + 'history_status', + `history_status.status = 'ACTIVE' and history_status.deleted_at is NULL`, + { + status: 'ACTIVE', + }, + ) + // .where( + // `product.supplier_id = :supplier_id`, + // { + // supplier_id: supplier, + // }, + // ) + .where( + `history_status.partner_id is NULL`, + { + partner_id: null, + }, + ) + .andWhere( + 'supplier.status = TRUE', + { + status: true, + }, + ) .select(['product.id']) .addSelect(['product.name', 'product.code', 'sub_categories.name']) .addSelect('(current_price.price + current_price.mark_up_price) as price') - .orderBy('price', 'ASC') + .addSelect('product.supplier_id', 'supplier') + .addSelect('supplier.status', 'status') + .addSelect('history_status.partner_id', 'partner') + .orderBy('price', 'ASC') .distinct(); if (subCategories != 'null' && subCategories) { @@ -380,11 +407,16 @@ export class ProductService { const baseQuery = await this.productRepository .createQueryBuilder('product') .leftJoin('product.sub_categories', 'sub_categories') - .leftJoinAndSelect( - 'product.supplier', - 'supplier', - 'supplier.status = true', - ) + .leftJoin('product.supplier', 'supplier') + // .leftJoinAndSelect( + // 'product.supplier', + // 'supplier', + // 'supplier.status = true', + // { + // status: true + // } + // + // ) .innerJoinAndMapOne( 'product.currentPrice', 'product.priceHistory', @@ -409,11 +441,15 @@ export class ProductService { .where(`history_status.status = 'ACTIVE'`, { status: 'ACTIVE', }) + .andWhere('supplier.status = TRUE', { + status: true + }) .select(['product.id']) .addSelect([ 'product.name', 'product.code', 'product.type', + 'product.supplier_id', 'sub_categories.name', 'current_price.admin_price as admin_price', 'current_price.mark_up_price as markup_price', @@ -505,16 +541,14 @@ export class ProductService { async findOneActive( code: string, type: string, - roles: string, - supplierId: string, + productId: string ) { - if (roles == 'Retail') { try { return await this.productRepository.findOneOrFail({ relations: ['supplier'], where: { code: code, - supplier: supplierId, + id: productId }, }); } catch (e) { @@ -530,28 +564,7 @@ export class ProductService { throw e; } } - } else { - try { - return await this.productRepository.findOneOrFail({ - relations: ['supplier'], - where: { - code: code, - }, - }); - } catch (e) { - if (e instanceof EntityNotFoundError) { - throw new HttpException( - { - statusCode: HttpStatus.NOT_FOUND, - error: 'Product not found', - }, - HttpStatus.NOT_FOUND, - ); - } else { - throw e; - } - } - } + } async findOneById(id: string) { diff --git a/src/transaction/dto/order-transaction.dto.ts b/src/transaction/dto/order-transaction.dto.ts index 8dc3d30..23d1032 100644 --- a/src/transaction/dto/order-transaction.dto.ts +++ b/src/transaction/dto/order-transaction.dto.ts @@ -1,6 +1,10 @@ import { IsNotEmpty, IsOptional } from 'class-validator'; export class OrderTransactionDto { + + @IsNotEmpty() + productId: string; + @IsNotEmpty() productCode: string; diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 5176d1b..f9ee000 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -335,14 +335,13 @@ export class TransactionService { currentUser.username, ); - const supplierData = await this.supplierService.findByCode('IRS'); + // const supplierData = await this.supplierService.findByCode('IRS'); //GET PRODUCT const product = await this.productService.findOneActive( orderTransactionDto.productCode, 'prepaid', - userData.roles.name, - supplierData.id + orderTransactionDto.productId ); const product_price = await this.productHistoryPriceService.findOne( @@ -491,16 +490,13 @@ export class TransactionService { currentUser.username, ); - const supplierData = await this.supplierService.findByCode('IRS'); - - + // const supplierData = await this.supplierService.findByCode('IRS'); //GET PRODUCT AND PRICE const product = await this.productService.findOneActive( orderTransactionDto.productCode, 'prepaid', - userData.roles.name, - supplierData.id + orderTransactionDto.productId ); const supplier = await this.supplierService.findByCode(