Select Git revision
orders.service.js 9.75 KiB
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var OrdersService_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrdersService = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const typeorm_2 = require("typeorm");
const order_entity_1 = require("./entities/order.entity");
const product_entity_1 = require("../products/entities/product.entity");
const orderpiority_entity_1 = require("../orderpiorities/entities/orderpiority.entity");
const page_entity_1 = require("../pages/entities/page.entity");
const order_detail_entity_1 = require("../order_details/entities/order_detail.entity");
let OrdersService = OrdersService_1 = class OrdersService {
constructor(orderRepository, productRepository, orderpiorityRepository, pageRepository, orderDetailRepository, connection) {
this.orderRepository = orderRepository;
this.productRepository = productRepository;
this.orderpiorityRepository = orderpiorityRepository;
this.pageRepository = pageRepository;
this.orderDetailRepository = orderDetailRepository;
this.connection = connection;
this.logger = new common_1.Logger(OrdersService_1.name);
}
async create(createOrderDto) {
this.logger.log(`Creating or updating order for customer ${createOrderDto.customerID}`);
return await this.connection.transaction(async (manager) => {
const isUpdate = !!createOrderDto.orderID;
if (createOrderDto.orderDetails?.length > 0) {
for (const detail of createOrderDto.orderDetails) {
const product = await this.productRepository.findOne({
where: { ProductID: detail.productID },
});
if (!product) {
throw new common_1.NotFoundException(`Product with ID ${detail.productID} not found`);
}
detail.Productname = `${product.brand} ${product.size}`;
detail.size = product.size;
detail.waterBrand = product.brand;
detail.status = detail.status || 'Active';
detail.totalPrice = detail.quantity * detail.pricePerUnit;
}
}
if (!createOrderDto.status) {
createOrderDto.status = 'กำลังรอ';
}
let order;
if (isUpdate) {
const existing = await this.orderRepository.findOne({
where: { OrderID: createOrderDto.orderID },
relations: ['orderDetails'],
});
if (!existing) {
throw new common_1.NotFoundException(`Order with ID ${createOrderDto.orderID} not found`);
}
Object.assign(existing, createOrderDto);
if (createOrderDto.orderDetails) {
const orderDetailEntities = createOrderDto.orderDetails.map((dto) => this.orderDetailRepository.create(dto));
existing.orderDetails = orderDetailEntities;
}