import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check'; import { Products } from './products'; import { ShopLists } from './shopList'; export const ListItems = new Mongo.Collection('listitems'); ListItems.allow({ insert: function(userId, doc){ // if use id exists, allow insert return !!userId; }, }); Meteor.methods({ 'add.listItem' (itemName, listId) { check(itemName, String); check(listId, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to add items. Make sure you are logged in with valid user credentials.'); } // look up the item from the Products collection let prodInfo = Products.findOne({ prodName: itemName }); if (typeof prodInfo == "undefined") { Meteor.call("add.product", itemName, "", "", "", function(err, result) { if (err) { console.log(" ERROR adding item to products: " + err); } else { // console.log(" SUCCESS adding item to Products."); return ListItems.insert({ itemName: itemName, listId: listId, prodId: result, addedBy: this.userId, itemStore: "", itemOrdered: false, itemReceived: false, dateAddedToList: new Date(), }); } }); } else { return ListItems.insert({ itemName: itemName, listId: listId, prodId: prodInfo._id, addedBy: this.userId, itemStore: prodInfo.prodStore, itemOrdered: false, itemReceived: false, dateAddedToList: new Date(), }); } }, 'setOrdered.listItem' (itemId) { check(itemId, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to set items as ordered. Make sure you are logged in with valid user credentials.'); } return ListItems.update({ _id: itemId }, { $set: { itemOrdered: true, dateOrdered: new Date(), } }); }, 'setAllOrdered.listItem' (shopListId) { // set all items that are not already set as ordered, or set as received to ordered on this list }, 'setNotOrdered.listItem' (itemId) { check(itemId, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to set items as not ordered. Make sure you are logged in with valid user credentials.'); } return ListItems.update({ _id: itemId }, { $set: { itemOrdered: false, dateUnOrdered: new Date(), } }); }, 'setReceived.listItem' (itemId) { check(itemId, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to set items as received. Make sure you are logged in with valid user credentials.'); } return ListItems.update({ _id: itemId }, { $set: { itemReceived: true, dateReceived: new Date(), } }); }, 'setNotReceived.listItem' (shopListId) { check(itemId, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to set items as not received. Make sure you are logged in with valid user credentials.'); } return ListItems.update({ _id: itemId }, { $set: { itemReceived: false, dateNotReceived: new Date(), } }); }, 'setAllReceived.listItem' () { // set all items that are not already listed as received to received on this list }, 'edit.listItem' (itemId, itemName) { check(itemId, String); check(itemName, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to add items. Make sure you are logged in with valid user credentials.'); } return ListItems.update({ _id: itemId }, { $set: { itemName: itemName, } }); }, 'delete.listItem' (itemId) { check(itemId, String); if (!this.userId) { throw new Meteor.Error('You are not allowed to delete list items. Make sure you are logged in with valid user credentials.'); } return ListItems.remove({ _id: itemId }); } });