pg-rest-api/src/service/dates-service-available.js

59 lines
2.0 KiB
JavaScript

const debug=require('debug')('debug');
require('dotenv').config();
const db = require('./db');
const date=require('../utils/date');
const mapping=require('../utils/mapping');
/**
* Create Array of dates in timestamp format between service start_date and including end_date.
*
* @return Array of dates
*/
async function get(serviceId = 0) {
//debug('datesServiceAvailable serviceId: '+serviceId);
const schema = process.env.DB_SCHEMA || 'schema';
debug('schema: ' + schema );
const query=`SELECT * FROM ` + schema + `.calendar WHERE service_id = '${serviceId}';`;
debug('datesServiceAvailable query: ' + query);
const dataService = await db.query(query);
debug('datesServiceAvailable dataService.length: ' + dataService.length);
const monday=dataService[0].monday;
const tuesday=dataService[0].tuesday;
const wednesday=dataService[0].wednesday;
const thursday=dataService[0].thursday;
const friday=dataService[0].friday;
const saturday=dataService[0].saturday;
const sunday=dataService[0].sunday;
const dateStart = dataService[0].start_date;
const dateEnd = dataService[0].end_date;
let dateNext = new Date( dateStart );
const setDatesServiceAvailable = new Set();
while( dateNext.getTime() <= dateEnd.getTime() ) {
let weekday = dateNext.getDay();
if( ( weekday === date.weekday.monday && monday) ||
(weekday===date.weekday.tuesday && tuesday) ||
(weekday===date.weekday.wednesday && wednesday) ||
(weekday===date.weekday.thursday && thursday) ||
(weekday===date.weekday.friday && friday) ||
(weekday===date.weekday.saturday && saturday) ||
(weekday===date.weekday.sunday && sunday)){
setDatesServiceAvailable.add( dateNext.getTime() );
}
//TODO Optimize!
dateNext = new Date( dateNext.setDate( dateNext.getDate() + 1 ));
}
debug('setDatesServiceAvailable size: ' + setDatesServiceAvailable.size );
return mapping.set2Array(setDatesServiceAvailable);
};
module.exports = {
get
};