1275 lines
49 KiB
PHP
1275 lines
49 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: freuddebian
|
|
* Date: 04/08/18
|
|
* Time: 22:36
|
|
*/
|
|
|
|
|
|
include 'DataBaseConnector.php';
|
|
|
|
/**
|
|
* Cette classe matérialise la resource qui execute une requete
|
|
*/
|
|
class Requester
|
|
{
|
|
|
|
//TODO ajouter la comparaison partiel de la ville query with la ville
|
|
// Step 3: instantiate a new Twilio Rest Client
|
|
/**
|
|
* @var Messenger Le messenger de TWILIO
|
|
*/
|
|
var $messenger;
|
|
/**
|
|
* @var DataBaseConnector Le connecteur de base de données
|
|
*/
|
|
var $db;
|
|
/**
|
|
* @var int ID de l'utilisateur
|
|
*/
|
|
var $user_id;
|
|
/**
|
|
* @var mixed le message
|
|
*/
|
|
var $messageText;
|
|
/**
|
|
* @var array Les langues anglaises
|
|
*/
|
|
var $enLangs=["en","en-US","en_US","ca","in","gb","GB","us","en-029","en-AU","en-BZ","en-CA","en-GB","en-IE","en-IN","en-JM","en-MY","en-NZ","en-PH","en-SG","en-TT","en-US","en-ZA","en-ZW","au","bz","ie","in","jm","my","nz","ph","sg","tt","za"];
|
|
/**
|
|
* Requester constructor.
|
|
*/
|
|
public function __construct($user_id,$lang="fr")
|
|
{
|
|
|
|
$this->db = new DataBaseConnector();
|
|
$this->user_id = $user_id;
|
|
$this->messenger=new Messenger();
|
|
$la=$lang;
|
|
$pos=strpos($la,"-");
|
|
if($pos!=false){
|
|
$la=strtolower(explode("-",$la)[0]);
|
|
}
|
|
if(in_array($la,$this->enLangs))$la='en';
|
|
|
|
try{
|
|
if(!file_exists("./../static/$la/message.json")){
|
|
$la="en";
|
|
}
|
|
|
|
$this->messageText=file_get_contents("./../static/$la/message.json");
|
|
$this->messageText=json_decode($this->messageText,true);
|
|
}catch(Exception $e){
|
|
$subject = "Password Recovery";
|
|
$message ="erreur : la=".$la;
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setHeader($headers);
|
|
$this->messenger->setMessage($message);
|
|
$this->messenger->setContact($number);
|
|
$this->messenger->setReceiverMail($mail['email']);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retourne la config administrateur sans chargement
|
|
* @return false|string
|
|
*/
|
|
public function getPasValue(){
|
|
$pasObject=$this->db->getPasValue();
|
|
if($pasObject)return json_encode(['pas'=>$pasObject]);
|
|
else return json_encode(['error'=>mysqli_error($this->db->con)]);
|
|
}
|
|
|
|
/**
|
|
* Retourne la config de la publicité en fonction du pays
|
|
* @param $id_country ID du pays
|
|
* @return false|string
|
|
*/
|
|
public function getPubValue($id_country){
|
|
$pasObject=$this->db->getPubValue($id_country);
|
|
if($pasObject)return json_encode(['pub'=>$pasObject]);
|
|
else return json_encode(['error'=>mysqli_error($this->db->con)]);
|
|
}
|
|
|
|
/**
|
|
* Supprime un agent
|
|
* @param string $code code agent
|
|
* @return false|string
|
|
*/
|
|
public function deleteAgent($code){
|
|
$agent=$this->db->getAgentWithCodeMembre($code);
|
|
if($agent){
|
|
$codeId=$agent['idCode'];
|
|
$res=mysqli_query($this->db->con,"DELETE FROM networks_agents where codeGenerer_id='$codeId'");
|
|
$re=mysqli_query($this->db->con,"DELETE FROM codeGenerer where id='$codeId'");
|
|
return json_encode(['count_network'=>mysqli_num_rows($res),"count_code"=>mysqli_num_rows($re)]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Connecte un utilisateur avec son numero de telephone et son mot de passe
|
|
* @param string $phone
|
|
* @param string $password
|
|
* @return array|bool|mysqli_result|null L'utilisateur ou un message d'erreur
|
|
*/
|
|
public function loginPhonePassword($phone, $password)
|
|
{
|
|
// check for user
|
|
$user = $this->loginUser($phone, $password);
|
|
if (!$user) {
|
|
$user = $this->loginAgent($phone, $password);
|
|
if (!$user) {
|
|
$response["error"] = 1;
|
|
$response["error_msg"] =$this->messageText["PHONE_OR_NUMBER_INCORRECT"] ;
|
|
return $response;
|
|
}
|
|
}
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* Retourne toutes les infos sur un agent
|
|
* @param string $code code agent
|
|
* @return false|string
|
|
*/
|
|
public function getAgentInfoByCode($code){
|
|
$codes=$this->getChildCode($code);
|
|
if(isset($codes["child"])){
|
|
$codes['network']=$this->db->getAgentNetworkByCode($code);
|
|
}
|
|
return json_encode($codes);
|
|
}
|
|
|
|
/**
|
|
* Retourne les reseaux d'un superviseur
|
|
* @param string $codesuperviseur
|
|
* @return array
|
|
*/
|
|
public function getSuperviseurNetwork($codesuperviseur)
|
|
{
|
|
$point = $this->db->getSuperviseurNetwork($codesuperviseur, $this->user_id);
|
|
if (isset($point['success'])) {
|
|
$response['success'] = 1;
|
|
$response['datas'] = $point['val'];
|
|
$response['catchild']=$point['catchild'];
|
|
$response['catparent']=$point['catparrain'];
|
|
return $response;
|
|
} else {
|
|
$response = ['error' => 1,
|
|
'error_msg' => $this->messageText['UNABLE_TO_GET_GEOLOCATED_POINT'], 'sql_error' => $point["error"]];
|
|
return $response;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Recupere la liste des coordonnées des points agents d'une ville
|
|
* @param $country
|
|
* @return array
|
|
*/
|
|
public function getAllCountryPoint($country)
|
|
{
|
|
$point = $this->db->getAllPointInCountry($country);
|
|
if ($point) {
|
|
$response['success'] = 1;
|
|
$response['datas'] = $point;
|
|
return $response;
|
|
} else {
|
|
$response = ['error' => 1, 'error_msg' => "impossible de recupere les points de cette ville"];
|
|
return $response;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retrouve le mot de passe oublié d'un agent
|
|
* @param string $number
|
|
* @return array
|
|
*/
|
|
public function recoverPasswordAgent($number)
|
|
{
|
|
if ($this->db->isPhoneExistedSimple($number)) {
|
|
$randomcode = $this->db->random_string();
|
|
$hash = $this->db->hashSSHA($randomcode);
|
|
$encrypted_password = $hash["encrypted"]; // encrypted password
|
|
$salt = $hash["salt"];
|
|
$user = $this->db->forgotPasswordSimple($number, $encrypted_password, $salt);
|
|
if ($user) {
|
|
$mail = $this->db->getEmailSimple($number);
|
|
if ($mail) {
|
|
$subject = "Password Recovery";
|
|
$message = sprintf($this->messageText['TEXT_RECOVERY_PASSWORD'],$randomcode);
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setHeader($headers);
|
|
$this->messenger->setMessage($message);
|
|
$this->messenger->setContact($number);
|
|
$this->messenger->setReceiverMail($mail['email']);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
$this->messenger->sendSms();
|
|
|
|
// Stop Sending SMS
|
|
$response["success"] = 1;
|
|
|
|
$response["message"] =sprintf($this->messageText['MESSAGE_SUCCESS_RECOVERY_PASSWORD'],$mail["email"]);
|
|
return $response;
|
|
} else {
|
|
$response["error"] = -6;
|
|
$response["message"] = "impossible d'envoyer le mail";
|
|
$response["last_error"] = mysqli_error($this->db->con);
|
|
return $response;
|
|
}
|
|
} else {
|
|
$response["error"] = -7;
|
|
$response["message"] = "impossible de changer le mots de passe";
|
|
$response["last_error"] = mysqli_error($this->db->con);
|
|
return $response;
|
|
|
|
}
|
|
}else
|
|
return ['error' => -5, 'message' => "Ce numéro n'existe pas",'phone'=>$number];
|
|
}
|
|
|
|
/**
|
|
* Retrouve le mot de passe oublié d'un utilisateur
|
|
* @param string $number
|
|
* @return array
|
|
*/
|
|
public function recoverUserPassword($number)
|
|
{
|
|
if ($this->db->isPhoneExistedSimple($number)) {
|
|
$randomcode = $this->db->random_string();
|
|
$hash = $this->db->hashSSHA($randomcode);
|
|
$encrypted_password = $hash["encrypted"]; // encrypted password
|
|
$salt = $hash["salt"];
|
|
$user = $this->db->forgotPasswordSimple($number, $encrypted_password, $salt);
|
|
if ($user) {
|
|
$mail = $this->db->getEmailSimple($number);
|
|
if ($mail) {
|
|
$subject = "Password Recovery";
|
|
$message = sprintf($this->messageText['TEXT_RECOVERY_PASSWORD'],$randomcode);
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setHeader($headers);
|
|
$this->messenger->setMessage($message);
|
|
$this->messenger->setContact($number);
|
|
$this->messenger->setReceiverMail( $mail["email"]);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
//$this->messenger->sendSms();
|
|
|
|
// Stop Sending SMS
|
|
$response["success"] = 1;
|
|
$response["message"] = sprintf($this->messageText['MESSAGE_SUCCESS_RECOVERY_PASSWORD'],$mail["email"]);
|
|
return $response;
|
|
} else {
|
|
$response["error"] = -6;
|
|
$response["message"] = "impossible d'envoyer le mail";
|
|
$response["last_error"] = mysqli_error($this->db->con);
|
|
return $response;
|
|
}
|
|
} else {
|
|
$response["error"] = -7;
|
|
$response["message"] = "impossible de changer le mots de passe";
|
|
$response["last_error"] = mysqli_error($this->db->con);
|
|
return $response;
|
|
|
|
}
|
|
}else
|
|
return ['error' => -5, 'message' => 'Ce numéro n\'existe pas',"phone"=>"$number"];
|
|
|
|
}
|
|
|
|
/**
|
|
* Envoie un mail
|
|
* @param string $email
|
|
* @param string $subject
|
|
* @param string $message
|
|
* @param string $headers
|
|
*/
|
|
private function sendMail($email, $subject, $message, $headers)
|
|
{
|
|
mail($email, $subject, $message, $headers);
|
|
}
|
|
|
|
/**
|
|
* Envoi un message
|
|
* @param string $message
|
|
* @param string $number
|
|
*/
|
|
private function sendMessage($message, $number)
|
|
{
|
|
$sms = $this->client->account->messages->create(
|
|
$number,
|
|
array(
|
|
// Step 6: Change the 'From' number below to be a valid Twilio number
|
|
// that you've purchased
|
|
'from' => sender_number,
|
|
|
|
|
|
// the sms body
|
|
'body' => $message
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Retourne les points agents d'un réseau autour d'un rayon de kilometres
|
|
* @param string $reseau
|
|
* @param $position
|
|
* @param float $distance
|
|
* @param int $page
|
|
* @return false|string
|
|
*/
|
|
public function getPointAroundKm($reseau, $position, $distance, $page)
|
|
{
|
|
$list=$this->db->getPointInDistance($reseau,$position,$distance,$page);
|
|
return json_encode($list);
|
|
}
|
|
|
|
/**
|
|
* Retourne tous les points agents d'un réseau
|
|
* @param $network
|
|
* @return false|string
|
|
*/
|
|
public function getNetworkPoint($network)
|
|
{
|
|
$points = $this->db->getPointsNetwork($network, $this->user_id);
|
|
if (!isset($points['error'])) {
|
|
$pts=['success'=>1,'datas'=>$points];
|
|
return json_encode($pts);
|
|
} else
|
|
return json_encode(['error' => -4, 'error_msg' => 'error query','mysql'=> mysqli_error($this->db->con),"data"=>$points,"network"=>$network,"user"=>$this->user_id]);
|
|
|
|
}
|
|
|
|
/**
|
|
* Calcule la distance entre 2 points sur la carte
|
|
* @param int $lat1 Latitude du 1er point
|
|
* @param int $lon1 Longitude du 1er point
|
|
* @param int $lat2 Latitude du 2eme point
|
|
* @param int $lon2 Longitude du 2eme point
|
|
* @return float
|
|
*/
|
|
function distance($lat1, $lon1, $lat2, $lon2)
|
|
{
|
|
|
|
$theta = $lon1 - $lon2;
|
|
|
|
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +
|
|
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
|
|
$dist = acos($dist);
|
|
$dist = rad2deg($dist);
|
|
$miles = $dist * 60 * 1.1515;
|
|
$unit = "K";
|
|
|
|
if ($unit == "K") {
|
|
return ($miles * 1.609344);
|
|
} else if ($unit == "N") {
|
|
return ($miles * 0.8684);
|
|
} else {
|
|
return $miles;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Inscrire un agent
|
|
* @param $request Requete d'inscription
|
|
* @return false|string
|
|
*/
|
|
public function registerGeolocated($request)
|
|
{
|
|
if ($this->db->isPhoneExistedInCategory($request->phone, $request->category,$request->phone_transaction)) {
|
|
// user is already existed - error response
|
|
$response["error"] = 1;
|
|
$response["error_msg"] = $this->messageText['ALREADY_PHONE_NUMBER'];
|
|
echo json_encode($response);
|
|
} else {
|
|
if ($checkValidity = $this->db->checknumberValidity($request->phone)) {
|
|
$membercodetest = $this->db->isMemberCodeExisted($request->member);
|
|
if ($membercodetest) {
|
|
$user = $this->db->storeUser($request->address, $request->lastname, $request->email, $request->phone,
|
|
$request->password, $request->network, $request->member, $request->latitude, $request->longitude, $request->town,$request->phone_transaction);
|
|
if ($user != null && !isset($user['error'])) {
|
|
//if ($user) {
|
|
// user stored successfully
|
|
//Create wallet if network has wallet
|
|
if($this->db->getConfigWallet($request->network->id))
|
|
$this->db->createWalletForAgent($request->phone_transaction);
|
|
$user["success"] = 1;
|
|
$validation = $user["validation_code"];
|
|
$username = $user["lastname"];
|
|
$subject = "Bienvenue sur Ilink";
|
|
$code=$user["code_membre"];
|
|
$phone = $user['phone'];
|
|
$ct=($user['category']=='geolocated'?$this->messageText['AGENT_GEO']:($user['category']=='super'?$this->messageText['ADMIN']:$this->messageText['SUPER_ADMIN']));
|
|
$message1 =sprintf($this->messageText['MESSAGE_1'],$username,$ct,$phone,$request->password,$code,$validation);
|
|
$message2 = sprintf($this->messageText['MESSAGE_2'],$username,$ct,$phone,$request->password,$code);
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$name = "ilink";
|
|
|
|
$this->messenger->setReceiverMail($user['email']);
|
|
$this->messenger->setContact($user['phone']);
|
|
$this->messenger->setMessage($user['category']=='super'?$message2:$message1);
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setHeader($headers);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
$sms = $this->messenger->sendSms();
|
|
|
|
|
|
}
|
|
return json_encode($user);
|
|
|
|
/* echo "Réseau : ".strtoupper($user["network"])."<br />";
|
|
echo "<br />";
|
|
echo "Nom(s) :".$user["lastname"]."<br />";
|
|
echo "Email par défaut du réseau : ".$user["email"]."<br />";
|
|
echo "Telephone :".$user["phone"]."<br />";
|
|
echo "Code membre pour le réseau : ".$user["code_membre"]."<br />";
|
|
echo "<br />";*/
|
|
} else {
|
|
return json_encode(['error' => 'unable to get membrre', 'error_msg' => $this->messageText['NO_CODE_MEMBER']]);
|
|
|
|
}
|
|
}else{
|
|
return json_encode(['error' => 'unable to get membrre',"msg"=>$this->messageText, 'error_msg' => $this->messageText['INVALID_PHONE']]);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retourne tous les réseaux
|
|
* @return false|string
|
|
*/
|
|
public function getNetwork()
|
|
{
|
|
return json_encode($this->db->getNetwork());
|
|
}
|
|
|
|
/**
|
|
* Connecter un utilisateur
|
|
* @param string $phone
|
|
* @param $password
|
|
* @return array|bool|mysqli_result|null
|
|
*/
|
|
public function loginUser($phone, $password)
|
|
{
|
|
$user = $this->db->getUserByPhoneAndPasswordSimple($phone, $password);
|
|
if (!isset($user['error'])) {
|
|
// user found
|
|
// echo json with success = 1
|
|
$user["success"] = 1;
|
|
if(isset($user['active']))
|
|
$user['etat']=$user['active'];
|
|
|
|
} else {
|
|
switch ($user['error']){
|
|
case -2:$user['error_msg']=$this->messageText['WRONG_PHONE_NUMBER'];
|
|
$user['sql']=mysqli_error($this->db->con);
|
|
break;
|
|
case -3:
|
|
$user['error_msg']=$this->messageText['WRONG_PASSWORD'];break;
|
|
}
|
|
}
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* Connecte un agent (superviseur ou hyperviseur)
|
|
* @param string $phone
|
|
* @param string $password
|
|
* @return array|null
|
|
*/
|
|
public function loginAgent($phone, $password)
|
|
{
|
|
$user = $this->db->getUserByPhoneAndPasswordGeolocated($phone, $password);
|
|
if (!isset($user['error'])) {
|
|
// user found
|
|
// echo json with success = 1
|
|
$user["success"] = 1;
|
|
return $user;
|
|
|
|
} else
|
|
|
|
return $user;
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne la liste des demandes d'adhesion d'un superviseur
|
|
* @param string $codeparrain
|
|
* @return array|string
|
|
*/
|
|
public function getSupervisorAdhesionList($codeparrain)
|
|
{
|
|
$resparrain=mysqli_query($this->db->con,"SELECT na.id as id FROM networks_agents na INNER JOIN codeGenerer cg ON na.codeGenerer_id=cg.id WHERE cg.code_membre='$codeparrain'");
|
|
if($resparrain){
|
|
$parrain=mysqli_fetch_array($resparrain,MYSQLI_ASSOC)['id'];
|
|
|
|
$r=mysqli_query($this->db->con,"select ag.firstname as firstname,ag.lastname as lastname, ag.email as email,na.phone as phone ,ne.name as network,cg.code_membre as code_membre,cg.code_parrain as code_parrain,ds.etat as etat
|
|
from agents ag INNER JOIN networks_agents na ON ag.id=na.agent_id INNER JOIN codeGenerer cg ON na.codeGenerer_id=cg.id INNER JOIN networks ne ON na.network_id=ne.id INNER JOIN demandeAdhesion ds ON 1=1 WHERE ds.networks_agent_id='$parrain' AND cg.code_membre!='$codeparrain' AND na.etat='0' AND ds.etat='0' AND cg.code_parrain='$codeparrain'");
|
|
$rows=[];
|
|
if($r) {
|
|
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
|
|
|
|
$rows[] = $row;
|
|
}
|
|
if (count($rows) > 0) {
|
|
return $rows;
|
|
} else {
|
|
echo mysqli_error($this->db->con);
|
|
return $rows;
|
|
}
|
|
}else{
|
|
|
|
return ['error'=>mysqli_error($this->db->con)];
|
|
}
|
|
}else{
|
|
return mysqli_error($this->db->con);
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retourne la categorie des "fils" d'un menbre
|
|
* @param string $codeparrain
|
|
* @return array|null
|
|
*/
|
|
public function getChildCode($codeparrain)
|
|
{
|
|
$r=$this->db->getCategoryAgent($codeparrain);
|
|
if($r['etat']==1){
|
|
switch ($r['category']){
|
|
case 'hyper':
|
|
$r['child']='super';
|
|
break;
|
|
case 'super':
|
|
$r["child"]="geolocated";
|
|
break;
|
|
}
|
|
}
|
|
return $r;
|
|
}
|
|
|
|
/**
|
|
* Corrige un erreur d'accent sur les champs firstname de la table users_simple
|
|
* @return array|bool|mysqli_result
|
|
*/
|
|
public function updateWrongPoint()
|
|
{
|
|
$result=[];
|
|
try{
|
|
$result = mysqli_query($this->db->con, "UPDATE users_simple SET firstname = REPLACE(firstname, 'é', 'é') WHERE firstname LIKE '%é%'");
|
|
}catch (Exception $e) {
|
|
var_dump(mysqli_error($this->db->con));
|
|
}
|
|
$da="freud junior";
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Enregistre une demande de credit
|
|
* @param string $phone Numero du demandeur
|
|
* @param float $montant
|
|
* @param string $code Code de l'agent
|
|
* @return false|string
|
|
*/
|
|
public function storeCreditAsk($phone, $montant, $code)
|
|
{
|
|
$result=$this->db->storeDemandeCredit($phone,$montant,$code);
|
|
if ($result) {
|
|
$usr=$result['agent'];
|
|
$codeParrain=$usr['code_parrain'];
|
|
$parrain=$this->db->getAgentWithCodeMembre($codeParrain);
|
|
$num=$parrain['transactionNumber'];
|
|
$subject = $this->messageText['NEW_DEMAND_TITLE'];
|
|
$email = $usr['email'];
|
|
$message = sprintf($this->messageText['SEND_CREDIT_DEMAND_TEXT_SUCCESS'],$phone,$montant,$num);
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$name = "ilink";
|
|
|
|
$this->messenger->setHeader($headers);
|
|
$this->messenger->setContact($phone);
|
|
$this->messenger->setMessage($message);
|
|
$this->messenger->setReceiverMail($email);
|
|
$this->messenger->setSubject($subject);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
try {
|
|
$this->messenger->sendSms();
|
|
}catch (Exception $e){
|
|
|
|
}
|
|
} else {
|
|
// user failed to store
|
|
$response["error"] = 1;
|
|
$response["result"]=$result;
|
|
$response["error_msg"] = $this->messageText['UNABLE_TO_SEND_DEMAND'];
|
|
$response["sql"]=mysqli_error($this->db->con);
|
|
$response["last"]=error_get_last();
|
|
$response["montant"]=$montant;
|
|
$response["phone"]=$phone;
|
|
echo json_encode($response);
|
|
|
|
}
|
|
return json_encode($result);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Retourne les reseaux d'un pays en fonction de l'indicatif
|
|
* @param string $indicatif
|
|
* @return array
|
|
*/
|
|
public function getCountryNetWork($indicatif)
|
|
|
|
{
|
|
$res=mysqli_query($this->db->con,
|
|
"SELECT nt.id AS id, nt.name AS name,nt.country_id AS countryId FROM networks nt INNER JOIN countries ct
|
|
ON nt.country_id=ct.id WHERE ct.code_dial='$indicatif' AND nt.name!=''AND nt.status=1");
|
|
if($res){
|
|
$rows=[];
|
|
while($row=mysqli_fetch_array($res,MYSQLI_ASSOC)){
|
|
$rows[]=$row;
|
|
}
|
|
return $rows;
|
|
}else
|
|
return ['error'=>'unable to query list networks','error_sql'=>mysqli_error($this->db->con)];
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne les infos d'une ville en focntion du nom
|
|
* @params string $name Nom de la ville
|
|
* @return array
|
|
*/
|
|
public function getTownInfoByName($name)
|
|
{
|
|
|
|
$res=mysqli_query($this->db->con,"SELECT nt.name as name,nt.id as id ,ct.code_dial as indicatif FROM towns nt INNER JOIN countries ct ON nt.country_id=ct.id WHERE UPPER(nt.name)=UPPER('$name')");
|
|
if($res){
|
|
while($row=mysqli_fetch_array($res,MYSQLI_ASSOC)){
|
|
$rows[]=$row;
|
|
}
|
|
if($rows==null){
|
|
return ['error'=>'unable to query town information','ville'=>$name,'error_sql'=>mysqli_error($this->db->con)];
|
|
|
|
}
|
|
return $rows;
|
|
}else
|
|
return ['error'=>'unable to query town information','ville'=>$name,'error_sql'=>mysqli_error($this->db->con)];
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne la liste des villes d'un pays en focntion de l'indicatif
|
|
* @param string $indicatif
|
|
* @return array
|
|
*/
|
|
public function getListTownsCountry($indicatif)
|
|
{
|
|
|
|
$res=mysqli_query($this->db->con,"SELECT nt.name as name,nt.id as id ,ct.code_dial as indicatif FROM towns nt INNER JOIN countries ct ON nt.country_id=ct.id WHERE ct.code_dial='$indicatif'");
|
|
if($res){
|
|
$rows=[];
|
|
while($row=mysqli_fetch_array($res,MYSQLI_ASSOC)){
|
|
$rows[]=$row;
|
|
}
|
|
return $rows;
|
|
}else
|
|
return ['error'=>'unable to query list towns','indicatif'=>$indicatif,'error_sql'=>mysqli_error($this->db->con)];
|
|
|
|
}
|
|
|
|
/**
|
|
* Valider un compte agent en verifiant son code de validation
|
|
* @param string $phone Numero telephone
|
|
* @param string $code_validation Code
|
|
* @param int $mbre_reseau Nombre d'utilisateurs du reseau , pour un hyperviseur
|
|
* @param boolean $mr_sous_reseau
|
|
* @return array
|
|
*/
|
|
public function validateAgent($phone, $code_validation, $mbre_reseau=null, $mr_sous_reseau=null)
|
|
{
|
|
if(isset($phone) && isset($code_validation)){
|
|
$res=mysqli_query($this->db->con,"SELECT na.id as agentId,ag.id as agId,cg.category as category,cg.code_membre as code_membre,cg.code_parrain AS code_parrain FROM agents ag INNER JOIN networks_agents na on ag.id=na.agent_id inner JOIN codeGenerer cg ON na.codeGenerer_id=cg.id WHERE (na.phone='$phone' OR na.transactionNumber='$phone') AND na.validation_code='$code_validation' ORDER BY agId DESC LIMIT 1");
|
|
if($res){
|
|
if(mysqli_num_rows($res)>0){
|
|
$net=mysqli_fetch_array($res,MYSQLI_ASSOC);
|
|
$agentId=$net['agentId'];
|
|
$agId=$net['agId'];
|
|
$codeparrain = $net['code_parrain'];
|
|
$codeMembre=$net['code_membre'];
|
|
$re = mysqli_query($this->db->con, "SELECT ag.id as parrainId, ag.number_super as nbre_reseau,ag.number_geoBysuper as nbre_sous_reseau FROM agents ag INNER JOIN networks_agents na ON ag.id=na.agent_id inner JOIN codeGenerer cg ON na.codeGenerer_id=cg.id WHERE cg.code_membre='$codeparrain'");
|
|
if($re) {
|
|
$parrain = mysqli_fetch_array($re, MYSQLI_ASSOC);
|
|
$nbre_sup = $parrain['nbre_sous_reseau'];
|
|
$nbre = $parrain['nbre_reseau'];
|
|
$parrainId=$parrain['parrainId'];
|
|
switch ($net['category']) {
|
|
case 'hyper':
|
|
if (isset($mbre_reseau) && isset($mr_sous_reseau)) {
|
|
$r = mysqli_query($this->db->con, "UPDATE `networks_agents` SET etat = '1' WHERE `id` = $agentId ");
|
|
$var3["message_erreur_1"] = mysqli_error($this->db->con);
|
|
$rs = mysqli_query($this->db->con, "UPDATE agents SET number_super='$mbre_reseau',number_geoBysuper='$mr_sous_reseau' WHERE id='$agId'");
|
|
if ($r && $rs) {
|
|
|
|
$var3["success"] = 1;
|
|
$var3["message"] = "User has been validated successfully !";
|
|
return $var3;
|
|
} else {
|
|
$var3["error"] = 1;
|
|
$var3["message"] = mysqli_error($this->db->con);
|
|
return $var3;
|
|
}
|
|
} else {
|
|
|
|
$var3["error"] = -2;
|
|
$var3["message"] = "no nbre reseau et sous reseau";
|
|
return $var3;
|
|
|
|
}
|
|
break;
|
|
case 'geolocated':
|
|
$r = mysqli_query($this->db->con, "UPDATE networks_agents SET etat = '1' WHERE id = '$agentId' ");
|
|
if ($r) {
|
|
$nbre -= $nbre > 0 ? 1 : 0;
|
|
mysqli_query($this->db->con, "UPDATE agents SET number_geoBysuper = '$nbre' WHERE `id` = '$parrainId' ");
|
|
$var3["success"] = 1;
|
|
$var3["message"] = "User has been validated successfully !";
|
|
return $var3;
|
|
} else {
|
|
$var3["error"] = 1;
|
|
$var3["message"] = mysqli_error($this->db->con);
|
|
return $var3;
|
|
}
|
|
break;
|
|
case 'super':
|
|
$rs = mysqli_query($this->db->con, "UPDATE agents SET number_geoBysuper='$nbre_sup',number_super='$nbre_sup' WHERE id='$agId'");
|
|
if ($rs) {
|
|
if (mysqli_num_rows($re) > 0) {
|
|
$r = mysqli_query($this->db->con, "UPDATE `networks_agents` SET etat = '1' WHERE id ='$agentId'");
|
|
if ($r) {
|
|
$nbre -= $nbre > 0 ? 1 : 0;
|
|
if(mysqli_query($this->db->con, "UPDATE `agents` SET number_super = '$nbre' WHERE id='$parrainId'")){
|
|
$var3["success"] = 1;
|
|
$var3['nbre_sup']=$nbre;
|
|
$var3["message"] = "User has been validated successfully !";
|
|
return $var3;
|
|
|
|
}else {
|
|
$var3["error"] = 1;
|
|
$var3["message"] = mysqli_error($this->db->con);
|
|
return $var3;
|
|
}
|
|
|
|
} else {
|
|
$var3["error"] = 1;
|
|
$var3["message"] = mysqli_error($this->db->con);
|
|
return $var3;
|
|
}
|
|
|
|
} else {
|
|
$var3["error"] = -4;
|
|
$var3["message"] = "impossible de trouve le parrain";
|
|
$var3["error_sql"]=mysqli_error($this->db->con);
|
|
$var3["re"]=$re;
|
|
$var3['parrain']=$net;
|
|
return $var3;
|
|
|
|
}
|
|
} else {
|
|
$var3["error"] = -3;
|
|
$var3["message"] = mysqli_error($this->db->con);
|
|
return $var3;
|
|
}
|
|
break;
|
|
}
|
|
}else{
|
|
return ['error'=>'impossible de recuperer le parrain','error_msg'=>mysqli_error($this->db->con)];
|
|
|
|
}
|
|
}else{
|
|
return ['error'=>'invalide code','error_msg'=>"code de validation incorrect"];
|
|
}
|
|
}else{
|
|
return ['error'=>'unable to query info network agent','error_msg'=>mysqli_error($this->db->con)];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Valide une demande d'adhesion vers un superviseur
|
|
* @param string $code Code du demandeur
|
|
* @param string $phone Numero de telephone du demande
|
|
* @return false|string
|
|
*/
|
|
public function activeSupervisorAdhesion($code, $phone)
|
|
{
|
|
$idsUser=mysqli_query($this->db->con,"SELECT ag.email as email,ag.firstname as firstname,ag.lastname as lastname,na.validation_code as validation_code,na.phone as phone,
|
|
na.id as agent_id,ds.id,cg.code_membre as code_membre ,ds.id as demande_id FROM agents ag INNER JOIN networks_agents na ON ag.id=na.agent_id INNER JOIN demandeAdhesion ds ON 1=1 INNER JOIN codeGenerer cg ON na.codeGenerer_id=cg.id WHERE ds.phone='$phone' AND cg.code_membre='$code'");
|
|
if($idsUser){
|
|
$idsusr=mysqli_fetch_array($idsUser,MYSQLI_ASSOC);
|
|
$idAgent=$idsusr['agent_id'];
|
|
$demandeId=$idsusr['demande_id'];
|
|
$code_membre=$idsusr['code_membre'];
|
|
$udateDemande=mysqli_query($this->db->con,"UPDATE demandeAdhesion SET etat='1' , date_modified = CURRENT_TIMESTAMP WHERE id='$demandeId'");
|
|
if($udateDemande){
|
|
$user=$idsusr;
|
|
$validation = $user["validation_code"];
|
|
$username = $user["lastname"];
|
|
$subject = $this->messageText['WELCOME_ILINK'];
|
|
$phone = $user['phone'];
|
|
$ct=$this->messageText['ADMIN'];
|
|
$message1 =sprintf($this->messageText['MESSAGE_3'],$ct,$phone,$code_membre,$validation);
|
|
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$name = "ilink";
|
|
|
|
$this->messenger->setReceiverMail($user['email']);
|
|
$this->messenger->setContact($user['phone']);
|
|
$this->messenger->setMessage($message1);
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setHeader($headers);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
|
|
$sms = $this->messenger->sendSms();
|
|
|
|
|
|
}else{
|
|
echo mysqli_error($this->db->con);
|
|
}
|
|
echo json_encode($idsusr);
|
|
}else{
|
|
echo mysqli_error($this->db->con);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* Inscrire un nouvel utilisateur
|
|
* @param $request Requete d'inscription
|
|
* @return false|string
|
|
*/
|
|
public function registerUser($request)
|
|
{
|
|
if ($this->db->isPhoneExistedSimple($request->phone)) {
|
|
// user is already existed - error response
|
|
$response["error"] = 1;
|
|
$response["error_msg"] = "numero existe deja";
|
|
echo json_encode($response);
|
|
} else {
|
|
if ($checkValidity = $this->db->checknumberValidity($request->phone)) {
|
|
$user = $this->db->storeUserSimple($request->address, $request->lastname, $request->email,
|
|
$request->phone,
|
|
$request->password, $request->network);
|
|
if ($user != null && !isset($user['error'])) {
|
|
// Create wallet user
|
|
$this->db->createWalletIlink($request->phone);
|
|
|
|
$user["success"] = 1;
|
|
$username = $user["lastname"];
|
|
$subject = $this->messageText['WELCOME_ILINK'];
|
|
$phone = $user['phone'];
|
|
$validation_code=$user['validation_code'];
|
|
$ct=$this->messageText['USER_'];
|
|
$message1 =sprintf($this->messageText['MESSAGE_1_USER'],$username,$ct,$phone,$request->password,$validation_code);
|
|
$message2 = sprintf($this->messageText['MESSAGE_2'],$username,$ct,$phone,$request->password,"");
|
|
|
|
$from = "noreply@ilink-app.com";
|
|
$headers = "From:" . $from;
|
|
$name = "ilink";
|
|
|
|
$this->messenger->setReceiverMail($user['email']);
|
|
$this->messenger->setContact($user['phone']);
|
|
$this->messenger->setMessage($message1);
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setHeader($headers);
|
|
try{
|
|
$this->messenger->sendMail();
|
|
}catch (Exception $e){
|
|
return json_encode(error_get_last());
|
|
}
|
|
|
|
$sms = $this->messenger->sendSms();
|
|
|
|
} else {
|
|
$user = ['error' => 'impossible de créer l\'utilisateur', 'error_sql' => mysqli_error($this->db->con)];
|
|
}
|
|
return json_encode($user);
|
|
} else {
|
|
return json_encode(['error' => 'unable to get membrre', 'error_msg' =>$this->messageText['INVALID_PHONE']]);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Generer un agent geolocalisé vide pour un agent
|
|
* @param string $phone
|
|
* @param $code_parrain
|
|
* @return false|string
|
|
*/
|
|
public function generateEmptyAgentNetworkForAgent($phone, $code_parrain)
|
|
{
|
|
if ($this->db->isPhoneExistedInCategory($phone)) {
|
|
// user is al5eady existed - error response
|
|
$response["error"] = 1;
|
|
$response["error_msg"] =$this->messageText['ALREADY_PHONE_NUMBER'];
|
|
return json_encode($response);
|
|
}else{
|
|
$user=$this->db->generateNetworkAgent($phone,$code_parrain);
|
|
if(isset($user['success'])) {
|
|
$validation = $user["validation_code"];
|
|
$subject = $this->messageText['WELCOME_ILINK'];;
|
|
$phone1 = $user['phone'];
|
|
$ct=$this->messageText['AGENT_GEO'];
|
|
$message1 =sprintf($this->messageText['MESSAGE_3'],$ct,$phone,$validation);
|
|
|
|
|
|
$this->messenger->setContact($phone1);
|
|
$this->messenger->setMessage($message1);
|
|
$this->messenger->setSubject($subject);
|
|
|
|
if ($sms = $this->messenger->sendSms()) {
|
|
|
|
$user['message'] = $sms;
|
|
} else {
|
|
return json_encode(['error' => 'imossible d\'envoyer le message']);
|
|
};
|
|
}
|
|
return json_encode($user);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Assigner un reseau à un agent
|
|
* @param int $agentId
|
|
* @param string $code_parrain
|
|
* @param string $phone
|
|
* @return false|string
|
|
*/
|
|
public function assignNetworkToAgent($agentId, $code_parrain, $phone)
|
|
{
|
|
$agent = $this->db->getAgentById($agentId);
|
|
if ($agent) {
|
|
$indicatif=$agent["indicatif"];
|
|
if ($this->db->isPhoneExistedInCategory(null,null,$indicatif.$phone)) {
|
|
$response["error"] = 1;
|
|
$response["error_msg"] =$this->messageText['ALREADY_PHONE_NUMBER'];
|
|
return json_encode($response);
|
|
} else {
|
|
$parrain=$this->getChildCode($code_parrain);
|
|
if($parrain['child']==='geolocated'){
|
|
$user = $this->db->generateNetworkAgent($phone, $code_parrain,$agent);
|
|
if (isset($user['success'])) {
|
|
$result = $this->db->assignNetworkAgent($agentId, $user['id']);
|
|
if (isset($result['success'])) {
|
|
$geoLocated['success'] = 1;
|
|
$geoLocated['agent_id'] = $agentId;
|
|
$validation = $user["validation_code"];
|
|
$subject = $this->messageText['WELCOME_ILINK'];;
|
|
$phone1 = $user['phone'];
|
|
$message1 = sprintf($this->messageText['MESSAGE_ATTRIBUTE'],$phone1,$validation);
|
|
|
|
$this->messenger->setContact($phone1);
|
|
$this->messenger->setMessage($message1);
|
|
$this->messenger->setSubject($subject);
|
|
$this->messenger->setReceiverMail($agent['email']);
|
|
if ($sms = $this->messenger->sendSms()) {
|
|
|
|
$user['message'] = $sms;
|
|
} else {
|
|
return json_encode(['error' => 'imossible d\'envoyer le message']);
|
|
};
|
|
|
|
return json_encode($geoLocated);
|
|
} else {
|
|
return json_encode($result);
|
|
}
|
|
} else {
|
|
return json_encode($user);
|
|
}
|
|
|
|
|
|
}else{
|
|
return json_encode(['error'=>'impossible']);
|
|
}
|
|
}
|
|
} else {
|
|
return json_encode(['error' => mysqli_error($this->db->con)]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Retourne la liste de de tous les réseaux géolocalisés d'un agent
|
|
* @return array
|
|
*/
|
|
public function listNetworksGeo()
|
|
{
|
|
if($this->user_id){
|
|
$result= $this->db->getListNetworkOfGeoPoint($this->user_id);
|
|
if(!isset($result['error'])){
|
|
$networks=['success'=>1,'networks'=>$result];
|
|
return $networks;
|
|
|
|
}else
|
|
return $result;
|
|
}else{
|
|
return ['error'=>'unable to find user_id'];
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne la liste de de tous les réseaux libre d'un agent
|
|
* @return array
|
|
*/
|
|
public function listFreeNetworksForSuper()
|
|
{
|
|
if($this->user_id){
|
|
$result= $this->db->getListFreeNetworkOfGeoPoint($this->user_id);
|
|
if(!isset($result['error'])){
|
|
$networks=['success'=>1,'networks'=>$result];
|
|
return $networks;
|
|
|
|
}else
|
|
return $result;
|
|
}else{
|
|
return ['error'=>'unable to find user_id'];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retourne les demandes de credits recues
|
|
* @return false|string
|
|
*/
|
|
public function getAgentReceiveDemande()
|
|
{
|
|
if($this->user_id){
|
|
$result= $this->db->getListDemandeReceiveAgent($this->user_id);
|
|
if(!isset($result['error'])){
|
|
$networks=['success'=>1,'demands'=>$result];
|
|
return json_encode($networks);
|
|
|
|
}else
|
|
return json_encode($result);
|
|
}else{
|
|
return json_encode(['error'=>'unable to find user_id']);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne les demandes de crédits envoyés
|
|
* @return false|string
|
|
*/
|
|
public function getAgentSendDemande()
|
|
{
|
|
if($this->user_id){
|
|
$result= $this->db->getListDemandeSendAgent($this->user_id);
|
|
if(!isset($result['error'])){
|
|
$networks=['success'=>1,'demands'=>$result];
|
|
return json_encode($networks);
|
|
|
|
}else
|
|
return json_encode($result);
|
|
}else{
|
|
return json_encode(['error'=>'unable to find user_id']);
|
|
} }
|
|
|
|
/**
|
|
*
|
|
* @param string $phone
|
|
* @return false|string
|
|
*/
|
|
public function treatDemand($phone)
|
|
{
|
|
if($this->user_id){
|
|
$result= $this->db->treatDemand($this->user_id);
|
|
if(isset($result['success'])){
|
|
$this->messenger->setContact($phone);
|
|
$this->messenger->setMessage($this->messageText['MESSAGE_TREAT']);
|
|
$this->messenger->sendSms();
|
|
}
|
|
return json_encode($result);
|
|
}else{
|
|
return json_encode(['error'=>'unable to find user_id']);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne les pays actifs dans la plateforme
|
|
* @return array|false|string
|
|
*/
|
|
public function getActiveCountries()
|
|
{
|
|
$mq=mysqli_query($this->db->con,"SELECT DISTINCT ct.id,ct.code_dial,ct.name,ct.code_country FROM countries ct INNER JOIN networks ne ON ne.country_id=ct.id");
|
|
if($mq){
|
|
while($row=mysqli_fetch_array($mq,MYSQLI_ASSOC)){
|
|
$rows[]=$row;
|
|
}
|
|
return json_encode($rows);
|
|
}else{
|
|
return ['error'=>mysqli_error($this->db->con)];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retourne un agent en fonction de son ID
|
|
* @return array|bool|null
|
|
*/
|
|
public function getAgentById()
|
|
{
|
|
return$this->db->getAgentById($this->user_id);
|
|
}
|
|
|
|
/**
|
|
* Mettre a jour la position d'un agent
|
|
* @param int $agentId
|
|
* @param float $longitude
|
|
* @param float $latitude
|
|
* @return false|string
|
|
*/
|
|
public function updatePosition($agentId, $longitude, $latitude)
|
|
{
|
|
$result=[];
|
|
$q = mysqli_query($this->db->con, "UPDATE agents SET longitude='$longitude',latitude='$latitude' WHERE id='$agentId'");
|
|
if($q){
|
|
return json_encode(['success'=>1]);
|
|
}else return json_encode(['error'=>0,'sql'=>mysqli_error($this->db->con)]);
|
|
|
|
}
|
|
|
|
/**
|
|
* Valide un utilisateur
|
|
* @param string $phone
|
|
* @return array
|
|
*/
|
|
public function validateUser($phone)
|
|
{
|
|
|
|
if(isset($phone)){
|
|
$res=mysqli_query($this->db->con,"SELECT * from users_simple WHERE phone='$phone'");
|
|
if($res){
|
|
if(mysqli_num_rows($res)>0){
|
|
$user=mysqli_fetch_array($res,MYSQLI_ASSOC);
|
|
$userId=$user['id'];
|
|
$r = mysqli_query($this->db->con, "UPDATE users SET active = '1' WHERE id = '$userId' ");
|
|
if($r) {
|
|
$var3["success"] = 1;
|
|
$var3["message"] = "User has been validated successfully !";
|
|
$res=mysqli_query($this->db->con,"SELECT * from users_simple WHERE phone='$phone'");
|
|
$user=mysqli_fetch_array($res,MYSQLI_ASSOC);
|
|
$var3['user']=$user;
|
|
return $var3;
|
|
|
|
}else{
|
|
return ['error'=>'impossible de recuperer le parrain','error_msg'=>mysqli_error($this->db->con)];
|
|
|
|
}
|
|
}else{
|
|
return ['error'=>'invalide code','error_msg'=>"code de validation incorrect"];
|
|
}
|
|
}else{
|
|
return ['error'=>'unable to query info network agent','error_msg'=>mysqli_error($this->db->con)];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Retourne le porte feuille d'un agent
|
|
* @param int $idAgent
|
|
* @return array|null
|
|
*/
|
|
function getAgentWallet($idAgent){
|
|
$res=mysqli_query($this->db->con,"SELECT * FROM wallets where id_networkAgent=$idAgent");
|
|
if($res){
|
|
$agent=$row=mysqli_fetch_array($res,MYSQLI_ASSOC);
|
|
return $agent;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Creer un requete de retrait dans une carte de crédit
|
|
* @param string $numCarte Numero de la carte
|
|
* @param int $cvv
|
|
* @param float $montant
|
|
* @param $taxe
|
|
* @param int $idAgent
|
|
* @return array
|
|
*/
|
|
function createRequestRetrait($numCarte, $cvv, $montant, $taxe, $idAgent){
|
|
$agent=$this->getAgentWallet($idAgent);
|
|
$agentCommission=floatval($taxe*0.8);
|
|
$newBalance=floatval($agent['balance_princ'])+floatval($montant);
|
|
$commission=floatval($agent['balance_com'])+$agentCommission;
|
|
$id=$agent["id"];
|
|
$resCreditPrinc=mysqli_query($this->db->con,"INSERT INTO wallet_transaction(montant,type,statut,result,numCarte,id_wallet) VALUES ($montant,'credit',1,1,$numCarte,$id)");
|
|
if($resCreditPrinc){
|
|
$resCreditCom=mysqli_query($this->db->con,"INSERT INTO wallet_transaction(montant,type,statut,result,numCarte,id_wallet) VALUES ($agentCommission,'credit',1,1,$numCarte,$id)");
|
|
if($resCreditCom){
|
|
$resCredit=mysqli_query($this->db->con,"UPDATE wallets SET balance_princ=$newBalance,balance_com=$commission where id=$id");
|
|
}else{
|
|
echo mysqli_error($this->db->con);
|
|
}
|
|
}else{
|
|
echo mysqli_error($this->db->con);
|
|
}
|
|
return ["result"=>"success","agent"=>$this->getAgentWallet($idAgent)];
|
|
}
|
|
|
|
function virementComission($idAgent){
|
|
$wallet=$this->getAgentWallet($idAgent);
|
|
$newBalancePrinc = $wallet["balance_princ"] + $wallet["balance_com"];
|
|
$id=$wallet["id"];
|
|
$result =mysqli_query($this->db->con,"UPDATE wallets SET balance_princ= $newBalancePrinc ,balance_com=0 where id=$id");
|
|
if($result){
|
|
return ["result"=>"success","agent"=>$this->getAgentWallet($idAgent)];
|
|
}else{
|
|
return ["result"=>"failed","error"=>mysqli_error($this->db->con)];
|
|
}
|
|
}
|
|
|
|
}
|