Gitlab@Informatics

Skip to content
Snippets Groups Projects
Select Git revision
  • 34d5208c2c5ee434d25c406d12d360f6235b9d6b
  • main default protected
  • revert
  • 64160159
  • 64160292
  • 64160073
  • html-v_page
  • 64160174
  • 64160072
  • 64160295
  • production
11 results

README.md

Blame
  • 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;
                    }