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) {
vicent marked this conversation as resolved Outdated

ací al final no pugueres posar el workerFk?

ací al final no pugueres posar el workerFk?

Teu havia possat en la nota de ahir:

No se envía el workerFk, pq puede que ese workerFk no tenga ningún registro. Se ha solucionado poniendo un limit 1 en la petición.

Just lo que soluciona esta tarea es poder enviar el registro horario aunq no se li haja enviat la ninguna volta.

Teu havia possat en la nota de ahir: No se envía el workerFk, pq puede que ese workerFk no tenga ningún registro. Se ha solucionado poniendo un limit 1 en la petición. Just lo que soluciona esta tarea es poder enviar el registro horario aunq no se li haja enviat la ninguna volta.
@ -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);