ldc-com-app/ComApp/src/App/Controllers/SyncController.js

159 lines
4.2 KiB
JavaScript
Raw Normal View History

2022-10-05 18:03:52 +02:00
// Lodash
import _ from 'lodash';
// Http Client
import axios from 'axios';
// Network Infos
import NetInfo from "@react-native-community/netinfo";
// Application infos
import * as Application from 'expo-application';
// Database
2022-10-06 16:25:15 +02:00
import { Setting, Contact, SendBrochure, Document } from '../../Database';
2022-10-05 18:03:52 +02:00
const api_token = 'toto';
const app_uuid = '1f6eda31-1f6d-49fe-aa81-4f0aece0f7ca';
const url = "https://dev-app.rhd-ldc.fr";
class SyncController {
async checkConnection() {
NetInfo.fetch().then(state => {
return state.isConnected;
});
return false;
}
async getVersion() {
return axios({
method: 'GET',
url: url + '/api/version',
responseType: 'json',
params: {
token: api_token,
app_uuid: app_uuid,
app_version: Application.nativeApplicationVersion
},
});
}
async getUsers() {
return axios({
method: 'GET',
url: url + '/api/users',
responseType: 'json',
params: {
token: api_token
},
});
}
async getContacts(userId) {
let contacts = Contact.getAll();
return axios({
method: 'POST',
url: url + '/api/contacts',
responseType: 'json',
params: {
token: api_token
},
data: {
contacts: contacts,
userId: userId,
}
});
}
async sendBrochures() {
let brochures = SendBrochure.getAll();
for (const brochure of brochures) {
await axios({
method: 'POST',
url: url + '/api/sendBrochure',
responseType: 'json',
params: {
token: api_token,
emails: brochure,
},
});
}
SendBrochure.clear();
}
async getDirectories() {
return axios({
method: 'GET',
url: url + '/api/directories',
responseType: 'json',
params: {
token: api_token
},
});
}
2022-10-06 16:25:15 +02:00
async getDocuments() {
return axios({
method: 'GET',
url: url + '/api/documents',
responseType: 'json',
params: {
token: api_token,
},
});
}
updateLastModificationDoc(id, date) {
Document.update({ id: id, updated_at: date.toString() }, true);
}
updateVersion(version) {
const localVersion = Setting.get('version');
if (localVersion === false || localVersion === undefined) {
Setting.add({ key: 'version', value: version });
} else {
Setting.update({ id: localVersion.id, key: 'version', value: version });
}
}
2022-10-05 18:03:52 +02:00
updateShowIsActive(value) {
const local = Setting.get('ShowIsActive');
if (local === false || local === undefined) {
Setting.add({ key: 'ShowIsActive', value: value });
} else {
Setting.update({ id: local.id, key: 'ShowIsActive', value: value });
}
}
2022-10-06 16:25:15 +02:00
isSynced() {
const SendBrochure = SendBrochure.getAll();
const Contacts = Contact.getAll();
if (SendBrochure !== undefined && Contacts !== undefined) {
const noSynced = Contacts.filtered('synced = false');
if (SendBrochure.length > 0 || noSynced.length > 0) {
return false;
}
}
return true;
}
isLogged() {
const logged = Setting.get('isLogged');
const loggedTime = Setting.get('loggedTime');
if (
logged !== false &&
loggedTime !== false &&
logged !== undefined &&
loggedTime !== undefined
) {
let seconds =
Math.abs(new Date(Number(loggedTime.value)) - Date.now()) / 1000;
if (seconds < 14400) {
// 4h
return true;
}
return false;
}
return false;
}
2022-10-05 18:03:52 +02:00
}
export default new SyncController();