1206 lines
34 KiB
PHP
1206 lines
34 KiB
PHP
<?php
|
|
|
|
include getenv("DOCUMENT_ROOT")."/include/session_include.php";
|
|
@include getenv("DOCUMENT_ROOT")."/config/config_shopInfo.php";
|
|
include_once getenv("DOCUMENT_ROOT") . "/lib/erp_api.php";
|
|
require_once getenv("DOCUMENT_ROOT")."/assets/conf.inc.php";
|
|
require_once getenv("DOCUMENT_ROOT")."/assets/dbCon.php";
|
|
include_once getenv("DOCUMENT_ROOT")."/assets/api/daily.php";
|
|
include_once getenv("DOCUMENT_ROOT")."/assets/api/customer.php";
|
|
$dailyApi = new DailyService();
|
|
|
|
if ($goStr == "") $goStr = "switched=$switched&page=$page&key_word=$key_word&column=$column&sorting_type=$sorting_type&switch=$switch";
|
|
$lguserid = $_SESSION['ss_UID'];
|
|
|
|
//////////////////////////////////////////////
|
|
// PICKUP ORDER from Customer Detail Page
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "PICKUPORDERCUSTOMER") {
|
|
|
|
try {
|
|
|
|
if ($c_uid == "") {
|
|
throw new Exception("Invalid c_uid");
|
|
}
|
|
|
|
// customer 조회
|
|
$qry = "SELECT c_uid, c_accountno, c_driveruid FROM tbl_customer WHERE c_uid = '$c_uid'";
|
|
$cus = $jdb->fQuery($qry, "query error");
|
|
|
|
if (!$cus) {
|
|
throw new Exception("Customer not found");
|
|
}
|
|
|
|
$d_visitdate = str_replace("-", "", trim($d_visitdate));
|
|
$d_visitdateSTR = $d_visitdate . "000000";
|
|
|
|
$dailyApi = new DailyService();
|
|
|
|
// payload만 구성
|
|
$payload = [
|
|
'd_orderdate' => $d_visitdate,
|
|
'd_accountno' => $cus['c_accountno'],
|
|
'd_customeruid' => $c_uid,
|
|
'd_driveruid' => $d_driveruid,
|
|
'd_ordertype' => 'N',
|
|
'd_ruid' => '',
|
|
'd_quantity' => $d_quantity,
|
|
'd_sludge' => $d_sludge,
|
|
'd_paystatus' => $d_paystatus,
|
|
'd_payamount' => number_format(floatval($d_payamount), 2, '.', ','),
|
|
'd_visit' => 'Y',
|
|
'd_visitdate' => $d_visitdateSTR,
|
|
'd_status' => 'F',
|
|
'd_druid' => $d_druid,
|
|
'd_payeename' => $d_payeename,
|
|
'd_note' => str_replace("\\", "", trim($d_note)),
|
|
'd_createruid' => $_SESSION['ss_UID'],
|
|
'd_updateruid' => $_SESSION['ss_UID'] ?? '',
|
|
'd_inputdate' => date("YmdHis"),
|
|
'd_jobtype' => $d_jobtype ?? 'UCO',
|
|
];
|
|
|
|
// 기존 record update 대응
|
|
if (!empty($d_uid)) {
|
|
$opt = [
|
|
'match_uid' => $d_uid,
|
|
'allow_update' => true
|
|
];
|
|
} else {
|
|
$opt = [];
|
|
}
|
|
|
|
$dailyApi->saveDaily($payload, $opt);
|
|
|
|
// signature 처리만 별도 유지
|
|
if ($signednew == 1 || ($d_payeesign == "" && $_POST['signed'] != "")) {
|
|
|
|
$folderPath = getenv("DOCUMENT_ROOT")."/upload_sign/".$c_uid;
|
|
if (!is_dir($folderPath)) mkdir($folderPath, 0755, true);
|
|
|
|
$image_parts = explode(";base64,", $_POST['signed']);
|
|
$image_type_aux = explode("image/", $image_parts[0]);
|
|
$image_type = $image_type_aux[1];
|
|
|
|
$image_base64 = base64_decode($image_parts[1]);
|
|
$uniquevalue = uniqid();
|
|
|
|
$filename = substr($d_visitdate,0,8). "_". $uniquevalue . '.'.$image_type;
|
|
$file = $folderPath ."/". $filename;
|
|
|
|
file_put_contents($file, $image_base64);
|
|
|
|
// saveDaily로 update 한번 더
|
|
$dailyApi->saveDaily([
|
|
'd_orderdate' => $d_visitdate,
|
|
'd_accountno' => $cus['c_accountno'],
|
|
'd_payeesign' => $filename,
|
|
'd_jobtype' => $d_jobtype ?? 'UCO',
|
|
'd_updateruid'=> $_SESSION['ss_UID'] ?? '',
|
|
], [
|
|
'match_uid' => $d_uid,
|
|
'allow_update' => true
|
|
]);
|
|
}
|
|
|
|
$msg = "Saved Successfully.";
|
|
$urlSTR = "/index_intranet.php?view=customer_list&".$goStr;
|
|
|
|
$func->modalMsg($msg, $urlSTR);
|
|
|
|
} catch (Exception $e) {
|
|
|
|
$func->modalMsg($e->getMessage(), "");
|
|
}
|
|
|
|
exit();
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
// DELETE ORDER (order_driver 에서 삭제시)
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "ORDERINFO" && $mode == "delete") {
|
|
|
|
// 권한 체크
|
|
$permit = array("1", "5", "9");
|
|
if (!in_array($_SESSION['ss_LEVEL'], $permit)) {
|
|
$msg = "Sorry, You don't have permission. Please contact Administrator.";
|
|
$func->modalMsg($msg, "");
|
|
exit();
|
|
}
|
|
|
|
// 유효성 체크
|
|
if ($d_uid == "") {
|
|
$msg = "Invalid data. Please try again. [Err - d_uid / ORDERINFO]";
|
|
$func->modalMsg($msg, "");
|
|
exit();
|
|
}
|
|
|
|
// daily 정보 조회
|
|
$sqDaily = $jdb->fQuery("
|
|
SELECT d_orderdate, d_accountno, d_jobtype
|
|
FROM tbl_daily
|
|
WHERE d_uid = '{$d_uid}'
|
|
LIMIT 1
|
|
", "fetch error");
|
|
|
|
if (!$sqDaily) {
|
|
$msg = "Daily record not found.";
|
|
$func->modalMsg($msg, "");
|
|
exit();
|
|
}
|
|
|
|
// deleteDaily 호출
|
|
$dailyApi->deleteDaily(
|
|
$sqDaily['d_orderdate'],
|
|
$sqDaily['d_accountno'],
|
|
$sqDaily['d_jobtype']
|
|
);
|
|
|
|
// 메시지 및 리다이렉트
|
|
$msg = "Deleted successfully.";
|
|
|
|
$urlSTR = "/index_intranet.php?view=order_driver&".$goSTRSTR."&".$goStr;
|
|
$func->modalMsg($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
// ADD ORDER (From Forecast 오더장 생성)
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "ORDEROIL" && $mode == "insert") {
|
|
|
|
try {
|
|
|
|
if ($orderdate == "") {
|
|
throw new Exception("Invalid order date");
|
|
}
|
|
|
|
if (count($selectaccountno) == 0) {
|
|
throw new Exception("No selected data");
|
|
}
|
|
|
|
rsort($selectaccountno);
|
|
|
|
$dailyApi = new DailyService();
|
|
|
|
foreach ($selectaccountno as $value) {
|
|
|
|
$valueSTR = explode("|", $value);
|
|
|
|
$accountno = $valueSTR[1];
|
|
|
|
// customer uid 조회
|
|
$qry = "SELECT c_uid, c_driveruid
|
|
FROM tbl_customer
|
|
WHERE c_accountno = '$accountno'";
|
|
$cus = $jdb->fQuery($qry, "query error");
|
|
|
|
if (!$cus) {
|
|
throw new Exception("Customer not found");
|
|
}
|
|
|
|
// payload만 구성
|
|
$payload = [
|
|
'd_orderdate' => $orderdate,
|
|
'd_accountno' => $accountno,
|
|
'd_customeruid' => $cus['c_uid'],
|
|
'd_driveruid' => $cus['c_driveruid'],
|
|
'd_ordertype' => $valueSTR[0],
|
|
'd_ruid' => $valueSTR[2],
|
|
'd_createruid' => $_SESSION['ss_UID'],
|
|
'd_updateruid' => $_SESSION['ss_UID'] ?? '',
|
|
'd_createddate' => date("YmdHis"),
|
|
'd_status' => 'A',
|
|
'd_jobtype' => 'UCO'
|
|
];
|
|
|
|
// saveDaily 호출 (중복 skip 포함)
|
|
$result = $dailyApi->saveDaily($payload, [
|
|
'allow_update' => false
|
|
]);
|
|
|
|
if ($result === null) {
|
|
continue; // duplicate skip
|
|
}
|
|
}
|
|
|
|
$msg = "Saved Successfully.";
|
|
$func->modalMsg($msg, "/index_intranet.php?view=forecast");
|
|
|
|
} catch (Exception $e) {
|
|
|
|
$func->modalMsg($e->getMessage(), "/index_intranet.php?view=forecast");
|
|
}
|
|
|
|
exit();
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
// DELETE MEMBER INFO (m_status 만 D 로 변경)
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "MEMBERINFO" && $mode == "delete") {
|
|
|
|
// Delete 기능 제한 (Admin : 1, Manager : 3, Staff : 5 만 가능)
|
|
$permit = array("1", "3", "5");
|
|
if (in_array($_SESSION['ss_LEVEL'], $permit)) {
|
|
$setTag = "";
|
|
}
|
|
else {
|
|
$msg = "Sorry, You don't have permission. Please contact Administrator.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
if($m_uid == "") {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
|
|
$jdb->nQuery("UPDATE tbl_member SET m_status='D' WHERE m_uid = '$m_uid'", "delete error");
|
|
$jdb->CLOSE();
|
|
|
|
$msg = "Deleted successfully.";
|
|
$urlSTR = "/index_intranet.php?view=member_list&$goStr";
|
|
//$func -> alertBack($msg);
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
// DELETE DRIVER INFO (dr_status 만 D 로 변경)
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "DRIVERINFO" && $mode == "delete") {
|
|
|
|
// Delete 기능 제한 (Admin : 1, Manager : 3, Staff : 5 만 가능)
|
|
$permit = array("1", "3", "5");
|
|
if (in_array($_SESSION['ss_LEVEL'], $permit)) {
|
|
$setTag = "";
|
|
}
|
|
else {
|
|
$msg = "Sorry, You don't have permission. Please contact Administrator.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
if($dr_uid == "") {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
|
|
$jdb->nQuery("UPDATE tbl_driver SET dr_status='D' WHERE dr_uid = '$dr_uid'", "delete error");
|
|
$jdb->CLOSE();
|
|
|
|
$msg = "Deleted successfully.";
|
|
$urlSTR = "/index_intranet.php?view=driver_list&$goStr";
|
|
//$func -> alertBack($msg);
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
// ADD NOTE
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "ADDNOTE" && $mode == "create") {
|
|
|
|
// Level 9 이하만 사용 가능
|
|
$func->checkLevelModal(9);
|
|
|
|
if($n_customeruid == "" || $n_memberuid == "") {
|
|
$msg = "Invalid data(n_customeruid, n_memberuid). Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
$columns = array();
|
|
$values = array();
|
|
|
|
|
|
$columns[] = "n_memberuid";
|
|
$columns[] = "n_customeruid";
|
|
$columns[] = "n_dailyuid";
|
|
$columns[] = "n_type";
|
|
$columns[] = "n_level";
|
|
|
|
$columns[] = "n_view";
|
|
$columns[] = "n_note";
|
|
$columns[] = "n_createddate";
|
|
|
|
|
|
////////////
|
|
// data
|
|
////////////
|
|
|
|
$values[] = $n_memberuid;
|
|
$values[] = $n_customeruid;
|
|
$values[] = $n_dailyuid;
|
|
|
|
if ($_SESSION['ss_LEVEL'] == "1") $n_type = "S";
|
|
else if ($_SESSION['ss_LEVEL'] == "5") $n_type = "S";
|
|
else if ($_SESSION['ss_LEVEL'] == "6") $n_type = "B";
|
|
else if ($_SESSION['ss_LEVEL'] == "7") $n_type = "A";
|
|
else if ($_SESSION['ss_LEVEL'] == "9") $n_type = "D";
|
|
$values[] = $n_type;
|
|
|
|
$values[] = $_SESSION['ss_LEVEL'];
|
|
|
|
$values[] = 1;
|
|
$values[] = str_replace("\\", "", trim($n_note));
|
|
$values[] = date("YmdHis");
|
|
|
|
//for ($i=0; $i < count($columns); $i++)
|
|
//echo "[$columns[$i]][$values[$i]]<br>";
|
|
//echo "[UID=$uid][ID=$userid][MAXUID=$maxuid]";
|
|
//exit;
|
|
|
|
$jdb->iQuery("tbl_note", $columns, $values);
|
|
$msg = "Created successfully.";
|
|
|
|
$urlSTR = "/index_intranet.php?view=customer_detail&mode=update&c_uid=$n_customeruid&$goStr";
|
|
//$func -> alertBack($msg);
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
// DELETE NOTE (n_status 만 D 로 변경)
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "DELETENOTE" && $mode == "delete") {
|
|
|
|
// Delete 기능 제한 (Admin : 1, Manager : 3, Staff : 5 만 가능)
|
|
$permit = array("1");
|
|
if (in_array($_SESSION['ss_LEVEL'], $permit)) {
|
|
$setTag = "";
|
|
}
|
|
else {
|
|
$msg = "Sorry, You don't have permission. Please contact Administrator.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
if($n_uid == "") {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
|
|
$jdb->nQuery("UPDATE tbl_note SET n_status='D' WHERE n_uid = '$n_uid'", "update error");
|
|
$jdb->CLOSE();
|
|
|
|
$msg = "Deleted successfully.";
|
|
$urlSTR = "/index_intranet.php?view=customer_detail&mode=update&c_uid=$c_uid&$goStr";
|
|
//$func -> alertBack($msg);
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
// ADD IMAGE (Customer Detail - Image Upload)
|
|
//////////////////////////////////////////////
|
|
if ($actionStr == "ADDIMAGE") {
|
|
$singleTypes = ['install', 'install_order', 'clean_before', 'clean_after'];
|
|
|
|
$i_note = isset($_POST['i_note']) ? trim($_POST['i_note']) : "";
|
|
$i_createddate = date("YmdHis");
|
|
|
|
if ($i_customeruid == "" || $i_memberuid == "") {
|
|
$msg = "Invalid data. Please try again. [Err - i_customeruid, i_memberuid]";
|
|
$func->modalMsg($msg, "");
|
|
exit();
|
|
}
|
|
|
|
// 기존 이미지 비활성화
|
|
if (in_array($i_type, $singleTypes)) {
|
|
$qry_update = "
|
|
UPDATE tbl_customer_image
|
|
SET i_status = 'I'
|
|
WHERE i_customeruid = '$i_customeruid'
|
|
AND i_type = '$i_type'
|
|
AND i_status = 'A'
|
|
";
|
|
$jdb->nQuery($qry_update, "update error");
|
|
}
|
|
|
|
// 업로드 파일 체크
|
|
if (!isset($_FILES['upload_file'])) {
|
|
$msg = "Upload failed. Please try again.";
|
|
$func->modalMsg($msg, "/index_intranet.php?view=customer_detail&mode=update&c_uid=$i_customeruid&$goStr");
|
|
exit();
|
|
}
|
|
|
|
// 저장 폴더 생성
|
|
$upload_folder = getenv("DOCUMENT_ROOT")."/upload/customer_image/".$i_customeruid;
|
|
if (!is_dir($upload_folder)) {
|
|
mkdir($upload_folder, 0777, true);
|
|
}
|
|
|
|
// 파일 개수
|
|
$fileCount = is_array($_FILES['upload_file']['name'])
|
|
? count($_FILES['upload_file']['name'])
|
|
: 1;
|
|
|
|
$uploadedFileNames = array(); // 콤마로 합쳐서 넣을 리스트
|
|
|
|
for ($i = 0; $i < $fileCount; $i++) {
|
|
|
|
$fileTmp = is_array($_FILES['upload_file']['tmp_name'])
|
|
? $_FILES['upload_file']['tmp_name'][$i]
|
|
: $_FILES['upload_file']['tmp_name'];
|
|
|
|
$fileName = is_array($_FILES['upload_file']['name'])
|
|
? $_FILES['upload_file']['name'][$i]
|
|
: $_FILES['upload_file']['name'];
|
|
|
|
$fileError = is_array($_FILES['upload_file']['error'])
|
|
? $_FILES['upload_file']['error'][$i]
|
|
: $_FILES['upload_file']['error'];
|
|
|
|
if ($fileError != 0) continue;
|
|
|
|
// 확장자
|
|
$ext = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
|
|
$allowedExt = ['jpg', 'jpeg', 'png', 'webp'];
|
|
if (!in_array($ext, $allowedExt)) continue;
|
|
|
|
// 새 파일명 생성 (jpg로 통일)
|
|
$newFileName = "IMG_".$i_customeruid."_".time().rand(1000,9999)."_".$i.".jpg";
|
|
|
|
// 저장 경로
|
|
$savePath = $upload_folder . "/" . $newFileName;
|
|
|
|
// 이미지 압축 + 리사이즈 저장
|
|
if (!compressAndResizeImage($fileTmp, $savePath, $ext, 1200, 75)) {
|
|
continue;
|
|
}
|
|
|
|
// 업로드된 파일명 저장 (DB에 콤마로 넣을 배열)
|
|
$uploadedFileNames[] = $newFileName;
|
|
}
|
|
|
|
// 한 개도 업로드되지 않으면 종료
|
|
if (count($uploadedFileNames) == 0) {
|
|
$msg = "No files uploaded.";
|
|
$func->modalMsg($msg, "/index_intranet.php?view=customer_detail&mode=update&c_uid=$i_customeruid&$goStr");
|
|
exit();
|
|
}
|
|
|
|
$fileNameString = implode(",", $uploadedFileNames);
|
|
$dbFilePath = "/upload/customer_image/".$i_customeruid."/";
|
|
|
|
// DB INSERT
|
|
$columns = array(
|
|
"i_customeruid",
|
|
"i_memberuid",
|
|
"i_createdby",
|
|
"i_createddate",
|
|
"i_type",
|
|
"i_filename",
|
|
"i_filepath",
|
|
"i_status",
|
|
"i_note",
|
|
"i_sourceuid"
|
|
);
|
|
|
|
$values = array(
|
|
$i_customeruid,
|
|
$i_memberuid,
|
|
$i_createdby,
|
|
$i_createddate,
|
|
$i_type,
|
|
$fileNameString,
|
|
$dbFilePath,
|
|
"A",
|
|
$i_note,
|
|
$i_sourceuid
|
|
);
|
|
|
|
$jdb->iQuery("tbl_customer_image", $columns, $values);
|
|
|
|
// 완료 후 이동
|
|
// $msg = "Image uploaded successfully.";
|
|
// $urlSTR = "/index_intranet.php?view=customer_detail&mode=update&c_uid=$i_customeruid&$goStr";
|
|
// $func->modalMsg($msg, $urlSTR);
|
|
echo "
|
|
<script>
|
|
alert('Image uploaded successfully!');
|
|
if (window.opener) {
|
|
window.opener.location.reload();
|
|
}
|
|
window.close();
|
|
</script>
|
|
";
|
|
exit();
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
// UPDATE IMAGE
|
|
//////////////////////////////////////////////
|
|
if ($actionStr == "UPDATEIMAGEFULL") {
|
|
|
|
$i_uid = $_POST['i_uid'] ?? "";
|
|
$i_customeruid = $_POST['i_customeruid'] ?? "";
|
|
$i_note = trim($_POST['i_note'] ?? "");
|
|
$goStr = $_POST['goStr'] ?? "";
|
|
|
|
if ($i_uid == "" || $i_customeruid == "") {
|
|
$msg = "Invalid data.";
|
|
$func->modalMsg($msg, "");
|
|
exit();
|
|
}
|
|
|
|
// 이미지 최대 6개 제한 체크
|
|
if ($i_type == "container") {
|
|
// 기존 이미지 수 조회
|
|
$qry_cnt = "
|
|
SELECT i_filename
|
|
FROM tbl_customer_image
|
|
WHERE i_customeruid = '$i_customeruid'
|
|
AND i_type = 'container'
|
|
AND i_status = 'A'
|
|
ORDER BY i_uid DESC LIMIT 1
|
|
";
|
|
$rt_cnt = $jdb->fQuery($qry_cnt, "error");
|
|
|
|
$existingCount = 0;
|
|
if (!empty($rt_cnt['i_filename'])) {
|
|
$existingFiles = explode(",", $rt_cnt['i_filename']);
|
|
$existingCount = count($existingFiles);
|
|
}
|
|
|
|
// 이번에 업로드할 파일 개수
|
|
$newCount = is_array($_FILES['upload_file']['name'])
|
|
? count($_FILES['upload_file']['name'])
|
|
: 1;
|
|
|
|
if ($existingCount + $newCount > 6) {
|
|
$msg = "Container 이미지는 최대 6개까지 업로드할 수 있습니다.";
|
|
$func->modalMsg($msg, "/index_intranet.php?view=customer_detail&mode=update&c_uid=$i_customeruid&$goStr");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
// 기존 데이터 가져오기
|
|
$qry = "SELECT * FROM tbl_customer_image WHERE i_uid = '$i_uid'";
|
|
$rt = $jdb->fQuery($qry, "Image read error");
|
|
|
|
$oldFiles = explode(",", $rt['i_filename']);
|
|
$filepath = $rt['i_filepath'];
|
|
|
|
// 이미지 삭제 처리
|
|
$deleteFiles = $_POST['delete_files'] ?? [];
|
|
$newList = [];
|
|
|
|
foreach ($oldFiles as $f) {
|
|
$f = trim($f);
|
|
if (in_array($f, $deleteFiles)) {
|
|
$full = getenv("DOCUMENT_ROOT") . $filepath . $f;
|
|
if (file_exists($full)) unlink($full);
|
|
} else {
|
|
$newList[] = $f; // 삭제되지 않은 파일 유지
|
|
}
|
|
}
|
|
|
|
// 새 이미지 업로드 처리
|
|
if (isset($_FILES['upload_file'])) {
|
|
|
|
$upload_folder = getenv("DOCUMENT_ROOT") . $filepath;
|
|
|
|
if (!is_dir($upload_folder)) mkdir($upload_folder, 0777, true);
|
|
|
|
$fileCount = count($_FILES['upload_file']['name']);
|
|
|
|
for ($i = 0; $i < $fileCount; $i++) {
|
|
|
|
if ($_FILES['upload_file']['error'][$i] != 0) continue;
|
|
|
|
$ext = strtolower(pathinfo($_FILES['upload_file']['name'][$i], PATHINFO_EXTENSION));
|
|
|
|
$allowedExt = ['jpg', 'jpeg', 'png', 'webp'];
|
|
if (!in_array($ext, $allowedExt)) continue;
|
|
|
|
// 파일명 jpg로 통일
|
|
$newName = "IMG_".$i_customeruid."_".time().rand(1000,9999)."_".$i.".jpg";
|
|
|
|
$savePath = $upload_folder . $newName;
|
|
|
|
// 압축 + 리사이즈
|
|
if (compressAndResizeImage($_FILES['upload_file']['tmp_name'][$i], $savePath, $ext, 1200, 75)) {
|
|
$newList[] = $newName;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 콤마 문자열 재정리
|
|
$finalFiles = implode(",", $newList);
|
|
|
|
// DB 업데이트
|
|
$columns = ["i_filename", "i_note"];
|
|
$values = [$finalFiles, $i_note];
|
|
|
|
$jdb->uQuery("tbl_customer_image", $columns, $values, "WHERE i_uid = '$i_uid'");
|
|
|
|
$msg = "Updated successfully.";
|
|
$url = "/index_intranet.php?view=customer_detail&mode=update&c_uid=$i_customeruid&$goStr";
|
|
|
|
$func->modalMsg($msg, $url);
|
|
exit();
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
// DELETE IMAGE (i_status = 'I')
|
|
//////////////////////////////////////////////
|
|
if ($actionStr == "DELETEIMAGE") {
|
|
|
|
$i_uid = $_POST['i_uid'] ?? "";
|
|
$i_customeruid = $_POST['i_customeruid'] ?? "";
|
|
|
|
if ($i_uid == "" || $i_customeruid == "") {
|
|
$msg = "Invalid image data.";
|
|
$func->modalMsg($msg, "");
|
|
exit();
|
|
}
|
|
|
|
$columns = array("i_status");
|
|
$values = array("I");
|
|
$where = "WHERE i_uid = '$i_uid'";
|
|
|
|
$jdb->uQuery("tbl_customer_image", $columns, $values, $where);
|
|
|
|
// 완료 후 이동
|
|
$msg = "Image deleted successfully.";
|
|
$urlSTR = "/index_intranet.php?view=customer_detail&mode=update&c_uid=$i_customeruid&$goStr";
|
|
|
|
$func->modalMsg($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
//////////////////////////////////////////////
|
|
// ADD REQUEST (Customer Detail 에서 REQUEST 클릭시)
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "ADDREQUEST" && $mode == "create") {
|
|
|
|
try {
|
|
|
|
$func->checkLevelModal(9);
|
|
|
|
if ($r_customeruid == "" || $r_memberuid == "") {
|
|
throw new Exception("Invalid data");
|
|
}
|
|
|
|
$r_requestdateSTR = str_replace("-", "", trim($r_requestdate));
|
|
|
|
// 중복 request 체크
|
|
$qry_cntr = "SELECT COUNT(r_uid) FROM tbl_request
|
|
WHERE r_customeruid = '$r_customeruid'
|
|
AND r_requestdate = '$r_requestdateSTR'";
|
|
$totcntr = $jdb->rQuery($qry_cntr, "record query error");
|
|
|
|
if ($totcntr >= 1) {
|
|
throw new Exception("Duplicated request");
|
|
}
|
|
|
|
// 미래 daily 존재 체크
|
|
$qry_cntd = "SELECT d_orderdate FROM tbl_daily
|
|
WHERE d_customeruid = '$r_customeruid'
|
|
AND d_orderdate >= '".date("Ymd")."'
|
|
AND d_jobtype = 'UCO'
|
|
LIMIT 1";
|
|
|
|
$rt_d = $jdb->fQuery($qry_cntd, "record query error");
|
|
|
|
if ($rt_d['d_orderdate'] != "") {
|
|
$orderDate = DateTime::createFromFormat('Ymd', $rt_d['d_orderdate'])->format('Y-m-d');
|
|
throw new Exception("Order already exists ({$orderDate})");
|
|
}
|
|
|
|
// =========================
|
|
// 1. REQUEST 저장
|
|
// =========================
|
|
|
|
$qry = "SELECT c_accountno, c_name FROM tbl_customer WHERE c_uid = '$r_customeruid'";
|
|
$cus = $jdb->fQuery($qry, "query error");
|
|
|
|
if (!$cus) {
|
|
throw new Exception("Customer not found");
|
|
}
|
|
|
|
$columns = [
|
|
"r_memberuid",
|
|
"r_requestdate",
|
|
"r_customeruid",
|
|
"r_accountno",
|
|
"r_name",
|
|
"r_driveruid",
|
|
"r_druid",
|
|
"r_createddate",
|
|
"r_note"
|
|
];
|
|
|
|
$values = [
|
|
$r_memberuid,
|
|
$r_requestdateSTR,
|
|
$r_customeruid,
|
|
$cus['c_accountno'],
|
|
$cus['c_name'],
|
|
$r_driveruid,
|
|
$r_druid,
|
|
date("YmdHis"),
|
|
str_replace("\\", "", trim($r_note))
|
|
];
|
|
|
|
$jdb->iQuery("tbl_request", $columns, $values);
|
|
|
|
// r_uid 가져오기
|
|
$rt_max = $jdb->fQuery("SELECT max(r_uid) FROM tbl_request", "error");
|
|
$r_uidMAX = $rt_max[0];
|
|
|
|
// =========================
|
|
// 2. DAILY 생성
|
|
// =========================
|
|
|
|
if ($r_requestdateSTR >= date("Ymd")) {
|
|
|
|
$dailyApi = new DailyService();
|
|
|
|
$payload = [
|
|
'd_orderdate' => $r_requestdateSTR,
|
|
'd_accountno' => $cus['c_accountno'],
|
|
'd_customeruid' => $r_customeruid,
|
|
'd_driveruid' => $r_driveruid,
|
|
'd_ordertype' => 'R',
|
|
'd_ruid' => $r_uidMAX,
|
|
'd_druid' => $r_druid,
|
|
'd_createruid' => $_SESSION['ss_UID'],
|
|
'd_updateruid' => $_SESSION['ss_UID'] ?? '',
|
|
'd_createddate' => date("YmdHis"),
|
|
'd_status' => 'A',
|
|
'd_jobtype' => 'UCO'
|
|
];
|
|
|
|
$dailyApi->saveDaily($payload);
|
|
}
|
|
|
|
$msg = "Created successfully.";
|
|
$urlSTR = "/index_intranet.php?view=customer_detail&mode=update&c_uid=$r_customeruid&$goStr";
|
|
|
|
$func->modalMsg($msg, $urlSTR);
|
|
|
|
} catch (Exception $e) {
|
|
|
|
$func->modalMsg($e->getMessage(), "");
|
|
}
|
|
|
|
exit();
|
|
}
|
|
|
|
/////////////////////////
|
|
// UPDATE PERSON INFO
|
|
/////////////////////////
|
|
|
|
if ($actionStr == "PERSONINFO") {
|
|
|
|
if($mode == "update") {
|
|
if($m_uid == "") {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
$columns = array();
|
|
$values = array();
|
|
|
|
if($mode == "create") {
|
|
$columns[] = "m_userid";
|
|
$columns[] = "m_signupdate";
|
|
}
|
|
|
|
$columns[] = "m_pwd";
|
|
$columns[] = "m_firstname";
|
|
$columns[] = "m_lastname";
|
|
$columns[] = "m_cell";
|
|
|
|
if ($actionPage == "ADMINUSERINFO") {
|
|
$columns[] = "m_initial";
|
|
$columns[] = "m_status";
|
|
$columns[] = "m_level";
|
|
$columns[] = "m_comment";
|
|
}
|
|
|
|
////////////
|
|
// data
|
|
////////////
|
|
if($mode == "create") {
|
|
$values[] = trim($m_userid);
|
|
$values[] = date("YmdHis");
|
|
}
|
|
|
|
$pwdSize = 50;
|
|
$feed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
for ($i=0; $i < $pwdSize; $i++)
|
|
$rand_str .= substr($feed, rand(0, strlen($feed)-1), 1);
|
|
|
|
$CRYPT_WORD = md5($rand_str);
|
|
|
|
$hash = crypt($m_pwd,$CRYPT_WORD);
|
|
//echo"[$rand_str]<br>[$CRYPT_WORD]<br>[$hash]";exit;
|
|
|
|
$values[] = $hash;
|
|
$values[] = str_replace("\\", "", trim($m_firstname));
|
|
$values[] = str_replace("\\", "", trim($m_lastname));
|
|
$values[] = str_replace("-", "", trim($m_cell));
|
|
|
|
// password 입력없으면 password update 안함
|
|
/*
|
|
if ($user_password != "" && $user_password_chk != "") {
|
|
if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") $user_passwordSTR = password_hash($user_password, PASSWORD_DEFAULT);
|
|
else $user_passwordSTR = $user_password;
|
|
|
|
$values[] = $user_passwordSTR;
|
|
}
|
|
*/
|
|
|
|
if ($actionPage == "ADMINUSERINFO") {
|
|
$values[] = $m_initial;
|
|
$values[] = $m_status;
|
|
$values[] = $m_level; // Admin : 1, Manager : 3, Staff : 5, Accounting : 6, Sales : 7, Driver : 9
|
|
$values[] = str_replace("\\", "", trim($m_comment));
|
|
}
|
|
|
|
|
|
for ($i=0; $i < count($columns); $i++)
|
|
//echo "[$columns[$i]][$values[$i]]<br>";
|
|
//echo "[UID=$uid][ID=$userid][MAXUID=$maxuid]";
|
|
//exit;
|
|
|
|
if($mode == "create") {
|
|
$jdb->iQuery("tbl_member", $columns, $values);
|
|
$msg = "Created successfully.";
|
|
|
|
$func -> modalMsg ($msg, "/index_intranet.php?view=view&$goStr");
|
|
exit();
|
|
}
|
|
|
|
else if($mode == "update") {
|
|
$jdb->uQuery("tbl_member", $columns, $values, " where m_uid = '$m_uid' ");
|
|
$msg = "Updated successfully.";
|
|
$func -> modalMsg ($msg, "/index_intranet.php?view=$view&$goStr");
|
|
exit();
|
|
|
|
}
|
|
else {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "/index_intranet.php?view=$view&$goStr");
|
|
exit();
|
|
}
|
|
|
|
|
|
exit();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
// DAILY RECORD
|
|
//////////////////////////////////////////////
|
|
|
|
if ($actionStr == "DAILYRECORD") {
|
|
|
|
if($h_druid == "" || $h_date == "" || $mode == "" ) {
|
|
$msg = "Invaild data. Please try again. [Err - h_driveruid,h_date,mode / DAILYRECORD]";
|
|
$urlSTR = "/index_intranet.php?view=order_list&".$goStr;
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
} else {
|
|
|
|
|
|
$columns = array();
|
|
$values = array();
|
|
|
|
$columns[] = "h_driveruid";
|
|
$columns[] = "h_date";
|
|
$columns[] = "h_departuretime";
|
|
$columns[] = "h_arrivaltime";
|
|
$columns[] = "h_mileage_s";
|
|
$columns[] = "h_mileage_f";
|
|
$columns[] = "h_balance_o";
|
|
$columns[] = "h_balance_in";
|
|
$columns[] = "h_balance_out";
|
|
$columns[] = "h_balance_r";
|
|
$columns[] = "h_balance_g";
|
|
$columns[] = "h_balance_e";
|
|
$columns[] = "h_balance_t";
|
|
$columns[] = "h_createddate";
|
|
$columns[] = "h_comment";
|
|
$columns[] = "h_druid";
|
|
|
|
// Data
|
|
|
|
$values[] = $h_driveruid;
|
|
$values[] = $h_date;
|
|
$values[] = $h_departuretime;
|
|
$values[] = $h_arrivaltime;
|
|
$values[] = $h_mileage_s;
|
|
$values[] = $h_mileage_f;
|
|
$values[] = $h_balance_o;
|
|
$values[] = $h_balance_in;
|
|
$values[] = $h_balance_out;
|
|
$values[] = $h_balance_r;
|
|
$values[] = $h_balance_g;
|
|
$values[] = $h_balance_e;
|
|
|
|
$h_balance_t = floatval($h_balance_o) + floatval($h_balance_in) - floatval($h_balance_r) - floatval($h_balance_out);
|
|
$values[] = $h_balance_t;
|
|
$values[] = date("YmdHis");;
|
|
$values[] = str_replace("\\", "", trim($h_comment));
|
|
$values[] = $h_druid;
|
|
|
|
|
|
|
|
//for ($i=0; $i < count($columns); $i++)
|
|
//echo "[$columns[$i]][$values[$i]]<br>";
|
|
//exit;
|
|
|
|
if($mode == "create") {
|
|
$jdb->iQuery("tbl_memberhis", $columns, $values);
|
|
$msg = "Saved successfully.";
|
|
|
|
$urlSTR = "/index_intranet.php?view=order_list&".$goStr;
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
else if($mode == "update") {
|
|
$jdb->uQuery("tbl_memberhis", $columns, $values, " where h_uid = '$h_uid' ORDER BY h_uid DESC LIMIT 1 ");
|
|
$msg = "Updated successfully.";
|
|
$urlSTR = "/index_intranet.php?view=order_list&".$goStr;
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
|
|
}
|
|
else {
|
|
$msg = "Invalid data. Please try again.";
|
|
$urlSTR = "/index_intranet.php?view=order_list&".$goStr;
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
exit();
|
|
|
|
}
|
|
|
|
exit();
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////
|
|
// xxx CHANGE PASSWORD
|
|
/////////////////////////
|
|
|
|
if ($actionStr == "USERINFO" && $actionPage == "ADMINUSERINFO" && $mode == "resetpassword") {
|
|
if($uid == "") {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
$hash = crypt(trim($reuserpwd),$CRYPT_WORD);
|
|
|
|
$jdb->nQuery("UPDATE tbl_members SET userpwd='$hash' WHERE uid = '$uid'", "delete error");
|
|
$jdb->CLOSE();
|
|
|
|
$msg = "Updated successfully.";
|
|
//$func -> alertBack($msg);
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////
|
|
// xxx DELETE - History
|
|
/////////////////////////
|
|
|
|
if ($actionStr == "USERHISFAV" && $mode == "delete") {
|
|
if($fa_id == "") {
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "");
|
|
exit();
|
|
}
|
|
//echo "[$fa_id]";exit;
|
|
|
|
$jdb->nQuery("DELETE FROM tbl_favorite WHERE fa_id = '$fa_id'", "delete error");
|
|
$jdb->CLOSE();
|
|
$msg = "Deleted successfully.";
|
|
|
|
if ($actionFlag == "HIS") $urlSTR = "/index.php?view=myhistory&$goStr";
|
|
else $urlSTR = "/index.php?view=myfavorites&$goStr";
|
|
|
|
$func -> modalMsg ($msg, $urlSTR);
|
|
exit();
|
|
}
|
|
|
|
|
|
if ($actionStr == "SIGNATURE") {
|
|
|
|
try {
|
|
|
|
if ($customeruid == "" || $orderdate == "") {
|
|
throw new Exception("Invalid data. Please try again.");
|
|
}
|
|
|
|
// SIGNATURE CHECK
|
|
if ($signednew == 1) {
|
|
$putSignFlag = 1;
|
|
} else {
|
|
if ($d_payeesign == "" && $_POST['signed'] != "") {
|
|
$putSignFlag = 1;
|
|
} else {
|
|
$putSignFlag = 0;
|
|
}
|
|
}
|
|
|
|
// SAVE SIGNATURE FILE
|
|
if ($putSignFlag == 1) {
|
|
$folderPath = getenv("DOCUMENT_ROOT")."/upload_sign/".$customeruid;
|
|
if (!is_dir($folderPath)) {
|
|
mkdir($folderPath, 0755, true);
|
|
}
|
|
|
|
$image_parts = explode(";base64,", $_POST['signed']);
|
|
$image_type_aux = explode("image/", $image_parts[0]);
|
|
$image_type = $image_type_aux[1];
|
|
$image_base64 = base64_decode($image_parts[1]);
|
|
$uniquevalue = uniqid();
|
|
|
|
// DAILY EXISTS
|
|
$qry_cnt = "SELECT COUNT(*) FROM tbl_daily WHERE d_uid = '".$uid."'";
|
|
$total_count = $jdb->rQuery($qry_cnt, "record query error");
|
|
|
|
if ($total_count > 0) {
|
|
$filename = $orderdate . "_" . $uniquevalue . "." . $image_type;
|
|
} else {
|
|
$filename = "T_" . $orderdate . "_" . $uniquevalue . "." . $image_type;
|
|
}
|
|
|
|
$file = $folderPath . "/" . $filename;
|
|
file_put_contents($file, $image_base64);
|
|
|
|
// SAVE DAILY
|
|
if ($total_count > 0) {
|
|
$dailyApi = new DailyService();
|
|
$payload = [
|
|
'd_orderdate' => $orderdate,
|
|
'd_accountno' => $customerno,
|
|
'd_payeesign' => $filename,
|
|
'd_updateruid' => $_SESSION['ss_UID'] ?? '',
|
|
];
|
|
|
|
$dailyApi->saveDaily(
|
|
$payload,
|
|
[
|
|
'match_uid' => $uid,
|
|
'allow_update' => true
|
|
]
|
|
);
|
|
}
|
|
}
|
|
|
|
// DONE
|
|
$msg = "Saved successfully.";
|
|
echo "
|
|
<script>
|
|
alert('".$msg."');
|
|
window.close();
|
|
</script>";
|
|
|
|
} catch (Exception $e) {
|
|
|
|
$func->modalMsg($e->getMessage(), "");
|
|
}
|
|
|
|
exit();
|
|
}
|
|
|
|
function compressAndResizeImage($srcPath, $destPath, $ext, $maxWidth = 1200, $quality = 75) {
|
|
list($width, $height, $imageType) = getimagesize($srcPath);
|
|
|
|
if (!$width || !$height) return false;
|
|
|
|
switch ($imageType) {
|
|
case IMAGETYPE_JPEG:
|
|
$srcImg = imagecreatefromjpeg($srcPath);
|
|
break;
|
|
case IMAGETYPE_PNG:
|
|
$srcImg = imagecreatefrompng($srcPath);
|
|
break;
|
|
case IMAGETYPE_WEBP:
|
|
if (!function_exists('imagecreatefromwebp')) return false;
|
|
$srcImg = imagecreatefromwebp($srcPath);
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
if (!$srcImg) return false;
|
|
|
|
if ($width > $maxWidth) {
|
|
$newWidth = $maxWidth;
|
|
$newHeight = intval(($height / $width) * $newWidth);
|
|
} else {
|
|
$newWidth = $width;
|
|
$newHeight = $height;
|
|
}
|
|
|
|
$dstImg = imagecreatetruecolor($newWidth, $newHeight);
|
|
|
|
if ($imageType == IMAGETYPE_PNG || $imageType == IMAGETYPE_WEBP) {
|
|
imagealphablending($dstImg, false);
|
|
imagesavealpha($dstImg, true);
|
|
$transparent = imagecolorallocatealpha($dstImg, 0, 0, 0, 127);
|
|
imagefilledrectangle($dstImg, 0, 0, $newWidth, $newHeight, $transparent);
|
|
}
|
|
|
|
imagecopyresampled(
|
|
$dstImg, $srcImg,
|
|
0, 0, 0, 0,
|
|
$newWidth, $newHeight,
|
|
$width, $height
|
|
);
|
|
|
|
$result = imagejpeg($dstImg, $destPath, $quality);
|
|
|
|
imagedestroy($srcImg);
|
|
imagedestroy($dstImg);
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
$msg = "Invalid data. Please try again.";
|
|
$func -> modalMsg ($msg, "/index_intranet.php");
|
|
exit();
|
|
|
|
?>
|