81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
|
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<any>) {
|
||
|
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})
|
||
|
|
||
|
})
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|