|
@ -5,7 +5,7 @@ include_once("./getComboNo.php"); |
|
|
ini_set ( 'date.timezone' , 'Asia/Taipei' ); |
|
|
ini_set ( 'date.timezone' , 'Asia/Taipei' ); |
|
|
if(isset($_POST["contractno"]) && $_POST["contractno"] != "") { |
|
|
if(isset($_POST["contractno"]) && $_POST["contractno"] != "") { |
|
|
try{ |
|
|
try{ |
|
|
|
|
|
$created_at = date('Y-m-d H:i:s'); |
|
|
$contractno = !empty($_POST['contractno'])? $_POST['contractno'] : null; |
|
|
$contractno = !empty($_POST['contractno'])? $_POST['contractno'] : null; |
|
|
$total_price = !empty($_POST['total_price']) ? $_POST['total_price'] : null; |
|
|
$total_price = !empty($_POST['total_price']) ? $_POST['total_price'] : null; |
|
|
$vat = !empty($_POST['vat']) ? $_POST['vat'] : null; |
|
|
$vat = !empty($_POST['vat']) ? $_POST['vat'] : null; |
|
@ -39,9 +39,48 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") { |
|
|
$latitude = !empty($_POST['latitude']) ? $_POST['latitude'] : null; |
|
|
$latitude = !empty($_POST['latitude']) ? $_POST['latitude'] : null; |
|
|
$longitude = !empty($_POST['longitude']) ? $_POST['longitude'] : null; |
|
|
$longitude = !empty($_POST['longitude']) ? $_POST['longitude'] : null; |
|
|
$num = !empty($_POST['num']) ? $_POST['num'] : null; |
|
|
$num = !empty($_POST['num']) ? $_POST['num'] : null; |
|
|
|
|
|
|
|
|
$files = !empty($_FILES['files']) ? $_FILES['files'] : null; |
|
|
$files = !empty($_FILES['files']) ? $_FILES['files'] : null; |
|
|
|
|
|
|
|
|
|
|
|
// validate |
|
|
|
|
|
$fail_arr = []; |
|
|
|
|
|
if($contractno === '') return $fail_arr[] = '合約號為必填'; |
|
|
|
|
|
|
|
|
|
|
|
if($total_price == '') $fail_arr[] = '合約總價為必填'; |
|
|
|
|
|
if($vat == '') $fail_arr[] = '統一編號為必填'; |
|
|
|
|
|
if($mtype == '') $fail_arr[] = '維修型態為必填'; |
|
|
|
|
|
if($opendoor == '') $fail_arr[] = '開門方式為必填'; |
|
|
|
|
|
if($phone == '') $fail_arr[] = '客戶電話為必填'; |
|
|
|
|
|
if($email == '') $fail_arr[] = 'Email為必填'; |
|
|
|
|
|
if($mworker == '') $fail_arr[] = '保養員為必填'; |
|
|
|
|
|
if($mcycle == '') $fail_arr[] = '保養頻率為必填'; |
|
|
|
|
|
if($salesman == '') $fail_arr[] = '營業員為必填'; |
|
|
|
|
|
if($contract_begin_date == '') $fail_arr[] = '合約開始時間為必填'; |
|
|
|
|
|
if($contract_end_date == '') $fail_arr[] = '合約結束時間為必填'; |
|
|
|
|
|
if($address == '') $fail_arr[] = '地址為必填'; |
|
|
|
|
|
if($area == '') $fail_arr[] = '區域為必填'; |
|
|
|
|
|
if($customer == '') $fail_arr[] = '客戶為必填'; |
|
|
|
|
|
if($partyA == '') $fail_arr[] = '甲方為必填'; |
|
|
|
|
|
if($partyAaddress == '') $fail_arr[] = '甲方地址為必填'; |
|
|
|
|
|
if($partyAphone == '') $fail_arr[] = '甲方電話為必填'; |
|
|
|
|
|
if($partyAemail == '') $fail_arr[] = '甲方Email為必填'; |
|
|
|
|
|
if($spec == '') $fail_arr[] = '規格為必填'; |
|
|
|
|
|
if($weight == '') $fail_arr[] = '重量為必填'; |
|
|
|
|
|
if($numberofpassenger == '') $fail_arr[] = '乘客人數為必填'; |
|
|
|
|
|
if($numberofstop == '') $fail_arr[] = '停留站數為必填'; |
|
|
|
|
|
if($numberoffloor == '') $fail_arr[] = '停留樓層為必填'; |
|
|
|
|
|
if($speed == '') $fail_arr[] = '速度為必填'; |
|
|
|
|
|
if($takecertificatedate == '') $fail_arr[] = '取標日期為必填'; |
|
|
|
|
|
if($maintainance == '') $fail_arr[] = '保養為必填'; |
|
|
|
|
|
if($licensedate == '') $fail_arr[] = '營業員為必填'; |
|
|
|
|
|
if($latitude == '') $fail_arr[] = '緯度為必填'; |
|
|
|
|
|
if($longitude == '') $fail_arr[] = '經度為必填'; |
|
|
|
|
|
if($num == '') $fail_arr[] = '數量為必填'; |
|
|
|
|
|
if(count($fail_arr) > 0) { |
|
|
|
|
|
header("HTTP/1.1 422 Unprocessable Entity"); |
|
|
|
|
|
echo json_encode($fail_arr); |
|
|
|
|
|
exit(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//create account table |
|
|
//create account table |
|
|
$accounttype = "A"; |
|
|
$accounttype = "A"; |
|
|
$accountid = $vat; |
|
|
$accountid = $vat; |
|
@ -51,6 +90,8 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") { |
|
|
$repairerid = $mworker; |
|
|
$repairerid = $mworker; |
|
|
$creater = $user_id; |
|
|
$creater = $user_id; |
|
|
$create_at = date('Y-m-d H:i:s'); |
|
|
$create_at = date('Y-m-d H:i:s'); |
|
|
|
|
|
|
|
|
|
|
|
$conn->beginTransaction(); |
|
|
|
|
|
|
|
|
$sql_str = "INSERT INTO account (accounttype, accountid, pwd, name, tel, address, email, repairerid, creater, create_at) VALUES (:accounttype, :accountid, :pwd, :name, :tel, :address, :email, :repairerid, :creater, :create_at)"; |
|
|
$sql_str = "INSERT INTO account (accounttype, accountid, pwd, name, tel, address, email, repairerid, creater, create_at) VALUES (:accounttype, :accountid, :pwd, :name, :tel, :address, :email, :repairerid, :creater, :create_at)"; |
|
|
$stmt = $conn -> prepare($sql_str); |
|
|
$stmt = $conn -> prepare($sql_str); |
|
@ -155,30 +196,209 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") { |
|
|
$stmt -> bindParam(':create_at' ,$create_at); |
|
|
$stmt -> bindParam(':create_at' ,$create_at); |
|
|
$stmt -> bindParam(':area' ,$area); |
|
|
$stmt -> bindParam(':area' ,$area); |
|
|
$stmt -> bindParam(':takecertificatedate' ,$takecertificatedate); |
|
|
$stmt -> bindParam(':takecertificatedate' ,$takecertificatedate); |
|
|
$stmt -> bindParam(':licensedate' ,$licensedate); |
|
|
$stmt -> bindParam(':licensedate' ,$licensedateeeee); |
|
|
|
|
|
|
|
|
$result = $stmt -> execute(); |
|
|
$result = $stmt -> execute(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//create schedule table |
|
|
//create schedule table |
|
|
$comboMo = new CreateComboNo(); |
|
|
$comboNo = new CreateComboNo($mcycle, $contract_begin_date, $contract_end_date); |
|
|
|
|
|
$comboArr = json_decode($comboNo->getComboNo(), true); |
|
|
|
|
|
foreach($facilityno as $no){ |
|
|
|
|
|
foreach($comboArr as $combo){ |
|
|
|
|
|
$sql_str = 'INSERT INTO schedule (contractno, facilityno, combono, repairerid, repairername, duedate, creater, create_at) VALUES (:contractno, :facilityno, :combono, :repairerid, :repairername, :duedate, :creater, :create_at)'; |
|
|
|
|
|
$stmt = $conn -> prepare($sql_str); |
|
|
|
|
|
$stmt -> bindParam(':contractno' ,$contractno); |
|
|
|
|
|
$stmt -> bindParam(':facilityno' ,$no); |
|
|
|
|
|
$stmt -> bindParam(':combono' ,$combo[0]); |
|
|
|
|
|
$stmt -> bindParam(':repairerid' ,$repairerid); |
|
|
|
|
|
$stmt -> bindParam(':repairername' ,$repairername); |
|
|
|
|
|
$stmt -> bindParam(':duedate' ,$combo[1]); |
|
|
|
|
|
$stmt -> bindParam(':creater' ,$creater); |
|
|
|
|
|
$stmt -> bindParam(':create_at' ,$create_at); |
|
|
|
|
|
$result = $stmt -> execute(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
$sql_str = 'INSERT INTO schedule (contractno, facilityno, combono, repairerid, repairername, duedate, creater, create_at) VALUES (:contractno, :facilityno, :combono, :repairerid, :repairername, :duedate, :creater, :create_at)'; |
|
|
// create contract_b_signed_back table |
|
|
$stmt = $conn -> prepare($sql_str); |
|
|
$contract_type = $mtype; |
|
|
$stmt -> bindParam(':contractno' ,$contractno); |
|
|
$company = $customer; |
|
|
$stmt -> bindParam(':facilityno' ,$facilityno); |
|
|
$customer_no = $vat; |
|
|
$stmt -> bindParam(':combono' ,$combono); |
|
|
$salesperson = $salesman; |
|
|
$stmt -> bindParam(':repairerid' ,$repairerid); |
|
|
$customer_phone = $phone; |
|
|
$stmt -> bindParam(':repairername' ,$repairername); |
|
|
$customer_email = $email; |
|
|
$stmt -> bindParam(':duedate' ,$duedate); |
|
|
$repairman = $mworker; |
|
|
$stmt -> bindParam(':creater' ,$creater); |
|
|
$cycle = $mcycle; |
|
|
$stmt -> bindParam(':create_at' ,$create_at); |
|
|
$contact_person = $partyA; |
|
|
$result = $stmt -> execute(); |
|
|
$contact_address = $partyAaddress; |
|
|
|
|
|
$contact_phone = $partyAphone; |
|
|
|
|
|
$contract_email = $partyAemail; |
|
|
|
|
|
$elevators_number = $num; |
|
|
|
|
|
$bonus = 1000; |
|
|
|
|
|
$max_bonus = 2000; |
|
|
|
|
|
|
|
|
|
|
|
$englisharr = range('a', 'z'); |
|
|
|
|
|
$file = $_FILES['files']; |
|
|
|
|
|
$file_name = $file['name']; |
|
|
|
|
|
$file_type = $file['type']; |
|
|
|
|
|
$tmp_name = $file['tmp_name']; |
|
|
|
|
|
$file_size = $file['size']; |
|
|
|
|
|
$error = $file['error']; |
|
|
|
|
|
$newfiles = []; |
|
|
|
|
|
foreach( $files as $file ){ |
|
|
|
|
|
$i = 0; //新陣列的索引編號 |
|
|
|
|
|
foreach( $file as $key => $val ){ |
|
|
|
|
|
$newfiles[$i]['name'] = $files['name'][$key]; |
|
|
|
|
|
$newfiles[$i]['type'] = $files['type'][$key]; |
|
|
|
|
|
$newfiles[$i]['tmp_name'] = $files['tmp_name'][$key]; |
|
|
|
|
|
$newfiles[$i]['error'] = $files['error'][$key]; |
|
|
|
|
|
$newfiles[$i]['size'] = $files['size'][$key]; |
|
|
|
|
|
$i++; |
|
|
|
|
|
} //foreach 第2層 end |
|
|
|
|
|
} |
|
|
|
|
|
echo json_encode($newfiles); |
|
|
|
|
|
$max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M) |
|
|
|
|
|
$allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型 |
|
|
|
|
|
$path = '../images/contracts/'; |
|
|
|
|
|
if (!file_exists($path)) { mkdir($path); } |
|
|
|
|
|
$msg_result = ''; //負責接收所有檔案檢測後的回傳訊息 |
|
|
|
|
|
$datetime = (string)date('YmdHis'); |
|
|
|
|
|
$files_id = 'c' . $datetime; |
|
|
|
|
|
foreach( $newfiles as $key => $file ){ |
|
|
|
|
|
$randNum = rand(1000,9999); |
|
|
|
|
|
$randEnglish = $englisharr[rand(0,25)]; |
|
|
|
|
|
$file_name = 'c' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name']; |
|
|
|
|
|
$msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name ); |
|
|
|
|
|
if($msg==1){ |
|
|
|
|
|
$msg = '檔案傳送成功!'; |
|
|
|
|
|
$sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)"; |
|
|
|
|
|
$stmt = $conn -> prepare($sql_str); |
|
|
|
|
|
$stmt -> bindParam(':files_id' ,$files_id); |
|
|
|
|
|
$stmt -> bindParam(':file_name' ,$file_name); |
|
|
|
|
|
$stmt -> bindParam(':file_mime' ,$file['type']); |
|
|
|
|
|
$stmt -> bindParam(':file_size' ,$file['size']); |
|
|
|
|
|
$stmt -> bindParam(':created_at' ,$created_at); |
|
|
|
|
|
$stmt -> bindParam(':created_by' ,$user_id); |
|
|
|
|
|
$stmt ->execute(); |
|
|
|
|
|
} |
|
|
|
|
|
$msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '<br/>'; |
|
|
|
|
|
$src_name = $path.$file['name']; |
|
|
|
|
|
if( file_exists($src_name) ){ |
|
|
|
|
|
//副檔名 |
|
|
|
|
|
$extname = pathinfo($src_name, PATHINFO_EXTENSION); |
|
|
|
|
|
//主檔名 |
|
|
|
|
|
$basename = basename($src_name, '.'.$extname); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
$sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price, opendoor, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, takecertificatedate, license_date, elevators_number, spec, weight, speed, numberofpassenger, numberofstop, numberoffloor, latitude, longitude, area, address, files_id, bonus, max_bonus, created_at, created_by) |
|
|
|
|
|
VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :opendoor, :customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :takecertificatedate, :license_date, :elevators_number, :spec, :weight, :speed, :numberofpassenger, :numberofstop, :numberoffloor, :latitude, :longitude, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by)"; |
|
|
|
|
|
$stmt = $conn -> prepare($sql_str); |
|
|
|
|
|
$stmt -> bindParam(":contract_no",$contractno); |
|
|
|
|
|
$stmt -> bindParam(":contract_type",$contract_type); |
|
|
|
|
|
$stmt -> bindParam(":company",$company); |
|
|
|
|
|
$stmt -> bindParam(":customer_no",$customer_no); |
|
|
|
|
|
$stmt -> bindParam(":salesperson",$salesperson); |
|
|
|
|
|
$stmt -> bindParam(":contract_start_date",$contract_begin_date); |
|
|
|
|
|
$stmt -> bindParam(":contract_end_date",$contract_end_date); |
|
|
|
|
|
$stmt -> bindParam(":total_price",$total_price); |
|
|
|
|
|
$stmt -> bindParam(":opendoor",$opendoor); |
|
|
|
|
|
$stmt -> bindParam(":customer_phone",$customer_phone); |
|
|
|
|
|
$stmt -> bindParam(":customer_email",$customer_email); |
|
|
|
|
|
$stmt -> bindParam(":repairman",$repairman); |
|
|
|
|
|
$stmt -> bindParam(":cycle",$cycle); |
|
|
|
|
|
$stmt -> bindParam(":contact_person",$contact_person); |
|
|
|
|
|
$stmt -> bindParam(":contact_address",$contact_address); |
|
|
|
|
|
$stmt -> bindParam(":contact_phone",$contact_phone); |
|
|
|
|
|
$stmt -> bindParam(":contact_email",$contact_email); |
|
|
|
|
|
$stmt -> bindParam(":takecertificatedate",$takecertificatedate); |
|
|
|
|
|
$stmt -> bindParam(":license_date",$license_date); |
|
|
|
|
|
$stmt -> bindParam(":elevators_number",$elevators_number); |
|
|
|
|
|
$stmt -> bindParam(":spec",$spec); |
|
|
|
|
|
$stmt -> bindParam(":weight",$weight); |
|
|
|
|
|
$stmt -> bindParam(":speed",$speed); |
|
|
|
|
|
$stmt -> bindParam(":numberofpassenger",$numberofpassenger); |
|
|
|
|
|
$stmt -> bindParam(":numberofstop",$numberofstop); |
|
|
|
|
|
$stmt -> bindParam(":numberoffloor",$numberoffloor); |
|
|
|
|
|
$stmt -> bindParam(":latitude",$latitude); |
|
|
|
|
|
$stmt -> bindParam(":longitude",$longitude); |
|
|
|
|
|
$stmt -> bindParam(":area",$area); |
|
|
|
|
|
$stmt -> bindParam(":address",$address); |
|
|
|
|
|
$stmt -> bindParam(":files_id",$files_id); |
|
|
|
|
|
$stmt -> bindParam(":bonus",$bonus); |
|
|
|
|
|
$stmt -> bindParam(":max_bonus",$max_bonus); |
|
|
|
|
|
$stmt -> bindParam(":created_at", $created_at); |
|
|
|
|
|
$stmt -> bindParam(":created_by",$user_id); |
|
|
|
|
|
|
|
|
|
|
|
$stmt -> execute(); |
|
|
|
|
|
|
|
|
header('Content-Type: application/json'); |
|
|
header('Content-Type: application/json'); |
|
|
$jsonData = json_encode($files); |
|
|
$jsonData = json_encode($files); |
|
|
|
|
|
|
|
|
|
|
|
$conn->commit(); |
|
|
}catch(PDOException $e){ |
|
|
}catch(PDOException $e){ |
|
|
|
|
|
$r = $conn->rollback(); |
|
|
|
|
|
echo $r; |
|
|
die('Error!:'.$e->getMessage()); |
|
|
die('Error!:'.$e->getMessage()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function upload_chk( $file, $path, $max_size, $allow_ext, $file_name ){ |
|
|
|
|
|
|
|
|
|
|
|
$source_file_name = $file['name']; //上傳檔案的原來檔案名稱 |
|
|
|
|
|
$file_type = $file['type']; //上傳檔案的類型(副檔名) |
|
|
|
|
|
$tmp_name = $file['tmp_name']; //上傳到暫存空間的路徑/檔名 |
|
|
|
|
|
$file_size = $file['size']; //上傳檔案的檔案大小(容量) |
|
|
|
|
|
$error = $file['error']; //上傳工作傳回的錯誤訊息編號 |
|
|
|
|
|
$msg = ''; //負責記錄回傳的訊息 |
|
|
|
|
|
|
|
|
|
|
|
//1.判斷錯誤編號只有為0時表示沒有錯誤發生,才表示上傳成功 ================= |
|
|
|
|
|
if( $error == 0 ){ |
|
|
|
|
|
|
|
|
|
|
|
//取得檔案延伸的副檔名, 以下函數可以取得檔案延伸的副檔名 |
|
|
|
|
|
//pathinfo(上傳檔案的原來檔案名稱, PATHINFO_EXTENSION) |
|
|
|
|
|
$ext = pathinfo($source_file_name, PATHINFO_EXTENSION); |
|
|
|
|
|
$ext = strtolower($ext); //將延伸的副檔名轉小寫 |
|
|
|
|
|
|
|
|
|
|
|
//2.判斷上傳檔案的大小 ==================================== |
|
|
|
|
|
if( $file_size > $max_size ){ |
|
|
|
|
|
//當目前檔案容量超過容量限制時, 以下準備顯示的資訊 |
|
|
|
|
|
if( $max_size >= 4096*4096 ){ |
|
|
|
|
|
$max_size /= (4096*4096); |
|
|
|
|
|
$max_size .= 'M'; |
|
|
|
|
|
}elseif( $max_size >= 4096 ){ |
|
|
|
|
|
$max_size /= 4096; |
|
|
|
|
|
$max_size .= 'K'; |
|
|
|
|
|
} |
|
|
|
|
|
$msg ='上傳檔案過大,請選擇容量小於 '.$max_size.' 的檔案'; |
|
|
|
|
|
|
|
|
|
|
|
//3.判斷檔案類型 =========================================== |
|
|
|
|
|
//in_array($ext, $allow_ext) 判斷 $ext變數的值 是否在 $allow_ext 這個陣列變數中 |
|
|
|
|
|
}elseif( !in_array( $ext, $allow_ext ) ){ |
|
|
|
|
|
$allow_str = ''; //準備將允許檔案類型的陣列內容, 組合成字串 |
|
|
|
|
|
foreach( $allow_ext as $key=>$value ){ |
|
|
|
|
|
//if的縮寫語法:條件?成立執行的工作:不成立執行的工作; |
|
|
|
|
|
$key==0? $allow_str.= $value : $allow_str.=', '.$value; |
|
|
|
|
|
} |
|
|
|
|
|
$msg = '檔案類型不符合,請選擇 '.$allow_str.' 檔案'; |
|
|
|
|
|
|
|
|
|
|
|
//4.以上條件都沒問題的話, 則進行最後else中的工作=============== |
|
|
|
|
|
}else{ |
|
|
|
|
|
//搬移檔案 move_uploaded_file(要搬移的檔案, 目的地位置及目的檔案名稱), 成功傳回true(1) |
|
|
|
|
|
$msg = @move_uploaded_file($tmp_name, $path.$file_name); |
|
|
|
|
|
} |
|
|
|
|
|
}else{ |
|
|
|
|
|
//這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 ====================================== |
|
|
|
|
|
switch ($error) { |
|
|
|
|
|
case 1: $msg = '上傳檔案超過 upload_max_filesize 容量最大值'; break; |
|
|
|
|
|
case 2: $msg = '上傳檔案超過 post_max_size 總容量最大值'; break; |
|
|
|
|
|
case 3: $msg = '檔案只有部份被上傳'; break; |
|
|
|
|
|
case 4: $msg = '沒有檔案被上傳'; break; |
|
|
|
|
|
case 6: $msg = '找不到主機端暫存檔案的目錄位置'; break; |
|
|
|
|
|
case 7: $msg = '檔案寫入失敗'; break; |
|
|
|
|
|
case 8: $msg = '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; |
|
|
|
|
|
} |
|
|
|
|
|
} //if( $error == 0 ){ ..... end |
|
|
|
|
|
|
|
|
|
|
|
return $msg; //回傳$msg的結果 |
|
|
|
|
|
}// function end |