UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

139 lines (138 loc) 4.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@fabrix/fabrix/dist/common"); const lodash_1 = require("lodash"); class VendorController extends common_1.FabrixController { uploadCSV(req, res) { const VendorCsvService = this.app.services.VendorCsvService; const csv = req.file; if (!csv) { const err = new Error('File failed to upload'); return res.serverError(err); } VendorCsvService.vendorCsv(csv.path) .then(result => { return res.json({ file: req.file, result: result }); }) .catch(err => { return res.serverError(err); }); } findAll(req, res) { const orm = this.app.models; const Vendor = orm['Vendor']; const limit = Math.max(0, req.query.limit || 10); const offset = Math.max(0, req.query.offset || 0); const sort = req.query.sort || [['created_at', 'DESC']]; const where = req.jsonCriteria(req.query.where); Vendor.findAndCountAll({ where: where, order: sort, offset: offset, limit: limit, req: req }) .then(vendors => { res.paginate(vendors.count, limit, offset, sort); return this.app.services.PermissionsService.sanitizeResult(req, vendors.rows); }) .then(result => { return res.json(result); }) .catch(err => { return res.serverError(err); }); } search(req, res) { const orm = this.app.models; const Vendor = orm['Vendor']; const limit = Math.max(0, req.query.limit || 10); const offset = Math.max(0, req.query.offset || 0); const sort = req.query.sort || [['name', 'ASC']]; const term = req.query.term; const where = req.jsonCriteria(req.query.where); const defaultQuery = lodash_1.defaults(where, { $or: [ { name: { $iLike: `%${term}%` } } ] }); Vendor.findAndCountAll({ where: defaultQuery, order: sort, offset: offset, req: req, limit: limit }) .then(vendors => { res.paginate(vendors.count, limit, offset, sort); return this.app.services.PermissionsService.sanitizeResult(req, vendors.rows); }) .then(result => { return res.json(result); }) .catch(err => { return res.serverError(err); }); } products(req, res) { const Product = this.app.models['Product']; const vendorId = req.params.id; const limit = Math.max(0, req.query.limit || 10); const offset = Math.max(0, req.query.offset || 0); const sort = req.query.sort || [['created_at', 'DESC']]; if (!vendorId) { const err = new Error('A vendor id is required'); return res.send(401, err); } const VendorProduct = this.app.models['VendorProduct']; let count = 0; VendorProduct.findAndCountAll({ where: { vendor_id: vendorId }, attributes: ['product_id'], limit: limit, offset: offset }) .then(arr => { count = arr.count; const productIds = arr.rows.map(model => model.product_id); return Product.findAllDefault({ where: { id: productIds }, req: req }); }) .then(products => { res.paginate(count, limit, offset, sort); return this.app.services.PermissionsService.sanitizeResult(req, products); }) .then(result => { return res.json(result); }) .catch(err => { return res.serverError(err); }); } processUpload(req, res) { const VendorCsvService = this.app.services.VendorCsvService; VendorCsvService.processVendorUpload(req.params.id) .then(result => { return res.json(result); }) .catch(err => { return res.serverError(err); }); } exportVendors(req, res) { } } exports.VendorController = VendorController;