UNPKG

e-commercee

Version:

This package contains a backend of what would be the logic of a e-commercee software, the architecture used is made in 3 layers

180 lines 6.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LOrder = void 0; const FactoryData_1 = require("../../data/FactoryData"); const Order_1 = require("../../shared/entity/Order"); const logicexception_1 = require("../../shared/exceptions/logicexception"); const LArticle_1 = require("./LArticle"); const LUser_1 = require("./LUser"); class LOrder { constructor() { } static getInstance() { if (!LOrder.instancia) { LOrder.instancia = new LOrder(); } return LOrder.instancia; } get order() { return this._order; } set order(value) { this._order = value; } //*********************************** */ //VALIDATIONS validateBarCode(barcode) { if (barcode.trim() === "") { throw new logicexception_1.LogicException("The barcode cannot be empty"); } } validateregisterItemonOrder(barcode, quantity, dataorder) { this.validateBarCode(barcode); if (quantity < 1) { throw new logicexception_1.LogicException("The quantity must be greater than 0"); } if (dataorder == null) { throw new logicexception_1.LogicException("The Order is null"); } } validateState(state) { if (state != "Pending") { throw new logicexception_1.LogicException("The state must be 'Pending'"); } } validateArticle(article) { if (article == null) { throw new logicexception_1.LogicException("That Article does not exists in the system"); } } validateClient(client) { if (client == null) { throw new logicexception_1.LogicException("That Client does not exists in the system"); } } validateStockQuantity(article, quantity) { if (article.stock < quantity) { throw new logicexception_1.LogicException("The quantity entered is greater than the stock of the item"); } } //********************************* */ //FUNCTIONS async startOrder() { let cancelorder = this.cancelOrder; var vorder = new Order_1.Order(0, null, "Pending", 0, null, []); this.order = await vorder; return "A new order was started"; } async registerItemonOrder(barcode, quantity) { var dataOrderDetails; var dataorder = this.order; this.validateregisterItemonOrder(barcode, quantity, dataorder); var estado = dataorder.state; this.validateState(estado); var article = await LArticle_1.LArticle.getInstance().getArticle(barcode); this.validateArticle(article); this.validateStockQuantity(article, quantity); dataOrderDetails = dataorder.registerOrderDetail(article, quantity); return dataOrderDetails; } async removeItemonOrder(barcode) { var getdataorder = this.order; this.validateBarCode(barcode); var article = await LArticle_1.LArticle.getInstance().getArticle(barcode); this.validateArticle(article); getdataorder.removeOrderDetail(barcode); return "The Order detail with barcode: " + barcode + " was deleted"; } async closeOrder() { var dataOrder; dataOrder = await this.order; if (this.order != null) { var clstate = this.order.state; this.validateState(clstate); dataOrder.close(); } else { throw new logicexception_1.LogicException("The Order is null"); } return dataOrder; } cancelOrder() { var canceldataOrders = this.order; if (canceldataOrders != null) { this.order = null; return "The Order was canceled"; } } async saveOrder(client) { this.validateClient(client); var dataOrders; dataOrders = this.order; dataOrders.client = client; if (this.order != null) { var haveorderdetails = dataOrders.haveOrderDetails(); if (haveorderdetails) { await FactoryData_1.FactoryData.getDOrder().addOrder(dataOrders); this.order = null; return "The order was saved in the database"; } else { throw new logicexception_1.LogicException("The order has no ordered items"); } } else { throw new logicexception_1.LogicException("The Order is null"); } } async deliverOrder(dtorder) { this.validateState(dtorder.state); dtorder.state = "Delivered"; for (var ordetails of dtorder.listOrderDetails) { await LArticle_1.LArticle.getInstance().deStock(ordetails._article._barcode, ordetails._quantity); } await FactoryData_1.FactoryData.getDOrder().updatestateOrder(dtorder); return "The Order was delivered"; } async personalOrder(dtorder) { if (dtorder.state == "Pending") { await FactoryData_1.FactoryData.getDOrder().deleteOrder(dtorder); return "The Order was deleted"; } if (dtorder.state == "Delivered") { await FactoryData_1.FactoryData.getDOrder().addOrder(dtorder); return "The Order was duplicated"; } } //Get Orders async getPendingOrders() { var list = await FactoryData_1.FactoryData.getDOrder().listpendingOrders(); return list; } async getDeliveredOrders() { var list = await FactoryData_1.FactoryData.getDOrder().listdeliveredOrders(); return list; } async getOrder(id) { var searchorder = await FactoryData_1.FactoryData.getDOrder().getOrder(id); if (searchorder == null) { throw new logicexception_1.LogicException("That Order does not exists in the system"); } return searchorder; } async getClientOrders(identitycard) { var searchclient = await LUser_1.LUser.getInstance().getUser(identitycard); if (searchclient == null) { throw new logicexception_1.LogicException("That Client does not exists in the system"); } var list = await FactoryData_1.FactoryData.getDOrder().listClientOrders(identitycard); return list; } async getAllOrders() { var list = await FactoryData_1.FactoryData.getDOrder().getOrders(); return list; } async getOrdersbyDates(date1, date2) { var list = await FactoryData_1.FactoryData.getDOrder().listOrdersbyDate(date1, date2); return list; } } exports.LOrder = LOrder; //# sourceMappingURL=LOrder.js.map