mirror of
https://github.com/matt-fidd/stratos.git
synced 2026-01-01 18:39:32 +00:00
Don't block main thread waiting for email to build and send
This commit is contained in:
22
lib/Test.js
22
lib/Test.js
@@ -173,23 +173,23 @@ class Test {
|
|||||||
mark
|
mark
|
||||||
);
|
);
|
||||||
|
|
||||||
const parents = await tr.student.getParents();
|
const body = 'Your result has been added for ' +
|
||||||
|
|
||||||
const email = new EmailBuilder()
|
|
||||||
.addTo([ tr.student, ...parents ]
|
|
||||||
.map(u => u.getEmail()))
|
|
||||||
.setSubject('Stratos - Test result added')
|
|
||||||
.setBody(
|
|
||||||
'Your result has been added for ' +
|
|
||||||
`the test "${this.template.name}" that you ` +
|
`the test "${this.template.name}" that you ` +
|
||||||
`took on ${this.getDateString()}\n\n` +
|
`took on ${this.getDateString()}\n\n` +
|
||||||
`You scored ${mark}/${this.template.maxMark} ` +
|
`You scored ${mark}/${this.template.maxMark} ` +
|
||||||
`(${tr.percentage}%) which is a grade ` +
|
`(${tr.percentage}%) which is a grade ` +
|
||||||
`${tr.grade}`
|
`${tr.grade}`;
|
||||||
);
|
|
||||||
|
tr.student.getParents().then(parents => {
|
||||||
|
const email = new EmailBuilder()
|
||||||
|
.addTo([ tr.student, ...parents ]
|
||||||
|
.map(u => u.getEmail()))
|
||||||
|
.setSubject('Stratos - Test result added')
|
||||||
|
.setBody(body);
|
||||||
|
|
||||||
const emailer = new Emailer();
|
const emailer = new Emailer();
|
||||||
await emailer.sendEmail(email);
|
emailer.sendEmail(email);
|
||||||
|
});
|
||||||
|
|
||||||
return tr;
|
return tr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,8 +114,7 @@ class TestResult {
|
|||||||
`(${this.percentage}%) which is a grade ` +
|
`(${this.percentage}%) which is a grade ` +
|
||||||
`${this.grade}`;
|
`${this.grade}`;
|
||||||
|
|
||||||
const parents = await this.student.getParents();
|
this.student.getParents().then(parents => {
|
||||||
|
|
||||||
const email = new EmailBuilder()
|
const email = new EmailBuilder()
|
||||||
.addTo([ this.student, ...parents ]
|
.addTo([ this.student, ...parents ]
|
||||||
.map(u => u.getEmail()))
|
.map(u => u.getEmail()))
|
||||||
@@ -123,7 +122,8 @@ class TestResult {
|
|||||||
.setBody(body);
|
.setBody(body);
|
||||||
|
|
||||||
const emailer = new Emailer();
|
const emailer = new Emailer();
|
||||||
await emailer.sendEmail(email);
|
emailer.sendEmail(email);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
get percentage() {
|
get percentage() {
|
||||||
|
|||||||
@@ -139,17 +139,18 @@ class TestTemplate {
|
|||||||
|
|
||||||
const t = await new Test(this.#conn, id);
|
const t = await new Test(this.#conn, id);
|
||||||
|
|
||||||
const email = (await EmailBuilder.generateFromClass(c))
|
const body = `New test added for class ${c.name}:\n` +
|
||||||
.setSubject('Stratos - New Test')
|
|
||||||
.setBody(
|
|
||||||
`New test added for class ${c.name}:\n` +
|
|
||||||
`Test name: ${this.name}\n` +
|
`Test name: ${this.name}\n` +
|
||||||
`Test date: ${t.getDateString()}\n` +
|
`Test date: ${t.getDateString()}\n` +
|
||||||
`Maximum mark: ${this.maxMark}`
|
`Maximum mark: ${this.maxMark}`;
|
||||||
);
|
|
||||||
|
EmailBuilder.generateFromClass(c).then(email => {
|
||||||
|
email.setSubject('Stratos - New Test')
|
||||||
|
.setBody(body);
|
||||||
|
|
||||||
const emailer = new Emailer();
|
const emailer = new Emailer();
|
||||||
await emailer.sendEmail(email);
|
emailer.sendEmail(email);
|
||||||
|
});
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user