123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- const Product = require('../models/product');
- const slugify = require('slugify');
- exports.getProducts = function (req, res) {
- Product
- .find({status: 'published'})
- .populate('author -_id -password -products -email -role')
- .populate('category')
- .sort({'updatedAt': -1})
- .exec((errors, products) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- return res.json(products);
- })
- }
- exports.getInstructorProducts = function (req, res) {
- const userId = req.user.id;
- Product
- .find({author: userId})
- .populate('author')
- .sort({'updatedAt': -1})
- .exec((errors, products) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- return res.json(products);
- })
- }
- exports.getProductById = (req, res) => {
- const id = req.params.id;
- Product
- .findById(id)
- .populate('category')
- .exec((errors, product) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- return res.json(product);
- })
- }
- exports.getProductBySlug = (req, res) => {
- const slug = req.params.slug;
- Product
- .findOne({slug})
- .populate('author -_id -password -products -email -role')
- .exec((errors, product) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- return res.json(product);
- })
- }
- // Needs recheck
- exports.createProduct = function (req, res) {
- const productData = req.body;
- const user = req.user;
- const product = new Product(productData);
- product.author = user;
- product.save((errors, createdProduct) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- return res.json(createdProduct);
- });
- };
- exports.updateProduct = function (req, res) {
- const productId = req.params.id;
- const productData = req.body;
- Product.findById(productId)
- .populate('category')
- .exec((errors, product) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- if (productData.status && productData.status === 'published' && !product.slug) {
- product.slug = slugify(product.title, {
- replacement: '-', // replace spaces with replacement
- remove: null, // regex to remove characters
- lower: true // result in lower case
- });
- }
- product.set(productData);
- product.save((errors, savedProduct) => {
- if (errors) {
- return res.status(422).send(errors);
- }
- return res.json(savedProduct);
- });
- })
- }
|