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
JavaScript
;
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