Compare commits
10 Commits
65a3d36cd2
...
9c574049f9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c574049f9 | ||
|
|
9307e81fb6 | ||
|
|
dab5097730 | ||
|
|
5a9357ba76 | ||
|
|
98f32bb6bc | ||
|
|
52a6c8c8bc | ||
|
|
303254ce9d | ||
|
|
353ffcf8dd | ||
|
|
43e18b7eb9 | ||
|
|
1316b58ab2 |
@@ -1,36 +1,44 @@
|
||||
// EmailService.js
|
||||
var sendgrid = require("sendgrid");
|
||||
var thenJade = require("then-jade");
|
||||
|
||||
exports.sendOrderEmail = function(inviteeData) {
|
||||
var sendgrid = require("sendgrid")(sails.config.email.apiKey);
|
||||
|
||||
Run.findOne({ id: inviteeData.run_id }, function(err, runData) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
|
||||
var emailText = "You've been invited to " + runData.creatorName + "'s lunch run: '"
|
||||
+ runData.name + "'! \n\n Put in your order here:\nhttp://www.lunchrun.me/#/order/"
|
||||
+ inviteeData.id;
|
||||
|
||||
var options = {
|
||||
fromname: runData.creatorName + " via LunchRun.me",
|
||||
from: sails.config.email.fromAddress,
|
||||
to: inviteeData.email,
|
||||
toname: inviteeData.name,
|
||||
subject: "You've been invited to a lunch run!",
|
||||
replyto: runData.creatorEmail,
|
||||
text: emailText
|
||||
replyto: runData.creatorEmail
|
||||
};
|
||||
var sg = sendgrid(sails.config.email.apiUser, sails.config.email.apiKey);
|
||||
|
||||
sg.send(options, function(err, response) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
} else {
|
||||
console.log("message sent from: " + runData.creatorEmail + ", to: " + inviteeData.email);
|
||||
}
|
||||
});
|
||||
thenJade.renderFile(
|
||||
'./views/emails/new-invitee.jade',
|
||||
{ runData: runData, inviteeData: inviteeData },
|
||||
function(err, result) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(options);
|
||||
options.html = result;
|
||||
|
||||
sendgrid.send(options, function(err, response) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
} else {
|
||||
console.log("message sent from: " + runData.creatorEmail + ", to: " + inviteeData.email);
|
||||
}
|
||||
});
|
||||
|
||||
console.log(options);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@@ -8,7 +8,8 @@ lunchControllers.controller 'CreateRunCtrl', ['$scope', '$http', '$location', 's
|
||||
$scope.addInvitee = () ->
|
||||
$scope.invitees.push {}
|
||||
|
||||
$scope.removeInvitee = (index) ->
|
||||
$scope.removeInvitee = (invitee) ->
|
||||
index = $scope.invitees.indexOf invitee
|
||||
$scope.invitees.splice index, 1
|
||||
|
||||
$scope.create = (run,invitees) ->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
lunchControllers = angular.module 'lunchControllers'
|
||||
|
||||
lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', '$sce',
|
||||
EditRunController = ($scope, socket, $routeParams, $sce) ->
|
||||
lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', '$sce', '$location',
|
||||
EditRunController = ($scope, socket, $routeParams, $sce, $location) ->
|
||||
$scope.show = false
|
||||
|
||||
socket.get '/run/' + $routeParams['id'],
|
||||
@@ -20,8 +20,18 @@ lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams',
|
||||
$scope.addInvitee = () ->
|
||||
$scope.invitees.push {}
|
||||
|
||||
$scope.removeInvitee = (index) ->
|
||||
$scope.removeInvitee = (invitee) ->
|
||||
if invitee.id
|
||||
socket.delete '/invitee/destroy/' + invitee.id, (deleteResponse) ->
|
||||
console.log deleteResponse
|
||||
$scope.spliceInvitee invitee
|
||||
else
|
||||
$scope.spliceInvitee invitee
|
||||
|
||||
$scope.spliceInvitee = (invitee) ->
|
||||
index = $scope.invitees.indexOf invitee
|
||||
$scope.invitees.splice index, 1
|
||||
$scope.$apply()
|
||||
|
||||
$scope.update = (run,invitees) ->
|
||||
runData = angular.copy run
|
||||
@@ -30,12 +40,22 @@ lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams',
|
||||
creatorInvitee.name = runData.creatorName
|
||||
creatorInvitee.email = runData.creatorEmail
|
||||
|
||||
socket.put '/run/update/' + runData.id, runData, (runResponse) ->
|
||||
inviteesCreated = 0
|
||||
socket.put '/run/' + runData.id, runData, (runResponse) ->
|
||||
|
||||
inviteesUpdated = 0
|
||||
for i in inviteeData
|
||||
socket.put '/invitee/update/' + i.id, i, (inviteeResponse) ->
|
||||
inviteesCreated++
|
||||
if inviteesCreated is inviteeData.length
|
||||
$location.path '/run/' + runResponse.id
|
||||
$scope.$apply()
|
||||
if i.id
|
||||
socket.put '/invitee/' + i.id, i, (inviteeResponse) ->
|
||||
inviteesUpdated++
|
||||
$scope.redirectIfAllInviteesUpdated inviteesUpdated, inviteeData.length
|
||||
else
|
||||
i.run_id = runData.id
|
||||
socket.post '/invitee', i, (inviteeResponse) ->
|
||||
inviteesUpdated++
|
||||
$scope.redirectIfAllInviteesUpdated inviteesUpdated, inviteeData.length
|
||||
|
||||
$scope.redirectIfAllInviteesUpdated = (updatedCount, inviteeCount) ->
|
||||
if updatedCount is inviteeCount
|
||||
$location.path '/run/' + $scope.run.id
|
||||
$scope.$apply()
|
||||
]
|
||||
|
||||
@@ -8,6 +8,10 @@ lunchControllers.controller 'UpdateOrderCtrl', ['$scope','socket','$routeParams'
|
||||
$scope.menuUrl = ''
|
||||
|
||||
socket.get '/invitee/findOne', id: $routeParams['inviteeId'], (inviteeResponse) ->
|
||||
if inviteeResponse.status is 404
|
||||
window.location = '/404'
|
||||
return
|
||||
|
||||
$scope.invitee = inviteeResponse
|
||||
|
||||
socket.get '/run/' + inviteeResponse.run_id,
|
||||
|
||||
@@ -21,7 +21,7 @@ form {
|
||||
right: 5px;
|
||||
}
|
||||
}
|
||||
.create-run-form {
|
||||
.edit-run-form, .create-run-form {
|
||||
.invitees {
|
||||
.btn-default {
|
||||
margin-top: 20px;
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
margin-right: 2px;
|
||||
padding: 5px 20px;
|
||||
}
|
||||
.run-show-actions a.back-to-run {
|
||||
display: none;
|
||||
}
|
||||
.update-order-actions a.edit-run {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.run-show-actions a.back-to-run {
|
||||
display: none;
|
||||
}
|
||||
.update-order-actions a.edit-run {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
span.glyphicon.glyphicon-ok.form-control-feedback(ng-show='inviteeForm.Name.$dirty && inviteeForm.Name.$valid')
|
||||
|
||||
.col-xs-2.deletebtn-wrapper
|
||||
button.btn.btn-block.btn-lg.btn-warning(ng-click='removeInvitee($index)')
|
||||
button.btn.btn-block.btn-lg.btn-warning(ng-click='removeInvitee(i)')
|
||||
span.glyphicon.glyphicon-remove
|
||||
|
||||
.col-xs-10.email-wrapper
|
||||
|
||||
@@ -5,7 +5,7 @@ block pagetitle
|
||||
| update your lunch run
|
||||
|
||||
block interiorcontent
|
||||
.create-run-form(ng-controller='EditRunCtrl')
|
||||
.edit-run-form(ng-controller='EditRunCtrl')
|
||||
form.row(name='form',novalidate,role='form',ng-show="show")
|
||||
include _form
|
||||
section.submit
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
//
|
||||
module.exports.email = {
|
||||
apiUser: "benjaminramey",
|
||||
apiKey: "AVidasUPthub6pY3fFGe",
|
||||
fromAddress: "ben.ramey@gmail.com"
|
||||
apiKey: "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",
|
||||
fromAddress: "no-reply@lunchrun.me"
|
||||
};
|
||||
|
||||
@@ -23,14 +23,16 @@ module.exports.policies = {
|
||||
RunController: {
|
||||
'*': false,
|
||||
'find': true,
|
||||
'create': true
|
||||
'create': true,
|
||||
'update': true
|
||||
},
|
||||
|
||||
InviteeController: {
|
||||
'*': false,
|
||||
'find': true,
|
||||
'create': true,
|
||||
'update': true
|
||||
'update': true,
|
||||
'destroy': true
|
||||
},
|
||||
|
||||
SessionController: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lunchrun.me",
|
||||
"private": true,
|
||||
"version": "1.2.0",
|
||||
"version": "1.3.0",
|
||||
"description": "Lunch runs made easy!",
|
||||
"dependencies": {
|
||||
"sails": "0.9.9",
|
||||
@@ -9,11 +9,11 @@
|
||||
"sails-disk": "~0.9.0",
|
||||
"optimist": "0.3.4",
|
||||
"then-jade": "1.1.0",
|
||||
"sails-mongo": "latest",
|
||||
"sails-mongo": "0.9.x",
|
||||
"mongodb": "latest",
|
||||
"load-grunt-tasks": "~0.3.0",
|
||||
"glob": "3.2.8",
|
||||
"sendgrid": "1.0.2",
|
||||
"sendgrid": "2.0.0",
|
||||
"grunt-contrib-clean": "~0.5.0",
|
||||
"grunt-contrib-copy": "~0.5.0",
|
||||
"grunt-contrib-concat": "~0.3.0",
|
||||
|
||||
6
views/emails/layout.jade
Normal file
6
views/emails/layout.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
doctype html
|
||||
|
||||
html(lang="en")
|
||||
head
|
||||
body
|
||||
block content
|
||||
8
views/emails/new-invitee.jade
Normal file
8
views/emails/new-invitee.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
p= "You've been invited to " + runData.creatorName + "'s lunch run: " + runData.name + "!"
|
||||
|
||||
p
|
||||
a(href='http://www.lunchrun.me/#/order/' + inviteeData.id) Put in your order!
|
||||
|
||||
Reference in New Issue
Block a user