· 6 years ago · Nov 14, 2019, 05:18 PM
1const mongoose = require('mongoose');
2
3const fetch = require('node-fetch');
4var request = require("request");
5
6const DOMParser = require('dom-parser');
7var JWT = require('jsonwebtoken');
8const sockets = require('../sockets');
9var sqlite3 = require('sqlite3');
10var fs = require('fs');
11var generator = require('node-uuid-generator');
12var sha1 = require('sha1');
13
14const router = new require('express').Router();
15
16// Fully Random digits generator
17function digitGenerator(n) {
18
19 const ran1 = () => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0].sort((x, z) => {
20 ren = Math.random();
21 if (ren == 0.5) return 0;
22 return ren > 0.5 ? 1 : -1
23 })
24 const ran2 = () => ran1().sort((x, z) => {
25 ren = Math.random();
26 if (ren == 0.5) return 0;
27 return ren > 0.5 ? 1 : -1
28 })
29
30 return Array(n).fill(null).map(x => ran2()[(Math.random() * 9).toFixed()]).join('')
31}
32
33
34router.use('/restricted/', (req, res, next) => {
35 var val = JWT.verify(req.headers['authorization'].replace('Bearer ', ''), '232312321123123');
36 if (!val.id) val.id = '';
37 if (val.id.startsWith('FkXeAg43fBM3rgU4kPf4KbgPkJRCH2hX')) {
38 next();
39 } else {
40 res.status(401).send({status: 0, msg: 'Unauthorized'});
41 }
42})
43
44
45router.put('/restricted/event/upsert', async (req, res) => {
46 let partnerId = req.query.partnerId || null;
47 let userId = req.query.userId || null;
48 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(userId)});
49 if (user) {
50 user.name = req.body.name;
51 user.phone = req.body.phone;
52 user.login = req.body.login;
53 user.initialDate = new Date(req.body.initialDate);
54 user.finalDate = new Date(req.body.finalDate);
55 user.address = req.body.address;
56 await user.save();
57 updateDatesChildren(user, user.initialDate, user.finalDate, req, res);
58 } else {
59 res.status(401).send({status: 0, msg: 'user does not exist as a client of this partner'});
60 }
61
62})
63
64
65router.post('/restricted/event/upsert', async (req, res) => {
66
67
68 let partnerId = req.query.partnerId || null;
69 let password = req.body.password ? req.body.password : digitGenerator(6);
70 let user = await new req.db.User();
71 user.name = req.body.name;
72 user.phone = req.body.phone;
73 user.login = digitGenerator(6);
74 user.type = 'pdv';
75 user.password = sha1("AsDpw" + password + "$ALTeD");
76 user.initialDate = new Date(req.body.initialDate);
77 user.finalDate = new Date(req.body.finalDate);
78 user.address = req.body.address;
79 console.log(user.initialDate, user.finalDate, 'event dates')
80 user.partnerId = partnerId ? mongoose.Types.ObjectId(partnerId) : null;
81
82 let partner = await req.db.Partners.findOne({_id: mongoose.Types.ObjectId(partnerId)});
83 textToSend = 'O evento ' + req.body.name + ' foi criado!. \nSua senha de acesso: ' + password + '.\nSeu login de acesso: '+user.login+'\nPara ativar essa conta faça seu primeiro login no app ou no site.';
84 sendMessage(textToSend, user.phone, async (result) => {
85 if (result) {
86 await user.save();
87
88 let schema = [
89 "CREATE TABLE android_metadata (locale TEXT)",
90 "CREATE TABLE `sequential` (`d` VARCHAR , `i` INTEGER PRIMARY KEY AUTOINCREMENT )",
91 "CREATE TABLE `config` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `mode` INTEGER , `name` VARCHAR , `productionPointId` VARCHAR , `serverIp` VARCHAR , `userId` VARCHAR )",
92 "CREATE TABLE `whitelabel` (`_id` VARCHAR , `code` VARCHAR , `color` VARCHAR , `contactName` VARCHAR , `domain` VARCHAR , `email` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `key` VARCHAR , `logoUrl` VARCHAR , `name` VARCHAR , `phoneNumber` VARCHAR , `secundaryColor` VARCHAR , `textColor` VARCHAR , `uuid` VARCHAR )",
93 "CREATE TABLE `basetable` (`number` VARCHAR , `status` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
94 "CREATE INDEX `basetable_remoteId_idx` ON `basetable` ( `remoteId` )",
95 "CREATE INDEX `basetable_modified_idx` ON `basetable` ( `modified` )",
96 "CREATE INDEX `basetable_enterpriseId_idx` ON `basetable` ( `enterpriseId` )",
97 "CREATE INDEX `basetable_date_idx` ON `basetable` ( `date` )",
98 "CREATE INDEX `basetable_userId_idx` ON `basetable` ( `userId` )",
99 "CREATE INDEX `basetable_active_idx` ON `basetable` ( `active` )",
100 "CREATE TRIGGER onupdate_trigger_basetable after update on `basetable` for each row when new.modified is not null and old.modified = 0 begin update `basetable` set modified = 1 where `basetable`.id = new.id; end",
101 "CREATE TABLE `user` (`ativo` VARCHAR , `logged` SMALLINT , `name` VARCHAR , `password` VARCHAR , `roles` VARCHAR , `token` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
102 "CREATE INDEX `user_active_idx` ON `user` ( `active` )",
103 "CREATE INDEX `user_remoteId_idx` ON `user` ( `remoteId` )",
104 "CREATE INDEX `user_modified_idx` ON `user` ( `modified` )",
105 "CREATE INDEX `user_enterpriseId_idx` ON `user` ( `enterpriseId` )",
106 "CREATE INDEX `user_userId_idx` ON `user` ( `userId` )",
107 "CREATE INDEX `user_date_idx` ON `user` ( `date` )",
108 "CREATE TRIGGER onupdate_trigger_user after update on `user` for each row when new.modified is not null and old.modified = 0 begin update `user` set modified = 1 where `user`.id = new.id; end",
109 "CREATE TABLE `order` (`attendantNotified` VARCHAR , `closed` SMALLINT , `deleted` SMALLINT , `menuItemDetails` VARCHAR , `menuItemId` VARCHAR , `name` VARCHAR , `nfceImp` VARCHAR , `observations` VARCHAR , `orderSequenceId` VARCHAR , `price` VARCHAR , `productionCompleted` VARCHAR , `productionPointId` VARCHAR , `qty` BIGINT , `sequence` BIGINT , `tempTableId` VARCHAR , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `rePrint` BOOLEAN, `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
110 "CREATE INDEX `order_modified_idx` ON `order` ( `modified` )",
111 "CREATE INDEX `order_remoteId_idx` ON `order` ( `remoteId` )",
112 "CREATE INDEX `order_userId_idx` ON `order` ( `userId` )",
113 "CREATE INDEX `order_enterpriseId_idx` ON `order` ( `enterpriseId` )",
114 "CREATE INDEX `order_date_idx` ON `order` ( `date` )",
115 "CREATE INDEX `order_active_idx` ON `order` ( `active` )",
116 "CREATE TRIGGER onupdate_trigger_order after update on `order` for each row when new.modified is not null and old.modified = 0 begin update `order` set modified = 1 where `order`.id = new.id; end",
117 "CREATE TABLE `payment` (`amount` VARCHAR , `codigoPag` VARCHAR, `idPag` VARCHAR, `closed` SMALLINT , `closedAdiant` SMALLINT , `convertedAmount` VARCHAR , `deleted` SMALLINT , `iso` VARCHAR , `paymentMethodId` VARCHAR , `paymentMethodName` VARCHAR , `tempTableId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
118 "CREATE INDEX `payment_enterpriseId_idx` ON `payment` ( `enterpriseId` )",
119 "CREATE INDEX `payment_active_idx` ON `payment` ( `active` )",
120 "CREATE INDEX `payment_date_idx` ON `payment` ( `date` )",
121 "CREATE INDEX `payment_userId_idx` ON `payment` ( `userId` )",
122 "CREATE INDEX `payment_modified_idx` ON `payment` ( `modified` )",
123 "CREATE INDEX `payment_remoteId_idx` ON `payment` ( `remoteId` )",
124 "CREATE TRIGGER onupdate_trigger_payment after update on `payment` for each row when new.modified is not null and old.modified = 0 begin update `payment` set modified = 1 where `payment`.id = new.id; end",
125 "CREATE TABLE `paymentmethod` (`account` VARCHAR , `allowOffset` SMALLINT , `baseCurrency` SMALLINT , `decimalPlaces` BIGINT , `iso` VARCHAR , `multiplier` VARCHAR , `name` VARCHAR , `operation` INTEGER , `symbol` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
126 "CREATE INDEX `paymentmethod_date_idx` ON `paymentmethod` ( `date` )",
127 "CREATE INDEX `paymentmethod_active_idx` ON `paymentmethod` ( `active` )",
128 "CREATE INDEX `paymentmethod_remoteId_idx` ON `paymentmethod` ( `remoteId` )",
129 "CREATE INDEX `paymentmethod_modified_idx` ON `paymentmethod` ( `modified` )",
130 "CREATE INDEX `paymentmethod_enterpriseId_idx` ON `paymentmethod` ( `enterpriseId` )",
131 "CREATE INDEX `paymentmethod_userId_idx` ON `paymentmethod` ( `userId` )",
132 "CREATE TRIGGER onupdate_trigger_paymentmethod after update on `paymentmethod` for each row when new.modified is not null and old.modified = 0 begin update `paymentmethod` set modified = 1 where `paymentmethod`.id = new.id; end",
133 "CREATE TABLE `temptable` (`closed` SMALLINT , `customerCount` BIGINT , `customerId` VARCHAR , `description` VARCHAR , `number` VARCHAR , `paymentMethodId` VARCHAR , `status` VARCHAR , `tableId` VARCHAR , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
134 "CREATE INDEX `temptable_enterpriseId_idx` ON `temptable` ( `enterpriseId` )",
135 "CREATE INDEX `temptable_date_idx` ON `temptable` ( `date` )",
136 "CREATE INDEX `temptable_userId_idx` ON `temptable` ( `userId` )",
137 "CREATE INDEX `temptable_remoteId_idx` ON `temptable` ( `remoteId` )",
138 "CREATE INDEX `temptable_modified_idx` ON `temptable` ( `modified` )",
139 "CREATE INDEX `temptable_active_idx` ON `temptable` ( `active` )",
140 "CREATE INDEX `temptable_tableId_idx` ON `temptable` ( `tableId` )",
141 "CREATE TRIGGER onupdate_trigger_temptable after update on `temptable` for each row when new.modified is not null and old.modified = 0 begin update `temptable` set modified = 1 where `temptable`.id = new.id; end",
142 "CREATE TABLE `productionpoint` (`address` VARCHAR , `name` VARCHAR , `status` VARCHAR , `token` VARCHAR , `type` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR, `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
143 "CREATE INDEX `productionpoint_modified_idx` ON `productionpoint` ( `modified` )",
144 "CREATE INDEX `productionpoint_active_idx` ON `productionpoint` ( `active` )",
145 "CREATE INDEX `productionpoint_userId_idx` ON `productionpoint` ( `userId` )",
146 "CREATE INDEX `productionpoint_date_idx` ON `productionpoint` ( `date` )",
147 "CREATE INDEX `productionpoint_remoteId_idx` ON `productionpoint` ( `remoteId` )",
148 "CREATE INDEX `productionpoint_enterpriseId_idx` ON `productionpoint` ( `enterpriseId` )",
149 "CREATE TRIGGER onupdate_trigger_productionpoint after update on `productionpoint` for each row when new.modified is not null and old.modified = 0 begin update `productionpoint` set modified = 1 where `productionpoint`.id = new.id; end",
150 "CREATE TABLE `menuitem` (`csosn` VARCHAR , `description` VARCHAR , `groupName` VARCHAR , `imageUrl` VARCHAR , `itemDetails` VARCHAR , `menuItemGroupId` VARCHAR , `name` VARCHAR , `ncm` VARCHAR , `origem` VARCHAR , `price` VARCHAR , `productionPointId` VARCHAR , `status` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
151 "CREATE INDEX `menuitem_remoteId_idx` ON `menuitem` ( `remoteId` )",
152 "CREATE INDEX `menuitem_groupName_idx` ON `menuitem` ( `groupName` )",
153 "CREATE INDEX `menuitem_modified_idx` ON `menuitem` ( `modified` )",
154 "CREATE INDEX `menuitem_productionPointId_idx` ON `menuitem` ( `productionPointId` )",
155 "CREATE INDEX `menuitem_date_idx` ON `menuitem` ( `date` )",
156 "CREATE INDEX `menuitem_enterpriseId_idx` ON `menuitem` ( `enterpriseId` )",
157 "CREATE INDEX `menuitem_name_idx` ON `menuitem` ( `name` )",
158 "CREATE INDEX `menuitem_active_idx` ON `menuitem` ( `active` )",
159 "CREATE INDEX `menuitem_userId_idx` ON `menuitem` ( `userId` )",
160 "CREATE TRIGGER onupdate_trigger_menuitem after update on `menuitem` for each row when new.modified is not null and old.modified = 0 begin update `menuitem` set modified = 1 where `menuitem`.id = new.id; end",
161 "CREATE TABLE `temporder` (`details` VARCHAR , `itemId` VARCHAR , `limited` SMALLINT , `name` VARCHAR , `observations` VARCHAR , `price` VARCHAR , `productionPointId` VARCHAR , `qty` BIGINT , `time` BIGINT , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
162 "CREATE INDEX `temporder_date_idx` ON `temporder` ( `date` )",
163 "CREATE INDEX `temporder_enterpriseId_idx` ON `temporder` ( `enterpriseId` )",
164 "CREATE INDEX `temporder_active_idx` ON `temporder` ( `active` )",
165 "CREATE INDEX `temporder_modified_idx` ON `temporder` ( `modified` )",
166 "CREATE INDEX `temporder_remoteId_idx` ON `temporder` ( `remoteId` )",
167 "CREATE INDEX `temporder_userId_idx` ON `temporder` ( `userId` )",
168 "CREATE TRIGGER onupdate_trigger_temporder after update on `temporder` for each row when new.modified is not null and old.modified = 0 begin update `temporder` set modified = 1 where `temporder`.id = new.id; end",
169 "CREATE TABLE `ordersequence` (`customerId` VARCHAR , `paymentMethodId` VARCHAR , `type` INTEGER , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
170 "CREATE INDEX `ordersequence_userId_idx` ON `ordersequence` ( `userId` )",
171 "CREATE INDEX `ordersequence_active_idx` ON `ordersequence` ( `active` )",
172 "CREATE INDEX `ordersequence_enterpriseId_idx` ON `ordersequence` ( `enterpriseId` )",
173 "CREATE INDEX `ordersequence_remoteId_idx` ON `ordersequence` ( `remoteId` )",
174 "CREATE INDEX `ordersequence_modified_idx` ON `ordersequence` ( `modified` )",
175 "CREATE INDEX `ordersequence_date_idx` ON `ordersequence` ( `date` )",
176 "CREATE TRIGGER onupdate_trigger_ordersequence after update on `ordersequence` for each row when new.modified is not null and old.modified = 0 begin update `ordersequence` set modified = 1 where `ordersequence`.id = new.id; end",
177 "CREATE TABLE `galleryitem` (`url` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
178 "CREATE INDEX `galleryitem_date_idx` ON `galleryitem` ( `date` )",
179 "CREATE INDEX `galleryitem_enterpriseId_idx` ON `galleryitem` ( `enterpriseId` )",
180 "CREATE INDEX `galleryitem_modified_idx` ON `galleryitem` ( `modified` )",
181 "CREATE INDEX `galleryitem_userId_idx` ON `galleryitem` ( `userId` )",
182 "CREATE INDEX `galleryitem_remoteId_idx` ON `galleryitem` ( `remoteId` )",
183 "CREATE INDEX `galleryitem_active_idx` ON `galleryitem` ( `active` )",
184 "CREATE TRIGGER onupdate_trigger_galleryitem after update on `galleryitem` for each row when new.modified is not null and old.modified = 0 begin update `galleryitem` set modified = 1 where `galleryitem`.id = new.id; end",
185 "CREATE TABLE `observation` (`name` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
186 "CREATE INDEX `observation_enterpriseId_idx` ON `observation` ( `enterpriseId` )",
187 "CREATE INDEX `observation_modified_idx` ON `observation` ( `modified` )",
188 "CREATE INDEX `observation_date_idx` ON `observation` ( `date` )",
189 "CREATE INDEX `observation_userId_idx` ON `observation` ( `userId` )",
190 "CREATE INDEX `observation_remoteId_idx` ON `observation` ( `remoteId` )",
191 "CREATE INDEX `observation_active_idx` ON `observation` ( `active` )",
192 "CREATE TRIGGER onupdate_trigger_observation after update on `observation` for each row when new.modified is not null and old.modified = 0 begin update `observation` set modified = 1 where `observation`.id = new.id; end",
193 "CREATE TABLE `customer` (`address` VARCHAR , `addressNumber` VARCHAR , `city` VARCHAR , `complement` VARCHAR , `deliveryFee` VARCHAR , `email` VARCHAR , `name` VARCHAR , `neighborhood` VARCHAR , `phoneNumber` VARCHAR , `street` VARCHAR , `zipCode` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
194 "CREATE INDEX `customer_name_idx` ON `customer` ( `name` )",
195 "CREATE INDEX `customer_remoteId_idx` ON `customer` ( `remoteId` )",
196 "CREATE INDEX `customer_enterpriseId_idx` ON `customer` ( `enterpriseId` )",
197 "CREATE INDEX `customer_active_idx` ON `customer` ( `active` )",
198 "CREATE INDEX `customer_email_idx` ON `customer` ( `email` )",
199 "CREATE INDEX `customer_phoneNumber_idx` ON `customer` ( `phoneNumber` )",
200 "CREATE INDEX `customer_modified_idx` ON `customer` ( `modified` )",
201 "CREATE INDEX `customer_userId_idx` ON `customer` ( `userId` )",
202 "CREATE INDEX `customer_date_idx` ON `customer` ( `date` )",
203 "CREATE TRIGGER onupdate_trigger_customer after update on `customer` for each row when new.modified is not null and old.modified = 0 begin update `customer` set modified = 1 where `customer`.id = new.id; end",
204 "CREATE TABLE `enterprise` (`address` VARCHAR , `bdName` VARCHAR, `child` VARCHAR, `addressNumber` VARCHAR , `adicional` VARCHAR , `autoChangeDate` SMALLINT , `backgroundUrl` VARCHAR , `bairro` VARCHAR , `businessCode` VARCHAR , `businessName` VARCHAR , `category` BIGINT , `city` VARCHAR , `cityCode` VARCHAR , `codPag` VARCHAR , `coords` VARCHAR , `dataOnline` VARCHAR , `email` VARCHAR , `ie` VARCHAR , `logoUrl` VARCHAR , `name` VARCHAR , `phone` VARCHAR , `senha` VARCHAR , `serverHostname` VARCHAR , `serverIp` VARCHAR , `state` VARCHAR , `strikes` INTEGER , `token` VARCHAR , `uf` VARCHAR , `ufCode` VARCHAR , `versaoAntiga` INTEGER , `zipCode` VARCHAR , `active` SMALLINT , `server` VARCHAR , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
205 "CREATE INDEX `enterprise_active_idx` ON `enterprise` ( `active` )",
206 "CREATE INDEX `enterprise_modified_idx` ON `enterprise` ( `modified` )",
207 "CREATE INDEX `enterprise_remoteId_idx` ON `enterprise` ( `remoteId` )",
208 "CREATE INDEX `enterprise_userId_idx` ON `enterprise` ( `userId` )",
209 "CREATE INDEX `enterprise_date_idx` ON `enterprise` ( `date` )",
210 "CREATE INDEX `enterprise_enterpriseId_idx` ON `enterprise` ( `enterpriseId` )",
211 "CREATE TRIGGER onupdate_trigger_enterprise after update on `enterprise` for each row when new.modified is not null and old.modified = 0 begin update `enterprise` set modified = 1 where `enterprise`.id = new.id; end",
212 "CREATE TABLE `menuitemgroup` (`isLimited` SMALLINT , `limited` BIGINT , `max` BIGINT , `min` BIGINT , `name` VARCHAR , `price` VARCHAR , `pricing` INTEGER , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
213 "CREATE INDEX `menuitemgroup_userId_idx` ON `menuitemgroup` ( `userId` )",
214 "CREATE INDEX `menuitemgroup_enterpriseId_idx` ON `menuitemgroup` ( `enterpriseId` )",
215 "CREATE INDEX `menuitemgroup_date_idx` ON `menuitemgroup` ( `date` )",
216 "CREATE INDEX `menuitemgroup_remoteId_idx` ON `menuitemgroup` ( `remoteId` )",
217 "CREATE INDEX `menuitemgroup_active_idx` ON `menuitemgroup` ( `active` )",
218 "CREATE INDEX `menuitemgroup_modified_idx` ON `menuitemgroup` ( `modified` )",
219 "CREATE TRIGGER onupdate_trigger_menuitemgroup after update on `menuitemgroup` for each row when new.modified is not null and old.modified = 0 begin update `menuitemgroup` set modified = 1 where `menuitemgroup`.id = new.id; end",
220 "CREATE TABLE `pagseguro` (`metodo` VARCHAR , `parcelas` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
221 "CREATE INDEX `pagseguro_remoteId_idx` ON `pagseguro` ( `remoteId` )",
222 "CREATE INDEX `pagseguro_modified_idx` ON `pagseguro` ( `modified` )",
223 "CREATE INDEX `pagseguro_userId_idx` ON `pagseguro` ( `userId` )",
224 "CREATE INDEX `pagseguro_enterpriseId_idx` ON `pagseguro` ( `enterpriseId` )",
225 "CREATE INDEX `pagseguro_date_idx` ON `pagseguro` ( `date` )",
226 "CREATE INDEX `pagseguro_active_idx` ON `pagseguro` ( `active` )",
227 "CREATE TRIGGER onupdate_trigger_pagseguro after update on `pagseguro` for each row when new.modified is not null and old.modified = 0 begin update `pagseguro` set modified = 1 where `pagseguro`.id = new.id; end",
228 "CREATE TABLE `history` (`mesaDestino` VARCHAR , `mesaOrigem` VARCHAR , `metodo` VARCHAR , `motivo` VARCHAR , `obs` VARCHAR , `obs2` VARCHAR , `produto` VARCHAR , `quantidade` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
229 "CREATE INDEX `history_userId_idx` ON `history` ( `userId` )",
230 "CREATE INDEX `history_date_idx` ON `history` ( `date` )",
231 "CREATE INDEX `history_remoteId_idx` ON `history` ( `remoteId` )",
232 "CREATE INDEX `history_modified_idx` ON `history` ( `modified` )",
233 "CREATE INDEX `history_enterpriseId_idx` ON `history` ( `enterpriseId` )",
234 "CREATE INDEX `history_active_idx` ON `history` ( `active` )",
235 "CREATE TRIGGER onupdate_trigger_history after update on `history` for each row when new.modified is not null and old.modified = 0 begin update `history` set modified = 1 where `history`.id = new.id; end",
236 "CREATE TABLE `nfcehistory` (`cabecalho` VARCHAR , `number` VARCHAR , `serie` VARCHAR , `status` VARCHAR , `total` VARCHAR , `xml` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
237 "CREATE INDEX `nfcehistory_modified_idx` ON `nfcehistory` ( `modified` )",
238 "CREATE INDEX `nfcehistory_enterpriseId_idx` ON `nfcehistory` ( `enterpriseId` )",
239 "CREATE INDEX `nfcehistory_active_idx` ON `nfcehistory` ( `active` )",
240 "CREATE INDEX `nfcehistory_date_idx` ON `nfcehistory` ( `date` )",
241 "CREATE INDEX `nfcehistory_userId_idx` ON `nfcehistory` ( `userId` )",
242 "CREATE INDEX `nfcehistory_remoteId_idx` ON `nfcehistory` ( `remoteId` )",
243 "CREATE TRIGGER onupdate_trigger_nfcehistory after update on `nfcehistory` for each row when new.modified is not null and old.modified = 0 begin update `nfcehistory` set modified = 1 where `nfcehistory`.id = new.id; end",
244 "CREATE TABLE `configuration` (`cambio_na_conta` SMALLINT, `mini_conta` BOOLEAN , `conta_resumida` SMALLINT , `imprimir_delivery` SMALLINT , `imprimir_mix` SMALLINT , `permitido_mudar_quantidade_atend` SMALLINT , `request_numero_direta` SMALLINT , `venda_direta` SMALLINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
245 "CREATE INDEX `configuration_remoteId_idx` ON `configuration` ( `remoteId` )",
246 "CREATE INDEX `configuration_userId_idx` ON `configuration` ( `userId` )",
247 "CREATE INDEX `configuration_date_idx` ON `configuration` ( `date` )",
248 "CREATE INDEX `configuration_modified_idx` ON `configuration` ( `modified` )",
249 "CREATE INDEX `configuration_active_idx` ON `configuration` ( `active` )",
250 "CREATE INDEX `configuration_enterpriseId_idx` ON `configuration` ( `enterpriseId` )",
251 "CREATE TRIGGER onupdate_trigger_configuration after update on `configuration` for each row when new.modified is not null and old.modified = 0 begin update `configuration` set modified = 1 where `configuration`.id = new.id; end",
252 "CREATE TABLE `numbernfce` (`number` VARCHAR , `serie` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
253 "CREATE INDEX `numbernfce_active_idx` ON `numbernfce` ( `active` )",
254 "CREATE INDEX `numbernfce_date_idx` ON `numbernfce` ( `date` )",
255 "CREATE INDEX `numbernfce_userId_idx` ON `numbernfce` ( `userId` )",
256 "CREATE INDEX `numbernfce_modified_idx` ON `numbernfce` ( `modified` )",
257 "CREATE INDEX `numbernfce_remoteId_idx` ON `numbernfce` ( `remoteId` )",
258 "CREATE INDEX `numbernfce_enterpriseId_idx` ON `numbernfce` ( `enterpriseId` )",
259 "CREATE TRIGGER onupdate_trigger_numbernfce after update on `numbernfce` for each row when new.modified is not null and old.modified = 0 begin update `numbernfce` set modified = 1 where `numbernfce`.id = new.id; end",
260 "CREATE TABLE `municipio` (`cidade` VARCHAR , `codigo_cidade` VARCHAR , `codigo_uf` VARCHAR , `uf` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
261 "CREATE INDEX `municipio_date_idx` ON `municipio` ( `date` )",
262 "CREATE INDEX `municipio_enterpriseId_idx` ON `municipio` ( `enterpriseId` )",
263 "CREATE INDEX `municipio_active_idx` ON `municipio` ( `active` )",
264 "CREATE INDEX `municipio_userId_idx` ON `municipio` ( `userId` )",
265 "CREATE INDEX `municipio_modified_idx` ON `municipio` ( `modified` )",
266 "CREATE INDEX `municipio_remoteId_idx` ON `municipio` ( `remoteId` )",
267 "CREATE TRIGGER onupdate_trigger_municipio after update on `municipio` for each row when new.modified is not null and old.modified = 0 begin update `municipio` set modified = 1 where `municipio`.id = new.id; end",
268 "CREATE TABLE `addons` (`_id` VARCHAR , `amount` VARCHAR , `ativo` SMALLINT , `descricao` VARCHAR , `expiration` VARCHAR , `img` VARCHAR , `internalId` VARCHAR , `multi` SMALLINT , `nome` VARCHAR , `quantidade` INTEGER , `token` VARCHAR , `type` VARCHAR , `ultimoSync` VARCHAR , `useId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
269 "CREATE INDEX `addons_modified_idx` ON `addons` ( `modified` )",
270 "CREATE INDEX `addons_enterpriseId_idx` ON `addons` ( `enterpriseId` )",
271 "CREATE INDEX `addons_userId_idx` ON `addons` ( `userId` )",
272 "CREATE INDEX `addons_remoteId_idx` ON `addons` ( `remoteId` )",
273 "CREATE INDEX `addons_date_idx` ON `addons` ( `date` )",
274 "CREATE INDEX `addons_active_idx` ON `addons` ( `active` )",
275 "CREATE TRIGGER onupdate_trigger_addons after update on `addons` for each row when new.modified is not null and old.modified = 0 begin update `addons` set modified = 1 where `addons`.id = new.id; end",
276 "CREATE TABLE `timesync` (`sync` VARCHAR , `time` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
277 "CREATE INDEX `timesync_active_idx` ON `timesync` ( `active` )",
278 "CREATE INDEX `timesync_userId_idx` ON `timesync` ( `userId` )",
279 "CREATE INDEX `timesync_remoteId_idx` ON `timesync` ( `remoteId` )",
280 "CREATE INDEX `timesync_modified_idx` ON `timesync` ( `modified` )",
281 "CREATE INDEX `timesync_enterpriseId_idx` ON `timesync` ( `enterpriseId` )",
282 "CREATE INDEX `timesync_date_idx` ON `timesync` ( `date` )",
283 "CREATE TRIGGER onupdate_trigger_timesync after update on `timesync` for each row when new.modified is not null and old.modified = 0 begin update `timesync` set modified = 1 where `timesync`.id = new.id; end",
284 "CREATE TABLE `dispositivos` (`_id` VARCHAR , `token` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
285 "CREATE INDEX `dispositivos_modified_idx` ON `dispositivos` ( `modified` )",
286 "CREATE INDEX `dispositivos_remoteId_idx` ON `dispositivos` ( `remoteId` )",
287 "CREATE INDEX `dispositivos_date_idx` ON `dispositivos` ( `date` )",
288 "CREATE INDEX `dispositivos_active_idx` ON `dispositivos` ( `active` )",
289 "CREATE INDEX `dispositivos_userId_idx` ON `dispositivos` ( `userId` )",
290 "CREATE INDEX `dispositivos_enterpriseId_idx` ON `dispositivos` ( `enterpriseId` )",
291 "CREATE TRIGGER onupdate_trigger_dispositivos after update on `dispositivos` for each row when new.modified is not null and old.modified = 0 begin update `dispositivos` set modified = 1 where `dispositivos`.id = new.id; end",
292 "CREATE TABLE `numeracaodireta` (`numero` INTEGER , `tempTableId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
293 "CREATE INDEX `numeracaodireta_modified_idx` ON `numeracaodireta` ( `modified` )",
294 "CREATE INDEX `numeracaodireta_date_idx` ON `numeracaodireta` ( `date` )",
295 "CREATE INDEX `numeracaodireta_active_idx` ON `numeracaodireta` ( `active` )",
296 "CREATE INDEX `numeracaodireta_remoteId_idx` ON `numeracaodireta` ( `remoteId` )",
297 "CREATE INDEX `numeracaodireta_enterpriseId_idx` ON `numeracaodireta` ( `enterpriseId` )",
298 "CREATE INDEX `numeracaodireta_userId_idx` ON `numeracaodireta` ( `userId` )",
299 "CREATE TRIGGER onupdate_trigger_numeracaodireta after update on `numeracaodireta` for each row when new.modified is not null and old.modified = 0 begin update `numeracaodireta` set modified = 1 where `numeracaodireta`.id = new.id; end",
300 "CREATE TABLE `usage` (`_id` VARCHAR , `expiration` VARCHAR , `internalId` VARCHAR , `licenseId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
301 "CREATE INDEX `usage_modified_idx` ON `usage` ( `modified` )",
302 "CREATE INDEX `usage_active_idx` ON `usage` ( `active` )",
303 "CREATE INDEX `usage_enterpriseId_idx` ON `usage` ( `enterpriseId` )",
304 "CREATE INDEX `usage_userId_idx` ON `usage` ( `userId` )",
305 "CREATE INDEX `usage_remoteId_idx` ON `usage` ( `remoteId` )",
306 "CREATE INDEX `usage_date_idx` ON `usage` ( `date` )",
307 "CREATE TRIGGER onupdate_trigger_usage after update on `usage` for each row when new.modified is not null and old.modified = 0 begin update `usage` set modified = 1 where `usage`.id = new.id; end",
308 "insert into `sqlite_sequence` (name, seq) values (\"payment\", 1)",
309 "insert into `sqlite_sequence` (name, seq) values (\"addons\",1)",
310 "insert into `sqlite_sequence` (name, seq) values (\"usage\",1)",
311 "insert into `sqlite_sequence` (name, seq) values (\"order\", 1)",
312 "insert into `sqlite_sequence` (name, seq) values (\"ordersequence\", 1)",
313 "insert into `sqlite_sequence` (name, seq) values (\"temptable\", 1)"
314 ]
315
316 var defaultUrl = '"https://static.carrefour.com.br/medias/sys_master/images/images/h3d/heb/h00/h00/12175673917470.jpg"'
317
318 //Create machine in db
319 var machine = await new req.db.Machine();
320 machine.userId = mongoose.Types.ObjectId(user._id);
321 machine.type = 'PDV_master';
322 machine.name = user.name;
323 machine.serialNumber = machine._id.toString();
324 await machine.save();
325
326 //Added machine to users machine array
327 user.machines.push(mongoose.Types.ObjectId(machine._id));
328 await user.save()
329
330 //Reduced schema
331 let xSchema = schema.reduce((prev, curr, index) => {
332 return prev + ';' + curr
333 });
334
335 // Path to databases
336 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
337 //Details
338 var eventDetails = req.body;
339
340 // Socket stuff
341 const protocol = req.protocol;
342 var key = '232312321123123'
343 var token = JWT.sign({
344 type: 'newUser',
345 id: machine._id,
346 host: protocol + '://' + req.headers.host
347 }, key);
348
349
350 var eventDate = eventDetails.initialDate ? new Date(eventDetails.initialDate) : new Date();
351 var simpleDate = new Date().getFullYear() + '-' + ((new Date(eventDate).getMonth() + 1).toString().length == 1 ? '0' + (new Date(eventDate).getMonth() + 1).toString() : (new Date(eventDate).getMonth() + 1).toString()) + '-' + ((new Date(eventDate).getDate()).toString().length == 1 ? '0' + (new Date(eventDate).getDate()).toString() : (new Date(eventDate).getDate()).toString())
352
353
354 // Creates array to feed the database once created
355 var toExecute = [
356
357 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Real"', 0, 1, '"R$"', 1, 1, 2]},
358 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"USD"','"Dolar"', 1, 3.8, '"U$"', 1, 0, 2]},
359 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"PYG"','"Guarani"', 0, 1500, '"G$"', 1, 0, 0]},
360 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"ARS"','"Pesos"', 1, 0.1, '"P$"', 1, 0, 0]},
361 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Débito"', 0, 1, '"R$"', 0, 0, 2]},
362 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Crédito"', 0, 1, '"R$"', 0, 0, 2]},
363 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"PagSeguro"', 0, 1, '"R$"', 0, 0, 2]},
364 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Desconto"', 0, 1, '"R$"', 0, 0, 2]},
365 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces', 'active'], values: ['"BRL"','"Fundo de Caixa"', 0, 1, '"R$"', 0, 0, 2, 0]},
366 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces', 'active'], values: ['"BRL"','"Sangria"', 0, 1, '"R$"', 0, 0, 2, 0]},
367 {tableName: 'user', fields: ['ativo', 'logged', 'name', 'password', 'roles', 'active'], values: ['"Active"', 1, '"Administrador"', '"1234"', '"[\'ADMIN\',\'ATTENTION\',\'CASHIER\']"', 1]},
368 {tableName: 'productionpoint', fields: ['name', 'address', 'type', 'status'], values: ['"Padrao"', '""', '"printer"', '"admin"']},
369 {tableName: 'menuitemgroup', fields: ['name'], values: ['"Diversos"']},
370 {tableName: 'menuitem', fields: ['name', 'groupName', 'price', 'imageUrl', 'ncm', 'csosn', 'origem'], values: ['"X-SALADA"', '"Diversos"', 4, defaultUrl, '"21069090"', '"102"', '"0"']},
371 {tableName: 'observation', fields: ['name'], values: ['"Sem Gelo"']},
372 {tableName: 'observation', fields: ['name'], values: ['"Com Limao"']},
373 {tableName: 'observation', fields: ['name'], values: ['"Sem Cebola"']},
374 {tableName: 'enterprise', fields: [
375 'name', 'businessCode', 'businessName', 'strikes', 'versaoAntiga', 'codPag', 'email', 'senha', 'token',
376 'date', 'autoChangeDate', 'logoUrl', 'backgroundUrl', 'bdName', 'child', 'address', 'addressNumber', 'adicional',
377 'bairro', 'city', 'uf', 'server'],
378 values: [stringToSqliteString(user.name), '"11111111111"', stringToSqliteString(user.name), 0, 19,'""',
379 '"' + machine.name + '"','"'+ user.phone + '"', '"'+ token + '"', '"'+ simpleDate + '"', 0,
380 '"http://web.touchped.com/dashboard/assets/icon.png"',
381 '"https://cdnbr.nyc3.cdn.digitaloceanspaces.com/tmp/maxresdefault-102.jpg"', '""', '"1"',
382 stringToSqliteString(eventDetails.address),stringToSqliteString(eventDetails.addressNumber),stringToSqliteString(eventDetails.complement),stringToSqliteString(eventDetails.neighborhood),
383 stringToSqliteString(eventDetails.city),stringToSqliteString(eventDetails.uf), '""']},
384 {tableName: 'numeracaodireta', fields: ['numero'], values: [1]},
385 {tableName: 'configuration', fields: ['imprimir_mix', 'imprimir_delivery', 'venda_direta', 'request_numero_direta', 'conta_resumida', 'permitido_mudar_quantidade_atend', 'cambio_na_conta', 'mini_conta'], values: [1,1,1,0,1,0,1, (req.body.miniAccount ? 1 : 0)]},
386 {tableName: 'basetable', fields: ['number'],values: [1]},
387 {tableName: 'basetable', fields: ['number'],values: [2]},
388 {tableName: 'basetable', fields: ['number'],values: [3]},
389 {tableName: 'basetable', fields: ['number'],values: [4]},
390 {tableName: 'basetable', fields: ['number'],values: [5]},
391 {tableName: 'basetable', fields: ['number'],values: [6]},
392 {tableName: 'basetable', fields: ['number'],values: [7]},
393 {tableName: 'basetable', fields: ['number'],values: [8]},
394 {tableName: 'basetable', fields: ['number'],values: [9]},
395 {tableName: 'basetable', fields: ['number'],values: [10]},
396 {tableName: 'basetable', fields: ['number'],values: [11]},
397 {tableName: 'basetable', fields: ['number'],values: [12]},
398 {tableName: 'basetable', fields: ['number'],values: [13]},
399 {tableName: 'basetable', fields: ['number'],values: [14]},
400 {tableName: 'basetable', fields: ['number'],values: [15]},
401 {tableName: 'basetable', fields: ['number'],values: [16]},
402 {tableName: 'basetable', fields: ['number'],values: [17]},
403 {tableName: 'basetable', fields: ['number'],values: [18]},
404 {tableName: 'basetable', fields: ['number'],values: [19]},
405 {tableName: 'basetable', fields: ['number'],values: [20]},
406 {tableName: 'basetable', fields: ['number'],values: [21]},
407 {tableName: 'basetable', fields: ['number'],values: [22]},
408 {tableName: 'basetable', fields: ['number'],values: [23]},
409 {tableName: 'basetable', fields: ['number'],values: [24]},
410 {tableName: 'basetable', fields: ['number'],values: [25]},
411 {tableName: 'basetable', fields: ['number'],values: [26]},
412 {tableName: 'basetable', fields: ['number'],values: [27]},
413 {tableName: 'basetable', fields: ['number'],values: [28]},
414 {tableName: 'basetable', fields: ['number'],values: [29]},
415 {tableName: 'basetable', fields: ['number'],values: [30]},
416
417 ]
418
419 // Mpas arrays and set their active and remoteId fields
420 var menuGroupId = '';
421 var productionPointId = '';
422 toExecute.map(item => {
423 var remoteId = generator.generate();
424 item.fields.push('remoteId')
425 item.values.push('"' + remoteId + '"');
426 item.fields.push('active');
427 item.values.push(1);
428
429 item.fields.push('modified')
430 item.values.push(0)
431 if (item.tableName == 'menuitemgroup') {
432 menuGroupId = '"' + remoteId + '"';
433 }
434 if (item.tableName == 'productionpoint') {
435 productionPointId = '"' + remoteId + '"';
436 }
437 if (item.tableName == 'menuitem') {
438 item.fields.push('menuItemGroupId');
439 item.values.push(menuGroupId);
440 item.fields.push('productionPointId');
441 item.values.push(productionPointId);
442 console.log(item.fields.length, item.values.length, item.tableName)
443 return item
444 }else {
445 console.log(item.fields.length, item.values.length, item.tableName)
446
447 return item
448 }
449 })
450
451 // If master Exists
452 const fileExists = fs.existsSync(DATA_DIR + '/' + machine._id + '.db');
453 // Final path to masterDb
454 const finalPath = DATA_DIR + '/' + machine._id + '.db';
455
456 // Creating masterDb
457 if (fileExists) {
458 res.send(user);
459 } else {
460 fs.writeFile(finalPath, '', (errFs) => {
461
462 // Initialize masterDb with finalPath
463 var dbSqlite = new sqlite3.Database(finalPath);
464 // Executes the schema on the masterDb
465 dbSqlite.exec(xSchema, (err) => {
466 // Reduce the data to be fed to the masterDb
467 var feeder = toExecute.reduce((prevVal, currVal, index) => {
468 return prevVal + ('INSERT INTO ' + currVal.tableName + ' (' + currVal.fields.join(',') + ') ' + 'values (' + currVal.values.join(',') + '); ')
469 }, '')
470
471 // Execute the feeder in the masterDb
472 dbSqlite.exec(feeder, async (errExec2) => {
473 if (errExec2) {
474 console.log(errExec2);
475 res.status(500).send(errExec2);
476 } else {
477 // Create first Child
478 var index = 0;
479 var offset = 0;
480 var newMachine = new req.db.Machine();
481 newMachine.userId = mongoose.Types.ObjectId(user._id);
482 newMachine.type = 'PDV_child';
483 newMachine.name = machine.name + '__' + (index + 1 + offset);
484 newMachine.serialNumber = machine._id.toString();
485 await newMachine.save();
486
487 const newPath = DATA_DIR + '/' + newMachine._id + '.db';
488
489 // Duplicate masterDb on childDb
490 fs.copyFile(DATA_DIR + '/' + machine._id + '.db', newPath, (err) => {
491 if (err) throw err;
492 // Inititalizes child db
493 var tempDb = new sqlite3.Database(newPath);
494
495 // Clear child db and set its sequence offset to lastChilds + 1kk
496 tempDb.exec('delete from `order`; delete from `payment`; delete from temptable; delete from temporder; delete from ordersequence; delete from history; delete from nfcehistory; update sqlite_sequence set seq = '+((index + 1 + offset) * 1000000)+' where name not in ("productionpoint", "menuitemgroup", "menuitem", "observation", "enterprise", "paymentmethod"); update user set remoteId = '+ ('"' + machine._id.toString() + '"')+', name = ' + ('"' + (machine.name + '__' + (index + 1 + offset) + '"')), async (err2) => {
497 if (err2) throw err2;
498 user.machines.push(mongoose.Types.ObjectId(newMachine._id));
499 await user.save()
500 res.send(user);
501
502 })
503
504 });
505 }
506 })
507
508 })
509 });
510
511 }
512 }else {
513 res.status(400).send({status: 0, msg: 'User not created'});
514 }
515 })
516
517
518})
519
520// /auth/super/restricted/user/upsert?partnerId
521router.post('/restricted/user/upsert', async (req, res) => {
522
523 let partnerId = req.query.partnerId || null;
524 let password = req.body.password ? req.body.password : digitGenerator(6);
525 let user = await new req.db.User();
526 user.name = req.body.name;
527 user.phone = req.body.phone;
528 user.login = req.body.phone;
529 user.type = 'user';
530
531 user.password = sha1("AsDpw" + password + "$ALTeD");
532 user.initialDate = new Date(req.body.initialDate);
533 user.finalDate = new Date(req.body.finalDate);
534 user.address = req.body.address;
535 user.partnerId = partnerId ? mongoose.Types.ObjectId(partnerId) : null;
536
537 let partner = await req.db.Partners.findOne({_id: mongoose.Types.ObjectId(partnerId)});
538 textToSend = 'Bemvindo ao ' + (partnerId ? partner.name : 'TouChefs') + '!. \nSua senha de acesso: ' + password + '.\nPara ativar essa conta faça seu primeiro login no app ou no site.' + '\n_Caso não tenha solicitado a criação dessa conta, ignore esta mensagem_ ';
539 sendMessage(textToSend, user.phone, async (result) => {
540 if (result) {
541 await user.save();
542 res.send(user);
543 }else {
544 res.status(400).send({status: 0, msg: 'User not created'});
545 }
546 })
547
548
549})
550
551
552
553router.put('/restricted/user/upsert', async (req, res) => {
554 let partnerId = req.query.partnerId || null;
555 let userId = req.query.userId || null;
556 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(userId), partnerId: mongoose.Types.ObjectId(partnerId)});
557 if (user) {
558 user.name = req.body.name;
559 user.phone = req.body.phone;
560 user.login = req.body.login;
561 user.initialDate = new Date(req.body.initialDate);
562 user.finalDate = new Date(req.body.finalDate);
563 user.address = req.body.address;
564 await user.save();
565 res.send(user);
566 } else {
567 res.status(401).send({status: 0, msg: 'user does not exist as a client of this partner'})
568 }
569})
570
571
572router.get('/restricted/find/user', async (req, res) => {
573 let partnerId = req.query.partnerId;
574 let userId = req.query.userId;
575 console.log(partnerId, userId, req.query, 'QEURYT IN FIND');
576 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(userId)});
577 if (user) {
578 res.send(user);
579 } else {
580 res.status(401).send({status: 0, msg: 'user does not exist as a client of this partner'})
581 }
582
583})
584
585router.post('/login', async (req, res) => {
586
587
588 let user = req.body.username;
589 var token = 'FkXeAg43fBM3rgU4kPf4KbgPkJRCH2hX';
590 let expected = 'touchadmin';
591 let password = sha1("AsDpw" + req.body.password + "$ALTeD");
592
593 var partner = await req.db.Partners.findOne({'$or': [{name: user}, {contactName: user}], password: password});
594 console.log('LOGIN password', password, user);
595 const protocol = req.protocol;
596 if (partner) {
597 token = token + partner._id.toString();
598
599 var tok = JWT.sign({
600 type: 'newUser',
601 id: token,
602 host: protocol + '://' + req.headers.host
603 }, '232312321123123');
604
605 res.send({token: tok, partnerId: partner._id});
606
607 } else {
608 token = token + 'touchadmin'
609 var tok = JWT.sign({
610 type: 'newUser',
611 id: token,
612 host: protocol + '://' + req.headers.host
613 }, '232312321123123');
614
615
616 if (req.body.password == expected) {
617 res.send({token: tok, partnerId: null});
618 }else {
619 res.status(401).send({status: 0, msg: 'invalid credentials', attemptsLeft: 1});
620 }
621 }
622
623})
624
625
626router.get('/restricted/users/search/:partnerId', async (req, res) => {
627 let limit = req.query.limit || 25;
628 let page = req.query.page || 1;
629 let isPdv = req.query.type == 'pdv';
630 if (req.params.partnerId == '5d5414242955a9628a09ffca') {
631 var users = await req.db.User.find(isPdv ? {type: 'pdv',$or: [{login: {$regex: req.query.searchTerm, $options: 'i'}}, {name: {$regex: req.query.searchTerm, $options: 'i'}}]} : {'$or': [{type: 'user'}, {type: null}], $or: [{login: {$regex: req.query.searchTerm, $options: 'i'}}, {name: {$regex: req.query.searchTerm, $options: 'i'}}]}, null, {limit: Number(limit), skip: Number(limit) * (Number(page) -1)});
632 var countUsers = await req.db.User.countDocuments((isPdv ? {type: 'pdv', login: {$regex: req.query.searchTerm, $options: 'i'}} : {'$or': [{type: 'user'}, {type: null}], login: {$regex: req.query.searchTerm, $options: 'i'}}));
633 res.send({docs: users, count: countUsers});
634 } else {
635 const users = await req.db.User.find((isPdv ? {type: 'pdv',$or: [{login: {$regex: req.query.searchTerm, $options: 'i'}}, {name: {$regex: req.query.searchTerm, $options: 'i'}}], partnerId: mongoose.Types.ObjectId(req.params.partnerId)} : {'$or': [{type: 'user'}, {type: null}],$or: [{login: {$regex: req.query.searchTerm, $options: 'i'}}, {name: {$regex: req.query.searchTerm, $options: 'i'}}], partnerId: mongoose.Types.ObjectId(req.params.partnerId)}), null, {limit: Number(limit), skip: Number(limit) * (Number(page) -1)});
636 const countUsers = await req.db.User.countDocuments((isPdv ? {type: 'pdv',phone: {$regex: req.query.searchTerm, $options: 'i'}, partnerId: mongoose.Types.ObjectId(req.params.partnerId)} : {'$or': [{type: 'user'}, {type: null}],phone: {$regex: req.query.searchTerm, $options: 'i'}, partnerId: mongoose.Types.ObjectId(req.params.partnerId)}));
637 res.send({docs: users, count: countUsers});
638 }
639
640})
641
642
643// get users with paging and type of user
644router.get('/restricted/users/:partnerId', async (req, res) => {
645 let limit = req.query.limit || 25;
646 let page = req.query.page || 1;
647 let isUser = req.query.type == 'pdv';
648 if (req.params.partnerId == '5d5414242955a9628a09ffca') {
649 const users = await req.db.User.find((isUser ? {type: 'pdv'} : {'$or': [{type: null}, {type: 'user'}]}), null, {limit: Number(limit), skip: Number(limit) * (Number(page) -1)});
650 const countUsers = await req.db.User.countDocuments((isUser ? {type: 'pdv'} : {'$or': [{type: null}, {type: 'user'}]}));
651 res.send({docs: users, count: countUsers});
652 } else {
653 const users = await req.db.User.find((isUser ? {type: 'pdv', partnerId: mongoose.Types.ObjectId(req.params.partnerId)} : {'$or': [{type: null}, {type: 'user'}], partnerId: mongoose.Types.ObjectId(req.params.partnerId)}), null, {limit: Number(limit), skip: Number(limit) * (Number(page) -1)});
654 const countUsers = await req.db.User.countDocuments((isUser ? {type: 'pdv', partnerId: mongoose.Types.ObjectId(req.params.partnerId)} : {'$or': [{type: null}, {type: 'user'}], partnerId: mongoose.Types.ObjectId(req.params.partnerId)}));
655 res.send({docs: users, count: countUsers});
656 }
657
658})
659
660router.get('/white', async (req, res) => {
661 let partners = await req.db.Partners.find().lean();
662 let partner = null;
663 partner = partners.filter(item => req.query.hostname.includes(item.domain))
664 if (partner.length > 0) {
665 delete partner[0].password;
666 res.send(partner[0]);
667 } else {
668 res.status(404).send({status: 1, msg: '123'});
669 }
670})
671
672
673// Get user details and its machines by paremetrized id
674router.get('/restricted/user/:id', async (req, res) => {
675 const users = await req.db.User.findOne({_id: mongoose.Types.ObjectId(req.params.id)});
676 let resp = users.toObject();
677 let machines = await req.db.Machine.find({"_id": {
678 $in: resp.machines
679 }});
680 resp.machines = machines;
681 if (resp.machines[0].type == 'PDV_master') {
682 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
683 var db = new sqlite3.Database(DATA_DIR + '/' + resp.machines[0]._id + '.db');
684 db.all('select city from enterprise', (err, rows) => {
685 res.send(resp);
686 })
687
688
689 }else {
690
691 res.send(resp);
692 }
693
694})
695
696// Gets all the databases in the parametrized userId
697router.get('/restricted/databases/:userId', async (req, res) => {
698 const machines = await req.db.Machine.find({userId: mongoose.Types.ObjectId(req.params.userId)});
699 res.send(machines);
700})
701
702
703function sendMessage(text, number, cb) {
704 let reg = new RegExp(/^\d{10,13}$/);
705 let userPhone = ((number.startsWith('55') || number.startsWith('595') ? number : '55' + number))
706 if(reg.test(userPhone)) {
707 var options = { method: 'POST',
708 url: 'http://138.68.213.166/create',
709 headers:
710 { 'cache-control': 'no-cache',
711 Connection: 'keep-alive',
712 'Accept-Encoding': 'gzip, deflate',
713 Host: '138.68.213.166',
714 'Cache-Control': 'no-cache',
715 Accept: '/',
716 'User-Agent': 'nodejs-express',
717 'Content-Type': 'application/json',
718 Authorization: 'A3645B79F7CB9F53F583D3531D638509' },
719 body: { number: userPhone, text: text },
720 json: true };
721
722 request(options, function (error, response, body) {
723 if (error) cb(false);
724 if (!error) cb(true);
725
726 });
727
728 }else {
729 cb(false)
730 }
731}
732
733function sendResetPassword(user, newPassword, res) {
734
735 let textToSend = 'Nova senha: ' + newPassword;
736 console.log(((user.phone.startsWith('55') || user.phone.startsWith('595') ? user.phone : '55' + user.phone)), 'phone stuff');
737 var options = { method: 'POST',
738 url: 'http://138.68.213.166/create',
739 headers:
740 { 'cache-control': 'no-cache',
741 Connection: 'keep-alive',
742 'Accept-Encoding': 'gzip, deflate',
743 Host: '138.68.213.166',
744 'Cache-Control': 'no-cache',
745 Accept: '/',
746 'User-Agent': 'nodejs-express',
747 'Content-Type': 'application/json',
748 Authorization: 'A3645B79F7CB9F53F583D3531D638509' },
749 body: { number: ((user.phone.startsWith('55') || user.phone.startsWith('595') ? user.phone : '55' + user.phone)), text: textToSend },
750 json: true };
751
752 request(options, function (error, response, body) {
753 if (error) throw new Error(error);
754 res.send({status: 1, user: user});
755 });
756
757}
758
759function checkPhoneNumber(phone) {
760 let reg = new RegExp(/^\d{10,13}$/);
761 return reg.test(phone);
762}
763
764
765router.get('/restricted/reset/:id', async (req, res) => {
766 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(req.params.id)});
767 if (checkPhoneNumber(user.phone)) {
768 let newPassword = digitGenerator(6);
769 let hashed = sha1("AsDpw" + newPassword + "$ALTeD");
770 user.password = hashed;
771 await user.save();
772 sendResetPassword(user, newPassword, res);
773 } else {
774 user.password = sha1("AsDpw" + '1234' + "$ALTeD");
775 let newPassword = 1234;
776 let hashed = sha1("AsDpw" + 1234 + "$ALTeD");
777 user.password = hashed;
778 await user.save();
779 res.send({status: 1});
780 //sendResetPassword(user, newPassword, res)
781 }
782
783})
784
785// DEPRECATED use /restricted/database/sql/:databaseId instead
786//Executes a sql command
787router.post('/restricted/execute/:userId/:databaseId', async (req, res) => {
788 const machines = await req.db.Machine.findOne({
789 userId: mongoose.Types.ObjectId(req.params.userId),
790 _id: mongoose.Types.ObjectId(req.params.databaseId)
791 });
792 if (machines) {
793 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
794 var db = new sqlite3.Database(DATA_DIR + '/' + req.params.databaseId + '.db');
795 var type = req.body.type || 'all';
796 db[type](req.body.command, (err, rows) => {
797 if (err) {
798 res.status(500).send(err)
799 } else {
800 if (rows) {
801 res.send(rows);
802 } else {
803 res.send({status: 1, msg: 'Executed command ' + req.body.command})
804 }
805 }
806 })
807 } else {
808 res.status(404).send({status: 0, msg: 'Machine not found'})
809 }
810})
811
812
813
814// Updates a machine by parametrized userId and databaseId
815router.put('/restricted/database/:userId/:databaseId', async (req, res) => {
816 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(req.params.userId)});
817 if (user) {
818 let machine = await req.db.Machine.findOne({_id: mongoose.Types.ObjectId(req.params.databaseId)});
819 if (machine) {
820 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
821 let db = new sqlite3.Database(DATA_DIR + req.params.databaseId + '.db');
822 machine.name = req.body.name;
823 await machine.save();
824 db.run('update user set name = ? where id = 1', [req.body.name], (err) => {
825 if (err) throw err;
826 res.send(machine);
827 })
828 }else {
829 res.status(404).send({status: 0, msg: 'Databse not found'})
830 }
831 } else {
832 res.status(401).send({status: 0, msg: 'Unauthorized'})
833 }
834})
835
836// Deletes a database by parametrized userId and databaseId
837router.delete('/restricted/database/:userId/:databaseId', async (req, res) => {
838 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(req.params.userId)});
839 if (user) {
840 let machine = await req.db.Machine.deleteOne({_id: mongoose.Types.ObjectId(req.params.databaseId)});
841 await req.db.User.update({_id: mongoose.Types.ObjectId(user._id)}, {$pull: {machines: mongoose.Types.ObjectId(req.params.databaseId)}});
842
843 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
844 res.send({status: 3, msg: 'Deleted machine but could not delete file'});
845 }else {
846 res.status(401).send({status: 0, msg: 'Unauthorized'});
847 }
848})
849
850
851// Deletes a user by parametrized userId
852router.delete('/restricted/user/:userId', async (req, res) => {
853 let user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(req.params.userId)});
854 console.log('--------------------------', user, 'DELETE USER ---------------------------------');
855 res.send({status: 1, msg: 'removed user'});
856})
857
858
859router.get('/user/bymaster/:masterId', async (req, res) => {
860 let master = await req.db.Machine.findOne({_id: mongoose.Types.ObjectId(req.params.masterId)}).lean();
861 let user = await req.db.User.findOne({machines: mongoose.Types.ObjectId(req.params.masterId)}).lean();
862 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
863 var db = new sqlite3.Database(DATA_DIR + '/' + req.params.masterId + '.db');
864 db.all('select city from enterprise', (err, rows) => {
865 if(err) console.warn(err);
866 console.log(rows, 'ROWS IN CITY GET')
867
868 let response = {user: (user || {name: 'NAO ENCONTRADO'}), master: (master || {name: 'NAO ENCONTRADO', date: new Date()})}
869 response.master.city = rows[0].city
870 response.user.city = rows[0].city
871 res.send(response);
872 })
873})
874
875
876// Create a child database based on a masterDb
877router.get('/restricted/database/create/child', async (req, res) => {
878 let children = req.query.children || 1;
879 var initialChildren = await req.db.Machine.countDocuments({serialNumber: req.query.masterId, type: 'PDV_child'});
880 var created = [];
881 var index = 0;
882 var offset = initialChildren;
883 var masterMachine = await req.db.Machine.findOne({_id: mongoose.Types.ObjectId(req.query.masterId)});
884 var user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(masterMachine.userId)});
885
886 (async function next() {
887
888 if (children > index) {
889 var machine = new req.db.Machine();
890 machine.userId = mongoose.Types.ObjectId(masterMachine.userId);
891 machine.type = 'PDV_child';
892 await machine.save();
893 machine.name = masterMachine.name + '__' + (index + 1 + offset);
894 machine.serialNumber = masterMachine._id.toString();
895 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
896 await machine.save();
897 const finalPath = DATA_DIR + '/' + machine._id + '.db';
898
899 fs.copyFile(DATA_DIR + '/' + req.query.masterId + '.db', finalPath, (err) => {
900 if (err) throw err;
901 var tempDb = new sqlite3.Database(finalPath);
902
903 tempDb.exec('delete from `order`; delete from `payment`; delete from temptable; delete from temporder; delete from ordersequence; delete from history; delete from nfcehistory; update sqlite_sequence set seq = '+((index + 1 + offset) * 1000000)+' where name not in ("productionpoint", "menuitemgroup", "menuitem", "observation", "enterprise", "paymentmethod"); update user set remoteId = '+ ('"' + machine._id.toString() + '"')+', name = ' + ('"' + (masterMachine.name + '__' + (index + 1 + offset) + '"')), (err2) => {
904 if (err2) throw err2;
905
906 index ++;
907
908 created.push(machine);
909 next();
910 })
911
912 });
913
914 }else {
915 user.machines = user.machines.concat(created.map(item => mongoose.Types.ObjectId(item._id)));
916 user.save();
917 res.send(created);
918 delete next;
919 }
920
921
922 })();
923
924
925
926
927})
928
929function generateTables(amount) {
930 let y = new Promise((resolve, reject) => {
931 var result = [];
932
933 for (let i = 1; i>amount; i++) {
934 result.push({
935 tableName: 'basetable',
936 fields: [
937 'number'
938 ],
939 values: [i.toString()]
940 })
941 }
942 resolve(result)
943 })
944 y.then((mesaje) => {
945 return mesaje
946 })
947
948}
949
950
951function stringToSqliteString(text) {
952 return '"' + text + '"'
953}
954
955// Creates a event user and its masterDb
956router.post('/restricted/pdv/create/:partnerId', async (req, res) => {
957 let schema = [
958 "CREATE TABLE android_metadata (locale TEXT)",
959 "CREATE TABLE `sequential` (`d` VARCHAR , `i` INTEGER PRIMARY KEY AUTOINCREMENT )",
960 "CREATE TABLE `config` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `mode` INTEGER , `name` VARCHAR , `productionPointId` VARCHAR , `serverIp` VARCHAR , `userId` VARCHAR , `imprimir_conta_local` BOOLEAN, `imprimir_pedido_local` BOOLEAN)",
961 "CREATE TABLE `whitelabel` (`_id` VARCHAR , `code` VARCHAR , `color` VARCHAR , `contactName` VARCHAR , `domain` VARCHAR , `email` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `key` VARCHAR , `logoUrl` VARCHAR , `name` VARCHAR , `phoneNumber` VARCHAR , `secundaryColor` VARCHAR , `textColor` VARCHAR , `uuid` VARCHAR )",
962 "CREATE TABLE `basetable` (`number` VARCHAR , `status` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
963 "CREATE INDEX `basetable_remoteId_idx` ON `basetable` ( `remoteId` )",
964 "CREATE INDEX `basetable_modified_idx` ON `basetable` ( `modified` )",
965 "CREATE INDEX `basetable_enterpriseId_idx` ON `basetable` ( `enterpriseId` )",
966 "CREATE INDEX `basetable_date_idx` ON `basetable` ( `date` )",
967 "CREATE INDEX `basetable_userId_idx` ON `basetable` ( `userId` )",
968 "CREATE INDEX `basetable_active_idx` ON `basetable` ( `active` )",
969 "CREATE TRIGGER onupdate_trigger_basetable after update on `basetable` for each row when new.modified is not null and old.modified = 0 begin update `basetable` set modified = 1 where `basetable`.id = new.id; end",
970 "CREATE TABLE `user` (`ativo` VARCHAR , `logged` SMALLINT , `name` VARCHAR , `password` VARCHAR , `roles` VARCHAR , `token` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
971 "CREATE INDEX `user_active_idx` ON `user` ( `active` )",
972 "CREATE INDEX `user_remoteId_idx` ON `user` ( `remoteId` )",
973 "CREATE INDEX `user_modified_idx` ON `user` ( `modified` )",
974 "CREATE INDEX `user_enterpriseId_idx` ON `user` ( `enterpriseId` )",
975 "CREATE INDEX `user_userId_idx` ON `user` ( `userId` )",
976 "CREATE INDEX `user_date_idx` ON `user` ( `date` )",
977 "CREATE TRIGGER onupdate_trigger_user after update on `user` for each row when new.modified is not null and old.modified = 0 begin update `user` set modified = 1 where `user`.id = new.id; end",
978 "CREATE TABLE `order` (`attendantNotified` VARCHAR , `closed` SMALLINT , `deleted` SMALLINT , `menuItemDetails` VARCHAR , `menuItemId` VARCHAR , `name` VARCHAR , `nfceImp` VARCHAR , `observations` VARCHAR , `orderSequenceId` VARCHAR , `price` VARCHAR , `productionCompleted` VARCHAR , `productionPointId` VARCHAR , `qty` BIGINT , `sequence` BIGINT , `tempTableId` VARCHAR , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `rePrint` BOOLEAN, `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
979 "CREATE INDEX `order_modified_idx` ON `order` ( `modified` )",
980 "CREATE INDEX `order_remoteId_idx` ON `order` ( `remoteId` )",
981 "CREATE INDEX `order_userId_idx` ON `order` ( `userId` )",
982 "CREATE INDEX `order_enterpriseId_idx` ON `order` ( `enterpriseId` )",
983 "CREATE INDEX `order_date_idx` ON `order` ( `date` )",
984 "CREATE INDEX `order_active_idx` ON `order` ( `active` )",
985 "CREATE TRIGGER onupdate_trigger_order after update on `order` for each row when new.modified is not null and old.modified = 0 begin update `order` set modified = 1 where `order`.id = new.id; end",
986 "CREATE TABLE `payment` (`amount` VARCHAR , `codigoPag` VARCHAR, `idPag` VARCHAR, `closed` SMALLINT , `closedAdiant` SMALLINT , `convertedAmount` VARCHAR , `deleted` SMALLINT , `iso` VARCHAR , `paymentMethodId` VARCHAR , `paymentMethodName` VARCHAR , `tempTableId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
987 "CREATE INDEX `payment_enterpriseId_idx` ON `payment` ( `enterpriseId` )",
988 "CREATE INDEX `payment_active_idx` ON `payment` ( `active` )",
989 "CREATE INDEX `payment_date_idx` ON `payment` ( `date` )",
990 "CREATE INDEX `payment_userId_idx` ON `payment` ( `userId` )",
991 "CREATE INDEX `payment_modified_idx` ON `payment` ( `modified` )",
992 "CREATE INDEX `payment_remoteId_idx` ON `payment` ( `remoteId` )",
993 "CREATE TRIGGER onupdate_trigger_payment after update on `payment` for each row when new.modified is not null and old.modified = 0 begin update `payment` set modified = 1 where `payment`.id = new.id; end",
994 "CREATE TABLE `paymentmethod` (`account` VARCHAR , `allowOffset` SMALLINT , `baseCurrency` SMALLINT , `decimalPlaces` BIGINT , `iso` VARCHAR , `multiplier` VARCHAR , `name` VARCHAR , `operation` INTEGER , `symbol` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
995 "CREATE INDEX `paymentmethod_date_idx` ON `paymentmethod` ( `date` )",
996 "CREATE INDEX `paymentmethod_active_idx` ON `paymentmethod` ( `active` )",
997 "CREATE INDEX `paymentmethod_remoteId_idx` ON `paymentmethod` ( `remoteId` )",
998 "CREATE INDEX `paymentmethod_modified_idx` ON `paymentmethod` ( `modified` )",
999 "CREATE INDEX `paymentmethod_enterpriseId_idx` ON `paymentmethod` ( `enterpriseId` )",
1000 "CREATE INDEX `paymentmethod_userId_idx` ON `paymentmethod` ( `userId` )",
1001 "CREATE TRIGGER onupdate_trigger_paymentmethod after update on `paymentmethod` for each row when new.modified is not null and old.modified = 0 begin update `paymentmethod` set modified = 1 where `paymentmethod`.id = new.id; end",
1002 "CREATE TABLE `temptable` (`closed` SMALLINT , `customerCount` BIGINT , `customerId` VARCHAR , `description` VARCHAR , `number` VARCHAR , `paymentMethodId` VARCHAR , `status` VARCHAR , `tableId` VARCHAR , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1003 "CREATE INDEX `temptable_enterpriseId_idx` ON `temptable` ( `enterpriseId` )",
1004 "CREATE INDEX `temptable_date_idx` ON `temptable` ( `date` )",
1005 "CREATE INDEX `temptable_userId_idx` ON `temptable` ( `userId` )",
1006 "CREATE INDEX `temptable_remoteId_idx` ON `temptable` ( `remoteId` )",
1007 "CREATE INDEX `temptable_modified_idx` ON `temptable` ( `modified` )",
1008 "CREATE INDEX `temptable_active_idx` ON `temptable` ( `active` )",
1009 "CREATE INDEX `temptable_tableId_idx` ON `temptable` ( `tableId` )",
1010 "CREATE TRIGGER onupdate_trigger_temptable after update on `temptable` for each row when new.modified is not null and old.modified = 0 begin update `temptable` set modified = 1 where `temptable`.id = new.id; end",
1011 "CREATE TABLE `productionpoint` (`address` VARCHAR , `name` VARCHAR , `status` VARCHAR , `token` VARCHAR , `type` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR, `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1012 "CREATE INDEX `productionpoint_modified_idx` ON `productionpoint` ( `modified` )",
1013 "CREATE INDEX `productionpoint_active_idx` ON `productionpoint` ( `active` )",
1014 "CREATE INDEX `productionpoint_userId_idx` ON `productionpoint` ( `userId` )",
1015 "CREATE INDEX `productionpoint_date_idx` ON `productionpoint` ( `date` )",
1016 "CREATE INDEX `productionpoint_remoteId_idx` ON `productionpoint` ( `remoteId` )",
1017 "CREATE INDEX `productionpoint_enterpriseId_idx` ON `productionpoint` ( `enterpriseId` )",
1018 "CREATE TRIGGER onupdate_trigger_productionpoint after update on `productionpoint` for each row when new.modified is not null and old.modified = 0 begin update `productionpoint` set modified = 1 where `productionpoint`.id = new.id; end",
1019 "CREATE TABLE `menuitem` (`csosn` VARCHAR , `description` VARCHAR , `groupName` VARCHAR , `imageUrl` VARCHAR , `itemDetails` VARCHAR , `menuItemGroupId` VARCHAR , `name` VARCHAR , `ncm` VARCHAR , `origem` VARCHAR , `price` VARCHAR , `productionPointId` VARCHAR , `status` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1020 "CREATE INDEX `menuitem_remoteId_idx` ON `menuitem` ( `remoteId` )",
1021 "CREATE INDEX `menuitem_groupName_idx` ON `menuitem` ( `groupName` )",
1022 "CREATE INDEX `menuitem_modified_idx` ON `menuitem` ( `modified` )",
1023 "CREATE INDEX `menuitem_productionPointId_idx` ON `menuitem` ( `productionPointId` )",
1024 "CREATE INDEX `menuitem_date_idx` ON `menuitem` ( `date` )",
1025 "CREATE INDEX `menuitem_enterpriseId_idx` ON `menuitem` ( `enterpriseId` )",
1026 "CREATE INDEX `menuitem_name_idx` ON `menuitem` ( `name` )",
1027 "CREATE INDEX `menuitem_active_idx` ON `menuitem` ( `active` )",
1028 "CREATE INDEX `menuitem_userId_idx` ON `menuitem` ( `userId` )",
1029 "CREATE TRIGGER onupdate_trigger_menuitem after update on `menuitem` for each row when new.modified is not null and old.modified = 0 begin update `menuitem` set modified = 1 where `menuitem`.id = new.id; end",
1030 "CREATE TABLE `temporder` (`details` VARCHAR , `itemId` VARCHAR , `limited` SMALLINT , `name` VARCHAR , `observations` VARCHAR , `price` VARCHAR , `productionPointId` VARCHAR , `qty` BIGINT , `time` BIGINT , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1031 "CREATE INDEX `temporder_date_idx` ON `temporder` ( `date` )",
1032 "CREATE INDEX `temporder_enterpriseId_idx` ON `temporder` ( `enterpriseId` )",
1033 "CREATE INDEX `temporder_active_idx` ON `temporder` ( `active` )",
1034 "CREATE INDEX `temporder_modified_idx` ON `temporder` ( `modified` )",
1035 "CREATE INDEX `temporder_remoteId_idx` ON `temporder` ( `remoteId` )",
1036 "CREATE INDEX `temporder_userId_idx` ON `temporder` ( `userId` )",
1037 "CREATE TRIGGER onupdate_trigger_temporder after update on `temporder` for each row when new.modified is not null and old.modified = 0 begin update `temporder` set modified = 1 where `temporder`.id = new.id; end",
1038 "CREATE TABLE `ordersequence` (`customerId` VARCHAR , `paymentMethodId` VARCHAR , `type` INTEGER , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1039 "CREATE INDEX `ordersequence_userId_idx` ON `ordersequence` ( `userId` )",
1040 "CREATE INDEX `ordersequence_active_idx` ON `ordersequence` ( `active` )",
1041 "CREATE INDEX `ordersequence_enterpriseId_idx` ON `ordersequence` ( `enterpriseId` )",
1042 "CREATE INDEX `ordersequence_remoteId_idx` ON `ordersequence` ( `remoteId` )",
1043 "CREATE INDEX `ordersequence_modified_idx` ON `ordersequence` ( `modified` )",
1044 "CREATE INDEX `ordersequence_date_idx` ON `ordersequence` ( `date` )",
1045 "CREATE TRIGGER onupdate_trigger_ordersequence after update on `ordersequence` for each row when new.modified is not null and old.modified = 0 begin update `ordersequence` set modified = 1 where `ordersequence`.id = new.id; end",
1046 "CREATE TABLE `galleryitem` (`url` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1047 "CREATE INDEX `galleryitem_date_idx` ON `galleryitem` ( `date` )",
1048 "CREATE INDEX `galleryitem_enterpriseId_idx` ON `galleryitem` ( `enterpriseId` )",
1049 "CREATE INDEX `galleryitem_modified_idx` ON `galleryitem` ( `modified` )",
1050 "CREATE INDEX `galleryitem_userId_idx` ON `galleryitem` ( `userId` )",
1051 "CREATE INDEX `galleryitem_remoteId_idx` ON `galleryitem` ( `remoteId` )",
1052 "CREATE INDEX `galleryitem_active_idx` ON `galleryitem` ( `active` )",
1053 "CREATE TRIGGER onupdate_trigger_galleryitem after update on `galleryitem` for each row when new.modified is not null and old.modified = 0 begin update `galleryitem` set modified = 1 where `galleryitem`.id = new.id; end",
1054 "CREATE TABLE `observation` (`name` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1055 "CREATE INDEX `observation_enterpriseId_idx` ON `observation` ( `enterpriseId` )",
1056 "CREATE INDEX `observation_modified_idx` ON `observation` ( `modified` )",
1057 "CREATE INDEX `observation_date_idx` ON `observation` ( `date` )",
1058 "CREATE INDEX `observation_userId_idx` ON `observation` ( `userId` )",
1059 "CREATE INDEX `observation_remoteId_idx` ON `observation` ( `remoteId` )",
1060 "CREATE INDEX `observation_active_idx` ON `observation` ( `active` )",
1061 "CREATE TRIGGER onupdate_trigger_observation after update on `observation` for each row when new.modified is not null and old.modified = 0 begin update `observation` set modified = 1 where `observation`.id = new.id; end",
1062 "CREATE TABLE `customer` (`address` VARCHAR , `addressNumber` VARCHAR , `city` VARCHAR , `complement` VARCHAR , `deliveryFee` VARCHAR , `email` VARCHAR , `name` VARCHAR , `neighborhood` VARCHAR , `phoneNumber` VARCHAR , `street` VARCHAR , `zipCode` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1063 "CREATE INDEX `customer_name_idx` ON `customer` ( `name` )",
1064 "CREATE INDEX `customer_remoteId_idx` ON `customer` ( `remoteId` )",
1065 "CREATE INDEX `customer_enterpriseId_idx` ON `customer` ( `enterpriseId` )",
1066 "CREATE INDEX `customer_active_idx` ON `customer` ( `active` )",
1067 "CREATE INDEX `customer_email_idx` ON `customer` ( `email` )",
1068 "CREATE INDEX `customer_phoneNumber_idx` ON `customer` ( `phoneNumber` )",
1069 "CREATE INDEX `customer_modified_idx` ON `customer` ( `modified` )",
1070 "CREATE INDEX `customer_userId_idx` ON `customer` ( `userId` )",
1071 "CREATE INDEX `customer_date_idx` ON `customer` ( `date` )",
1072 "CREATE TRIGGER onupdate_trigger_customer after update on `customer` for each row when new.modified is not null and old.modified = 0 begin update `customer` set modified = 1 where `customer`.id = new.id; end",
1073 "CREATE TABLE `enterprise` (`address` VARCHAR , `bdName` VARCHAR, `child` VARCHAR, `addressNumber` VARCHAR , `adicional` VARCHAR , `autoChangeDate` SMALLINT , `backgroundUrl` VARCHAR , `bairro` VARCHAR , `businessCode` VARCHAR , `businessName` VARCHAR , `category` BIGINT , `city` VARCHAR , `cityCode` VARCHAR , `codPag` VARCHAR , `coords` VARCHAR , `dataOnline` VARCHAR , `email` VARCHAR , `ie` VARCHAR , `logoUrl` VARCHAR , `name` VARCHAR , `phone` VARCHAR , `senha` VARCHAR , `serverHostname` VARCHAR , `serverIp` VARCHAR , `state` VARCHAR , `strikes` INTEGER , `token` VARCHAR , `uf` VARCHAR , `ufCode` VARCHAR , `versaoAntiga` INTEGER , `zipCode` VARCHAR , `active` SMALLINT , `server` VARCHAR , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1074 "CREATE INDEX `enterprise_active_idx` ON `enterprise` ( `active` )",
1075 "CREATE INDEX `enterprise_modified_idx` ON `enterprise` ( `modified` )",
1076 "CREATE INDEX `enterprise_remoteId_idx` ON `enterprise` ( `remoteId` )",
1077 "CREATE INDEX `enterprise_userId_idx` ON `enterprise` ( `userId` )",
1078 "CREATE INDEX `enterprise_date_idx` ON `enterprise` ( `date` )",
1079 "CREATE INDEX `enterprise_enterpriseId_idx` ON `enterprise` ( `enterpriseId` )",
1080 "CREATE TRIGGER onupdate_trigger_enterprise after update on `enterprise` for each row when new.modified is not null and old.modified = 0 begin update `enterprise` set modified = 1 where `enterprise`.id = new.id; end",
1081 "CREATE TABLE `menuitemgroup` (`isLimited` SMALLINT , `limited` BIGINT , `max` BIGINT , `min` BIGINT , `name` VARCHAR , `price` VARCHAR , `pricing` INTEGER , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1082 "CREATE INDEX `menuitemgroup_userId_idx` ON `menuitemgroup` ( `userId` )",
1083 "CREATE INDEX `menuitemgroup_enterpriseId_idx` ON `menuitemgroup` ( `enterpriseId` )",
1084 "CREATE INDEX `menuitemgroup_date_idx` ON `menuitemgroup` ( `date` )",
1085 "CREATE INDEX `menuitemgroup_remoteId_idx` ON `menuitemgroup` ( `remoteId` )",
1086 "CREATE INDEX `menuitemgroup_active_idx` ON `menuitemgroup` ( `active` )",
1087 "CREATE INDEX `menuitemgroup_modified_idx` ON `menuitemgroup` ( `modified` )",
1088 "CREATE TRIGGER onupdate_trigger_menuitemgroup after update on `menuitemgroup` for each row when new.modified is not null and old.modified = 0 begin update `menuitemgroup` set modified = 1 where `menuitemgroup`.id = new.id; end",
1089 "CREATE TABLE `pagseguro` (`metodo` VARCHAR , `parcelas` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1090 "CREATE INDEX `pagseguro_remoteId_idx` ON `pagseguro` ( `remoteId` )",
1091 "CREATE INDEX `pagseguro_modified_idx` ON `pagseguro` ( `modified` )",
1092 "CREATE INDEX `pagseguro_userId_idx` ON `pagseguro` ( `userId` )",
1093 "CREATE INDEX `pagseguro_enterpriseId_idx` ON `pagseguro` ( `enterpriseId` )",
1094 "CREATE INDEX `pagseguro_date_idx` ON `pagseguro` ( `date` )",
1095 "CREATE INDEX `pagseguro_active_idx` ON `pagseguro` ( `active` )",
1096 "CREATE TRIGGER onupdate_trigger_pagseguro after update on `pagseguro` for each row when new.modified is not null and old.modified = 0 begin update `pagseguro` set modified = 1 where `pagseguro`.id = new.id; end",
1097 "CREATE TABLE `history` (`mesaDestino` VARCHAR , `mesaOrigem` VARCHAR , `metodo` VARCHAR , `motivo` VARCHAR , `obs` VARCHAR , `obs2` VARCHAR , `produto` VARCHAR , `quantidade` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1098 "CREATE INDEX `history_userId_idx` ON `history` ( `userId` )",
1099 "CREATE INDEX `history_date_idx` ON `history` ( `date` )",
1100 "CREATE INDEX `history_remoteId_idx` ON `history` ( `remoteId` )",
1101 "CREATE INDEX `history_modified_idx` ON `history` ( `modified` )",
1102 "CREATE INDEX `history_enterpriseId_idx` ON `history` ( `enterpriseId` )",
1103 "CREATE INDEX `history_active_idx` ON `history` ( `active` )",
1104 "CREATE TRIGGER onupdate_trigger_history after update on `history` for each row when new.modified is not null and old.modified = 0 begin update `history` set modified = 1 where `history`.id = new.id; end",
1105 "CREATE TABLE `nfcehistory` (`cabecalho` VARCHAR , `number` VARCHAR , `serie` VARCHAR , `status` VARCHAR , `total` VARCHAR , `xml` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1106 "CREATE INDEX `nfcehistory_modified_idx` ON `nfcehistory` ( `modified` )",
1107 "CREATE INDEX `nfcehistory_enterpriseId_idx` ON `nfcehistory` ( `enterpriseId` )",
1108 "CREATE INDEX `nfcehistory_active_idx` ON `nfcehistory` ( `active` )",
1109 "CREATE INDEX `nfcehistory_date_idx` ON `nfcehistory` ( `date` )",
1110 "CREATE INDEX `nfcehistory_userId_idx` ON `nfcehistory` ( `userId` )",
1111 "CREATE INDEX `nfcehistory_remoteId_idx` ON `nfcehistory` ( `remoteId` )",
1112 "CREATE TRIGGER onupdate_trigger_nfcehistory after update on `nfcehistory` for each row when new.modified is not null and old.modified = 0 begin update `nfcehistory` set modified = 1 where `nfcehistory`.id = new.id; end",
1113 "CREATE TABLE `configuration` (`cambio_na_conta` SMALLINT , `mini_conta` BOOLEAN, `conta_resumida` SMALLINT , `imprimir_delivery` SMALLINT , `imprimir_mix` SMALLINT , `permitido_mudar_quantidade_atend` SMALLINT , `request_numero_direta` SMALLINT , `venda_direta` SMALLINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1114 "CREATE INDEX `configuration_remoteId_idx` ON `configuration` ( `remoteId` )",
1115 "CREATE INDEX `configuration_userId_idx` ON `configuration` ( `userId` )",
1116 "CREATE INDEX `configuration_date_idx` ON `configuration` ( `date` )",
1117 "CREATE INDEX `configuration_modified_idx` ON `configuration` ( `modified` )",
1118 "CREATE INDEX `configuration_active_idx` ON `configuration` ( `active` )",
1119 "CREATE INDEX `configuration_enterpriseId_idx` ON `configuration` ( `enterpriseId` )",
1120 "CREATE TRIGGER onupdate_trigger_configuration after update on `configuration` for each row when new.modified is not null and old.modified = 0 begin update `configuration` set modified = 1 where `configuration`.id = new.id; end",
1121 "CREATE TABLE `numbernfce` (`number` VARCHAR , `serie` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1122 "CREATE INDEX `numbernfce_active_idx` ON `numbernfce` ( `active` )",
1123 "CREATE INDEX `numbernfce_date_idx` ON `numbernfce` ( `date` )",
1124 "CREATE INDEX `numbernfce_userId_idx` ON `numbernfce` ( `userId` )",
1125 "CREATE INDEX `numbernfce_modified_idx` ON `numbernfce` ( `modified` )",
1126 "CREATE INDEX `numbernfce_remoteId_idx` ON `numbernfce` ( `remoteId` )",
1127 "CREATE INDEX `numbernfce_enterpriseId_idx` ON `numbernfce` ( `enterpriseId` )",
1128 "CREATE TRIGGER onupdate_trigger_numbernfce after update on `numbernfce` for each row when new.modified is not null and old.modified = 0 begin update `numbernfce` set modified = 1 where `numbernfce`.id = new.id; end",
1129 "CREATE TABLE `municipio` (`cidade` VARCHAR , `codigo_cidade` VARCHAR , `codigo_uf` VARCHAR , `uf` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1130 "CREATE INDEX `municipio_date_idx` ON `municipio` ( `date` )",
1131 "CREATE INDEX `municipio_enterpriseId_idx` ON `municipio` ( `enterpriseId` )",
1132 "CREATE INDEX `municipio_active_idx` ON `municipio` ( `active` )",
1133 "CREATE INDEX `municipio_userId_idx` ON `municipio` ( `userId` )",
1134 "CREATE INDEX `municipio_modified_idx` ON `municipio` ( `modified` )",
1135 "CREATE INDEX `municipio_remoteId_idx` ON `municipio` ( `remoteId` )",
1136 "CREATE TRIGGER onupdate_trigger_municipio after update on `municipio` for each row when new.modified is not null and old.modified = 0 begin update `municipio` set modified = 1 where `municipio`.id = new.id; end",
1137 "CREATE TABLE `addons` (`_id` VARCHAR , `amount` VARCHAR , `ativo` SMALLINT , `descricao` VARCHAR , `expiration` VARCHAR , `img` VARCHAR , `internalId` VARCHAR , `multi` SMALLINT , `nome` VARCHAR , `quantidade` INTEGER , `token` VARCHAR , `type` VARCHAR , `ultimoSync` VARCHAR , `useId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1138 "CREATE INDEX `addons_modified_idx` ON `addons` ( `modified` )",
1139 "CREATE INDEX `addons_enterpriseId_idx` ON `addons` ( `enterpriseId` )",
1140 "CREATE INDEX `addons_userId_idx` ON `addons` ( `userId` )",
1141 "CREATE INDEX `addons_remoteId_idx` ON `addons` ( `remoteId` )",
1142 "CREATE INDEX `addons_date_idx` ON `addons` ( `date` )",
1143 "CREATE INDEX `addons_active_idx` ON `addons` ( `active` )",
1144 "CREATE TRIGGER onupdate_trigger_addons after update on `addons` for each row when new.modified is not null and old.modified = 0 begin update `addons` set modified = 1 where `addons`.id = new.id; end",
1145 "CREATE TABLE `timesync` (`sync` VARCHAR , `time` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1146 "CREATE INDEX `timesync_active_idx` ON `timesync` ( `active` )",
1147 "CREATE INDEX `timesync_userId_idx` ON `timesync` ( `userId` )",
1148 "CREATE INDEX `timesync_remoteId_idx` ON `timesync` ( `remoteId` )",
1149 "CREATE INDEX `timesync_modified_idx` ON `timesync` ( `modified` )",
1150 "CREATE INDEX `timesync_enterpriseId_idx` ON `timesync` ( `enterpriseId` )",
1151 "CREATE INDEX `timesync_date_idx` ON `timesync` ( `date` )",
1152 "CREATE TRIGGER onupdate_trigger_timesync after update on `timesync` for each row when new.modified is not null and old.modified = 0 begin update `timesync` set modified = 1 where `timesync`.id = new.id; end",
1153 "CREATE TABLE `dispositivos` (`_id` VARCHAR , `token` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1154 "CREATE INDEX `dispositivos_modified_idx` ON `dispositivos` ( `modified` )",
1155 "CREATE INDEX `dispositivos_remoteId_idx` ON `dispositivos` ( `remoteId` )",
1156 "CREATE INDEX `dispositivos_date_idx` ON `dispositivos` ( `date` )",
1157 "CREATE INDEX `dispositivos_active_idx` ON `dispositivos` ( `active` )",
1158 "CREATE INDEX `dispositivos_userId_idx` ON `dispositivos` ( `userId` )",
1159 "CREATE INDEX `dispositivos_enterpriseId_idx` ON `dispositivos` ( `enterpriseId` )",
1160 "CREATE TRIGGER onupdate_trigger_dispositivos after update on `dispositivos` for each row when new.modified is not null and old.modified = 0 begin update `dispositivos` set modified = 1 where `dispositivos`.id = new.id; end",
1161 "CREATE TABLE `numeracaodireta` (`numero` INTEGER , `tempTableId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1162 "CREATE INDEX `numeracaodireta_modified_idx` ON `numeracaodireta` ( `modified` )",
1163 "CREATE INDEX `numeracaodireta_date_idx` ON `numeracaodireta` ( `date` )",
1164 "CREATE INDEX `numeracaodireta_active_idx` ON `numeracaodireta` ( `active` )",
1165 "CREATE INDEX `numeracaodireta_remoteId_idx` ON `numeracaodireta` ( `remoteId` )",
1166 "CREATE INDEX `numeracaodireta_enterpriseId_idx` ON `numeracaodireta` ( `enterpriseId` )",
1167 "CREATE INDEX `numeracaodireta_userId_idx` ON `numeracaodireta` ( `userId` )",
1168 "CREATE TRIGGER onupdate_trigger_numeracaodireta after update on `numeracaodireta` for each row when new.modified is not null and old.modified = 0 begin update `numeracaodireta` set modified = 1 where `numeracaodireta`.id = new.id; end",
1169 "CREATE TABLE `usage` (`_id` VARCHAR , `expiration` VARCHAR , `internalId` VARCHAR , `licenseId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1170 "CREATE INDEX `usage_modified_idx` ON `usage` ( `modified` )",
1171 "CREATE INDEX `usage_active_idx` ON `usage` ( `active` )",
1172 "CREATE INDEX `usage_enterpriseId_idx` ON `usage` ( `enterpriseId` )",
1173 "CREATE INDEX `usage_userId_idx` ON `usage` ( `userId` )",
1174 "CREATE INDEX `usage_remoteId_idx` ON `usage` ( `remoteId` )",
1175 "CREATE INDEX `usage_date_idx` ON `usage` ( `date` )",
1176 "CREATE TABLE `receber` (`dataPagamento` VARCHAR , `obs` VARCHAR , `paymentId` VARCHAR , `status` VARCHAR , `tempTableId` VARCHAR , `usuarioId` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1177 "CREATE TRIGGER onupdate_trigger_usage after update on `usage` for each row when new.modified is not null and old.modified = 0 begin update `usage` set modified = 1 where `usage`.id = new.id; end",
1178 "insert into `sqlite_sequence` (name, seq) values (\"payment\", 1)",
1179 "insert into `sqlite_sequence` (name, seq) values (\"addons\",1)",
1180 "insert into `sqlite_sequence` (name, seq) values (\"usage\",1)",
1181 "insert into `sqlite_sequence` (name, seq) values (\"order\", 1)",
1182 "insert into `sqlite_sequence` (name, seq) values (\"ordersequence\", 1)",
1183 "insert into `sqlite_sequence` (name, seq) values (\"temptable\", 1)"
1184 ]
1185
1186 var defaultUrl = '"https://static.carrefour.com.br/medias/sys_master/images/images/h3d/heb/h00/h00/12175673917470.jpg"'
1187
1188
1189
1190 var user = await new req.db.User();
1191 let loginNumber = new Date().getTime().toString().substr(4, 6);
1192
1193 user.name = req.body.name;
1194 user.password = sha1("AsDpw" + req.body.password + "$ALTeD");
1195 user.phone = req.body.phone;
1196 user.login = loginNumber;
1197 user.initialDate = new Date(req.body.initialDate);
1198 user.finalDate = new Date(req.body.finalDate);
1199 user.partnerId = req.params.partnerId;
1200 user.machines = [];
1201 user.type = 'pdv';
1202 user.save();
1203
1204
1205 var machine = await new req.db.Machine();
1206
1207 let xSchema = schema.reduce((prev, curr, index) => {
1208 return prev + ';' + curr
1209 });
1210
1211
1212
1213 machine.userId = mongoose.Types.ObjectId(user._id);
1214 machine.type = 'PDV_master';
1215 await machine.save();
1216 user.machines.push(mongoose.Types.ObjectId(machine._id));
1217 await user.save()
1218 machine.name = user.name;
1219 machine.serialNumber = machine._id.toString();
1220 await machine.save();
1221 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1222
1223 var eventDetails = req.body;
1224
1225
1226
1227 const protocol = req.protocol;
1228 var key = '232312321123123'
1229 var token = JWT.sign({
1230 type: 'newUser',
1231 id: machine._id,
1232 host: protocol + '://' + req.headers.host
1233 }, key);
1234
1235
1236 var eventDate = eventDetails.initialDate ? new Date(eventDetails.initialDate) : new Date();
1237 var simpleDate = new Date().getFullYear() + '-' + ((new Date(eventDate).getMonth() + 1).toString().length == 1 ? '0' + (new Date(eventDate).getMonth() + 1).toString() : (new Date(eventDate).getMonth() + 1).toString()) + '-' + ((new Date(eventDate).getDate() + 1).toString().length == 1 ? '0' + (new Date(eventDate).getDate() + 1).toString() : (new Date(eventDate).getDate() + 1).toString())
1238
1239
1240 // Creates array to feed the database
1241 var toExecute = [
1242
1243 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Real"', 0, 1, '"R$"', 1, 1, 2]},
1244 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"USD"','"Dolar"', 1, 3.8, '"U$"', 1, 0, 2]},
1245 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"PYG"','"Guarani"', 0, 1500, '"G$"', 1, 0, 0]},
1246 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"ARS"','"Pesos"', 1, 0.1, '"P$"', 1, 0, 0]},
1247 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Débito"', 0, 1, '"R$"', 0, 0, 2]},
1248 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Crédito"', 0, 1, '"R$"', 0, 0, 2]},
1249 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"PagSeguro"', 0, 1, '"R$"', 0, 0, 2]},
1250 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces'], values: ['"BRL"','"Desconto"', 0, 1, '"R$"', 0, 0, 2]},
1251 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces', 'active'], values: ['"BRL"','"Fundo de Caixa"', 0, 1, '"R$"', 0, 0, 2, 0]},
1252 {tableName: 'paymentMethod', fields: ['iso', 'name', 'operation', 'multiplier', 'symbol', 'allowOffset','baseCurrency', 'decimalPlaces', 'active'], values: ['"BRL"','"Sangria"', 0, 1, '"R$"', 0, 0, 2, 0]},
1253 {tableName: 'user', fields: ['ativo', 'logged', 'name', 'password', 'roles', 'active'], values: ['"Active"', 1, '"Administrador"', '"1234"', '"[\'ADMIN\',\'ATTENTION\',\'CASHIER\']"', 1]},
1254 {tableName: 'productionpoint', fields: ['name', 'address', 'type', 'status'], values: ['"Padrao"', '""', '"printer"', '"admin"']},
1255 {tableName: 'menuitemgroup', fields: ['name'], values: ['"Diversos"']},
1256 {tableName: 'menuitem', fields: ['name', 'groupName', 'price', 'imageUrl', 'ncm', 'csosn', 'origem'], values: ['"X-SALADA"', '"Diversos"', 4, '"http://192.168.0.15:3434/dashboard/assets/icon.png"', '"21069090"', '"102"', '"0"']},
1257 {tableName: 'observation', fields: ['name'], values: ['"Sem Gelo"']},
1258 {tableName: 'observation', fields: ['name'], values: ['"Com Limao"']},
1259 {tableName: 'observation', fields: ['name'], values: ['"Sem Cebola"']},
1260 {tableName: 'enterprise', fields: [
1261 'name', 'businessCode', 'businessName', 'strikes', 'versaoAntiga', 'codPag', 'email', 'senha', 'token',
1262 'date', 'autoChangeDate', 'logoUrl', 'backgroundUrl', 'bdName', 'child', 'address', 'addressNumber', 'adicional',
1263 'bairro', 'city', 'uf', 'server'],
1264 values: [stringToSqliteString(user.name), '"11111111111"', stringToSqliteString(user.name), 0, 19,'""',
1265 '"' + machine.name + '"','"'+ user.phone + '"', '"'+ token + '"', '"'+ simpleDate + '"', 0,
1266 '"http://web.touchped.com/dashboard/assets/icon.png"',
1267 '"https://cdnbr.nyc3.cdn.digitaloceanspaces.com/tmp/maxresdefault-102.jpg"', '""', '"1"',
1268 stringToSqliteString(eventDetails.address.addressLineOne),stringToSqliteString(eventDetails.address.number),stringToSqliteString(eventDetails.address.complement),stringToSqliteString(eventDetails.address.neighborhood),
1269 stringToSqliteString(eventDetails.address.city),stringToSqliteString(eventDetails.address.uf), '""']},
1270 {tableName: 'numeracaodireta', fields: ['numero'], values: [1]},
1271 {tableName: 'configuration', fields: ['imprimir_mix', 'imprimir_delivery', 'venda_direta', 'request_numero_direta', 'conta_resumida', 'permitido_mudar_quantidade_atend', 'cambio_na_conta', 'mini_conta'], values: [1,1,1,0,1,0,1,(req.body.miniAccount ? 1 : 0)]},
1272 {tableName: 'basetable', fields: ['number'],values: [1]},
1273 {tableName: 'basetable', fields: ['number'],values: [2]},
1274 {tableName: 'basetable', fields: ['number'],values: [3]},
1275 {tableName: 'basetable', fields: ['number'],values: [4]},
1276 {tableName: 'basetable', fields: ['number'],values: [5]},
1277 {tableName: 'basetable', fields: ['number'],values: [6]},
1278 {tableName: 'basetable', fields: ['number'],values: [7]},
1279 {tableName: 'basetable', fields: ['number'],values: [8]},
1280 {tableName: 'basetable', fields: ['number'],values: [9]},
1281 {tableName: 'basetable', fields: ['number'],values: [10]},
1282 {tableName: 'basetable', fields: ['number'],values: [11]},
1283 {tableName: 'basetable', fields: ['number'],values: [12]},
1284 {tableName: 'basetable', fields: ['number'],values: [13]},
1285 {tableName: 'basetable', fields: ['number'],values: [14]},
1286 {tableName: 'basetable', fields: ['number'],values: [15]},
1287 {tableName: 'basetable', fields: ['number'],values: [16]},
1288 {tableName: 'basetable', fields: ['number'],values: [17]},
1289 {tableName: 'basetable', fields: ['number'],values: [18]},
1290 {tableName: 'basetable', fields: ['number'],values: [19]},
1291 {tableName: 'basetable', fields: ['number'],values: [20]},
1292 {tableName: 'basetable', fields: ['number'],values: [21]},
1293 {tableName: 'basetable', fields: ['number'],values: [22]},
1294 {tableName: 'basetable', fields: ['number'],values: [23]},
1295 {tableName: 'basetable', fields: ['number'],values: [24]},
1296 {tableName: 'basetable', fields: ['number'],values: [25]},
1297 {tableName: 'basetable', fields: ['number'],values: [26]},
1298 {tableName: 'basetable', fields: ['number'],values: [27]},
1299 {tableName: 'basetable', fields: ['number'],values: [28]},
1300 {tableName: 'basetable', fields: ['number'],values: [29]},
1301 {tableName: 'basetable', fields: ['number'],values: [30]},
1302
1303 ]
1304
1305
1306 var menuGroupId = '';
1307 var productionPointId = '';
1308 toExecute.map(item => {
1309 var remoteId = generator.generate();
1310 item.fields.push('remoteId')
1311 item.values.push('"' + remoteId + '"');
1312 item.fields.push('active');
1313 item.values.push(1);
1314
1315 item.fields.push('modified')
1316 item.values.push(0)
1317 if (item.tableName == 'menuitemgroup') {
1318 menuGroupId = '"' + remoteId + '"';
1319 }
1320 if (item.tableName == 'productionpoint') {
1321 productionPointId = '"' + remoteId + '"';
1322
1323 }
1324
1325 if (item.tableName == 'menuitem') {
1326 item.fields.push('menuItemGroupId');
1327 item.values.push(menuGroupId);
1328 item.fields.push('productionPointId');
1329 item.values.push(productionPointId);
1330 console.log(item.fields.length, item.values.length, item.tableName)
1331 return item
1332 }else {
1333 console.log(item.fields.length, item.values.length, item.tableName)
1334 return item
1335 }
1336 })
1337
1338
1339
1340 const fileExists = fs.existsSync(DATA_DIR + '/' + machine._id + '.db');
1341 const finalPath = DATA_DIR + '/' + machine._id + '.db';
1342 if (fileExists) {
1343 res.send({status: 0, msg: 'Master already created'});
1344 } else {
1345 fs.writeFile(finalPath, '', (errFs) => {
1346
1347 var dbSqlite = new sqlite3.Database(finalPath);
1348 dbSqlite.exec(xSchema, (err) => {
1349
1350 var feeder = toExecute.reduce((prevVal, currVal, index) => {
1351 return prevVal + ('INSERT INTO ' + currVal.tableName + ' (' + currVal.fields.join(',') + ') ' + 'values (' + currVal.values.join(',') + '); ')
1352 }, '')
1353
1354 dbSqlite.exec(feeder, async (errExec2) => {
1355 if (errExec2) {
1356 console.log(errExec2);
1357 res.status(500).send(errExec2);
1358 } else {
1359 var index = 0;
1360 var offset = 0;
1361 var newMachine = new req.db.Machine();
1362 newMachine.userId = mongoose.Types.ObjectId(user._id);
1363 newMachine.type = 'PDV_child';
1364 await newMachine.save();
1365 newMachine.name = machine.name + '__' + (index + 1 + offset);
1366 newMachine.serialNumber = machine._id.toString();
1367 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1368 await newMachine.save();
1369 const newPath = DATA_DIR + '/' + newMachine._id + '.db';
1370
1371 fs.copyFile(DATA_DIR + '/' + machine._id + '.db', newPath, (err) => {
1372 if (err) throw err;
1373 var tempDb = new sqlite3.Database(newPath);
1374
1375 tempDb.exec('delete from `order`; delete from `payment`; delete from temptable; delete from temporder; delete from ordersequence; delete from history; delete from nfcehistory; update sqlite_sequence set seq = '+((index + 1 + offset) * 1000000)+' where name not in ("productionpoint", "menuitemgroup", "menuitem", "observation", "enterprise", "paymentmethod"); update user set remoteId = '+ ('"' + machine._id.toString() + '"')+', name = ' + ('"' + (machine.name + '__' + (index + 1 + offset) + '"')), async (err2) => {
1376 if (err2) throw err2;
1377
1378 index ++;
1379
1380 user.machines.push(mongoose.Types.ObjectId(newMachine._id));
1381 await user.save()
1382 res.send(user);
1383
1384 })
1385
1386 });
1387 }
1388 })
1389
1390 })
1391 });
1392
1393 }
1394
1395
1396
1397})
1398
1399
1400// Add item to crud in event
1401
1402
1403// TODO deprecate structure [WILL BE DELETED]
1404router.get('/restricted/database/create/:userId', async (req, res) => {
1405 let schema = [
1406 "CREATE TABLE android_metadata (locale TEXT)",
1407 "CREATE TABLE `sequential` (`d` VARCHAR , `i` INTEGER PRIMARY KEY AUTOINCREMENT )",
1408 "CREATE TABLE `config` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `mode` INTEGER , `name` VARCHAR , `productionPointId` VARCHAR , `serverIp` VARCHAR , `userId` VARCHAR, `imprimir_conta_local` BOOLEAN, `imprimir_pedido_local` BOOLEAN)",
1409 "CREATE TABLE `whitelabel` (`_id` VARCHAR , `code` VARCHAR , `color` VARCHAR , `contactName` VARCHAR , `domain` VARCHAR , `email` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `key` VARCHAR , `logoUrl` VARCHAR , `name` VARCHAR , `phoneNumber` VARCHAR , `secundaryColor` VARCHAR , `textColor` VARCHAR , `uuid` VARCHAR )",
1410 "CREATE TABLE `basetable` (`number` VARCHAR , `status` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1411 "CREATE INDEX `basetable_remoteId_idx` ON `basetable` ( `remoteId` )",
1412 "CREATE INDEX `basetable_modified_idx` ON `basetable` ( `modified` )",
1413 "CREATE INDEX `basetable_enterpriseId_idx` ON `basetable` ( `enterpriseId` )",
1414 "CREATE INDEX `basetable_date_idx` ON `basetable` ( `date` )",
1415 "CREATE INDEX `basetable_userId_idx` ON `basetable` ( `userId` )",
1416 "CREATE INDEX `basetable_active_idx` ON `basetable` ( `active` )",
1417 "CREATE TRIGGER onupdate_trigger_basetable after update on `basetable` for each row when new.modified is not null and old.modified = 0 begin update `basetable` set modified = 1 where `basetable`.id = new.id; end",
1418 "CREATE TABLE `user` (`ativo` VARCHAR , `logged` SMALLINT , `name` VARCHAR , `password` VARCHAR , `roles` VARCHAR , `token` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1419 "CREATE INDEX `user_active_idx` ON `user` ( `active` )",
1420 "CREATE INDEX `user_remoteId_idx` ON `user` ( `remoteId` )",
1421 "CREATE INDEX `user_modified_idx` ON `user` ( `modified` )",
1422 "CREATE INDEX `user_enterpriseId_idx` ON `user` ( `enterpriseId` )",
1423 "CREATE INDEX `user_userId_idx` ON `user` ( `userId` )",
1424 "CREATE INDEX `user_date_idx` ON `user` ( `date` )",
1425 "CREATE TRIGGER onupdate_trigger_user after update on `user` for each row when new.modified is not null and old.modified = 0 begin update `user` set modified = 1 where `user`.id = new.id; end",
1426 "CREATE TABLE `order` (`attendantNotified` VARCHAR , `closed` SMALLINT , `deleted` SMALLINT , `menuItemDetails` VARCHAR , `menuItemId` VARCHAR , `name` VARCHAR , `nfceImp` VARCHAR , `observations` VARCHAR , `orderSequenceId` VARCHAR , `price` VARCHAR , `productionCompleted` VARCHAR , `productionPointId` VARCHAR , `qty` BIGINT , `sequence` BIGINT , `tempTableId` VARCHAR , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1427 "CREATE INDEX `order_modified_idx` ON `order` ( `modified` )",
1428 "CREATE INDEX `order_remoteId_idx` ON `order` ( `remoteId` )",
1429 "CREATE INDEX `order_userId_idx` ON `order` ( `userId` )",
1430 "CREATE INDEX `order_enterpriseId_idx` ON `order` ( `enterpriseId` )",
1431 "CREATE INDEX `order_date_idx` ON `order` ( `date` )",
1432 "CREATE INDEX `order_active_idx` ON `order` ( `active` )",
1433 "CREATE TRIGGER onupdate_trigger_order after update on `order` for each row when new.modified is not null and old.modified = 0 begin update `order` set modified = 1 where `order`.id = new.id; end",
1434 "CREATE TABLE `payment` (`amount` VARCHAR , `codigoPag` VARCHAR, `idPag` VARCHAR, `closed` SMALLINT , `closedAdiant` SMALLINT , `convertedAmount` VARCHAR , `deleted` SMALLINT , `iso` VARCHAR , `paymentMethodId` VARCHAR , `paymentMethodName` VARCHAR , `tempTableId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1435 "CREATE INDEX `payment_enterpriseId_idx` ON `payment` ( `enterpriseId` )",
1436 "CREATE INDEX `payment_active_idx` ON `payment` ( `active` )",
1437 "CREATE INDEX `payment_date_idx` ON `payment` ( `date` )",
1438 "CREATE INDEX `payment_userId_idx` ON `payment` ( `userId` )",
1439 "CREATE INDEX `payment_modified_idx` ON `payment` ( `modified` )",
1440 "CREATE INDEX `payment_remoteId_idx` ON `payment` ( `remoteId` )",
1441 "CREATE TRIGGER onupdate_trigger_payment after update on `payment` for each row when new.modified is not null and old.modified = 0 begin update `payment` set modified = 1 where `payment`.id = new.id; end",
1442 "CREATE TABLE `paymentmethod` (`account` VARCHAR , `allowOffset` SMALLINT , `baseCurrency` SMALLINT , `decimalPlaces` BIGINT , `iso` VARCHAR , `multiplier` VARCHAR , `name` VARCHAR , `operation` INTEGER , `symbol` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1443 "CREATE INDEX `paymentmethod_date_idx` ON `paymentmethod` ( `date` )",
1444 "CREATE INDEX `paymentmethod_active_idx` ON `paymentmethod` ( `active` )",
1445 "CREATE INDEX `paymentmethod_remoteId_idx` ON `paymentmethod` ( `remoteId` )",
1446 "CREATE INDEX `paymentmethod_modified_idx` ON `paymentmethod` ( `modified` )",
1447 "CREATE INDEX `paymentmethod_enterpriseId_idx` ON `paymentmethod` ( `enterpriseId` )",
1448 "CREATE INDEX `paymentmethod_userId_idx` ON `paymentmethod` ( `userId` )",
1449 "CREATE TRIGGER onupdate_trigger_paymentmethod after update on `paymentmethod` for each row when new.modified is not null and old.modified = 0 begin update `paymentmethod` set modified = 1 where `paymentmethod`.id = new.id; end",
1450 "CREATE TABLE `temptable` (`closed` SMALLINT , `customerCount` BIGINT , `customerId` VARCHAR , `description` VARCHAR , `number` VARCHAR , `paymentMethodId` VARCHAR , `status` VARCHAR , `tableId` VARCHAR , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1451 "CREATE INDEX `temptable_enterpriseId_idx` ON `temptable` ( `enterpriseId` )",
1452 "CREATE INDEX `temptable_date_idx` ON `temptable` ( `date` )",
1453 "CREATE INDEX `temptable_userId_idx` ON `temptable` ( `userId` )",
1454 "CREATE INDEX `temptable_remoteId_idx` ON `temptable` ( `remoteId` )",
1455 "CREATE INDEX `temptable_modified_idx` ON `temptable` ( `modified` )",
1456 "CREATE INDEX `temptable_active_idx` ON `temptable` ( `active` )",
1457 "CREATE INDEX `temptable_tableId_idx` ON `temptable` ( `tableId` )",
1458 "CREATE TRIGGER onupdate_trigger_temptable after update on `temptable` for each row when new.modified is not null and old.modified = 0 begin update `temptable` set modified = 1 where `temptable`.id = new.id; end",
1459 "CREATE TABLE `productionpoint` (`address` VARCHAR , `name` VARCHAR , `status` VARCHAR , `token` VARCHAR , `type` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1460 "CREATE INDEX `productionpoint_modified_idx` ON `productionpoint` ( `modified` )",
1461 "CREATE INDEX `productionpoint_active_idx` ON `productionpoint` ( `active` )",
1462 "CREATE INDEX `productionpoint_userId_idx` ON `productionpoint` ( `userId` )",
1463 "CREATE INDEX `productionpoint_date_idx` ON `productionpoint` ( `date` )",
1464 "CREATE INDEX `productionpoint_remoteId_idx` ON `productionpoint` ( `remoteId` )",
1465 "CREATE INDEX `productionpoint_enterpriseId_idx` ON `productionpoint` ( `enterpriseId` )",
1466 "CREATE TRIGGER onupdate_trigger_productionpoint after update on `productionpoint` for each row when new.modified is not null and old.modified = 0 begin update `productionpoint` set modified = 1 where `productionpoint`.id = new.id; end",
1467 "CREATE TABLE `menuitem` (`csosn` VARCHAR , `description` VARCHAR , `groupName` VARCHAR , `imageUrl` VARCHAR , `itemDetails` VARCHAR , `menuItemGroupId` VARCHAR , `name` VARCHAR , `ncm` VARCHAR , `origem` VARCHAR , `price` VARCHAR , `productionPointId` VARCHAR , `status` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1468 "CREATE INDEX `menuitem_remoteId_idx` ON `menuitem` ( `remoteId` )",
1469 "CREATE INDEX `menuitem_groupName_idx` ON `menuitem` ( `groupName` )",
1470 "CREATE INDEX `menuitem_modified_idx` ON `menuitem` ( `modified` )",
1471 "CREATE INDEX `menuitem_productionPointId_idx` ON `menuitem` ( `productionPointId` )",
1472 "CREATE INDEX `menuitem_date_idx` ON `menuitem` ( `date` )",
1473 "CREATE INDEX `menuitem_enterpriseId_idx` ON `menuitem` ( `enterpriseId` )",
1474 "CREATE INDEX `menuitem_name_idx` ON `menuitem` ( `name` )",
1475 "CREATE INDEX `menuitem_active_idx` ON `menuitem` ( `active` )",
1476 "CREATE INDEX `menuitem_userId_idx` ON `menuitem` ( `userId` )",
1477 "CREATE TRIGGER onupdate_trigger_menuitem after update on `menuitem` for each row when new.modified is not null and old.modified = 0 begin update `menuitem` set modified = 1 where `menuitem`.id = new.id; end",
1478 "CREATE TABLE `temporder` (`details` VARCHAR , `itemId` VARCHAR , `limited` SMALLINT , `name` VARCHAR , `observations` VARCHAR , `price` VARCHAR , `productionPointId` VARCHAR , `qty` BIGINT , `time` BIGINT , `type` BIGINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1479 "CREATE INDEX `temporder_date_idx` ON `temporder` ( `date` )",
1480 "CREATE INDEX `temporder_enterpriseId_idx` ON `temporder` ( `enterpriseId` )",
1481 "CREATE INDEX `temporder_active_idx` ON `temporder` ( `active` )",
1482 "CREATE INDEX `temporder_modified_idx` ON `temporder` ( `modified` )",
1483 "CREATE INDEX `temporder_remoteId_idx` ON `temporder` ( `remoteId` )",
1484 "CREATE INDEX `temporder_userId_idx` ON `temporder` ( `userId` )",
1485 "CREATE TRIGGER onupdate_trigger_temporder after update on `temporder` for each row when new.modified is not null and old.modified = 0 begin update `temporder` set modified = 1 where `temporder`.id = new.id; end",
1486 "CREATE TABLE `ordersequence` (`customerId` VARCHAR , `paymentMethodId` VARCHAR , `type` INTEGER , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1487 "CREATE INDEX `ordersequence_userId_idx` ON `ordersequence` ( `userId` )",
1488 "CREATE INDEX `ordersequence_active_idx` ON `ordersequence` ( `active` )",
1489 "CREATE INDEX `ordersequence_enterpriseId_idx` ON `ordersequence` ( `enterpriseId` )",
1490 "CREATE INDEX `ordersequence_remoteId_idx` ON `ordersequence` ( `remoteId` )",
1491 "CREATE INDEX `ordersequence_modified_idx` ON `ordersequence` ( `modified` )",
1492 "CREATE INDEX `ordersequence_date_idx` ON `ordersequence` ( `date` )",
1493 "CREATE TRIGGER onupdate_trigger_ordersequence after update on `ordersequence` for each row when new.modified is not null and old.modified = 0 begin update `ordersequence` set modified = 1 where `ordersequence`.id = new.id; end",
1494 "CREATE TABLE `galleryitem` (`url` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1495 "CREATE INDEX `galleryitem_date_idx` ON `galleryitem` ( `date` )",
1496 "CREATE INDEX `galleryitem_enterpriseId_idx` ON `galleryitem` ( `enterpriseId` )",
1497 "CREATE INDEX `galleryitem_modified_idx` ON `galleryitem` ( `modified` )",
1498 "CREATE INDEX `galleryitem_userId_idx` ON `galleryitem` ( `userId` )",
1499 "CREATE INDEX `galleryitem_remoteId_idx` ON `galleryitem` ( `remoteId` )",
1500 "CREATE INDEX `galleryitem_active_idx` ON `galleryitem` ( `active` )",
1501 "CREATE TRIGGER onupdate_trigger_galleryitem after update on `galleryitem` for each row when new.modified is not null and old.modified = 0 begin update `galleryitem` set modified = 1 where `galleryitem`.id = new.id; end",
1502 "CREATE TABLE `observation` (`name` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1503 "CREATE INDEX `observation_enterpriseId_idx` ON `observation` ( `enterpriseId` )",
1504 "CREATE INDEX `observation_modified_idx` ON `observation` ( `modified` )",
1505 "CREATE INDEX `observation_date_idx` ON `observation` ( `date` )",
1506 "CREATE INDEX `observation_userId_idx` ON `observation` ( `userId` )",
1507 "CREATE INDEX `observation_remoteId_idx` ON `observation` ( `remoteId` )",
1508 "CREATE INDEX `observation_active_idx` ON `observation` ( `active` )",
1509 "CREATE TRIGGER onupdate_trigger_observation after update on `observation` for each row when new.modified is not null and old.modified = 0 begin update `observation` set modified = 1 where `observation`.id = new.id; end",
1510 "CREATE TABLE `customer` (`address` VARCHAR , `addressNumber` VARCHAR , `city` VARCHAR , `complement` VARCHAR , `deliveryFee` VARCHAR , `email` VARCHAR , `name` VARCHAR , `neighborhood` VARCHAR , `phoneNumber` VARCHAR , `street` VARCHAR , `zipCode` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1511 "CREATE INDEX `customer_name_idx` ON `customer` ( `name` )",
1512 "CREATE INDEX `customer_remoteId_idx` ON `customer` ( `remoteId` )",
1513 "CREATE INDEX `customer_enterpriseId_idx` ON `customer` ( `enterpriseId` )",
1514 "CREATE INDEX `customer_active_idx` ON `customer` ( `active` )",
1515 "CREATE INDEX `customer_email_idx` ON `customer` ( `email` )",
1516 "CREATE INDEX `customer_phoneNumber_idx` ON `customer` ( `phoneNumber` )",
1517 "CREATE INDEX `customer_modified_idx` ON `customer` ( `modified` )",
1518 "CREATE INDEX `customer_userId_idx` ON `customer` ( `userId` )",
1519 "CREATE INDEX `customer_date_idx` ON `customer` ( `date` )",
1520 "CREATE TRIGGER onupdate_trigger_customer after update on `customer` for each row when new.modified is not null and old.modified = 0 begin update `customer` set modified = 1 where `customer`.id = new.id; end",
1521 "CREATE TABLE `enterprise` (`address` VARCHAR , `addressNumber` VARCHAR , `adicional` VARCHAR , `autoChangeDate` SMALLINT , `backgroundUrl` VARCHAR , `bairro` VARCHAR , `businessCode` VARCHAR , `businessName` VARCHAR , `category` BIGINT , `city` VARCHAR , `cityCode` VARCHAR , `codPag` VARCHAR , `coords` VARCHAR , `dataOnline` VARCHAR , `email` VARCHAR , `ie` VARCHAR , `logoUrl` VARCHAR , `name` VARCHAR , `phone` VARCHAR , `senha` VARCHAR , `serverHostname` VARCHAR , `serverIp` VARCHAR , `state` VARCHAR , `strikes` INTEGER , `token` VARCHAR , `uf` VARCHAR , `ufCode` VARCHAR , `versaoAntiga` INTEGER , `zipCode` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1522 "CREATE INDEX `enterprise_active_idx` ON `enterprise` ( `active` )",
1523 "CREATE INDEX `enterprise_modified_idx` ON `enterprise` ( `modified` )",
1524 "CREATE INDEX `enterprise_remoteId_idx` ON `enterprise` ( `remoteId` )",
1525 "CREATE INDEX `enterprise_userId_idx` ON `enterprise` ( `userId` )",
1526 "CREATE INDEX `enterprise_date_idx` ON `enterprise` ( `date` )",
1527 "CREATE INDEX `enterprise_enterpriseId_idx` ON `enterprise` ( `enterpriseId` )",
1528 "CREATE TRIGGER onupdate_trigger_enterprise after update on `enterprise` for each row when new.modified is not null and old.modified = 0 begin update `enterprise` set modified = 1 where `enterprise`.id = new.id; end",
1529 "CREATE TABLE `menuitemgroup` (`isLimited` SMALLINT , `limited` BIGINT , `max` BIGINT , `min` BIGINT , `name` VARCHAR , `price` VARCHAR , `pricing` INTEGER , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1530 "CREATE INDEX `menuitemgroup_userId_idx` ON `menuitemgroup` ( `userId` )",
1531 "CREATE INDEX `menuitemgroup_enterpriseId_idx` ON `menuitemgroup` ( `enterpriseId` )",
1532 "CREATE INDEX `menuitemgroup_date_idx` ON `menuitemgroup` ( `date` )",
1533 "CREATE INDEX `menuitemgroup_remoteId_idx` ON `menuitemgroup` ( `remoteId` )",
1534 "CREATE INDEX `menuitemgroup_active_idx` ON `menuitemgroup` ( `active` )",
1535 "CREATE INDEX `menuitemgroup_modified_idx` ON `menuitemgroup` ( `modified` )",
1536 "CREATE TRIGGER onupdate_trigger_menuitemgroup after update on `menuitemgroup` for each row when new.modified is not null and old.modified = 0 begin update `menuitemgroup` set modified = 1 where `menuitemgroup`.id = new.id; end",
1537 "CREATE TABLE `pagseguro` (`metodo` VARCHAR , `parcelas` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1538 "CREATE INDEX `pagseguro_remoteId_idx` ON `pagseguro` ( `remoteId` )",
1539 "CREATE INDEX `pagseguro_modified_idx` ON `pagseguro` ( `modified` )",
1540 "CREATE INDEX `pagseguro_userId_idx` ON `pagseguro` ( `userId` )",
1541 "CREATE INDEX `pagseguro_enterpriseId_idx` ON `pagseguro` ( `enterpriseId` )",
1542 "CREATE INDEX `pagseguro_date_idx` ON `pagseguro` ( `date` )",
1543 "CREATE INDEX `pagseguro_active_idx` ON `pagseguro` ( `active` )",
1544 "CREATE TRIGGER onupdate_trigger_pagseguro after update on `pagseguro` for each row when new.modified is not null and old.modified = 0 begin update `pagseguro` set modified = 1 where `pagseguro`.id = new.id; end",
1545 "CREATE TABLE `history` (`mesaDestino` VARCHAR , `mesaOrigem` VARCHAR , `metodo` VARCHAR , `motivo` VARCHAR , `obs` VARCHAR , `obs2` VARCHAR , `produto` VARCHAR , `quantidade` VARCHAR , `valor` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1546 "CREATE INDEX `history_userId_idx` ON `history` ( `userId` )",
1547 "CREATE INDEX `history_date_idx` ON `history` ( `date` )",
1548 "CREATE INDEX `history_remoteId_idx` ON `history` ( `remoteId` )",
1549 "CREATE INDEX `history_modified_idx` ON `history` ( `modified` )",
1550 "CREATE INDEX `history_enterpriseId_idx` ON `history` ( `enterpriseId` )",
1551 "CREATE INDEX `history_active_idx` ON `history` ( `active` )",
1552 "CREATE TRIGGER onupdate_trigger_history after update on `history` for each row when new.modified is not null and old.modified = 0 begin update `history` set modified = 1 where `history`.id = new.id; end",
1553 "CREATE TABLE `nfcehistory` (`cabecalho` VARCHAR , `number` VARCHAR , `serie` VARCHAR , `status` VARCHAR , `total` VARCHAR , `xml` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1554 "CREATE INDEX `nfcehistory_modified_idx` ON `nfcehistory` ( `modified` )",
1555 "CREATE INDEX `nfcehistory_enterpriseId_idx` ON `nfcehistory` ( `enterpriseId` )",
1556 "CREATE INDEX `nfcehistory_active_idx` ON `nfcehistory` ( `active` )",
1557 "CREATE INDEX `nfcehistory_date_idx` ON `nfcehistory` ( `date` )",
1558 "CREATE INDEX `nfcehistory_userId_idx` ON `nfcehistory` ( `userId` )",
1559 "CREATE INDEX `nfcehistory_remoteId_idx` ON `nfcehistory` ( `remoteId` )",
1560 "CREATE TRIGGER onupdate_trigger_nfcehistory after update on `nfcehistory` for each row when new.modified is not null and old.modified = 0 begin update `nfcehistory` set modified = 1 where `nfcehistory`.id = new.id; end",
1561 "CREATE TABLE `configuration` (`cambio_na_conta` SMALLINT , `conta_resumida` SMALLINT , `imprimir_delivery` SMALLINT , `imprimir_mix` SMALLINT , `permitido_mudar_quantidade_atend` SMALLINT , `request_numero_direta` SMALLINT , `venda_direta` SMALLINT , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1562 "CREATE INDEX `configuration_remoteId_idx` ON `configuration` ( `remoteId` )",
1563 "CREATE INDEX `configuration_userId_idx` ON `configuration` ( `userId` )",
1564 "CREATE INDEX `configuration_date_idx` ON `configuration` ( `date` )",
1565 "CREATE INDEX `configuration_modified_idx` ON `configuration` ( `modified` )",
1566 "CREATE INDEX `configuration_active_idx` ON `configuration` ( `active` )",
1567 "CREATE INDEX `configuration_enterpriseId_idx` ON `configuration` ( `enterpriseId` )",
1568 "CREATE TRIGGER onupdate_trigger_configuration after update on `configuration` for each row when new.modified is not null and old.modified = 0 begin update `configuration` set modified = 1 where `configuration`.id = new.id; end",
1569 "CREATE TABLE `numbernfce` (`number` VARCHAR , `serie` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1570 "CREATE INDEX `numbernfce_active_idx` ON `numbernfce` ( `active` )",
1571 "CREATE INDEX `numbernfce_date_idx` ON `numbernfce` ( `date` )",
1572 "CREATE INDEX `numbernfce_userId_idx` ON `numbernfce` ( `userId` )",
1573 "CREATE INDEX `numbernfce_modified_idx` ON `numbernfce` ( `modified` )",
1574 "CREATE INDEX `numbernfce_remoteId_idx` ON `numbernfce` ( `remoteId` )",
1575 "CREATE INDEX `numbernfce_enterpriseId_idx` ON `numbernfce` ( `enterpriseId` )",
1576 "CREATE TRIGGER onupdate_trigger_numbernfce after update on `numbernfce` for each row when new.modified is not null and old.modified = 0 begin update `numbernfce` set modified = 1 where `numbernfce`.id = new.id; end",
1577 "CREATE TABLE `municipio` (`cidade` VARCHAR , `codigo_cidade` VARCHAR , `codigo_uf` VARCHAR , `uf` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1578 "CREATE INDEX `municipio_date_idx` ON `municipio` ( `date` )",
1579 "CREATE INDEX `municipio_enterpriseId_idx` ON `municipio` ( `enterpriseId` )",
1580 "CREATE INDEX `municipio_active_idx` ON `municipio` ( `active` )",
1581 "CREATE INDEX `municipio_userId_idx` ON `municipio` ( `userId` )",
1582 "CREATE INDEX `municipio_modified_idx` ON `municipio` ( `modified` )",
1583 "CREATE INDEX `municipio_remoteId_idx` ON `municipio` ( `remoteId` )",
1584 "CREATE TRIGGER onupdate_trigger_municipio after update on `municipio` for each row when new.modified is not null and old.modified = 0 begin update `municipio` set modified = 1 where `municipio`.id = new.id; end",
1585 "CREATE TABLE `addons` (`_id` VARCHAR , `amount` VARCHAR , `ativo` SMALLINT , `descricao` VARCHAR , `expiration` VARCHAR , `img` VARCHAR , `internalId` VARCHAR , `multi` SMALLINT , `nome` VARCHAR , `quantidade` INTEGER , `token` VARCHAR , `type` VARCHAR , `ultimoSync` VARCHAR , `useId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1586 "CREATE INDEX `addons_modified_idx` ON `addons` ( `modified` )",
1587 "CREATE INDEX `addons_enterpriseId_idx` ON `addons` ( `enterpriseId` )",
1588 "CREATE INDEX `addons_userId_idx` ON `addons` ( `userId` )",
1589 "CREATE INDEX `addons_remoteId_idx` ON `addons` ( `remoteId` )",
1590 "CREATE INDEX `addons_date_idx` ON `addons` ( `date` )",
1591 "CREATE INDEX `addons_active_idx` ON `addons` ( `active` )",
1592 "CREATE TRIGGER onupdate_trigger_addons after update on `addons` for each row when new.modified is not null and old.modified = 0 begin update `addons` set modified = 1 where `addons`.id = new.id; end",
1593 "CREATE TABLE `timesync` (`sync` VARCHAR , `time` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1594 "CREATE INDEX `timesync_active_idx` ON `timesync` ( `active` )",
1595 "CREATE INDEX `timesync_userId_idx` ON `timesync` ( `userId` )",
1596 "CREATE INDEX `timesync_remoteId_idx` ON `timesync` ( `remoteId` )",
1597 "CREATE INDEX `timesync_modified_idx` ON `timesync` ( `modified` )",
1598 "CREATE INDEX `timesync_enterpriseId_idx` ON `timesync` ( `enterpriseId` )",
1599 "CREATE INDEX `timesync_date_idx` ON `timesync` ( `date` )",
1600 "CREATE TRIGGER onupdate_trigger_timesync after update on `timesync` for each row when new.modified is not null and old.modified = 0 begin update `timesync` set modified = 1 where `timesync`.id = new.id; end",
1601 "CREATE TABLE `dispositivos` (`_id` VARCHAR , `token` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1602 "CREATE INDEX `dispositivos_modified_idx` ON `dispositivos` ( `modified` )",
1603 "CREATE INDEX `dispositivos_remoteId_idx` ON `dispositivos` ( `remoteId` )",
1604 "CREATE INDEX `dispositivos_date_idx` ON `dispositivos` ( `date` )",
1605 "CREATE INDEX `dispositivos_active_idx` ON `dispositivos` ( `active` )",
1606 "CREATE INDEX `dispositivos_userId_idx` ON `dispositivos` ( `userId` )",
1607 "CREATE INDEX `dispositivos_enterpriseId_idx` ON `dispositivos` ( `enterpriseId` )",
1608 "CREATE TRIGGER onupdate_trigger_dispositivos after update on `dispositivos` for each row when new.modified is not null and old.modified = 0 begin update `dispositivos` set modified = 1 where `dispositivos`.id = new.id; end",
1609 "CREATE TABLE `numeracaodireta` (`numero` INTEGER , `tempTableId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1610 "CREATE INDEX `numeracaodireta_modified_idx` ON `numeracaodireta` ( `modified` )",
1611 "CREATE INDEX `numeracaodireta_date_idx` ON `numeracaodireta` ( `date` )",
1612 "CREATE INDEX `numeracaodireta_active_idx` ON `numeracaodireta` ( `active` )",
1613 "CREATE INDEX `numeracaodireta_remoteId_idx` ON `numeracaodireta` ( `remoteId` )",
1614 "CREATE INDEX `numeracaodireta_enterpriseId_idx` ON `numeracaodireta` ( `enterpriseId` )",
1615 "CREATE INDEX `numeracaodireta_userId_idx` ON `numeracaodireta` ( `userId` )",
1616 "CREATE TRIGGER onupdate_trigger_numeracaodireta after update on `numeracaodireta` for each row when new.modified is not null and old.modified = 0 begin update `numeracaodireta` set modified = 1 where `numeracaodireta`.id = new.id; end",
1617 "CREATE TABLE `usage` (`_id` VARCHAR , `expiration` VARCHAR , `internalId` VARCHAR , `licenseId` VARCHAR , `active` SMALLINT , `creationDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `date` VARCHAR , `enterpriseId` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `lastSync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `modified` INTEGER , `modifiedAt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , `remoteId` VARCHAR , `userId` VARCHAR , UNIQUE (`remoteId`))",
1618 "CREATE INDEX `usage_modified_idx` ON `usage` ( `modified` )",
1619 "CREATE INDEX `usage_active_idx` ON `usage` ( `active` )",
1620 "CREATE INDEX `usage_enterpriseId_idx` ON `usage` ( `enterpriseId` )",
1621 "CREATE INDEX `usage_userId_idx` ON `usage` ( `userId` )",
1622 "CREATE INDEX `usage_remoteId_idx` ON `usage` ( `remoteId` )",
1623 "CREATE INDEX `usage_date_idx` ON `usage` ( `date` )",
1624 "CREATE TRIGGER onupdate_trigger_usage after update on `usage` for each row when new.modified is not null and old.modified = 0 begin update `usage` set modified = 1 where `usage`.id = new.id; end"
1625 ]
1626
1627 var user = new req.db.User();
1628 user.name = req.body.name;
1629 user.password = sha1("AsDpw" + req.body.password + "$ALTeD");
1630 user.phone = req.body.phone;
1631 user.login = digitGenerator(6);
1632 user.machines = [];
1633 user.partnerId = mongoose.Types.ObjectId(req.body.partnerId);
1634 user.type = 'pdv';
1635
1636
1637 var machine = new req.db.Machine();
1638 var user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(req.params.userId)})
1639
1640 let xSchema = schema.reduce((prev, curr, index) => {
1641 return prev + ';' + curr
1642 })
1643 machine.userId = mongoose.Types.ObjectId(req.params.userId);
1644 machine.type = 'PDV_master';
1645 await machine.save();
1646 user.machines.push(mongoose.Types.ObjectId(machine._id));
1647 await user.save()
1648 machine.name = machine._id.toString();
1649 machine.serialNumber = machine._id.toString();
1650 await machine.save();
1651 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1652 const fileExists = fs.existsSync(DATA_DIR + '/' + machine._id + '.db');
1653 const finalPath = DATA_DIR + '/' + machine._id + '.db';
1654 if (fileExists) {
1655 res.send({status: 0, msg: 'Master already created'});
1656 } else {
1657 fs.writeFile(finalPath, '', (errFs) => {
1658 var dbSqlite = new sqlite3.Database(finalPath);
1659 dbSqlite.exec(xSchema, (err) => {
1660 if (err) {
1661 console.log(err);
1662 res.status(500).send(err);
1663 } else {
1664
1665 res.send(machine);
1666 }
1667 })
1668 });
1669
1670 }
1671
1672})
1673
1674// Generate a ddl from the parametrized machine
1675router.get('/restricted/generate/ddl/:machineId', (req, res) => {
1676 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1677 var db = new sqlite3.Database(DATA_DIR + '/' + req.params.machineId + '.db');
1678
1679
1680 db.all('select * from sqlite_master where sql is not null and name not in ("sqlite_sequence")', (err, rows) => {
1681
1682 let x = rows.map(item => item.sql)
1683 res.send(JSON.stringify(x, null, 4));
1684 })
1685
1686})
1687
1688
1689
1690
1691// Clones a database from the parametrized machineId
1692// TODO add a proper suffix
1693router.get('/clone/:machineId', async (req, res) => {
1694 var machine = await req.db.Machine.findOne({_id: mongoose.Types.ObjectId(req.params.machineId)})
1695 if (machine) {
1696 var newMachine = await new req.db.Machine();
1697 newMachine.name = "clone " + machine._id.toString();
1698 var user = await req.db.User.findOne({_id: mongoose.Types.ObjectId(machine.userId)});
1699 newMachine.userId = mongoose.Types.ObjectId(user._id);
1700 await newMachine.save();
1701 user.machines.push(mongoose.Types.ObjectId(newMachine._id));
1702 await user.save();
1703 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1704 var db = new sqlite3.Database(DATA_DIR + '/' + req.params.machineId + '.db');
1705 fs.copyFile(DATA_DIR + '/' + req.params.machineId + '.db', DATA_DIR + '/' + newMachine._id.toString()+ '.db', (err) => {
1706 if (err) throw err;
1707 res.send({status: 1, msg: 'cloned'});
1708 console.log('copied to destination');
1709 });
1710 } else {
1711 res.send({status: 0, msg: 'Not Cloned'})
1712 }
1713})
1714
1715
1716// Deletes all databases from parametrized userId
1717router.delete('/restricted/databases/from-user/:userId', async (req, res) => {
1718 if (req.params.userId) {
1719 let machines = await req.db.Machines.find({userId: mongoose.Types.ObjectId(req.params.userId)});
1720
1721 await machines.remove();
1722
1723 res.send({status: 1, msg: 'removed machines from user'});
1724 } else {
1725 res.status(400).send({status: 0, msg: 'User not valid'})
1726 }
1727
1728})
1729
1730
1731// Crud starts here
1732
1733
1734// List all partners
1735router.get('/restricted/partners', async (req,res) => {
1736 let limit = req.query.limit || 25;
1737 let page = req.query.page || 1;
1738
1739 const partners = await req.db.Partners.find({}, null, {limit: Number(limit), skip: Number(limit) * (Number(page) - 1)});
1740 const partnersCount = await req.db.Partners.countDocuments({});
1741 res.send({docs: partners, count: partnersCount});
1742
1743})
1744
1745// List all partners counting its clients
1746router.get('/restricted/partners/v2', async (req, res) => {
1747 /*
1748 var users = await req.db.User.aggregate([
1749 {"$lookup":{"from": "Partners", "localField": "partnerId", "foreignField": "_id", "as": "testings"}}
1750
1751 ], (err, response) => {
1752 res.send(response)
1753 })
1754 */
1755 res.send([{status: 1}]);
1756 /*var result = await req.db.Partners.aggregate([
1757 {"$lookup": {"from": "User", "localField": "_id", "foreignField": "partnerId", "as": "user_docs"}}
1758
1759 ], (err, response) => {
1760 res.send(response)
1761 })*/
1762})
1763
1764
1765// Add a partner
1766router.post('/restricted/partner', async (req,res) => {
1767 let tempCode = Date.now().toString();
1768 let activationCode = tempCode.substring(tempCode.length - 1, tempCode.length) + tempCode.substring(tempCode.length - 9, tempCode.length-4);
1769 req.body.code = activationCode;
1770 req.body.password = sha1("AsDpw" + req.body.password + "$ALTeD");
1771 req.body.compact_logo = req.body.logoUrl;
1772
1773 req.body.uuid = generator.generate();
1774 partner = await new req.db.Partners(req.body);
1775 await partner.save();
1776 res.send(partner);
1777})
1778
1779
1780// Updates a partner by parametrized id
1781router.put('/restricted/partner/:id', async (req,res) => {
1782 if (req.params.id) {
1783 let partner = await req.db.Partners.findOne({_id: mongoose.Types.ObjectId(req.params.id)});
1784 if (partner) {
1785 let request = req.body
1786 partner.name = request.name,
1787 partner.contactName = request.contactName,
1788 partner.email = request.email,
1789 partner.phone = request.phone,
1790 partner.compact_logo = request.compact_logo,
1791 partner.logoUrl = request.logoUrl,
1792 partner.textColor = request.textColor,
1793 partner.password = (req.body.changePassword ? sha1("AsDpw" + req.body.password + "$ALTeD") : partner.password),
1794 partner.colorScheme = request.colorScheme,
1795 partner.domain = request.domain,
1796 await partner.save();
1797 res.send(partner);
1798 }else {
1799 res.status(400).send({status: 0, msg: 'Id not valid'});
1800 }
1801
1802 }else {
1803 res.status(400).send({status: 0, msg: 'Id not valid'});
1804 }
1805
1806})
1807
1808
1809// TODO generate a new code for the partner, needs to update in cascade of dependants
1810router.put('/restricted/partners/code/:code', async (req,res) => {
1811 res.send({code: 000000})
1812})
1813
1814// Deletes a partner by parametrized id
1815router.delete('/restricted/partner/:id', async (req, res) => {
1816 var partner = await req.db.Partners.find({_id: mongoose.Types.ObjectId(req.params.id)})
1817 if (partner) {
1818 let response = await req.db.Partners.deleteOne({_id: mongoose.Types.ObjectId(req.params.id)});
1819 res.send(response);
1820 } else {
1821 res.status(404).send({status: 0, msg: 'partner not found'});
1822 }
1823})
1824
1825// Executes a sql command in a database
1826// Receives sql: <String>(sql command), type: <String> (null | 'all' | 'run' | 'exec'), sync <Boolean>(null, true, false)
1827router.post('/restricted/database/sql/:databaseId', async (req, res) => {
1828 var sqlComand = req.body.sql;
1829 var commandType = req.body.type || 'all';
1830 var willSync = req.body.sync || false;
1831
1832
1833 const machines = await req.db.Machine.findOne({
1834 _id: mongoose.Types.ObjectId(req.params.databaseId)
1835 });
1836
1837 if (machines) {
1838 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1839 var db = new sqlite3.Database(DATA_DIR + '/' + req.params.databaseId + '.db');
1840 db[commandType](sqlComand, (err, rows) => {
1841 if (err) {
1842 res.send({result: err.toString(), error: true})
1843 } else {
1844 if (rows) {
1845 res.send({result: JSON.stringify(rows, null, 4), error: false});
1846 } else {
1847 res.send({result: 'EXECUTED: ' + sqlComand, error: false})
1848 }
1849 if(willSync) {
1850 if(sockets.servers[req.params.databaseId]) {
1851
1852 // console.log(TAG, 'emit event sync');
1853
1854 sockets.servers[req.params.databaseId].emit('sync');
1855
1856 }
1857 }
1858 }
1859 })
1860
1861 } else {
1862 res.status(404).send({status: 0, msg: 'Machine not found'})
1863 }
1864
1865})
1866
1867
1868// Get licenses
1869router.get('/restricted/licenses', async (req, res) => {
1870 let results = await req.db.Licence.find({})
1871 res.send(results)
1872})
1873
1874// Get Usage
1875router.get('/restricted/licenses/active', async (req, res) => {
1876
1877 let limit = req.query.limit || '25';
1878 let page = req.query.page || '0';
1879 let isActive = req.query.active || '1'
1880
1881 if (isActive == '1') {
1882 let results = await req.db.Usage.find({}, null, {limit: Number(limit), skip: Number(limit) * Number(page)}).lean();
1883 let count = await req.db.Usage.countDocuments({});
1884 let licenses = await req.db.Licence.find({}).lean();
1885
1886 let final = results.map(item => {
1887 item.license = licenses.filter(lic => {
1888 return lic._id.toString() == item.licenceId.toString();
1889 })[0]
1890 return item
1891 })
1892
1893 res.send({data: await final, count: count});
1894 } else {
1895 let licenses = await req.db.Licence.find({}, null, {limit: Number(limit), skip: Number(limit) * Number(page)});
1896 let count = await req.db.Licence.countDocuments({});
1897 res.send({data: await licenses, count: count});
1898 }
1899})
1900
1901
1902router.put('/restricted/licenses/active/:id', async (req, res) => {
1903 let usage = await req.db.Usage.find({_id: mongoose.Types.ObjectId(req.params.id)})
1904 usage.expiration = req.body.expiration;
1905 usage.active = req.body.active;
1906 await usage.save();
1907 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1908 let databaseName = usage.serialNumber.toString();
1909
1910 var db = new sqlite3.Database(DATA_DIR + '/' + databaseName + '.db');
1911
1912 db.run('update usage set active = ?, expiration = ? where _id = ?', [
1913 usage.active,
1914 new Date(usage.expiration).toISOString(),
1915 usage._id.toString()
1916 ], err => {
1917 if(sockets.servers[machineId]) {
1918
1919 // console.log(TAG, 'emit event sync');
1920
1921 sockets.servers[MachineId].emit('sync');
1922 res.send(usage)
1923
1924 }
1925 });
1926
1927})
1928
1929
1930router.get('/machines/:masterId', async (req, res) => {
1931 let machines = await req.db.Machine.find({serialNumber: req.params.masterId, type: 'PDV_child'}).lean();
1932
1933 res.send(machines);
1934
1935})
1936
1937
1938// Update licenses
1939router.put('/restricted/licenses/:id', async (req, res) => {
1940 let license = await req.db.Licence.find({_id: mongoose.Types.ObjectId(req.params.id)})
1941 license.amount = req.body.amount;
1942 license.name = req.body.name;
1943 await license.save()
1944 res.send(license)
1945})
1946
1947// find a partner by parametrized searchTerm
1948router.get('/restricted/partner/find/:searchTerm', async (req, res) => {
1949 let results = await req.db.Partners.find({name: { $regex: req.params.searchTerm, $options: 'i' }})
1950 res.send(results)
1951})
1952
1953
1954
1955// Reports start here
1956router.post('/reports/:reportName', async (req, res) => {
1957
1958 var availablePostReports = {machinedetails:{
1959 name: 'machinedetails',
1960 sql: 'select sum(amont) as amount, sum(convertedAmount) as converted, paymentMethodName as name, iso from payment where userId = ? group by paymentMethodName',
1961 values: [
1962 {from: 'body', name: 'machineId'}
1963 ]
1964 }}
1965
1966
1967
1968 let token = JWT.verify(req.headers['authorization'].replace('Bearer ', ''), '232312321123123');
1969
1970 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
1971
1972 let db = new sqlite3.Database(DATA_DIR + token.id + '.db');
1973 let data = {
1974 body: req.body,
1975 params: req.params,
1976 query: req.query
1977 }
1978
1979 let valQuery = availablePostReports[data.params.reportName].values.map(item => {
1980 return data[item.from][item.name]
1981 })
1982
1983 db.all(availablePostReports[data.params.reportName].sql, valQuery, (err, rows) => {
1984 if (err) console.warn(err);
1985 console.log('EXECUTED \n', availablePostReports[data.params.reportName].sql, valQuery)
1986 res.send(rows);
1987 })
1988
1989})
1990
1991
1992function createCSV(data, req, res) {
1993 const path = require('path');
1994 const os = require('os');
1995 const filename = path.join(__dirname, new Date().getTime() + '.csv');
1996 const output = []; // holds all rows of data
1997
1998
1999
2000 data.forEach((d) => {
2001 const row = []; // a new array for each row of data
2002 row.push(d.name);
2003 row.push(d.qty);
2004 row.push(d.total);
2005 row.push(d.creationDate);
2006
2007 output.push(row.join()); // by default, join() uses a ','
2008 });
2009
2010 fs.writeFile(filename, output.join(os.EOL), (err) => {
2011 res.send(output.join(os.EOL))
2012 });
2013}
2014
2015router.get('/event/pagseguro/report/:dbId', (req, res) => {
2016 let initialDate = req.query.initialDate;
2017 let finalDate = req.query.finalDate;
2018 let isMaster = req.query.isMaster || '0';
2019 let saveFile = req.query.save || false;
2020
2021 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
2022
2023 if (isMaster == '0') {
2024 let sql = 'select sum(payment.amount) as total, payment.creationDate, count(payment.remoteId) as qty, iso as iso, paymentMethodName as name from payment inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and payment.paymentMethodName is "PagSeguro" and t.date >= ? and t.date <= ? group by payment.creationDate';
2025 let sumSql = 'select sum(amount) as total from `payment` inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ? and payment.paymentMethodName is "PagSeguro" ';
2026 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2027 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2028 if (rowsErr) console.warn(rowsErr)
2029
2030 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2031 if (err) console.warn(err);
2032
2033 let finalSum = sums[0];
2034 if (saveFile) {
2035 createCSV(rows.map(item => {
2036 let date = new Date(item.creationDate);
2037 date.setTime(date.getTime() - 3*60*60*1000);
2038 item.creationDate = date.toISOString();
2039 return item
2040 }), req, res)
2041 }else {
2042 res.send({rows: rows.map(item => {item.creationDate = new Date(item.creationDate).toISOString(); return item}), sum: finalSum});
2043
2044 }
2045
2046 })
2047 })
2048 }else {
2049 let sql = 'select sum(payment.amount) as total, payment.creationDate, count(payment.remoteId) as qty, iso as iso, paymentMethodName as name from payment inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ? and payment.paymentMethodName is "PagSeguro" group by payment.creationDate ';
2050
2051 let sumSql = 'select sum(amount) as total from `payment` inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ? and payment.paymentMethodName is "PagSeguro" ';
2052 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2053 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2054 if (rowsErr) console.warn(rowsErr)
2055
2056 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2057 if (err) console.warn(err)
2058 let finalSum = sums[0];
2059
2060 if (saveFile) {
2061 createCSV(rows.map(item => {
2062 let date = new Date(item.creationDate);
2063 date.setTime(date.getTime() - 3*60*60*1000);
2064 item.creationDate = date.toISOString();
2065 return item
2066 }), req, res)
2067 }else {
2068 res.send({rows: rows.map(item => {item.creationDate = new Date(item.creationDate).toISOString(); return item}), sum: finalSum})
2069
2070 }
2071 })
2072 })
2073 }
2074
2075
2076})
2077
2078
2079// TODO group up all reports in one file or one request
2080router.get('/event/sales/groups/:dbId', (req, res) => {
2081 let initialDate = req.query.initialDate;
2082 let finalDate = req.query.finalDate;
2083 let isMaster = req.query.isMaster || '0';
2084 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
2085
2086
2087 if (isMaster == '0') {
2088 let sql = 'select sum(o.price * o.qty) as total, sum(o.qty) as qty, "BRL" as iso, g.name as name from `order` o inner join menuItem m on m.remoteId = o.`menuitemId` inner join menuitemgroup g on m.menuItemGroupId = g.remoteId where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ? group by g.name order by g.name, o.name';
2089 let sumSql = 'select sum(o.price * o.qty) as total from `order` o where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ?';
2090 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2091 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2092 if (rowsErr) console.warn(rowsErr)
2093
2094 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2095 if (err) console.warn(err);
2096
2097 let finalSum = sums[0];
2098 res.send({rows: rows, sum: finalSum});
2099 })
2100 })
2101 }else {
2102 let sql = 'select sum(o.price * o.qty) as total, sum(o.qty) as qty, "BRL" as iso, g.name as name from `order` o inner join menuItem m on m.remoteId = o.`menuitemId` inner join menuitemgroup g on m.menuItemGroupId = g.remoteId where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ? group by g.name order by g.name, o.name';
2103 let sumSql = 'select sum(o.price * o.qty) as total from `order` o where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ?';
2104 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2105 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2106 if (rowsErr) console.warn(rowsErr)
2107
2108 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2109 if (err) console.warn(err)
2110 let finalSum = sums[0];
2111 res.send({rows: rows, sum: finalSum})
2112 })
2113 })
2114 }
2115
2116});
2117
2118
2119router.get('/event/payments/report/:dbId', (req, res) => {
2120 let initialDate = req.query.initialDate;
2121 let finalDate = req.query.finalDate;
2122 let isMaster = req.query.isMaster || '0';
2123
2124 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
2125
2126 if (isMaster == '0') {
2127 let sql = 'select sum(payment.amount) as total, count(payment.remoteId) as qty, iso as iso, paymentMethodName as name from payment inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ? group by paymentMethodName';
2128 let sumSql = 'select sum(amount) as total from `payment` inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ? and paymentMethodName not in ("Sangria", "Fundo de Caixa")';
2129 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2130 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2131 if (rowsErr) console.warn(rowsErr)
2132
2133 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2134 if (err) console.warn(err);
2135
2136 let finalSum = sums[0];
2137 res.send({rows: rows, sum: finalSum});
2138 })
2139 })
2140 }else {
2141 let sql = 'select sum(payment.amount) as total, count(payment.remoteId) as qty, iso as iso, paymentMethodName as name from payment inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ? group by paymentMethodName';
2142
2143 let sumSql = 'select sum(amount) as total from `payment` inner join temptable t on t.tableId = payment.tempTableId where payment.active is 1 and t.date >= ? and t.date <= ?';
2144 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2145 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2146 if (rowsErr) console.warn(rowsErr)
2147
2148 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2149 if (err) console.warn(err)
2150 let finalSum = sums[0];
2151 res.send({rows: rows, sum: finalSum})
2152 })
2153 })
2154 }
2155
2156
2157})
2158
2159router.get('/event/report/:dbId', (req, res) => {
2160 let isMaster = req.query.isMaster || '0';
2161 let initialDate = req.query.initialDate;
2162 let finalDate = req.query.finalDate;
2163
2164 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
2165
2166 if (isMaster == '0') {
2167 let sql = 'select sum(o.price * o.qty) as total, sum(o.qty) as qty, "BRL" as iso, o.name as name from `order` o where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ? group by o.menuItemId';
2168 let sumSql = 'select sum(o.price * o.qty) as total from `order` o where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ?';
2169 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2170 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2171 if (rowsErr) console.warn(rowsErr)
2172
2173 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2174 if (err) console.warn(err);
2175
2176 let finalSum = sums[0];
2177 res.send({rows: rows, sum: finalSum});
2178 })
2179 })
2180 }else {
2181 let sql = 'select sum(o.price * o.qty) as total, sum(o.qty) as qty, "BRL" as iso , o.name as name from `order` o where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ? group by o.menuItemId';
2182 let sumSql = 'select sum(o.price * o.qty) as total from `order` o where o.closed is 1 and o.active is 1 and o.date >= ? and o.date <= ?';
2183 let db = new sqlite3.Database(DATA_DIR + req.params.dbId + '.db');
2184 db.all(sql, [initialDate, finalDate], (rowsErr, rows) => {
2185 if (rowsErr) console.warn(rowsErr)
2186
2187 db.all(sumSql, [initialDate, finalDate], (err, sums) => {
2188 if (err) console.warn(err)
2189 let finalSum = sums[0];
2190 res.send({rows: rows, sum: finalSum})
2191 })
2192 })
2193 }
2194})
2195
2196
2197router.get('/reports/:reportName', async (req, res) => {
2198
2199 let baseSql = 'select sum(o.price * o.qty) as total, sum(o.qty) as qty, p.iso as iso , o.name as name, p.paymentMethodName as paymentMethod from `order` o left join payment p on p.tempTableId = o.tempTableId where o.closed is 1 and o.active is 1 group by o.menuItemId, paymentMethodName';
2200 let sumSql = 'select sum(o.price * o.qty) as total from `order` o where o.closed is 1 and o.active is 1';
2201
2202 var availableGetReports = {
2203 permachine: {
2204 name: 'permachine',
2205 sql: baseSql,
2206 values: [
2207
2208 ]
2209 },
2210 payments: {
2211 name: 'payments',
2212 sql: 'select sum(amount) as amount, sum(convertedAmount) as converted, iso, sum(o.qty) as qty, paymentMethodName as name, iso from payment where date between ? and ? group by paymentMethodName',
2213 values: [
2214 {from: 'query', name: 'date1'},
2215 {from: 'query', name: 'date2'},
2216 ]
2217 },
2218 soldproducts:{
2219 name: 'soldproducts',
2220 sql: 'select o.name as name, sum(o.qty * o.price) as total, sum(o.qty) as qty, userId as machine, max(p.iso) as iso from `order` o left join payment p on o.tempTableId = p.tempTableId where date between ? and ? and o.closed is 1 group by menuItemId',
2221 values: [
2222 {from: 'query', name: 'date1'},
2223 {from: 'query', name: 'date2'},
2224 ]
2225 },
2226 }
2227
2228 let token = JWT.verify(req.headers['authorization'].replace('Bearer ', ''), '232312321123123');
2229
2230 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
2231
2232 let db = new sqlite3.Database(DATA_DIR + token.id + '.db');
2233 let data = {
2234 body: req.body,
2235 params: req.params,
2236 query: req.query
2237 }
2238
2239 let valQuery = availableGetReports[data.params.reportName].values.map(item => {
2240 return data[item.from][item.name]
2241 })
2242
2243 db.all(availableGetReports[data.params.reportName].sql, valQuery, (err, rows) => {
2244 if (err) console.warn(err);
2245 console.log('EXECUTED \n', availableGetReports[data.params.reportName].sql, valQuery)
2246 res.send(rows);
2247 })
2248
2249})
2250
2251function getSimpleDate(date) {
2252 var simpleDate = new Date(date).getFullYear() + '-' + ((new Date(date).getMonth() + 1).toString().length == 1 ? '0' + (new Date(date).getMonth() + 1).toString() : (new Date(date).getMonth() + 1).toString()) + '-' + ((new Date(date).getDate()).toString().length == 1 ? '0' + (new Date(date).getDate()).toString() : (new Date(date).getDate()).toString())
2253 return simpleDate;
2254}
2255
2256
2257async function updateDatesChildren(user, initialDate, finalDate, req, res) {
2258 let children = await req.db.Machine.find({userId: mongoose.Types.ObjectId(user._id)});
2259
2260 let date = getSimpleDate(initialDate);
2261
2262 if (user.type !== "user") {
2263
2264 sql = 'update enterprise set modified = 1, date = ?, name = ?, businessName = ?';
2265 values = [date, user.name, user.name]
2266 index = 0;
2267 console.log('will process children', children);
2268 var DATA_DIR = __dirname.substr(0, __dirname.length - 12) + '/data/';
2269
2270 (async function next() {
2271 let i = index;
2272 const finalPath = DATA_DIR + '/' + children[i]._id + '.db';
2273 console.log('running in ' + children[i].name)
2274
2275 var tempDb = new sqlite3.Database(finalPath);
2276
2277 tempDb.run(sql, values, (err2) => {
2278 if (err2) throw err2;
2279 console.log('sexecuted sql in child');
2280
2281 if (children.length > index) {
2282 if(sockets.servers[children[i]._id.toString()]){
2283
2284 console.log('emit event sync and child is', children[i].name);
2285
2286 sockets.servers[children[i]._id].emit('sync');
2287 }else {
2288 console.log('not finding socket with ' + children[i]._id.toString())
2289 }
2290 next();
2291 } else {
2292 if(sockets.servers[children[i]._id]){
2293
2294 console.log('emit event sync and child is', children[i].name);
2295
2296 sockets.servers[children[i]._id].emit('sync');
2297 }else {
2298 console.log('not finding socket with ' + children[i]._id.toString())
2299 }
2300 res.send(user)
2301 delete next;
2302 }
2303 index ++;
2304
2305 });
2306 })();
2307
2308 } else {
2309
2310 res.status(400).send({status: 0, msg: 'Bad request, cannot edit user'})
2311
2312 }
2313
2314}
2315
2316
2317
2318
2319
2320
2321module.exports = router;