function reserve_passengers($user, $pass, $refrence_id, $jpassengers, $mobile, $email, $address, $description) { // print_r($jpassengers); $sess = UsernameToken($user, $pass); $user_id = (int) $sess['user_id']; $customer_id = (int) $sess['customer_id']; if ($customer_id <= 0) { $out['err']['code'] = 2; $out['err']['ecode'] = "S010701"; $out['err']['msg'] = 'AUTH ERROR'; return json_encode($out); } $out['refrence_id'] = $refrence_id; $out['err']['code'] = 5; $out['err']['ecode'] = "S010702"; $out['err']['msg'] = 'DB ERROR'; $conf = new conf(); // $my = new mysqli($conf->local_host, $conf->local_user, $conf->local_pass, $conf->local_db); $my = new db_flight(); if ($my->connect_errno !== FALSE) { $my->set_charset("utf8"); $res = $my->query("select * from reserve_tmp where refrence_id = {$refrence_id} and state = 1"); // echo "select * from reserve_tmp where refrence_id = $refrence_id and state = 1"; //if ($r = $res->fetch_assoc()) { $source_ids = array(); $gress = array(); $res_ids = array(); while ($r = $res->fetch_assoc()) { $source_ids[] = (int) $r['source_id']; $gress[] = trim($r['first_out']) != '' ? json_decode(trim($r['first_out'])) : NULL; $resids[] = (int) $r['id']; $ok = TRUE; } if ($ok) { $apassengers = json_decode($jpassengers, TRUE); // $out['p'] = $apassengers; for ($ii = 0; $ii < count($source_ids); $ii++) { // $source_id = (int) $r['source_id']; // $gres = (trim($r['first_out']) != '') ? json_decode(trim($r['first_out'])) : NULL; // $out['err']['code'] = 3; // $out['err']['msg'] = 'SOURCE UNDFINED'; $source_id = $source_ids[$ii]; $gres = $gress[$ii]; if ($source_id == 1) { // $my->query("delete from ticket where refrence_id = $refrence_id"); $query = array(); $rt = 0; $reserve_tmp = $resids[$ii]; foreach ($apassengers as $ii => $passenger) { $passenger['birthday'] = str_replace('/', '-', $passenger['birthday']); $brth = explode("-", $passenger['birthday']); $birthday_a = jalali_to_jgregorian($brth[0], $brth[1], $brth[2]); $birthday = $birthday_a[0] . '-' . $birthday_a[1] . '-' . $birthday_a[2]; // $birthday=$passenger['birthday']; $shomare_melli = trim($passenger['pass_expire']) == '' ? $passenger['code_melli_pass'] : ''; $shomare_passport = trim($passenger['pass_expire']) != '' ? $passenger['code_melli_pass'] : ''; $age = 'ADT'; switch (strtolower($age)) { case 'child': $age = 'CHD'; break; case 'infant': $age = 'INF'; break; } switch ($passenger['gender']) { case 'M': $gender = 1; break; case 'F': $gender = 2; break; } $query[] = "({$refrence_id}," . $reserve_tmp . ",'" . $passenger['name'] . "','" . $passenger['family'] . "','" . $passenger['en_name'] . "','" . $passenger['en_family'] . "','" . $passenger['passenger_type'] . "','{$birthday}'," . $gender . ",'{$shomare_melli}','{$shomare_passport}','" . $passenger['pass_expire'] . "','{$mobile}','{$email}','{$address}')"; } if (count($query) > 0) { $qq = 'insert into ticket (`refrence_id`,`reserve_tmp_id`, `fname`, `lname`, `fname_en`, `lname_en`, `age`, `birthday`, `gender`, `shomare_melli`, `shomare_passport`, `passport_engheza`,`mobile`,`email`,`address`) values '; $qq .= implode(',', $query); $my->query($qq); } if ($gres != NULL && $gres->status == 1) { $passengers = array(); foreach ($apassengers as $passenger) { switch ($passenger['passenger_type']) { case 'CHD': $age = 'child'; break; case 'ADT': $age = 'adult'; break; case 'INF': $age = 'inf'; break; } $tmp_passenger = array("gender" => $passenger['gender'], "en_name" => $passenger['en_name'], "en_family" => $passenger['en_family'], "name" => $passenger['name'], "family" => $passenger['family'], "age" => $age, "birthday" => $passenger['birthday'], "code_melli_pass" => $passenger['code_melli_pass'], "pass_expire" => $passenger['pass_expire'], "nationality" => ""); $passengers[] = $tmp_passenger; } // $out['pp'] = $passengers; $voucher_id = $gres->voucher_id; $params = array('voucher_id' => $voucher_id, 'mobile' => "{$mobile}", 'email' => "{$email}", 'address' => "{$address}", "description" => "{$description}", 'passengers' => $passengers); $client = new nusoap_client('http://164.138.22.33/AAA/server.php?wsdl', true); $err = $client->getError(); // var_dump($err); if ($err) { $out['err']['code'] = 4; $out['err']['ecode'] = "S010703"; $out['err']['msg'] = 'GOHAR CONNECTION ERROR'; // $out['err']['msg'] = var_export($err,TRUE); return json_encode($out); } // print_r($params); file_put_contents("Passengers.xml", json_encode($params)); // $upd = "insert into log (`log`) values ('".convert_multi_array($passengers)."');"; // $my->query($upd); $my->log_request($refrence_id, $reserve_tmp, 1, 1, 1, json_encode($params), $user_id); $result = $client->call('Passenger', array('param' => json_encode($params))); $my->log_request($refrence_id, $reserve_tmp, 1, 2, 1, $result, $user_id); // var_dump($client->response); if ($client->fault) { $out['err']['code'] = 4; $out['err']['ecode'] = "S010704"; $out['err']['msg'] = 'GOHAR CONNECTION ERROR'; // $out['err']['msg'] = var_export($result,TRUE); return json_encode($out); } else { $err = $client->getError(); if ($err) { $out['err']['code'] = 4; $out['err']['ecode'] = "S010705"; $out['err']['msg'] = 'GOHAR CONNECTION ERROR'; // $out['err']['msg'] = var_export($err,TRUE); return json_encode($out); } else { if ($out['err']['code'] != 0) { $out['err']['code'] = 0; $out['err']['ecode'] = ""; $out['err']['msg'] = ''; } $my->query("update reserve_tmp set state = 2 , second_out = '{$result}',second_time='" . date("Y-m-d H:i:s") . "' where id = " . $reserve_tmp); $gres = json_decode($result); // print_r($gres); if (isset($gres->status) && $gres->status == 1) { $out['voucher_id'] = $gres->voucher_id; // $out['ticket_number'][] = $gres->ticket_numbers; $ticket_number = $gres->ticket_numbers; // var_dump($ticket_number); $query = "SELECT id from ticket where refrence_id={$refrence_id} "; $query = $my->query($query); // $upd="UPDATE `safar`.`ticket` SET `ticket_number` = '123' WHERE `ticket`.`id` = 1;"; $tn = 0; while ($row = $query->fetch_assoc()) { $upd = "UPDATE `ticket` SET `ticket_number` = '" . $ticket_number[$tn] . "' WHERE `ticket`.`id` = {$row['id']} ;"; $my->query($upd); $tn++; } } else { $out['err']['code'] = "24"; $out['err']['ecode'] = "S010707"; $out['err']['msg'] = "Repetitive Passengers Name"; $out['err']['source_code'] = $gres->error->error_code; $out['err']['source_msg'] = $gres->error->error_msg; } } } } else { $out['err']['code'] = "7"; $out['err']['ecode'] = "S010709"; $out['err']['msg'] = 'RESERVE NOT REGISTERED'; } } } } else { $out['err']['code'] = 6; $out['err']['ecode'] = "S010710"; $out['err']['msg'] = 'REFRENCE ERROR'; } } return json_encode($out); }