latest digs

This commit is contained in:
Dobie Wollert
2013-09-04 03:05:47 -04:00
parent b4ca8d9ae3
commit 460e8f0be0
12 changed files with 229 additions and 46 deletions

View File

@ -137,4 +137,4 @@ exports.destroy = function(req, res, next) {
return res.json(client); return res.json(client);
}) })
}); });
}; };

View File

@ -14,8 +14,7 @@ module.exports = function(config) {
return { return {
send: function(req, res) { send: function(req, res) {
console.log(req.body); console.log(req);
var userId = req.body.user; var userId = req.body.user;
if (!userId) { if (!userId) {
return res.json(404, null); return res.json(404, null);
@ -25,8 +24,10 @@ module.exports = function(config) {
User.findById(userId, function(err, user) { User.findById(userId, function(err, user) {
if (err) return res.json(500, err); if (err) return res.json(500, err);
var sender = req.user;
server.send({ server.send({
text: generateMessage(user, req.body), text: generateMessage(sender, user, req.body),
from: config.email.user, from: config.email.user,
to: generateToLine(user), to: generateToLine(user),
subject: 'Message from portal' subject: 'Message from portal'
@ -47,8 +48,9 @@ function generateToLine(user) {
return user.name.first + " " + user.name.last + " <" + user.email + ">"; return user.name.first + " " + user.name.last + " <" + user.email + ">";
} }
function generateMessage(user, message) { function generateMessage(sender, user, message) {
var template = var template =
"From: %(sender)s\n" +
"Message For: %(user)s\n" + "Message For: %(user)s\n" +
"\n" + "\n" +
"Name: %(name)s\n" + "Name: %(name)s\n" +
@ -60,6 +62,7 @@ function generateMessage(user, message) {
"%(notes)s\n"; "%(notes)s\n";
var resources = { var resources = {
sender: sender.name.first + " " + sender.name.last,
user: user.name.first + " " + user.name.last, user: user.name.first + " " + user.name.last,
name: message.name || '', name: message.name || '',
company: message.company || '', company: message.company || '',

View File

@ -47,9 +47,12 @@ module.exports = function(calendar) {
}, },
create: function(req, res, next) { create: function(req, res, next) {
console.log(req.body);
var date = new Date();
var workorder = new Workorder({ var workorder = new Workorder({
client: req.body.client, client: req.body.client,
createdOn: new Date(), createdOn: date,
createdBy: req.user, createdBy: req.user,
reason: req.body.reason, reason: req.body.reason,
maintenanceType: req.body.maintenanceType || "", maintenanceType: req.body.maintenanceType || "",
@ -105,7 +108,9 @@ module.exports = function(calendar) {
end: workorder.scheduling.end, end: workorder.scheduling.end,
attendees: generateAttendees(techs) attendees: generateAttendees(techs)
}, function(err, result) { }, function(err, result) {
workorder.calendarId = result.id; if (result) {
workorder.calendarId = result.id;
}
callback(err); callback(err);
}); });
}, },
@ -119,7 +124,18 @@ module.exports = function(calendar) {
Client.findByIdAndUpdate(req.body.client, { $push: { 'workorders': result.id } }, Client.findByIdAndUpdate(req.body.client, { $push: { 'workorders': result.id } },
function(err, ignored) { callback(err, result) }); function(err, ignored) { callback(err, result) });
} },
function(result, callback) {
console.log("Update Client - Pms");
if (workorder.maintenanceType) {
console.log("Is PM");
var key = 'pms.' + date.getFullYear() + '-' + date.getMonth() + '.' + workorder.maintenanceType;
var cmd = { $inc: {} };
cmd.$inc[key] = 1;
console.log(cmd);
Client.findByIdAndUpdate(req.body.client, cmd, function(err, ignored) { callback(err, result) });
}
},
], ],
function(err, result) { function(err, result) {
if (!err) { if (!err) {
@ -145,11 +161,13 @@ module.exports = function(calendar) {
workorder = result; workorder = result;
workorder.reason = req.body.reason; workorder.reason = req.body.reason;
maintenanceType: req.body.maintenanceType || ""; workorder.maintenanceType = req.body.maintenanceType || "";
workorder.remarks = req.body.remarks; workorder.remarks = req.body.remarks;
workorder.scheduling = req.body.scheduling; workorder.scheduling = req.body.scheduling;
workorder.status = req.body.status; workorder.status = req.body.status;
workorder.techs = req.body.techs.map(function(t) { return t._id; }); workorder.techs = req.body.techs
.filter(function(e) { return e; })
.map(function(t) { return t._id; });
callback(err); callback(err);
}); });
@ -214,11 +232,17 @@ module.exports = function(calendar) {
return workorder.save(function(err) { return workorder.save(function(err) {
if (!err) { if (!err) {
console.log("deleted"); console.log("deleted");
calendar.deleteEvent(workorder.calendarId, function(err) {
if (!err) {
console.log("Calendar event removed.");
}
return res.json(workorder);
});
} else { } else {
console.log("error"); console.log("error");
return res.json(workorder);
} }
return res.json(workorder);
}) })
}); });
} }
@ -231,7 +255,15 @@ function generateSummary(client) {
} }
function generateLocation(client) { function generateLocation(client) {
return sprintf("%(street1)s %(street2)s %(city)s, %(state)s. %(zip)s", client.address); var data = {
street1: client.address.street1 || '',
street2: client.address.street2 || '',
city: client.address.city || '',
state: client.address.state || '',
zip: client.address.zip || ''
};
return sprintf("%(street1)s %(street2)s %(city)s, %(state)s. %(zip)s", data);
} }
function generateDescription(client, workorder) { function generateDescription(client, workorder) {

View File

@ -18,8 +18,9 @@ var clientSchema = new Schema({
email: String email: String
}], }],
frequencies: {}, frequencies: {},
pms: {},
workorders: [{ type: ObjectId, ref: 'Workorder' }], workorders: [{ type: ObjectId, ref: 'Workorder' }],
deleted: { type: Boolean, default: false } deleted: { type: Boolean, default: false }
}); });
module.exports = mongoose.model('Client', clientSchema); module.exports = mongoose.model('Client', clientSchema);

View File

@ -8,6 +8,7 @@ var workorderSchema = new Schema({
createdOn: Date, createdOn: Date,
createdBy: { type: ObjectId, ref: 'User' }, createdBy: { type: ObjectId, ref: 'User' },
reason: String, reason: String,
maintenanceType: String,
remarks: String, remarks: String,
status: String, status: String,
scheduling: { scheduling: {
@ -24,4 +25,4 @@ var workorderSchema = new Schema({
deleted: { type: Boolean, default: false } deleted: { type: Boolean, default: false }
}); });
module.exports = mongoose.model('Workorder', workorderSchema); module.exports = mongoose.model('Workorder', workorderSchema);

View File

@ -26,9 +26,20 @@ html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
.navbar-inner .navbar-inner
ul.nav ul.nav
li li
a(href='http://www.atlanticbiomedical.com') a(href='#')
i.icon-wrench | Contact:
| Contact Us li
a(href='tel://1-800-550-8310')
i.icon-user
| Call
li
a(href='mailto:service@atlanticbiomedical.com')
i.icon-envelope
| Email
li
a(href='http://atlb.co/feature.html')
i.icon-list-alt
| History
.container-fluid .container-fluid
h1(ng-show='tag') Device Tag h1(ng-show='tag') Device Tag
h1(ng-hide='tag') Create Tag h1(ng-hide='tag') Create Tag
@ -46,7 +57,7 @@ html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
dd &nbsp;{{tag.clientDeviceId}} dd &nbsp;{{tag.clientDeviceId}}
dt Device dt Device
dd &nbsp;{{tag.device}} dd &nbsp;{{tag.device}}
dt Make dt Manufacturer
dd &nbsp;{{tag.make}} dd &nbsp;{{tag.make}}
dt Model dt Model
dd &nbsp;{{tag.model}} dd &nbsp;{{tag.model}}
@ -56,12 +67,14 @@ html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
dd &nbsp;{{tag.purchaseDate}} dd &nbsp;{{tag.purchaseDate}}
dt Warranty Expiration dt Warranty Expiration
dd &nbsp;{{tag.deviceWarrantyExpiration}} dd &nbsp;{{tag.deviceWarrantyExpiration}}
dt Test dt PM Test
dd &nbsp;{{tag.test}} dd &nbsp;{{tag.test}}
dt Room # dt Room #
dd &nbsp;{{tag.roomNumber}} dd &nbsp;{{tag.roomNumber}}
dt PO Number dt PO Number
dd &nbsp;{{tag.poNumber}} dd &nbsp;{{tag.poNumber}}
dt Move To
dd &nbsp;{{tag.MoveTo}}
a.btn.btn-primary(href='/auth', ng-show='tag') a.btn.btn-primary(href='/auth', ng-show='tag')
| Edit Tag | Edit Tag
@ -87,7 +100,7 @@ html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
.controls .controls
input.text(ng-model='tag.device') input.text(ng-model='tag.device')
.control-group .control-group
label.control-label Make label.control-label Manufacturer
.controls .controls
input.text(ng-model='tag.make') input.text(ng-model='tag.make')
.control-group .control-group
@ -108,7 +121,7 @@ html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
input.text(type='date', ng-model='tag.deviceWarrantyExpiration') input.text(type='date', ng-model='tag.deviceWarrantyExpiration')
.control-group .control-group
label.control-label Test label.control-label PM Test
.controls .controls
input.text(ng-model='tag.test') input.text(ng-model='tag.test')
.control-group .control-group
@ -120,6 +133,11 @@ html(lang="en", ng-app="tags", ng-controller="tags.PageCtrl")
label.control-label PO Number label.control-label PO Number
.controls .controls
input.text(ng-model='tag.poNumber') input.text(ng-model='tag.poNumber')
.control-group
label.control-label Move To
.controls
input.text(ng-model='tag.MoveTo')
.control-group .control-group
button.btn.btn-primary(ng-click='save()') Save button.btn.btn-primary(ng-click='save()') Save

View File

@ -1,11 +1,16 @@
module.exports = function(app, passport) { module.exports = function(app, passport) {
app.get('/auth', passport.authenticate('google', { app.get('/auth', function(req, res, next) {
console.dir(req.headers);
req.session.redirectUrl = req.headers['referer'];
passport.authenticate('google', {
accessType: 'offline', accessType: 'offline',
scope: [ scope: [
'https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/calendar' 'https://www.googleapis.com/auth/calendar'
]})); ]})(req, res, next);
});
app.get('/auth/callback', function(req, res, next) { app.get('/auth/callback', function(req, res, next) {
var options = { var options = {
@ -23,6 +28,10 @@ module.exports = function(app, passport) {
req.session.redirectUrl = null; req.session.redirectUrl = null;
} }
if (redirectUrl.indexOf('/login') != -1) {
redirectUrl = '/';
}
req.logIn(user, function(err) { req.logIn(user, function(err) {
if (err) { return next(err); } if (err) { return next(err); }
}); });
@ -34,7 +43,7 @@ module.exports = function(app, passport) {
return { return {
requiresUiLogin: function(req, res, next) { requiresUiLogin: function(req, res, next) {
if (!req.isAuthenticated()) { if (!req.isAuthenticated()) {
req.session.redirectUrl = req.url; // req.session.redirectUrl = req.url;
return res.redirect('/login'); return res.redirect('/login');
} }
next(); next();

View File

@ -16,22 +16,36 @@ module.exports = function(config) {
var opts = { baseDiscoveryUrl: 'https://www.googleapis.com/discovery/v1/apis/' }; var opts = { baseDiscoveryUrl: 'https://www.googleapis.com/discovery/v1/apis/' };
function toIsoDate(d) {
function pad(n) { return n < 10 ? '0' + n : n }
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z';
}
return { return {
scheduleEvent: function(event, callback) { scheduleEvent: function(event, callback) {
console.log("schedule event"); console.log("schedule event");
api(function(client, callback) { api(function(client, callback) {
var resource = buildResource(event, {});
console.log("Insert Google Calendar"); console.log("Insert Google Calendar");
console.log(resource);
var request = client.calendar.events.insert({ var params = {
calendarId: 'primary', calendarId: 'primary',
resource: resource };
});
var resource = buildResource(event, { sequence: 1 });
var request = client.calendar.events.insert(params, resource);
request.withAuthClient(oauth2Client).execute(function(err, result) { request.withAuthClient(oauth2Client).execute(function(err, result) {
console.log("in request callback");
console.dir(err);
console.dir(result);
callback(err, result); callback(err, result);
}); });
}, callback); }, callback);
@ -57,24 +71,32 @@ module.exports = function(config) {
resource.sequence = 1; resource.sequence = 1;
} }
var updateRequest = client.calendar.events.update({ var updateRequest = client.calendar.events.patch({
calendarId: 'primary', calendarId: 'primary',
eventId: event.eventId, eventId: event.eventId
resource: buildResource(event, result) }, buildResource(event, result));
});
updateRequest.withAuthClient(oauth2Client).execute(function(err, result) { updateRequest.withAuthClient(oauth2Client).execute(function(err, result) {
callback(err, result); callback(err, result);
}); });
}); });
}, callback); }, callback);
},
deleteEvent: function(eventId, callback) {
api(function(client, callback) {
var request = client.calendar.events.delete({
calendarId: 'primary',
eventId: eventId
});
request.withAuthClient(oauth2Client).execute(function(err, result) {
callback(err, result);
});
}, callback);
} }
}; };
function buildResource(event, resource) { function buildResource(event, resource) {
console.log(event.start);
console.log(event.end);
resource.summary = event.summary; resource.summary = event.summary;
resource.description = event.description; resource.description = event.description;
resource.location = event.location; resource.location = event.location;

View File

@ -30,3 +30,97 @@ Server was reset on 07.01.2013 at 02:38:49
Server was reset on 07.01.2013 at 02:44:36 Server was reset on 07.01.2013 at 02:44:36
Server was reset on 07.01.2013 at 02:44:36 Server was reset on 07.01.2013 at 02:44:36
Server was reset on 07.01.2013 at 02:44:36 Server was reset on 07.01.2013 at 02:44:36
Server was reset on 07.01.2013 at 02:44:36
Server was reset on 07.01.2013 at 02:44:36
Server was reset on 07.01.2013 at 02:44:36
Server was reset on 07.19.2013 at 08:33:09
Server was reset on 07.19.2013 at 08:33:09
Server was reset on 07.19.2013 at 09:03:11
Server was reset on 07.19.2013 at 09:03:11
Server was reset on 07.19.2013 at 10:01:07
Server was reset on 07.19.2013 at 10:01:07
Server was reset on 07.19.2013 at 10:01:07
Server was reset on 07.19.2013 at 10:01:07
Server was reset on 07.19.2013 at 10:01:07
Server was reset on 07.19.2013 at 10:35:47
Server was reset on 07.19.2013 at 10:35:47
Server was reset on 07.19.2013 at 10:35:47
Server was reset on 07.19.2013 at 10:35:47
Server was reset on 07.19.2013 at 10:35:47
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:09:00
Server was reset on 07.19.2013 at 11:59:11
Server was reset on 07.19.2013 at 11:59:11
Server was reset on 07.19.2013 at 11:59:11
Server was reset on 07.19.2013 at 11:59:11
Server was reset on 07.19.2013 at 11:59:11
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.19.2013 at 12:19:27
Server was reset on 07.22.2013 at 00:15:15
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 07.28.2013 at 21:14:04
Server was reset on 08.07.2013 at 00:39:34
Server was reset on 08.07.2013 at 17:07:18
Server was reset on 08.07.2013 at 22:05:41
Server was reset on 08.07.2013 at 22:05:41
Server was reset on 08.07.2013 at 22:05:41
Server was reset on 08.07.2013 at 22:06:43
Server was reset on 08.07.2013 at 22:06:43
Server was reset on 08.24.2013 at 13:17:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 08.27.2013 at 10:54:23
Server was reset on 09.02.2013 at 06:42:51
Server was reset on 09.02.2013 at 06:42:51
Server was reset on 09.02.2013 at 06:42:51

View File

@ -86,9 +86,13 @@ var workorders_command = {
mongoose.connection.db.executeDbCommand(clients_command, function(err, dbres) { mongoose.connection.db.executeDbCommand(clients_command, function(err, dbres) {
if (err) throw err; if (err) throw err;
console.log("Clients Done");
mongoose.connection.db.executeDbCommand(workorders_command, function(err, dbres) { mongoose.connection.db.executeDbCommand(workorders_command, function(err, dbres) {
if (err) throw err; if (err) throw err;
console.log("Workorders Done");
process.exit(); process.exit();
}); });
}); });

View File

@ -285,33 +285,27 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="tab-pane" title="Tags"> <div class="tab-pane" title="Devices">
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">
<table class="biomed-table"> <table class="biomed-table">
<thead> <thead>
<tr> <tr>
<th style="width: 10%">Tag</th>
<th style="width: 10%">Device ID</th> <th style="width: 10%">Device ID</th>
<th style="width: 15%">Device</th> <th style="width: 15%">Device</th>
<th style="width: 15%">Make</th> <th style="width: 15%">Make</th>
<th style="width: 15%">Model</th> <th style="width: 15%">Model</th>
<th style="width: 15%">Serial No.</th> <th style="width: 15%">Serial No.</th>
<th style="width: 20%">Purchase Date</th>
<th style="width: 20%">Warranty Exp.</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-hide="tags.length"><td colspan="4" class="table-message">There is no information to display.</td></tr> <tr ng-hide="tags.length"><td colspan="4" class="table-message">There is no information to display.</td></tr>
<tr ng-repeat="tag in tags"> <tr ng-repeat="tag in tags">
<td>{{tag._id}}</td> <td><a href="http://n.atlb.co/{{tag._id}}">{{tag.data.clientDeviceId}} - (Tag:{{tag._id}})</a></td>
<td>{{tag.data.clientDeviceId}}</td>
<td>{{tag.data.device}}</td> <td>{{tag.data.device}}</td>
<td>{{tag.data.make}}</td> <td>{{tag.data.make}}</td>
<td>{{tag.data.model}}</td> <td>{{tag.data.model}}</td>
<td>{{tag.data.serialNumber}}</td> <td>{{tag.data.serialNumber}}</td>
<td>{{tag.data.purchaseDate|date}}</td>
<td>{{tag.data.deviceWarrantyExpiration|date}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -185,7 +185,12 @@
<div class="form-section"> <div class="form-section">
<div class="section-label">&nbsp;</div> <div class="section-label">&nbsp;</div>
<div class="section-container"> <div class="section-container">
<button ng-click="save()" type="button" class="btn btn-primary">Save</button> <p><b>Note:</b></p>
<p>Please only click save once, your work order is being saved the first time you click the button. There is a small bug preventing the page from returning you back to where you came from. This will be fixed after working hours.</p>
<p>If you notice any other issues, or need help with a work order, please feel free to <a href="http://atlanticbiomedical.com/ticket/" target="new"> Open a Ticket</a>
<br><br>
<button ng-click="save()" type="button" class="btn btn-primary">Save</button>
</div> </div>
</div> </div>
</div> </div>