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