Example #1
0
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);
}