Fixed bookings and timezone problems

This commit is contained in:
Senad Uka
2019-06-25 15:44:46 +02:00
parent db1a3acb11
commit ffc8412d7c
11 changed files with 101 additions and 197 deletions

View File

@@ -3,10 +3,11 @@
const db = require('../../models');
const fs = require('fs');
const csv = require('csv-parser');
const moment = require('moment/moment');
const moment = require('moment-timezone');
const Op = require('sequelize').Op;
const {
UI_TIMEZONE,
USER_ENTRY_EVENT,
ENABLE_PASSAGE_MODE,
DISABLE_PASSAGE_MODE,
@@ -38,7 +39,7 @@ const parseDoorLockDataFile = (file) => {
return new Promise ((resolve, reject) => {
const results = [];
const errors = [];
const unknownMembers = [];
const unknownMembersToReport = [];
let isValidFile = true;
const prefetchDataJobs = [getMappingsFromDatabase(), fetchAllMembers()];
@@ -48,6 +49,11 @@ const parseDoorLockDataFile = (file) => {
const mappings = result[0];
const allMembers = result[1];
const membersMap = {};
const unknownMembersMap = {};
allMembers.forEach((member) => membersMap[member.name] = member);
const mappingFromFileName = extractMappingFromFileName(file.name);
const mappingObject = checkIfMappingExsists(mappingFromFileName, mappings);
if (!mappingObject){
@@ -104,13 +110,15 @@ const parseDoorLockDataFile = (file) => {
const secondEntry = results[i+1];
if (firstEntry && (firstEntry.event === USER_ENTRY_EVENT)){
const memberObject = allMembers.find(member => member.name === firstEntry.name);
const memberObject = membersMap[firstEntry.name];
if (!memberObject){
//Check if member is already labeled as unknown
const unknownMember = unknownMembers.find((member) => member.details === firstEntry.name);
const unknownMember = unknownMembersMap[firstEntry.name];
if (!unknownMember){
unknownMembers.push({
unknownMembersMap[firstEntry.name] = firstEntry.name;
unknownMembersToReport.push({
error: csvParserErrors.UNKNOWN_MEMBER,
details: firstEntry.name,
file: file.name,
@@ -123,7 +131,7 @@ const parseDoorLockDataFile = (file) => {
doorLockEvents.USER_UNLOCKED : doorLockEvents.USER_LOCKED;
const dateTimeString = `${firstEntry.date} ${firstEntry.time}`;
const timestamp = moment.utc(dateTimeString, 'MM/DD/YY HH:mm:ss A').toISOString();
const timestamp = moment.tz(dateTimeString, 'MM/DD/YY HH:mm:ss A', UI_TIMEZONE).tz('UTC').toISOString();
//Verify that member is registered in OfficeRnD system
if (memberObject){
@@ -159,7 +167,7 @@ const parseDoorLockDataFile = (file) => {
}
resolve({
parsedData,
unknownMembers,
unknownMembers: unknownMembersToReport,
errors
});
});