0) { header("HTTP/1.1 422 Unprocessable Entity"); echo json_encode($fail_arr); exit(); } //create account table $accounttype = "A"; $accountid = $vat; $pwd = "123"; $name = $partyA; $tel = $phone ?? ''; $repairerid = $mworker; $creater = $user_id; $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)"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':accounttype', $accounttype); $stmt->bindParam(':accountid', $accountid); $stmt->bindParam(':pwd', $pwd); $stmt->bindParam(':name', $name); $stmt->bindParam(':tel', $tel); $stmt->bindParam(':address', $address); $stmt->bindParam(':email', $email); $stmt->bindParam(':repairerid', $repairerid); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $create_at); $stmt->execute(); //create contract table $contracttype = $mtype; $company = $partyA; $taxid = $vat; $tel = $phone; $promiser = $partyA; $contractperson = $partyA; $contractaddress = $address; $contracttel = $phone; $contractemail = $email; $contract_employee = $salesman; $start_date = $contract_begin_date; $end_date = $contract_end_date; $sql_str = "INSERT INTO contract (contracttype, contractno, company, taxid, address, tel, promiser, contractperson, contractaddress, contracttel, contractemail, contract_employee, start_date, end_date, creater, create_at) VALUES (:contracttype, :contractno, :company, :taxid, :address, :tel, :promiser, :contractperson, :contractaddress, :contracttel, :contractemail, :contract_employee, :start_date, :end_date, :creater, :create_at)"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':contracttype', $contracttype); $stmt->bindParam(':contractno', $contractno); $stmt->bindParam(':company', $company); $stmt->bindParam(':taxid', $taxid); $stmt->bindParam(':address', $address); $stmt->bindParam(':tel', $tel); $stmt->bindParam(':promiser', $promiser); $stmt->bindParam(':contractperson', $contractperson); $stmt->bindParam(':contractaddress', $contractaddress); $stmt->bindParam(':contracttel', $contracttel); $stmt->bindParam(':contractemail', $contractemail); $stmt->bindParam(':contract_employee', $contract_employee); $stmt->bindParam(':start_date', $start_date); $stmt->bindParam(':end_date', $end_date); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $create_at); $stmt->execute(); //create facility table $createFacilityNo = new CreateFacilityNo(); $dailyNecessities = [ 'MAE100' => 'X', 'MAM200' => 'W', 'MAH100' => 'H', 'MAQ100' => 'Z', 'MAF100' => 'F', 'MAZ100' => 'B', ]; $facility_arr = []; foreach ($elevators as $elevator) { $facility_arr[] = $dailyNecessities[$elevator['spec']]; } echo json_encode($facility_arr); $facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num); echo json_encode($facilityno); echo '-------'; $sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':accountid', $mworker); $stmt->execute(); $worker = $stmt->fetch(PDO::FETCH_ASSOC); $customerid = $vat; $define = "B"; $repairtype = $mtype; $repairerid = $mworker; $repairername = $worker['name']; foreach ($elevators as $idx => $elevator) { $sql_str = "INSERT INTO facility (contractno, define, facilityno, latitude, longitude, customerid, weight, numberofpassenger, numberofstop, numberoffloor, opentype, speed, repairtype, maintainance, facility_kind, address, repairerid, repairername, creater, create_at, area, takecertificatedate, licensedate) VALUES (:contractno, :define, :facilityno, :latitude, :longitude, :customerid, :weight, :numberofpassenger, :numberofstop, :numberoffloor, :opentype, :speed, :repairtype, :maintainance, :facility_kind, :address, :repairerid, :repairername, :creater, :create_at, :area, :takecertificatedate, :licensedate)"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':contractno', $contractno); $stmt->bindParam(':define', $define); $stmt->bindParam(':facilityno', $facilityno[$idx]); $stmt->bindParam(':latitude', $elevator['latitude']); $stmt->bindParam(':longitude', $elevator['longitude']); $stmt->bindParam(':customerid', $customerid); $stmt->bindParam(':weight', $elevator['weight']); $stmt->bindParam(':numberofpassenger', $elevator['persons']); $stmt->bindParam(':numberofstop', $elevator['stop']); $stmt->bindParam(':numberoffloor', $elevator['floors']); $stmt->bindParam(':opentype', $elevator['opendoor']); $stmt->bindParam(':speed', $elevator['speed']); $stmt->bindParam(':repairtype', $repairtype); $stmt->bindParam(':maintainance', $elevator['maintainance']); $stmt->bindParam(':facility_kind', $elevator['spec']); $stmt->bindParam(':address', $address); $stmt->bindParam(':repairerid', $repairerid); $stmt->bindParam(':repairername', $repairername); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $create_at); $stmt->bindParam(':area', $area); $stmt->bindParam(':takecertificatedate', $elevator['takecertificatedate']); $stmt->bindParam(':licensedate', $elevator['useful_date']); $result = $stmt->execute(); } //create schedule table $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(); } } // create contract_b_signed_back table $contract_type = $mtype; $company = $customer; $customer_no = $vat; $salesperson = $salesman; $customer_phone = $phone; $customer_email = $email; $repairman = $mworker; $cycle = $mcycle; $contact_person = $partyA; $contact_address = $partyAaddress; $contact_phone = $partyAphone; $contract_email = $partyAemail; $elevators_number = $num; $bonus = 1000; $max_bonus = 2000; if (!empty($files)) { $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 } $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 = 'b' . $datetime; // 保養=>b + 日期時間 foreach ($newfiles as $key => $file) { $randNum = rand(1000, 9999); $randEnglish = $englisharr[rand(0, 25)]; $file_name = 'b' . (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 . '
'; $src_name = $path . $file['name']; if (file_exists($src_name)) { //副檔名 $extname = pathinfo($src_name, PATHINFO_EXTENSION); //主檔名 $basename = basename($src_name, '.' . $extname); } } } else { $files = null; } $sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, elevators_number, 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, :customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :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(":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(":elevators_number", $elevators_number); $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'); // $jsonData = json_encode($files); $conn->commit(); } catch (PDOException $e) { $conn->rollback(); echo $e->getMessage(); die('Error!:' . $e->getMessage()); } } ////////////////////////////// //// 合約簽回(修理) //// //// 製作人:梓誠 /// 時間 : ////////////////////////////// if (isset($_POST['contractno']) && $_POST['contractno'] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'r') { // echo $_POST; // exit; try { $created_at = date('Y-m-d H:i:s'); $contractno = !empty($_POST['contractno']) ? $_POST['contractno'] : null; $company = !empty($_POST['company']) ? $_POST['company'] : null; $repairid = !empty($_POST['repairid']) ? $_POST['repairid'] : null; $facilityno = !empty($_POST['facilityno']) ? $_POST['facilityno'] : null; $taxid = !empty($_POST['taxid']) ? $_POST['taxid'] : null; $invoice = !empty($_POST['invoice']) ? $_POST['invoice'] : null; $address = !empty($_POST['address']) ? $_POST['address'] : null; $repair_no = !empty($_POST['repair_no']) ? $_POST['repair_no'] : null; $total_price = !empty($_POST['total_price']) ? $_POST['total_price'] : null; $user_id = !empty($_POST['user_id']) ? $_POST['user_id'] : null; $type = !empty($_POST['type']) ? $_POST['type'] : null; $sign_date = !empty($_POST['sign_date']) ? $_POST['sign_date'] : null; $contract_status = !empty($_POST['contract_status']) ? $_POST['contract_status'] : 1; $fail_arr = []; if (empty($contractno)) $fail_arr[] = '合約號為必填'; if (empty($repair_no)) $fail_arr[] = '報價單編號為必填'; if (empty($company)) $fail_arr[] = '客戶名稱為必填'; if (empty($repairid)) $fail_arr[] = '為保人員為必填'; // iempty(f($taxid === '') return $fail_arr[] = '統一編號為必填'; if (empty($facilityno)) $fail_arr[] = '電梯編號為必填'; if (empty($address)) $fail_arr[] = '工程地址為必填'; if (empty($type)) $fail_arr[] = '工程類別為必填'; if (empty($invoice)) $fail_arr[] = '發票抬頭為必填'; if (empty($taxid)) $fail_arr[] = '統一編號為必填'; // echo json_encode($fail_arr); // exit; if (count($fail_arr) > 0) { header("HTTP/1.1 422 Unprocessable Entity"); echo json_encode($fail_arr); exit(); } // exit(); //create contrac_r_signed_back table $conn->beginTransaction(); $sql = "INSERT INTO contract_r_signed_back( repair_no, contractno, company, taxid, facilityno, address, type, invoice, repaireid, total_price, sign_date, contract_status, create_user, create_date, delete_status) VALUES( :repair_no, :contractno, :company, :taxid, :facilityno, :address, :type, :invoice, :repaireid, :total_price, :sign_date, :contract_status, :create_userid, :create_date, 1 )"; $stmt = $conn->prepare($sql); $stmt->bindParam(":repair_no", $repair_no); $stmt->bindParam(":contractno", $contractno); $stmt->bindParam(":company", $company); $stmt->bindParam(":taxid", $taxid); $stmt->bindParam(":facilityno", $facilityno); $stmt->bindParam(":address", $address); $stmt->bindParam(":type", $type); $stmt->bindParam(":invoice", $invoice); $stmt->bindParam(":repaireid", $repairid); $stmt->bindParam(":total_price", $total_price); $stmt->bindParam(":sign_date", $sign_date); $stmt->bindParam(":contract_status", $contract_status); $stmt->bindParam(":create_userid", $user_id); $stmt->bindParam("create_date", $created_at); $stmt->execute(); header('Content-Type: application/json'); // $jsonData = json_encode($files); $conn->commit(); } catch (PDOException $e) { $conn->rollback(); header("HTTP/1.1 422 Unprocessable Entity"); echo $e->getMessage(); die('Error!' . $e->getMessage()); } }