ilink-world/webservice/persistences/MarkerManager.js

74 lines
2.0 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})
})
}
}