5918-worker.time-control_resend #1685

Merged
alexm merged 14 commits from 5918-worker.time-control_resend into dev 2023-10-18 09:10:19 +00:00
4 changed files with 49 additions and 59 deletions
Showing only changes of commit df6d10e514 - Show all commits

View File

@ -37,31 +37,40 @@ module.exports = Self => {
}
});
Self.updateWorkerTimeControlMail = async(ctx, workerId, year, week, state, reason, options) => {
Self.updateWorkerTimeControlMail = async(ctx, options) => {
const models = Self.app.models;
const args = ctx.args;
const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
const workerTimeControlMail = await models.WorkerTimeControlMail.findOne({
const [sent] = await models.WorkerTimeControlMail.find({
where: {
workerFk: workerId,
year,
week
}
year: args.year,
week: args.week,
},
limit: 1
}, myOptions);
console.log('workerTimeControlMail: ', workerTimeControlMail);
if (!workerTimeControlMail) throw new UserError(`There aren't records for this week`);
if (!sent) throw new UserError(`There aren't records for this week`);
await workerTimeControlMail.updateAttributes({
state,
reason: reason || null
}, myOptions);
const workerTimeControlMail = await models.WorkerTimeControlMail.upsertWithWhere(
{
year: args.year,
week: args.week,
workerFk: args.workerId
},
{
state: args.state,
reason: args.workerId,
year: args.year,
week: args.week,
workerFk: args.workerId
},
myOptions);
if (state == 'SENDED') {
if (args.state == 'SENDED') {
await workerTimeControlMail.updateAttributes({
sendedCounter: workerTimeControlMail.sendedCounter + 1
}, myOptions);

View File

@ -61,9 +61,8 @@ module.exports = Self => {
const url = `${salix.url}worker/${args.workerId}/time-control?timestamp=${timestamp}`;
ctx.args.url = url;
await Self.sendTemplate(ctx, 'weekly-hour-record');
return models.WorkerTimeControl.updateWorkerTimeControlMail(ctx, myOptions);
await models.WorkerTimeControl.updateWorkerTimeControlMail(ctx, myOptions);
return Self.sendTemplate(ctx, 'weekly-hour-record');
};
function getMondayDateFromYearWeek(yearNumber, weekNumber) {

View File

@ -102,7 +102,7 @@
ng-click="sendEmailConfirmation.show()"
class="right"
vn-tooltip="Resend email of this week to the user"
ng-show="$ctrl.isHr && $ctrl.canResend">
ng-show="$ctrl.isHr && $ctrl.state != 'CONFIRMED' && $ctrl.canResend">
</vn-button>
</vn-button-bar>
</div>

View File

@ -53,6 +53,8 @@ class Controller extends Section {
set worker(value) {
this._worker = value;
this.fetchHours();
if (this.date)
this.getWeekData();
}
/**
@ -110,8 +112,8 @@ class Controller extends Section {
}
if (!this.weekTotalHours) this.fetchHours();
this.getWeekData();
this.isMailSended();
if (this.worker)
this.getWeekData();
}
set weekTotalHours(totalHours) {
@ -128,21 +130,23 @@ class Controller extends Section {
workerFk: this.$params.id,
year: this._date.getFullYear(),
week: this.getWeekNumber(this._date)
}
},
};
this.$http.get('WorkerTimeControlMails', {filter})
.then(res => {
const mail = res.data;
if (!mail.length) {
if (!res.data.length) {
this.state = null;
return;
}
this.state = mail[0].state;
this.reason = mail[0].reason;
const [mail] = res.data;
this.state = mail.state;
this.reason = mail.reason;
});
this.canBeResend();
}
isMailSended() {
canBeResend() {
this.canResend = false;
const filter = {
where: {
year: this._date.getFullYear(),
@ -150,27 +154,10 @@ class Controller extends Section {
},
limit: 1
};
// no repeat request
this.$http.get('WorkerTimeControlMails', {filter})
.then(res => {
if (!res.data.length) {
this.canResend = false;
return;
}
const filter = {
where: {
workerFk: this.$params.id
},
include: {
relation: 'department'
}
};
this.$http.get('WorkerDepartments/findOne', {filter})
.then(res => {
const department = res.data.department;
if (department.isTeleworking) this.canResend = true;
});
if (res.data.length)
this.canResend = true;
});
}
@ -389,30 +376,25 @@ class Controller extends Section {
}
isSatisfied() {
const params = {
workerId: this.worker.id,
year: this.date.getFullYear(),
week: this.weekNumber,
state: 'CONFIRMED'
};
const query = `WorkerTimeControls/updateWorkerTimeControlMail`;
this.$http.post(query, params).then(() => {
this.getMailStates(this.date);
this.getWeekData();
this.vnApp.showSuccess(this.$t('Data saved!'));
});
this.updateWorkerTimeControlMail('CONFIRMED');
}
isUnsatisfied() {
if (!this.reason) throw new UserError(`You must indicate a reason`);
this.updateWorkerTimeControlMail('REVISE', this.reason);
}
updateWorkerTimeControlMail(state, reason) {
const params = {
workerId: this.worker.id,
year: this.date.getFullYear(),
week: this.weekNumber,
state: 'REVISE',
reason: this.reason
state
};
if (reason)
params.reason = reason;
const query = `WorkerTimeControls/updateWorkerTimeControlMail`;
this.$http.post(query, params).then(() => {
this.getMailStates(this.date);