import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import { check } from 'meteor/check';

export const Products = new Mongo.Collection('products');

Products.allow({
    insert: function(userId, doc){
        // if use id exists, allow insert
        return !!userId;
    },
});

Meteor.methods({
    'add.product' (prodName, prodCategory, prodStore, prodLocation) {
        check(prodName, String);
        check(prodCategory, String);
        check(prodStore, String);
        check(prodLocation, String);

        if (!this.userId) {
            throw new Meteor.Error('You are not allowed to add products. Make sure you are logged in with valid user credentials.');
        }

        return Products.insert({
            prodName: prodName,
            prodOwner: this.userId,
            prodCategory: prodCategory,
            prodStore: prodStore,
            prodLocation: prodLocation,
        });
    },
    'edit.product' (prodId, prodName, prodCategory, prodStore, prodLocation) {
        check(prodId, String);
        check(prodName, String);
        check(prodCategory, String);
        check(prodStore, String);
        check(prodLocation, String);

        if (!this.userId) {
            throw new Meteor.Error('You are not allowed to edit products. Make sure you are logged in with valid user credentials.');
        }

        return Products.update({ _id: prodId }, {
            $set: {
                prodName: prodName,
                prodCategory: prodCategory,
                prodStore: prodStore,
                prodLocation: prodLocation,
            }
        });
    },
    'delete.product' (prodId) {
        check(prodId, String);

        if (!this.userId) {
            throw new Meteor.Error('You are not allowed to delete products. Make sure you are logged in with valid user credentials.');
        }

        return Products.remove({ _id: prodId });
    }
});