59 lines
2.0 KiB
JavaScript
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
|
|
};
|