const Realm = require('realm'); let geolib = require("geolib") import GeolocatedPoint from './../../model/GeolocatedPoint' import Network from './../../model/Network' import {getLocalMarkers} from '../MapService'; GeolocatedPointSchema = { name: "GeolocatedPoint", properties: { id: 'int', firstname: 'string?', lastname: 'string', adresse: 'string', longitude: 'float', latitude: 'float', phone: 'string?', solde: 'int', country: 'string', category: 'string', email: 'string', etat: 'int', code_parrain: 'string', code_dial: 'string', network_id: 'int', transactionNumber: 'string?', code_membre: 'string', network: 'string' } } export default class MarkerManager { realm constructor() { this.realm = new Realm({schema: [GeolocatedPointSchema]}) } getLocalMarkers() { return this.realm.objects('GeolocatedPoint').slice(0, 3); } async getLocalMarkersFromDistance(distance: 5, location) { return new Promise((resolve, reject) => { let points = getLocalMarkers(); return points.filter((mark, index) => { const position = {longitude: parseFloat(mark.longitude), latitude: parseFloat(mark.latitude)} return geolib.getDistance(position, location) <= (distance * 1000) }) }); } close() { this.realm.close(); } async insertMarkers(markers: Array) { return new Promise((resolve, reject) => { var count = 0 let rejet = [] markers.forEach((value, index) => { try { this.realm.write(() => { this.realm.create('GeolocatedPoint', value); }); count++ } catch (e) { console.log("Error on creation"); reject(e) rejet.push(value) } }) resolve({row: count, total: markers.length, rejet: rejet}) }) } }