Files
confirms/app/Controllers/Article/Receipt.php
yangsh abf369dcd6
Some checks failed
Close Pull Request / main (pull_request_target) Has been cancelled
상세수정
2026-01-22 17:02:14 +09:00

464 lines
16 KiB
PHP

<?php
namespace App\Controllers\Article;
use App\Controllers\BaseController;
use App\Libraries\MyUpload;
use App\Models\article\ReceiptModel;
use App\Models\common\CodeModel;
class Receipt extends BaseController
{
private $model, $codeModel;
public function __construct()
{
$this->model = new ReceiptModel();
$this->codeModel = new CodeModel();
}
public function lists(): string
{
$codes = $this->codeModel->getCodeLists(['NHN_DEAL_TYPE', 'CP_ID', 'ARTICLE_TYPE', 'VRFCREQ_WAY', 'STEP_VERIFICATION']); // 코드조회
$sido = $this->model->getAreaList(); // 지역조회
$bonbu = $this->model->getBonbuList();
$team = $this->model->getTeamList();
$user = $this->model->getUserList();
$this->data['sido'] = $sido;
$this->data['bonbu'] = $bonbu;
$this->data['team'] = $team;
$this->data['user'] = $user;
$this->data['codes'] = $codes;
return view("pages/article/receipt/lists", $this->data);
}
public function getResultList()
{
$start = (int) $this->request->getGet('start') ?: 0;
$end = (int) $this->request->getGet('length') ?: 10;
$data = [
'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
'schDateGb' => $this->request->getGet('schDateGb'), // 일자유형
'sdate' => $this->request->getGet('sdate'), // 시작일
'edate' => $this->request->getGet('edate'), // 종료일
'bonbu' => $this->request->getGet('bonbu'), // 본부
'team' => $this->request->getGet('team'), // 팀
'user' => $this->request->getGet('user'), // 담당자
'sido' => $this->request->getGet('sido'), // 시도
'gugun' => $this->request->getGet('gugun'), // 시군구
'dong' => $this->request->getGet('dong'), // 읍면동
'rcpt_stat1' => $this->request->getGet('rcpt_stat1'), // 상태1
'rcpt_stat2' => $this->request->getGet('rcpt_stat2'), // 상태2
'rcpt_stat3' => $this->request->getGet('rcpt_stat3'), // 상태3
'rcpt_product_info1' => $this->request->getGet('rcpt_product_info1'), // 거래구분
'exp_movie_yn' => $this->request->getGet('exp_movie_yn'), // 동영상촬영여부
'conf_img_yn' => $this->request->getGet('conf_img_yn'), // 홍보확인서여부
'parcel_out_yn' => $this->request->getGet('parcel_out_yn'), // 분양권
'rcpt_cpid' => $this->request->getGet('rcpt_cpid'), // CPID
'rcpt_product' => $this->request->getGet('rcpt_product'), // 매물종류
'exp_spc_yn' => $this->request->getGet('exp_spc_yn'), // 면적확인
'check_list_img_yn' => $this->request->getGet('check_list_img_yn'), // 체크리스트
'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무
'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청
'direct_trad_yn' => $this->request->getGet('direct_trad_yn'), // 직거래
'image_360_yn' => $this->request->getGet('image_360_yn'), // 360촬영여부
'srchType' => $this->request->getGet('srchType'), // 검색유형
'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
];
$totalCount = $this->model->getTotalCount($data);
$datas = $this->model->getResultList($start, $end, $data);
return $this->response->setJSON(body: [
'recordsTotal' => $totalCount,
'recordsFiltered' => $totalCount,
'data' => $datas,
]);
}
// 엑셀 다운로드
public function excel()
{
try {
$data = [
'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
'schDateGb' => $this->request->getGet('schDateGb'), // 일자유형
'sdate' => $this->request->getGet('sdate'), // 시작일
'edate' => $this->request->getGet('edate'), // 종료일
'bonbu' => $this->request->getGet('bonbu'), // 본부
'team' => $this->request->getGet('team'), // 팀
'user' => $this->request->getGet('user'), // 담당자
'sido' => $this->request->getGet('sido'), // 시도
'gugun' => $this->request->getGet('gugun'), // 시군구
'dong' => $this->request->getGet('dong'), // 읍면동
'rcpt_stat1' => $this->request->getGet('rcpt_stat1'), // 상태1
'rcpt_stat2' => $this->request->getGet('rcpt_stat2'), // 상태2
'rcpt_stat3' => $this->request->getGet('rcpt_stat3'), // 상태3
'rcpt_product_info1' => $this->request->getGet('rcpt_product_info1'), // 거래구분
'exp_movie_yn' => $this->request->getGet('exp_movie_yn'), // 동영상촬영여부
'conf_img_yn' => $this->request->getGet('conf_img_yn'), // 홍보확인서여부
'parcel_out_yn' => $this->request->getGet('parcel_out_yn'), // 분양권
'rcpt_cpid' => $this->request->getGet('rcpt_cpid'), // CPID
'rcpt_product' => $this->request->getGet('rcpt_product'), // 매물종류
'exp_spc_yn' => $this->request->getGet('exp_spc_yn'), // 면적확인
'check_list_img_yn' => $this->request->getGet('check_list_img_yn'), // 체크리스트
'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무
'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청
'direct_trad_yn' => $this->request->getGet('direct_trad_yn'), // 직거래
'image_360_yn' => $this->request->getGet('image_360_yn'), // 360촬영여부
'srchType' => $this->request->getGet('srchType'), // 검색유형
'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
];
$datas = $this->model->getExcelList($data);
return $this->response->setJSON(body: [
'data' => $datas,
]);
} catch (\Exception $e) {
$e->getPrevious()->getTraceAsString();
}
}
// 상세화면
public function detail($id)
{
$id = (int) $id;
if ($id <= 0) {
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
}
$codes = $this->codeModel->getCodeLists(['TRADE_TYPE', 'RECEIPT_STATUS2', 'RECEIPT_STATUS3', 'SMS_MSG_TYPE', 'SMS_MSG_TYPE2']); // 코드조회
$bonbu = $this->model->getBonbuList();
$team = $this->model->getTeamList();
// sms 코드
$sms = [];
foreach ($codes as $c) {
if ($c['category'] === "SMS_MSG_TYPE2")
array_push($sms, $c);
}
$data = $this->model->getDetail($id);
$history = $this->model->getHistory($id);
if ($data['rcpt_jibun_addr']) {
$dupleGroundPlan = $this->model->getDupleGP_na($id, $data['rcpt_sido'], $data['rcpt_gugun'], $data['rcpt_dong'], $data['rcpt_hscp_nm'], $data['rcpt_dtl_addr'], $data['rcpt_li_addr'], $data['rcpt_jibun_addr'], $data['rcpt_etc_addr']);
} else {
$dupleGroundPlan = $this->model->getDupleGP($id, $data['rcpt_sido'], $data['rcpt_gugun'], $data['rcpt_dong'], $data['rcpt_hscp_nm'], $data['rcpt_dtl_addr'], $data['rcpt_ho']);
}
$aptGround = $this->model->getAptGround($data['rcpt_dong'] ?? '');
// 이미지 파일리스트
$images = $this->model->getImageList2($data['rsrv_sq']);
$imgs_count = $this->model->getImageCountByType($data['rsrv_sq']);
$imgs_count = convertArrayToHashTable($imgs_count, 'img_type', 'img_cnt');
//녹취파일
$record = $this->model->getRecordInfo($data['rsrv_sq']);
// 시간대별통계
$tmCount = $this->model->getUsrRsrvDateTmCount($id);
// 체크리스트 조회
if ($data['exp_photo_yn'] === "N") {
$result_check = $this->model->getChecklist($data['rsrv_sq']);
} else {
$result_check = [];
}
$this->data['codes'] = $codes;
$this->data['bonbu'] = $bonbu;
$this->data['team'] = $team;
$this->data['sms'] = $sms;
$this->data['data'] = $data;
$this->data['history'] = $history;
$this->data['dupleGroundPlan'] = $dupleGroundPlan;
$this->data['apt_ground'] = $aptGround;
$this->data['images'] = $images;
$this->data['imgs_count'] = $imgs_count;
$this->data['record'] = $record;
$this->data['tmCount'] = $tmCount;
$this->data['result_check'] = $result_check;
return view("pages/article/receipt/detail", $this->data);
}
// 연락처 저장
public function saveTel()
{
try {
$tel = $this->request->getPost('agent_tel');
$this->model->saveTel($tel);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 평면도요청 저장
public function resGround()
{
try {
$rcpt_sq = $this->request->getPost('rcpt_sq');
$ground_plan = $this->request->getPost('ground_plan');
$this->model->saveGround($rcpt_sq, $ground_plan);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 예약확정 저장
public function assignRegist()
{
try {
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 동영상촬영여부 저장
public function requestMovie()
{
try {
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$exp_movie_yn = $this->request->getPost('exp_movie_yn');
$this->model->saveRequestMovie($rcpt_sq, $rsrv_sq, $exp_movie_yn);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 중개사메모 저장
public function requestMessage()
{
try {
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$request_msg = $this->request->getPost('request_msg');
$this->model->saveRequestMessage($rcpt_sq, $rsrv_sq, $request_msg);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 예약취소
public function rsrvcancel()
{
try {
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 문자발송
public function sendSms()
{
try {
$rcpt_key = $this->request->getPost('rcpt_key');
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$cd = $this->request->getPost('cd');
$send_phone = "1600-5749";
$phone = $this->request->getPost('phone');
$content = $this->request->getPost('content');
$send_nm = session('usr_nm');
$data = $this->model->getDetail($rcpt_key);
$dest_name = "";
if ($cd == "S7" || $cd == "S14") {
$dest_name = "(거주인)" . $data['rec_nm'];
} else {
$dest_name = "(중개인)" . $data['agent_nm'];
}
$this->model->sendSms($phone, "", $send_phone, $send_nm, $dest_name, $rsrv_sq, $rcpt_sq, $cd, $data);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
// 거주인정보저장
public function saveRecInfo()
{
$lib = new MyUpload();
try {
$rcpt_sq = $this->request->getPost('rcpt_sq');
$rcpt_key = $this->request->getPost('rcpt_key');
$rsrv_sq = $this->request->getPost('rsrv_sq');
$rec_tel1 = $this->request->getPost('rec_tel1');
$rec_tel2 = $this->request->getPost('rec_tel2');
$rec_tel3 = $this->request->getPost('rec_tel3');
$rec_tel = $rec_tel1 . '-' . $rec_tel2 . '-' . $rec_tel3;
$rec_nm = $this->request->getPost('rec_nm');
$rec_remark = $this->request->getPost('rec_remark');
$file = $this->request->getFile('rec_file');
$data = [
'rcpt_sq' => $rcpt_sq,
'rsrv_sq' => $rsrv_sq,
'rcpt_key' => $rcpt_key,
'rec_tel' => $rec_tel,
'rec_nm' => $rec_nm,
'rec_remark' => $rec_remark,
];
if ($file && $file->isValid() && !$file->hasMoved()) {
$uploadPath = "/upload/result/" . $rsrv_sq . "/";
$arrUploadfile = [];
if ($file->isValid() && !$file->hasMoved()) {
$uploadData = $lib->do_upload2($file, $uploadPath);
if ($uploadData !== false) {
$arrUploadfile[] = $uploadData;
}
}
if (!empty($arrUploadfile)) {
foreach ($arrUploadfile as $key => $uploadFile) {
$data['file'] = [
'orig_name' => $uploadFile['origin_name'],
'new_name' => $uploadFile['file_name'],
'file_path' => $uploadPath, // 필요에 따라 상대경로로만 저장
'ext' => '.' . $uploadFile['ext'],
'size' => $file->getSize(),
];
}
}
}
$this->model->saveRecInfo($data);
return $this->response->setJSON([
'code' => '0',
'msg' => 'success'
]);
} catch (\Exception $e) {
return $this->response->setJSON([
'code' => '9',
'msg' => $e->getMessage(),
]);
}
}
}