2017-04-11 10:27:35 +09:00
|
|
|
import Newsletters from "../modules/collection.js";
|
2017-03-23 16:27:59 +09:00
|
|
|
import Users from 'meteor/vulcan:users';
|
|
|
|
import { GraphQLSchema, Utils } from 'meteor/vulcan:core';
|
2016-12-07 15:30:40 +09:00
|
|
|
|
2016-12-12 10:41:50 +09:00
|
|
|
GraphQLSchema.addMutation('sendNewsletter : JSON');
|
|
|
|
GraphQLSchema.addMutation('testNewsletter : JSON');
|
|
|
|
GraphQLSchema.addMutation('addUserNewsletter(userId: String) : JSON');
|
|
|
|
GraphQLSchema.addMutation('addEmailNewsletter(email: String) : JSON');
|
|
|
|
GraphQLSchema.addMutation('removeUserNewsletter(userId: String) : JSON');
|
2016-12-07 15:30:40 +09:00
|
|
|
|
|
|
|
const resolver = {
|
|
|
|
Mutation: {
|
|
|
|
sendNewsletter(root, args, context) {
|
2017-01-20 14:12:59 +09:00
|
|
|
if(context.currentUser && Users.isAdminById(context.currentUser._id)) {
|
2017-04-11 10:49:54 +09:00
|
|
|
return Newsletters.send();
|
2017-01-20 14:12:59 +09:00
|
|
|
} else {
|
2017-02-11 12:27:32 +01:00
|
|
|
throw new Error(Utils.encodeIntlError({id: "app.noPermission"}));
|
2017-01-20 14:12:59 +09:00
|
|
|
}
|
2016-12-07 15:30:40 +09:00
|
|
|
},
|
|
|
|
testNewsletter(root, args, context) {
|
2017-01-20 14:12:59 +09:00
|
|
|
if(context.currentUser && Users.isAdminById(context.currentUser._id))
|
2017-04-11 10:49:54 +09:00
|
|
|
return Newsletters.send(true);
|
2016-12-07 15:30:40 +09:00
|
|
|
},
|
|
|
|
addUserNewsletter(root, args, context) {
|
|
|
|
|
|
|
|
const currentUser = context.currentUser;
|
|
|
|
const user = Users.findOne({_id: args.userId});
|
|
|
|
if (!user || !Users.options.mutations.edit.check(currentUser, user)) {
|
2017-02-11 12:27:32 +01:00
|
|
|
throw new Error(Utils.encodeIntlError({id: "app.noPermission"}));
|
2016-12-07 15:30:40 +09:00
|
|
|
}
|
|
|
|
try {
|
2017-04-11 10:49:54 +09:00
|
|
|
return Newsletters.subscribe(user, false);
|
2016-12-07 15:30:40 +09:00
|
|
|
} catch (error) {
|
2017-02-11 12:27:32 +01:00
|
|
|
const errorMessage = error.message.includes('subscription-failed') ? Utils.encodeIntlError({id: "newsletter.subscription_failed"}) : error.message
|
|
|
|
throw new Error(errorMessage);
|
2016-12-07 15:30:40 +09:00
|
|
|
}
|
|
|
|
},
|
2017-04-02 21:11:09 +09:00
|
|
|
addEmailNewsletter(root, args, context) {
|
|
|
|
const email = args.email;
|
2016-12-07 15:30:40 +09:00
|
|
|
try {
|
2017-04-11 10:49:54 +09:00
|
|
|
return Newsletters.subscribe(email, true);
|
2016-12-07 15:30:40 +09:00
|
|
|
} catch (error) {
|
2017-02-11 12:27:32 +01:00
|
|
|
const errorMessage = error.message.includes('subscription-failed') ? Utils.encodeIntlError({id: "newsletter.subscription_failed"}) : error.message
|
|
|
|
throw new Error(errorMessage);
|
2016-12-07 15:30:40 +09:00
|
|
|
}
|
|
|
|
},
|
|
|
|
removeUserNewsletter(root, { userId }, context) {
|
|
|
|
const currentUser = context.currentUser;
|
|
|
|
const user = Users.findOne({_id: userId});
|
|
|
|
if (!user || !Users.options.mutations.edit.check(currentUser, user)) {
|
2017-02-11 12:27:32 +01:00
|
|
|
throw new Error(Utils.encodeIntlError({id: "app.noPermission"}));
|
2016-12-07 15:30:40 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
2017-04-11 10:49:54 +09:00
|
|
|
return Newsletters.unsubscribe(user);
|
2016-12-07 15:30:40 +09:00
|
|
|
} catch (error) {
|
2017-02-11 12:27:32 +01:00
|
|
|
const errorMessage = error.message.includes('subscription-failed') ? Utils.encodeIntlError({id: "newsletter.subscription_failed"}) : error.message
|
|
|
|
throw new Error(errorMessage);
|
2016-12-07 15:30:40 +09:00
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
2016-12-12 10:41:50 +09:00
|
|
|
GraphQLSchema.addResolvers(resolver);
|