Skip to content

Instantly share code, notes, and snippets.

@navarroaxel
Created November 19, 2020 12:31
Show Gist options
  • Select an option

  • Save navarroaxel/a4547fbd055ae81345c26def12603f8c to your computer and use it in GitHub Desktop.

Select an option

Save navarroaxel/a4547fbd055ae81345c26def12603f8c to your computer and use it in GitHub Desktop.

Revisions

  1. navarroaxel created this gist Nov 19, 2020.
    39 changes: 39 additions & 0 deletions save-sql.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    const save = (surveys = [], user) => {
    const promises = surveys.map(async (survey) => {
    const {user: currentUser} = await this.knex
    .select('user')
    .from('addresses')
    .where({
    user: user.id,
    id: survey.address,
    })
    .first();
    if (currentUser) {
    let situation = survey.situation;
    if (survey.readyToSync) {
    situation = situations.FINISHED_IN_FIELD;
    } else {
    if (survey.situation === situations.ASSIGNED) {
    situation = situations.SYNCHRONIZED;
    }
    if (user.roles[0] === roles.POLLSTER && survey.visits) {
    situation = situations.SURVEYING;
    }
    if (user.roles[0] === roles.TEAM_LEADER && survey.visits) {
    situation = situations.IN_RECOVERY;
    }
    if (survey.closed) {
    situation = situations.CLOSED;
    }
    }
    return [
    this.knex.update({data: survey}).from('surveys').where({id: survey.id}),
    this.knex
    .update({situation})
    .from('addresses')
    .where({id: survey.address}),
    ];
    }
    });
    return Promise.all(promises.flat());
    };