101 lines
3.3 KiB
JavaScript
101 lines
3.3 KiB
JavaScript
'use strict';
|
|
|
|
angular.module('ffffng').factory('MailResource', function (
|
|
Constraints,
|
|
Validator,
|
|
MailService,
|
|
Resources,
|
|
Logger,
|
|
ErrorTypes,
|
|
Strings
|
|
) {
|
|
var isValidId = Validator.forConstraint(Constraints.id);
|
|
|
|
function withValidMailId(req, res, callback) {
|
|
var id = Strings.normalizeString(Resources.getData(req).id);
|
|
|
|
if (!isValidId(id)) {
|
|
return callback({data: 'Invalid mail id.', type: ErrorTypes.badRequest});
|
|
}
|
|
|
|
callback(null, id);
|
|
}
|
|
|
|
return {
|
|
get: function (req, res) {
|
|
withValidMailId(req, res, function (err, id) {
|
|
if (err) {
|
|
return Resources.error(res, err);
|
|
}
|
|
|
|
MailService.getMail(id, function (err, mail) {
|
|
if (err) {
|
|
Logger.tag('mails', 'admin').error('Error getting mail:', err);
|
|
return Resources.error(res, {data: 'Internal error.', type: ErrorTypes.internalError});
|
|
}
|
|
|
|
if (!mail) {
|
|
return Resources.error(res, {data: 'Mail not found.', type: ErrorTypes.notFound});
|
|
}
|
|
|
|
return Resources.success(res, mail);
|
|
});
|
|
});
|
|
},
|
|
|
|
getAll: function (req, res) {
|
|
Resources.getValidRestParams('list', req, function (err, restParams) {
|
|
if (err) {
|
|
return Resources.error(res, err);
|
|
}
|
|
|
|
return MailService.getPendingMails(
|
|
restParams,
|
|
function (err, mails, total) {
|
|
if (err) {
|
|
Logger.tag('mails', 'admin').error('Could not get pending mails:', err);
|
|
return Resources.error(res, {data: 'Internal error.', type: ErrorTypes.internalError});
|
|
}
|
|
|
|
res.set('X-Total-Count', total);
|
|
return Resources.success(res, mails);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
|
|
delete: function (req, res) {
|
|
withValidMailId(req, res, function (err, id) {
|
|
if (err) {
|
|
return Resources.error(res, err);
|
|
}
|
|
|
|
MailService.deleteMail(id, function (err) {
|
|
if (err) {
|
|
Logger.tag('mails', 'admin').error('Error deleting mail:', err);
|
|
return Resources.error(res, {data: 'Internal error.', type: ErrorTypes.internalError});
|
|
}
|
|
|
|
return Resources.success(res);
|
|
});
|
|
});
|
|
},
|
|
|
|
resetFailures: function (req, res) {
|
|
withValidMailId(req, res, function (err, id) {
|
|
if (err) {
|
|
return Resources.error(res, err);
|
|
}
|
|
|
|
MailService.resetFailures(id, function (err, mail) {
|
|
if (err) {
|
|
Logger.tag('mails', 'admin').error('Error resetting failure count:', err);
|
|
return Resources.error(res, {data: 'Internal error.', type: ErrorTypes.internalError});
|
|
}
|
|
|
|
return Resources.success(res, mail);
|
|
});
|
|
});
|
|
}
|
|
};
|
|
});
|