diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 67b2f01..2c63937 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -59,13 +59,40 @@ $routes->group('', ['namespace' => 'App\Controllers\Article'], static function ( /** * 현장확인매물 내역 */ - $routes->group('article', static function ($routes) { - $routes->get('receipt/lists', 'Receipt::lists'); - $routes->get('receipt/detail/(:num)', 'Receipt::detail/$1'); + $routes->group('article/receipt', static function ($routes) { + $routes->get('lists', 'Receipt::lists'); + $routes->get('detail/(:num)', 'Receipt::detail/$1'); - $routes->get('receipt/getResultList', 'Receipt::getResultList'); + $routes->get('getResultList', 'Receipt::getResultList'); + $routes->get('excel', 'Receipt::excel'); }); + + /** + * 조직별 배정 현황 + */ + $routes->group('article/dept', static function ($routes) { + $routes->get('lists', 'Dept::lists'); + $routes->get('detail/(:num)', 'Dept::detail/$1'); + + $routes->get('getResultList', 'Dept::getResultList'); + $routes->get('excel', 'Dept::excel'); + $routes->get('print', 'Dept::print'); // 관할포인트 + $routes->get('updateAssign', 'Dept::updateAssign'); // 배정변경 + + }); + + /** + * 녹취매물 내역 + */ + $routes->group('article/record', static function ($routes) { + $routes->get('lists', 'Record::lists'); + $routes->get('detail/(:num)', 'Record::detail/$1'); + + $routes->get('getResultList', 'Record::getResultList'); + $routes->get('excel', 'Record::excel'); + }); + }); diff --git a/app/Controllers/Article/Apt.php b/app/Controllers/Article/Apt.php index a9dfb08..c891fa1 100644 --- a/app/Controllers/Article/Apt.php +++ b/app/Controllers/Article/Apt.php @@ -163,7 +163,7 @@ class Apt extends BaseController try { $team = $this->request->getPost('team'); - $damdang = $this->request->getPost(index: 'damdang'); + $damdang = $this->request->getPost(index: 'usr_id'); if (empty($team)) { return $this->response->setJSON([ diff --git a/app/Controllers/Article/Dept.php b/app/Controllers/Article/Dept.php new file mode 100644 index 0000000..b23bde2 --- /dev/null +++ b/app/Controllers/Article/Dept.php @@ -0,0 +1,254 @@ +codeModel = new CodeModel(); + $this->model = new DeptModel(); + } + + public function lists(): string + { + + $codes = $this->codeModel->getCodeLists(['NHN_PRODUCT_TYPE', 'RECEIPT_STATUS1', 'RESERVED_APM']); // 코드조회 + $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/dept/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 + + 'sdate' => $this->request->getGet('sdate'), // 시작일 + 'edate' => $this->request->getGet('edate'), // 종료일 + + 'rsrv_tm_ap' => $this->request->getGet('rsrv_tm_ap'), // 유형 + 'rsrv_sdate' => $this->request->getGet('rsrv_sdate'), // 시작일 + 'rsrv_edate' => $this->request->getGet('rsrv_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'), // 읍면동 + + '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'), // 직거래 + + 'stat' => $this->request->getGet('stat'), + + 'srchType' => $this->request->getGet('srchType'), // 검색유형 + 'srchTxt' => $this->request->getGet('srchTxt'), // 검색어 + ]; + + $totalCount = $this->model->getTotalCount($data); + + $datas = $this->model->getResultList($start, $end, $data); + + $deptStatistics = $this->model->getDeptStatistics($data); // 조직별통계 + $areaStatistics = $this->model->getAreaStatistics($data); // 지역별통계 + + return $this->response->setJSON(body: [ + 'recordsTotal' => $totalCount, + 'recordsFiltered' => $totalCount, + 'data' => $datas, + 'widgets' => [ + 'deptList' => $deptStatistics, + 'areaStats' => $areaStatistics, + ], + ]); + } + + + // 관할포인트 인쇄 - 화면 + public function print(): string + { + $deptSq = $this->request->getGet('depChk'); + $dept_cnt = count($deptSq); + + + $listDept = $this->model->getDeptMapList($deptSq); + + if (!empty($listDept)) { + $lati = 0; + $long = 0; + foreach ($listDept as $dept) { + $lati += $dept['rcpt_y']; + $long += $dept['rcpt_x']; + } + + $lati = $lati / $dept_cnt; + $long = $long / $dept_cnt; + } + + return view("pages/article/dept/printMap", [ + // 'lati' => $lati, + // 'long' => $long, + 'listDept' => $listDept, + ]); + } + + + // 엑셀 다운로드 + public function excel() + { + try { + + $data = [ + 'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID + + 'sdate' => $this->request->getGet('sdate'), // 시작일 + 'edate' => $this->request->getGet('edate'), // 종료일 + + 'rsrv_tm_ap' => $this->request->getGet('rsrv_tm_ap'), // 유형 + 'rsrv_sdate' => $this->request->getGet('rsrv_sdate'), // 시작일 + 'rsrv_edate' => $this->request->getGet('rsrv_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'), // 읍면동 + + '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'), // 직거래 + + 'stat' => $this->request->getGet('stat'), + + '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 updateAssign() + { + try { + + $team = $this->request->getPost('team'); + $damdang = $this->request->getPost(index: 'usr_id'); + + if (empty($team)) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '팀정보 누락', + ]); + } + + if (empty($damdang)) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '담당자정보 누락', + ]); + } + + + $rows = $this->request->getPost('rows'); + + $rows = json_decode($rows, true); + + if (count($rows) > 0) { + foreach ($rows as $row) { + $params = [ + 'dept_sq' => $team, + 'damdang' => $damdang, + 'rcpt_sq' => $row['rcpt_sq'], + ]; + + $this->model->updateAssign($params); + + } + } else { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '저장데이터 누락', + ]); + } + + return $this->response->setJSON([ + 'code' => '0', + 'msg' => 'success' + ]); + + + } catch (\Exception $e) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => $e->getMessage(), + ]); + } + } + + // 상세화면 + public function detail($id): string + { + + $id = (int) $id; + + if ($id <= 0) { + throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); + } + + $codes = $this->codeModel->getCodeLists(['TRADE_TYPE', 'RECEIPT_STATUS2', 'RECEIPT_STATUS3', 'SMS_MSG_TYPE']); // 코드조회 + $bonbu = $this->model->getBonbuList(); + $team = $this->model->getTeamList(); + + $data = $this->model->getDetail($id); + $history = $this->model->getHistory($id); + + // $aptGround = $this->model->getAptGround($data['rcpt_dong']); + + // 시간대별통계 + $tmCount = $this->model->getUsrRsrvDateTmCount($id); + + $this->data['codes'] = $codes; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + + $this->data['data'] = $data; + $this->data['history'] = $history; + + $this->data['tmCount'] = $tmCount; + + return view("pages/article/dept/detail", $this->data); + } +} \ No newline at end of file diff --git a/app/Controllers/Article/Record.php b/app/Controllers/Article/Record.php new file mode 100644 index 0000000..6cf6d9a --- /dev/null +++ b/app/Controllers/Article/Record.php @@ -0,0 +1,152 @@ +model = new RecordModel(); + $this->codeModel = new CodeModel(); + } + + public function lists(): string + { + + $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; + + return view("pages/article/record/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 + + 'sdate' => $this->request->getGet('sdate'), // 시작일 + 'edate' => $this->request->getGet('edate'), // 종료일 + + 'photo_sdate' => $this->request->getGet('photo_sdate'), // 촬영완료일자 시작일 + 'photo_edate' => $this->request->getGet('photo_edate'), // 촬영완료일자 종료일 + + 'record_sdate' => $this->request->getGet('record_sdate'), // 녹취완료일자 시작일 + 'record_edate' => $this->request->getGet('record_edate'), // 녹취완료일자 종료일 + 'rec_yn' => $this->request->getGet('rec_yn'), // 녹취완료여부 + + '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'), // 읍면동 + + '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 + + 'sdate' => $this->request->getGet('sdate'), // 시작일 + 'edate' => $this->request->getGet('edate'), // 종료일 + + 'photo_sdate' => $this->request->getGet('photo_sdate'), // 촬영완료일자 시작일 + 'photo_edate' => $this->request->getGet('photo_edate'), // 촬영완료일자 종료일 + + 'record_sdate' => $this->request->getGet('record_sdate'), // 녹취완료일자 시작일 + 'record_edate' => $this->request->getGet('record_edate'), // 녹취완료일자 종료일 + 'rec_yn' => $this->request->getGet('rec_yn'), // 녹취완료여부 + + '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'), // 읍면동 + + '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): string + { + + $id = (int) $id; + + if ($id <= 0) { + throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); + } + + $codes = $this->codeModel->getCodeLists(['TRADE_TYPE', 'RECEIPT_STATUS2', 'RECEIPT_STATUS3', 'SMS_MSG_TYPE']); // 코드조회 + $bonbu = $this->model->getBonbuList(); + $team = $this->model->getTeamList(); + + $data = $this->model->getDetail($id); + $history = $this->model->getHistory($id); + + $aptGround = $this->model->getAptGround($data['rcpt_dong']); + + // 시간대별통계 + $tmCount = $this->model->getUsrRsrvDateTmCount($id); + + $this->data['codes'] = $codes; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + + $this->data['data'] = $data; + $this->data['history'] = $history; + + $this->data['tmCount'] = $tmCount; + + return view("pages/article/record/detail", $this->data); + } +} \ No newline at end of file diff --git a/app/Models/article/DeptModel.php b/app/Models/article/DeptModel.php new file mode 100644 index 0000000..8ca36e2 --- /dev/null +++ b/app/Models/article/DeptModel.php @@ -0,0 +1,1336 @@ +db->query($sql, [$gugun]); + + } else if (!empty($sido)) { + $chk_sido = substr($sido, '0', '2'); + + if ($chk_sido === '36') { + $sido = substr($sido, '0', '4'); + $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm " . + "FROM region_codes a " . + "LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,4),'000000') " . + "WHERE a.region_cd LIKE concat(?, '%') " . + "AND a.region_cd NOT LIKE '%000000' " . + "AND a.region_cd LIKE '%00' " . + "AND a.use_yn = 'Y' " . + "AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000')) " . + "ORDER BY a.region_nm ASC"; + } else { + $sido = substr($sido, '0', '2'); + $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm" . + " FROM region_codes a" . + " LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,2),'00000000')" . + " WHERE a.region_cd LIKE concat(?, '%')" . + " AND a.region_cd NOT LIKE '%00000000'" . + " AND a.region_cd LIKE '%00000'" . + " AND a.use_yn = 'Y'" . + " AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000'))" . + " ORDER BY a.region_nm ASC"; + } + + $query = $this->db->query($sql, [$sido]); + } else { + $sql = "SELECT a.region_cd, a.region_nm " . + "FROM region_codes a " . + "WHERE (a.region_cd LIKE '%00000000' " . + "AND a.use_yn = 'Y') " . + "OR region_cd = 3611000000;"; + + $query = $this->db->query($sql); + } + + + return $query->getResultArray(); + } + + // 소속본부조회 + public function getBonbuList() + { + $sql = "SELECT dept_sq, pdept_sq, dept_nm, dept_desc, dept_head, use_yn, depth, insert_tm, insert_usr, update_tm, update_usr, lft, rgt" . + " FROM departments" . + " WHERE depth = 1" . + " AND use_yn = 'Y'" . + " ORDER BY lft"; + + $query = $this->db->query($sql); + + + return $query->getResultArray(); + } + + // 소속팀 조회 + public function getTeamList() + { + $sql = "SELECT dept_sq, pdept_sq, dept_nm" . + " FROM departments" . + " WHERE depth = 2" . + " AND use_yn = 'Y'" . + " ORDER BY dept_nm"; + + $query = $this->db->query($sql); + + + return $query->getResultArray(); + } + + // 유저 조회 + public function getUserList() + { + $sql = "SELECT + a.usr_sq, a.usr_id, a.usr_nm, a.dept_sq + FROM users a + WHERE + a.usr_level IN ('3','4','40','5','50','6','60','61','62','7','8','70') + AND a.use_yn = 'Y' + AND EXISTS ( + SELECT 'x' FROM departments a1 INNER JOIN departments a2 ON a2.lft BETWEEN a1.lft AND a1.rgt AND a2.use_yn = 'Y' + WHERE 1=1 AND a2.dept_sq = a.dept_sq AND a1.use_yn = 'Y' + ) + ORDER BY a.usr_level DESC, a.usr_nm ASC "; + + $query = $this->db->query($sql); + + return $query->getResultArray(); + } + + // 조직별통계 + public function getDeptStatistics($data) + { + + $builder = $this->db->table('receipt a'); + + $builder->select("b.dept_sq, e.dept_nm as bonbu_nm, d.dept_nm as team_nm, COUNT(b.dept_sq) as cnt"); + + $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + $builder->join('departments e', 'd.pdept_sq = e.dept_sq', 'left'); + + $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + $builder->where('a.isSiteVRVerification', 'N'); + + // 접수일자 + /* + if (!empty($data['sdate'])) { + $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59'); + } + */ + + // if (!empty($data['rsrv_tm_ap'])) { + // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']); + // } + + // 예약일자 + if (!empty($data['rsrv_sdate'])) { + $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00'); + } + + if (!empty($data['rsrv_edate'])) { + $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59'); + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 평면도유무 + if ($data['ground_plan_yn'] == 'Y') { + $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } else if ($data['ground_plan_yn'] == 'N') { + $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } + + // 평면도요청 + if (!empty($data['ground_plan'])) { + $builder->where('a.ground_plan', $data['ground_plan']); + } + + // 직거래 + if ($data['direct_trad_yn'] == "Y") { + $builder->where('a.direct_trad_yn', 'Y'); + } else if ($data['direct_trad_yn'] == "N") { + $builder->where('a.direct_trad_yn', 'N'); + } + + // 상태 + if (!empty($data['stat'])) { + $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + $builder->groupBy('b.dept_sq'); + $builder->orderBy('bonbu_nm ASC, team_nm ASC'); + + + return $builder->get()->getResultArray(); + } + + // 지역별 통계 + public function getAreaStatistics($data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + + $builder = $this->db->table(tableName: 'receipt a'); + + $builder->select("c.region_nm AS rcpt_dong, COUNT(a.rcpt_dong) AS cnt "); + + $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + + if (in_array($usr_level, ['4', '40'])) { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + // $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + $builder->where('a.isSiteVRVerification', 'N'); + + // 접수일자 + /* + if (!empty($data['sdate'])) { + $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59'); + } + */ + + // if (!empty($data['rsrv_tm_ap'])) { + // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']); + // } + + // 예약일자 + if (!empty($data['rsrv_sdate'])) { + $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00'); + } + + if (!empty($data['rsrv_edate'])) { + $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59'); + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 평면도유무 + if ($data['ground_plan_yn'] == 'Y') { + $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } else if ($data['ground_plan_yn'] == 'N') { + $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } + + // 평면도요청 + if (!empty($data['ground_plan'])) { + $builder->where('a.ground_plan', $data['ground_plan']); + } + + // 직거래 + if ($data['direct_trad_yn'] == "Y") { + $builder->where('a.direct_trad_yn', 'Y'); + } else if ($data['direct_trad_yn'] == "N") { + $builder->where('a.direct_trad_yn', 'N'); + } + + // 상태 + if (!empty($data['stat'])) { + $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + $builder->groupBy('c.region_nm'); + $builder->orderBy('c.region_nm ASC'); + + + return $builder->get()->getResultArray(); + } + + public function getTotalCount($data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + $builder = $this->db->table('receipt a'); + + $builder->select("COUNT(*) AS cnt"); + + $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + $builder->join('codes f', 'a.trade_type = f.cd AND f.category = \'TRADE_TYPE\'', 'left'); + + if (in_array($usr_level, ['4', '40'])) { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + $builder->where('a.isSiteVRVerification', 'N'); + + // 접수일자 + /* + if (!empty($data['sdate'])) { + $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59'); + } + */ + + // if (!empty($data['rsrv_tm_ap'])) { + // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']); + // } + + // 예약일자 + if (!empty($data['rsrv_sdate'])) { + $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00'); + } + + if (!empty($data['rsrv_edate'])) { + $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59'); + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 평면도유무 + if ($data['ground_plan_yn'] == 'Y') { + $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } else if ($data['ground_plan_yn'] == 'N') { + $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } + + // 평면도요청 + if (!empty($data['ground_plan'])) { + $builder->where('a.ground_plan', $data['ground_plan']); + } + + // 직거래 + if ($data['direct_trad_yn'] == "Y") { + $builder->where('a.direct_trad_yn', 'Y'); + } else if ($data['direct_trad_yn'] == "N") { + $builder->where('a.direct_trad_yn', 'N'); + } + + // 상태 + if (!empty($data['stat'])) { + $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + + $row = $builder->get()->getRowArray(); + return (int) ($row['cnt'] ?? 0); + } + + public function getResultList($start, $end, $data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + $builder = $this->db->table('receipt a'); + + $builder->select("a.rcpt_sq + ,a.comp_sq + ,a.rcpt_rating + ,a.rcpt_key + ,a.rcpt_atclno + ,a.rcpt_type + ,a.rcpt_product + ,a.rcpt_product_nm + ,a.rcpt_product_area + ,a.rcpt_product_price + ,a.rcpt_product_info1 + ,a.rcpt_product_info2 + ,a.rcpt_product_info3 + ,a.rcpt_product_info4 + ,a.rcpt_product_info5 + ,a.rcpt_ptp_nm + ,a.rcpt_office + ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent + ,a.rcpt_sido + ,a.rcpt_gugun + ,a.rcpt_dong + ,IFNULL(a.rcpt_hscp_nm, '') AS rcpt_hscp_nm + ,IFNULL(a.rcpt_ho, '') AS rcpt_ho + ,a.rcpt_dtl_addr + ,a.rcpt_li_addr + ,a.rcpt_jibun_addr + ,IFNULL(a.rcpt_etc_addr, '') AS rcpt_etc_addr + ,a.rcpt_floor + ,a.rcpt_tm + ,a.rcpt_stat + ,a.rcpt_x + ,a.rcpt_y + ,a.rcpt_living_yn + ,a.cust_nm + ,a.cust_tel1 + ,a.cust_tel2 + ,a.cust_zip + ,a.cust_addr1 + ,a.cust_addr2 + ,a.remark + ,a.agent_id + ,a.agent_nm + ,a.agent_head + ,a.agent_head_tel + ,a.agent_contact + ,a.agent_contact_tel + ,IFNULL(a.agent_tel, '') AS agent_tel + ,a.sply_spc + ,a.excls_spc + ,a.room_cnt + ,a.exp_spc_yn + ,a.agent_fax + ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date + ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap + ,a.insert_usr + ,a.insert_tm + ,a.update_usr + ,a.update_tm + ,a.svc_type1 + ,a.svc_type2 + ,a.reconf_yn + ,f.cd_nm as trade_type_nm + ,b.rsrv_sq + ,b.dept_sq + ,b.usr_sq + ,b.rsrv_tm_hour + ,b.result_cd1 + ,b.result_cd2 + ,b.result_msg + ,b.request_msg + ,b.photo_save_dt + ,b.rsrv_delay_dt + ,b.rsrv_cplt_dt + ,b.check_dt + ,b.check_cplt_dt + ,b.record_cplt_dt + ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm + ,c.region_nm as addr + ,b.result_save_dt + ,u.usr_nm + ,d.dept_nm + ,a.exp_photo_yn + ,a.ground_plan + ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I1' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END conf_img_yn + ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I5' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END ground_plan_yn + ,a.exp_movie_yn + ,a.direct_trad_yn + ,a.sellr_nm + ,a.sellr_tel_no + ,a.isSiteVRVerification + ,a.isPromotionApply"); + + $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + $builder->join('codes f', 'a.trade_type = f.cd AND f.category = \'TRADE_TYPE\'', 'left'); + + + if (in_array($usr_level, ['4', '40'])) { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + $builder->where('a.isSiteVRVerification', 'N'); + + // 접수일자 + /* + if (!empty($data['sdate'])) { + $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59'); + } + */ + + // if (!empty($data['rsrv_tm_ap'])) { + // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']); + // } + + // 예약일자 + if (!empty($data['rsrv_sdate'])) { + $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00'); + } + + if (!empty($data['rsrv_edate'])) { + $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59'); + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 평면도유무 + if ($data['ground_plan_yn'] == 'Y') { + $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } else if ($data['ground_plan_yn'] == 'N') { + $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } + + // 평면도요청 + if (!empty($data['ground_plan'])) { + $builder->where('a.ground_plan', $data['ground_plan']); + } + + // 직거래 + if ($data['direct_trad_yn'] == "Y") { + $builder->where('a.direct_trad_yn', 'Y'); + } else if ($data['direct_trad_yn'] == "N") { + $builder->where('a.direct_trad_yn', 'N'); + } + + // 상태 + if (!empty($data['stat'])) { + $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + $builder->orderBy('a.rcpt_atclno', 'DESC'); + + $builder->limit($end, $start); + + + // echo $builder->getCompiledSelect(false); + $rows = $builder->get()->getResultArray(); + + return $rows; + } + + + // 지도 정보 조회 + public function getDeptMapList($dept_sq) + { + + + $builder = $this->db->table('receipt a'); + + $builder->select("b.dept_sq + ,b.usr_sq + ,b.rsrv_tm_ap + ,b.rsrv_tm_hour + ,a.rcpt_atclno + ,a.rcpt_x + ,a.rcpt_y + ,a.rcpt_product_nm + ,a.rcpt_key + ,a.rcpt_sq + ,c.dept_nm + ,d.usr_nm + ,(SELECT pdept_sq FROM departments WHERE dept_sq = b.dept_sq) bonbu + ,b.dept_sq + ,b.usr_sq + ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%m월%d일') as rsrv_date + ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap + ,a.agent_nm + ,a.sellr_nm + ,a.direct_trad_yn + ,a.sellr_tel_no + ,a.isSiteVRVerification + ,a.isPromotionApply"); + + $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left'); + $builder->join('departments c', 'b.dept_sq = c.dept_sq', 'left'); + $builder->join('users d', 'b.usr_sq = d.usr_sq', 'left'); + + $builder->whereIn('b.dept_sq', $dept_sq); + $builder->orderBy('b.dept_sq', 'ASC'); + + $rows = $builder->get()->getResultArray(); + + return $rows; + } + + + // 엑셀다운로드 + public function getExcelList($data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + $builder = $this->db->table('receipt a'); + + $builder->select("a.rcpt_sq + ,a.comp_sq + ,a.rcpt_rating + ,a.rcpt_key + ,a.rcpt_atclno + ,a.rcpt_type + ,a.rcpt_product + ,a.rcpt_product_nm + ,a.rcpt_product_area + ,a.rcpt_product_price + ,a.rcpt_product_info1 + ,a.rcpt_product_info2 + ,a.rcpt_product_info3 + ,a.rcpt_product_info4 + ,a.rcpt_product_info5 + ,a.rcpt_ptp_nm + ,a.rcpt_office + ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent + ,a.rcpt_sido + ,a.rcpt_gugun + ,a.rcpt_dong + ,IFNULL(a.rcpt_hscp_nm, '') AS rcpt_hscp_nm + ,IFNULL(a.rcpt_ho, '') AS rcpt_ho + ,a.rcpt_dtl_addr + ,a.rcpt_li_addr + ,a.rcpt_jibun_addr + ,IFNULL(a.rcpt_etc_addr, '') AS rcpt_etc_addr + ,a.rcpt_floor + ,a.rcpt_tm + ,a.rcpt_stat + ,a.rcpt_x + ,a.rcpt_y + ,a.rcpt_living_yn + ,a.cust_nm + ,a.cust_tel1 + ,a.cust_tel2 + ,a.cust_zip + ,a.cust_addr1 + ,a.cust_addr2 + ,a.remark + ,a.agent_id + ,a.agent_nm + ,a.agent_head + ,a.agent_head_tel + ,a.agent_contact + ,a.agent_contact_tel + ,IFNULL(a.agent_tel, '') AS agent_tel + ,a.sply_spc + ,a.excls_spc + ,a.room_cnt + ,a.exp_spc_yn + ,a.agent_fax + ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date + ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap + ,a.insert_usr + ,a.insert_tm + ,a.update_usr + ,a.update_tm + ,a.svc_type1 + ,a.svc_type2 + ,a.reconf_yn + ,f.cd_nm as trade_type_nm + ,b.rsrv_sq + ,b.dept_sq + ,b.usr_sq + ,b.rsrv_tm_hour + ,b.result_cd1 + ,b.result_cd2 + ,b.result_msg + ,b.request_msg + ,b.photo_save_dt + ,b.rsrv_delay_dt + ,b.rsrv_cplt_dt + ,b.check_dt + ,b.check_cplt_dt + ,b.record_cplt_dt + ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm + ,c.region_nm as addr + ,b.result_save_dt + ,u.usr_nm + ,d.dept_nm + ,a.exp_photo_yn + ,a.ground_plan + ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I1' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END conf_img_yn + ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I5' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END ground_plan_yn + ,a.exp_movie_yn + ,a.direct_trad_yn + ,a.sellr_nm + ,a.sellr_tel_no + ,a.isSiteVRVerification + ,a.isPromotionApply"); + + $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + $builder->join('codes f', 'a.trade_type = f.cd AND f.category = \'TRADE_TYPE\'', 'left'); + + + if (in_array($usr_level, ['4', '40'])) { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + $builder->where('a.isSiteVRVerification', 'N'); + + // 접수일자 + /* + if (!empty($data['sdate'])) { + $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59'); + } + */ + + // if (!empty($data['rsrv_tm_ap'])) { + // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']); + // } + + // 예약일자 + if (!empty($data['rsrv_sdate'])) { + $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00'); + } + + if (!empty($data['rsrv_edate'])) { + $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59'); + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 평면도유무 + if ($data['ground_plan_yn'] == 'Y') { + $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } else if ($data['ground_plan_yn'] == 'N') { + $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } + + // 평면도요청 + if (!empty($data['ground_plan'])) { + $builder->where('a.ground_plan', $data['ground_plan']); + } + + // 직거래 + if ($data['direct_trad_yn'] == "Y") { + $builder->where('a.direct_trad_yn', 'Y'); + } else if ($data['direct_trad_yn'] == "N") { + $builder->where('a.direct_trad_yn', 'N'); + } + + // 상태 + if (!empty($data['stat'])) { + $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + $builder->groupStart() + ->like('a.agent_head_tel', $data['srchTxt']) + ->orLike('a.sellr_tel_no', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + $builder->orderBy('a.rcpt_atclno', 'DESC'); + + // echo $builder->getCompiledSelect(false); + $rows = $builder->get()->getResultArray(); + + return $rows; + } + + // 배정변경 + public function updateAssign($data) + { + $this->db->transStart(); + + $usr_sq = session('usr_sq'); + $usr_id = session('usr_id'); + + $sql = "UPDATE result SET + dept_sq = ?, usr_sq = ?, update_usr = ? + WHERE rcpt_sq = ? + "; + + $data = [ + $data['dept_sq'], + $data['damdang'], + $usr_sq, + $data['rcpt_sq'], + ]; + + + if ($this->db->query($sql, $data) === false) { + return [ + 'success' => false, + 'msg' => '저장실패', + ]; + } + + $memo = "배정변경"; + $this->saveChangedHistory($data['rcpt_sq'], '', 'C13', $usr_id, $memo); + + $this->db->transComplete(); + + return [ + 'success' => true, + ]; + } + + + // 상세 + public function getDetail($id) + { + + $builder = $this->db->table('receipt a'); + + $builder->select(" + a.rcpt_sq + ,a.comp_sq + ,a.excls_spc + ,a.rcpt_rating + ,a.rcpt_key + ,a.rcpt_atclno + ,a.rcpt_type + ,a.rcpt_product + ,a.rcpt_product_nm + ,a.rcpt_product_area + ,a.rcpt_product_price + , a.rcpt_deal_type + ,a.rcpt_product_info1 + ,a.rcpt_product_info2 + ,a.rcpt_product_info3 + ,a.rcpt_product_info4 + ,a.rcpt_product_info5 + ,a.rcpt_office + ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent + ,a.rcpt_sido + ,a.rcpt_gugun + ,a.rcpt_dong + ,a.rcpt_dtl_addr + ,a.rcpt_li_addr + ,a.rcpt_jibun_addr + ,a.rcpt_etc_addr + ,a.rcpt_ref_addr + ,a.rcpt_ho + ,a.rcpt_hscp_nm + ,a.rcpt_floor + ,a.rcpt_floor2 + ,a.chg_floor_yn + ,a.rcpt_tm + ,a.rcpt_stat + ,a.rcpt_x + ,a.rcpt_y + ,a.rcpt_living_yn + ,a.cust_nm + ,a.cust_tel1 + ,a.cust_tel2 + ,a.cust_zip + ,a.cust_addr1 + ,a.cust_addr2 + ,a.remark rcpt_remark + , a.rcpt_cpid + ,a.agent_id + ,a.agent_nm + ,a.agent_head + ,a.agent_head_tel + ,a.agent_contact + ,a.agent_contact_tel + ,a.agent_fax + ,a.agent_tel + ,a.excls_spc + ,a.excls_spc1 + ,a.excls_spc2 + ,a.sply_spc + ,a.share_spc + ,a.share_spc1 + ,a.share_spc2 + ,a.share_spc3 + ,a.share_spc4 + ,a.share_spc5 + ,a.room_cnt + ,a.tot_spc + ,a.tot_spc1 + ,a.tot_spc2 + ,a.grnd_spc + ,a.grnd_spc1 + ,a.grnd_spc2 + ,a.grnd_spc3 + ,a.grnd_spc4 + ,a.grnd_spc5 + ,a.spc_stat + ,a.exp_spc_yn + ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date + ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap + ,a.insert_usr + ,a.insert_tm + ,a.update_usr + ,a.update_tm + ,a.svc_type1 + ,a.svc_type2 + ,a.reconf_yn + ,a.cupnNo + ,b.rsrv_sq + ,b.dept_sq + ,b.usr_sq + ,b.req_rec_yn + ,b.rec_yn + ,b.rec_tel + ,b.rec_nm + ,b.remark + ,b.rsrv_tm_hour + ,b.result_cd1 + ,get_code_name('RECEIPT_STATUS1', b.result_cd1) AS result_cd1_nm + ,b.result_cd2 + ,get_code_name('RECEIPT_STATUS2', b.result_cd2) AS result_cd2_nm + ,b.result_cd3 + ,get_code_name('RECEIPT_STATUS3', b.result_cd3) AS result_cd3_nm + ,b.result_msg + ,b.rsrv_save_dt + ,b.photo_save_dt + ,DATE_FORMAT(b.photo_save_dt, '%Y-%m-%d') as photo_save_dt_dt + ,DATE_FORMAT(b.photo_save_dt, '%H:%i:%s') as photo_save_dt_tm + ,b.assign_save_dt + ,b.result_save_dt + ,b.request_msg + ,b.rsrv_delay_dt + ,DATE_FORMAT(b.rsrv_delay_dt, '%Y-%m-%d') as rsrv_delay_dt_dt + ,DATE_FORMAT(b.rsrv_delay_dt, '%H:%i:%s') as rsrv_delay_dt_tm + ,b.rsrv_cplt_dt + ,DATE_FORMAT(b.rsrv_cplt_dt, '%Y-%m-%d') as rsrv_cplt_dt_dt + ,DATE_FORMAT(b.rsrv_cplt_dt, '%H:%i:%s') as rsrv_cplt_dt_tm + ,b.check_dt + ,DATE_FORMAT(b.check_dt, '%Y-%m-%d') as check_dt_dt + ,DATE_FORMAT(b.check_dt, '%H:%i:%s') as check_dt_tm + ,b.check_cplt_dt + ,DATE_FORMAT(b.check_cplt_dt, '%Y-%m-%d') as check_cplt_dt_dt + ,DATE_FORMAT(b.check_cplt_dt, '%H:%i:%s') as check_cplt_dt_tm + ,b.cancel_dt + ,DATE_FORMAT(b.cancel_dt, '%Y-%m-%d') as cancel_dt_dt + ,DATE_FORMAT(b.cancel_dt, '%H:%i:%s') as cancel_dt_tm + ,b.check_delay_dt + ,DATE_FORMAT(b.check_delay_dt, '%Y-%m-%d') as check_delay_dt_dt + ,DATE_FORMAT(b.check_delay_dt, '%H:%i:%s') as check_delay_dt_tm + ,b.check_fail_dt + ,DATE_FORMAT(b.check_fail_dt, '%Y-%m-%d') as check_fail_dt_dt + ,DATE_FORMAT(b.check_fail_dt, '%H:%i:%s') as check_fail_dt_tm + ,get_code_name('RECEIPT_STATUS3', a.rcpt_stat) AS rcpt_stat_nm + ,DATE_FORMAT(a.insert_tm, '%Y년 %m월 %d일') as insert_tm2 + ,DATE_FORMAT(a.rsrv_date, '%Y-%m-%d') as rsrv_date2 + ,c.region_nm as addr + ,c.dept_sq as region_dept_sq + ,c.usr_sq as region_usr_sq + ,d.pdept_sq + ,d.dept_nm + ,a.rcpt_exps_type + ,a.exp_photo_yn + ,a.exp_movie_yn + ,b.resYn + ,DATE_ADD(a.insert_tm, INTERVAL +3 MONTH) as months + ,b.dbUsageAgrYn + ,a.trade_type + , a.rcpt_hscp_no + , a.rcpt_ptp_nm + , a.rcpt_ptp_no + , a.modify_yn + , a.ground_plan + ,a.direct_trad_yn + ,a.sellr_nm + ,a.sellr_tel_no + ,a.virAddr_yn + ,a.isSiteVRVerification + ,a.isPromotionApply + ,DATE_FORMAT(b.vr_check_cplt_dt, '%Y-%m-%d') as vr_check_cplt_dt_dt + ,DATE_FORMAT(b.vr_check_cplt_dt, '%H:%i:%s') as vr_check_cplt_dt_dm + ", false); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + + $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', NULL, FALSE); + $builder->where('a.rcpt_key', $id); + + + return $builder->get()->getRowArray(); + } + + // 시간대별통계 + public function getUsrRsrvDateTmCount($id) + { + $sql = "SELECT b.usr_sq, b.rsrv_date FROM receipt a INNER JOIN result b ON a.rcpt_sq = b.rcpt_sq WHERE a.rcpt_key = ?"; + $data = [$id]; + $query = $this->db->query($sql, $data); + $row = $query->getRowArray(); + + if (!empty($row['usr_sq'])) { + $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" . + " FROM result" . + " WHERE rsrv_date = ?" . + " AND usr_sq = ?" . + " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" . + " ORDER BY rsrv_tm_ap, rsrv_tm_hour"; + + $data2 = [$row['rsrv_date'], $row['usr_sq']]; + } else { + $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" . + " FROM result" . + " WHERE rsrv_date = ?" . + " AND usr_sq = (SELECT b.usr_sq FROM receipt a, region_codes b WHERE a.rcpt_dong = b.region_cd AND a.rcpt_key = ?)" . + " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" . + " ORDER BY rsrv_tm_ap, rsrv_tm_hour"; + + $data2 = [$row['rsrv_date'], $id]; + } + + $query2 = $this->db->query($sql2, $data2); + + return $query2->getResultArray(); + } + + + // 정보변경이력 + public function getHistory($id) + { + $sql = "SELECT seq" . + " ,rcpt_sq" . + " ,rcpt_stat" . + " ,get_code_name('RECEIPT_STATUS3', rcpt_stat) AS rcpt_stat_nm" . + " ,rcpt_stat" . + " ,get_code_name('CHANGED_TYPE', changed_type) AS changed_type_nm" . + " ,changed_type" . + " ,changed_id" . + " ,remark" . + " ,DATE_FORMAT(changed_tm, '%Y.%m.%d %H:%i:%s') as changed_tm" . + " FROM changed_history" . + " WHERE rcpt_sq = ?" . + " ORDER BY changed_tm DESC"; + + $data = [$id]; + $query = $this->db->query($sql, $data); + + return $query->getResultArray(); + } + + // 변경이력저장 + public function saveChangedHistory($rcpt_sq, $rcpt_stat, $changed_type, $usr_id, $remark) + { + $sql = "INSERT INTO changed_history" . + " (rcpt_sq, rcpt_stat, changed_type, changed_id, changed_tm, remark)" . + " VALUES" . + " (?, ?, ?, ?, now(), ?)"; + + $data = [ + $rcpt_sq, + $rcpt_stat, + $changed_type, + $usr_id, + $remark + ]; + + $this->db->query($sql, $data); + } +} \ No newline at end of file diff --git a/app/Models/article/ReceiptModel.php b/app/Models/article/ReceiptModel.php index dd50721..651a3f1 100644 --- a/app/Models/article/ReceiptModel.php +++ b/app/Models/article/ReceiptModel.php @@ -187,8 +187,8 @@ class ReceiptModel extends Model $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); - if (!empty($data['atcl_no'])) { - $builder->where('a.rcpt_atclno', $data['atcl_no']); + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); } else { if ($data['schDateGb'] == '1') { $builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00'); @@ -515,8 +515,8 @@ class ReceiptModel extends Model $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); - if (!empty($data['atcl_no'])) { - $builder->where('a.rcpt_atclno', $data['atcl_no']); + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); } else { if ($data['schDateGb'] == '1') { $builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00'); @@ -791,8 +791,8 @@ class ReceiptModel extends Model $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); - if (!empty($data['atcl_no'])) { - $builder->where('a.rcpt_atclno', $data['atcl_no']); + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); } else { if ($data['schDateGb'] == '1') { $builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00'); diff --git a/app/Models/article/RecordModel.php b/app/Models/article/RecordModel.php new file mode 100644 index 0000000..1668fc0 --- /dev/null +++ b/app/Models/article/RecordModel.php @@ -0,0 +1,962 @@ +db->query($sql, [$gugun]); + + } else if (!empty($sido)) { + $chk_sido = substr($sido, '0', '2'); + + if ($chk_sido === '36') { + $sido = substr($sido, '0', '4'); + $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm " . + "FROM region_codes a " . + "LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,4),'000000') " . + "WHERE a.region_cd LIKE concat(?, '%') " . + "AND a.region_cd NOT LIKE '%000000' " . + "AND a.region_cd LIKE '%00' " . + "AND a.use_yn = 'Y' " . + "AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000')) " . + "ORDER BY a.region_nm ASC"; + } else { + $sido = substr($sido, '0', '2'); + $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm" . + " FROM region_codes a" . + " LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,2),'00000000')" . + " WHERE a.region_cd LIKE concat(?, '%')" . + " AND a.region_cd NOT LIKE '%00000000'" . + " AND a.region_cd LIKE '%00000'" . + " AND a.use_yn = 'Y'" . + " AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000'))" . + " ORDER BY a.region_nm ASC"; + } + + $query = $this->db->query($sql, [$sido]); + } else { + $sql = "SELECT a.region_cd, a.region_nm " . + "FROM region_codes a " . + "WHERE (a.region_cd LIKE '%00000000' " . + "AND a.use_yn = 'Y') " . + "OR region_cd = 3611000000;"; + + $query = $this->db->query($sql); + } + + + return $query->getResultArray(); + } + + // 소속본부조회 + public function getBonbuList() + { + $sql = "SELECT dept_sq, pdept_sq, dept_nm, dept_desc, dept_head, use_yn, depth, insert_tm, insert_usr, update_tm, update_usr, lft, rgt" . + " FROM departments" . + " WHERE depth = 1" . + " AND use_yn = 'Y'" . + " ORDER BY lft"; + + $query = $this->db->query($sql); + + + return $query->getResultArray(); + } + + // 소속팀 조회 + public function getTeamList() + { + $sql = "SELECT dept_sq, pdept_sq, dept_nm" . + " FROM departments" . + " WHERE depth = 2" . + " AND use_yn = 'Y'" . + " ORDER BY dept_nm"; + + $query = $this->db->query($sql); + + + return $query->getResultArray(); + } + + // 유저 조회 + public function getUserList() + { + $sql = "SELECT + a.usr_sq, a.usr_id, a.usr_nm, a.dept_sq + FROM users a + WHERE + a.usr_level IN ('3','4','40','5','50','6','60','61','62','7','8','70') + AND a.use_yn = 'Y' + AND EXISTS ( + SELECT 'x' FROM departments a1 INNER JOIN departments a2 ON a2.lft BETWEEN a1.lft AND a1.rgt AND a2.use_yn = 'Y' + WHERE 1=1 AND a2.dept_sq = a.dept_sq AND a1.use_yn = 'Y' + ) + ORDER BY a.usr_level DESC, a.usr_nm ASC "; + + $query = $this->db->query($sql); + + return $query->getResultArray(); + } + + + public function getTotalCount($data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + $builder = $this->db->table('receipt a'); + + $builder->select("COUNT(*) AS cnt", false); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + + $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + if (in_array($usr_level, ['4', '40'])) { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + $builder->where('b.req_rec_yn', 'Y'); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + // 접수기간 + if (!empty($data['sdate'])) { + $builder->where('a.insert_tm >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('a.insert_tm <=', $data['edate'] . ' 23:59:59'); + } + + // + if (!empty($data['photo_sdate'])) { + $builder->where('b.photo_save_dt >=', $data['photo_sdate'] . ' 00:00:00'); + } + + if (!empty($data['photo_edate'])) { + $builder->where('b.photo_save_dt <=', $data['photo_edate'] . ' 23:59:59'); + } + + if (!empty($data['record_sdate'])) { + $builder->where('b.record_cplt_dt >=', $data['record_sdate'] . ' 00:00:00'); + } + + if (!empty($data['record_edate'])) { + $builder->where('b.record_cplt_dt <=', $data['record_edate'] . ' 23:59:59'); + } + + // 녹취완료여부 + if (!empty($data['rec_yn'])) { + if ($data['rec_yn'] == "Y") { + $builder->where('b.rec_yn', $data['rec_yn']); + $builder->whereNotIn('b.result_cd1', [40, 70]); + } else { + $builder->where('b.rec_yn', $data['rec_yn']); + $builder->whereIn('b.result_cd1', [40, 70]); + } + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('b.rec_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "3") { + $builder->groupStart() + ->like('b.rec_tel', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->orLike('b.rec_nm', $data['srchTxt']) + ->orLike('b.rec_tel', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + + $row = $builder->get()->getRowArray(); + return (int) ($row['cnt'] ?? 0); + + } + + public function getResultList($start, $end, $data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + + $builder = $this->db->table('receipt a'); + + $builder->select("a.rcpt_sq + ,a.comp_sq + ,a.rcpt_rating + ,a.rcpt_key + ,a.rcpt_atclno + ,a.rcpt_type + ,a.rcpt_product + ,a.rcpt_product_nm + ,a.rcpt_product_area + ,a.rcpt_product_price + ,a.rcpt_product_info1 + ,a.rcpt_product_info2 + ,a.rcpt_product_info3 + ,a.rcpt_product_info4 + ,a.rcpt_product_info5 + ,a.rcpt_office + ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent + ,a.rcpt_sido + ,a.rcpt_gugun + ,a.rcpt_dong + ,a.rcpt_hscp_nm + ,a.rcpt_floor + ,a.rcpt_tm + ,a.rcpt_stat + ,a.rcpt_x + ,a.rcpt_y + ,a.cust_nm + ,a.cust_tel1 + ,a.cust_tel2 + ,a.cust_zip + ,a.cust_addr1 + ,a.cust_addr2 + ,a.remark + ,a.agent_id + ,a.agent_nm + ,a.agent_head + ,a.agent_head_tel + ,a.agent_contact + ,a.agent_contact_tel + ,a.agent_fax + ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date + ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap + ,a.insert_usr + ,a.insert_tm + ,a.update_usr + ,a.update_tm + ,a.svc_type1 + ,a.svc_type2 + ,a.reconf_yn + ,b.rsrv_sq + ,b.dept_sq + ,b.usr_sq + ,b.req_rec_yn + ,b.rec_yn + ,b.rsrv_tm_hour + ,b.result_cd1 + ,b.result_cd2 + ,b.result_cd3 + ,b.rec_nm + ,b.rec_tel + ,b.result_msg + ,b.photo_save_dt + ,b.rsrv_delay_dt + ,b.rsrv_cplt_dt + ,b.check_dt + ,b.check_cplt_dt + ,b.record_cplt_dt + ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm + ,c.region_nm as addr + ,b.result_save_dt + ,u.usr_nm + ,d.dept_nm", false); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + + $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + if (in_array($usr_level, ['4', '40'])) { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + $builder->where('b.req_rec_yn', 'Y'); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + + // 접수기간 + if (!empty($data['sdate'])) { + $builder->where('a.insert_tm >=', $data['sdate'] . ' 00:00:00'); + } + + if (!empty($data['edate'])) { + $builder->where('a.insert_tm <=', $data['edate'] . ' 23:59:59'); + } + + // + if (!empty($data['photo_sdate'])) { + $builder->where('b.photo_save_dt >=', $data['photo_sdate'] . ' 00:00:00'); + } + + if (!empty($data['photo_edate'])) { + $builder->where('b.photo_save_dt <=', $data['photo_edate'] . ' 23:59:59'); + } + + if (!empty($data['record_sdate'])) { + $builder->where('b.record_cplt_dt >=', $data['record_sdate'] . ' 00:00:00'); + } + + if (!empty($data['record_edate'])) { + $builder->where('b.record_cplt_dt <=', $data['record_edate'] . ' 23:59:59'); + } + + // 녹취완료여부 + if (!empty($data['rec_yn'])) { + if ($data['rec_yn'] == "Y") { + $builder->where('b.rec_yn', $data['rec_yn']); + $builder->whereNotIn('b.result_cd1', [40, 70]); + } else { + $builder->where('b.rec_yn', $data['rec_yn']); + $builder->whereIn('b.result_cd1', [40, 70]); + } + } + + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 검색어 + if (!empty($data['srchTxt'])) { + if ($data['srchType'] == "1") { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "2") { + $builder->groupStart() + ->like('b.rec_nm', $data['srchTxt']) + ->groupEnd(); + } else if ($data['srchType'] == "3") { + $builder->groupStart() + ->like('b.rec_tel', $data['srchTxt']) + ->groupEnd(); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->orLike('b.rec_nm', $data['srchTxt']) + ->orLike('b.rec_tel', $data['srchTxt']) + ->groupEnd(); + } + } + + } + + $builder->orderBy('a.rcpt_atclno DESC'); + + $builder->limit($end, $start); + + $rows = $builder->get()->getResultArray(); + + return $rows; + } + + + // 엑셀다운로드 + public function getExcelList($data) + { + $usr_sq = session('usr_sq'); + $usr_level = session('usr_level'); + $dept_sq = session('dept_sq'); + + $builder = $this->db->table('receipt a'); + + $builder->select(" + get_code_name('RECEIPT_STATUS1', b.result_cd1) AS '현재상태', + CASE WHEN b.result_cd1 = '90' THEN get_code_name('RECEIPT_STATUS2', b.result_cd2) ELSE '' END AS '매물ID', + CASE WHEN b.result_cd1 = '90' THEN get_code_name('RECEIPT_STATUS3', b.result_cd3) ELSE '' END AS '접수(등록)일자', + a.rcpt_atclno AS '예약일자', + a.insert_tm '방문희망시간', + CONCAT(b.rsrv_date, ' ', b.rsrv_tm_ap) AS '촬영완료일자', + b.rsrv_tm_hour AS '중개사명', + b.photo_save_dt AS '대표전화', + '' AS '담당자전화', + a.agent_head_tel AS '연락가능전화', + '' AS '중개사ID', + a.rcpt_cpid 'CP ID', + CASE + WHEN IFNULL(a.rcpt_jibun_addr, '') = '' THEN + CASE + WHEN IFNULL(a.rcpt_hscp_nm, '') = '' THEN + CONCAT(c.region_nm, ' ', a.rcpt_dtl_addr, ' ', a.rcpt_ho) + ELSE + CONCAT(c.region_nm, ' ', a.rcpt_hscp_nm, ' ', a.rcpt_dtl_addr, ' ', a.rcpt_ho) + END + ELSE + CASE + WHEN IFNULL(a.rcpt_li_addr, '') != '' THEN + CONCAT(c.region_nm, ' ', a.rcpt_li_addr, ' ', a.rcpt_jibun_addr, ' ', a.rcpt_etc_addr) + ELSE + CONCAT(c.region_nm, ' ', a.rcpt_jibun_addr, ' ', a.rcpt_etc_addr) + END + END AS '주소', + CONCAT(a.rcpt_floor, '/', a.rcpt_floor2) AS '층', + a.rcpt_product_nm AS '매물종류', + a.rcpt_product_info1 AS '거래구분', + d.dept_nm AS '관할조직(팀)', + u.usr_nm AS '방문담당', + a.rcpt_exps_type AS '노출옵션', + CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq = b.rsrv_sq AND img_type = 'I1' AND use_yn = 'Y') + WHEN 0 THEN 'N' ELSE 'Y' END AS '홍보확인서', + a.exp_movie_yn AS '동영상촬영', + a.exp_spc_yn AS '면적확인', + b.resYn AS '거주여부', + (CASE (SELECT 'x' FROM result_record WHERE rsrv_sq = b.rsrv_sq AND use_yn = 'Y') + WHEN 'x' THEN 'Y' ELSE 'N' END) AS '녹취여부', + a.excls_spc AS '전용면적', + a.sply_spc AS '공급면적', + a.cupnNo AS '쿠폰번호', + a.image_360_yn AS '360촬영여부', + a.rcpt_y AS '경도', + a.rcpt_y AS '위도', + a.check_list_img_yn AS '체크리스트', + ", false); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left'); + + + $login_dept_info = $this->getDeptDetail($dept_sq); // 로그인 사용자 소속부서정보 + $child_dept = []; // 하위조직 목록 + if (strcmp($usr_level, '40') == 0) { + $child = $this->getChildDept($login_dept_info); + if (!empty($child)) { + foreach ($child as $child) { + $child_dept[] = $child['dept_sq']; + } + } + } + + if ((int) $usr_level >= 4 && $usr_level != '45') { + if (!empty($child_dept)) { + $builder->whereIn('b.dept_sq', $child_dept); + } else { + $builder->where('b.usr_sq', $usr_sq); + } + } + + $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false); + + if (!empty($data['rcpt_atclno'])) { + $builder->where('a.rcpt_atclno', $data['rcpt_atclno']); + } else { + if ($data['schDateGb'] == '1') { + $builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00'); + $builder->where('a.rcpt_tm <=', $data['edate'] . ' 23:59:59'); + } else if ($data['schDateGb'] == '2') { + $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00'); + $builder->where('b.rsrv_date <=', $data['edate'] . ' 23:59:59'); + } + + // 지역 + if (!empty($data['dong'])) { + $builder->where('a.rcpt_dong', $data['dong']); + } else { + if (!empty($data['gugun'])) { + $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after'); + } else { + if (!empty($data['sido'])) { + $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after'); + } + } + } + + // 관할조직 + if (!empty($data['bonbu'])) { + $builder->where('d.pdept_sq', $data['bonbu']); + } + + if (!empty($data['team'])) { + $builder->where('d.dept_sq', $data['team']); + } + + if (!empty($data['user'])) { + $builder->where('d.usr_sq', $data['user']); + } + + // 거래구분 + if (!empty($data['rcpt_product_info1'])) { + $builder->where('a.rcpt_product_info1', $data['rcpt_product_info1']); + } + + // 현재상태 + if (!empty($data['rcpt_stat1'])) { + $builder->like('a.rcpt_stat', $data['rcpt_stat1'], 'after'); + } + + if (!empty($data['rcpt_stat2'])) { + $builder->like('a.rcpt_stat', $data['rcpt_stat2'], 'after'); + } + + if (!empty($data['rcpt_stat3'])) { + $builder->where('a.rcpt_stat', $data['rcpt_stat3']); + } + + // 중개사명 + if (!empty($data['agent_nm'])) { + $builder->like('a.agent_nm', $data['agent_nm'], 'both'); + } + + // 동영상촬영여부 + if (!empty($data['exp_movie_yn'])) { + $builder->where('a.exp_movie_yn', $data['exp_movie_yn']); + } + + // 홍보확인서여부 + if ($data['conf_img_yn'] == 'Y') { + $builder->where('e.rsrv_sq IS NOT NULL', null, false); + } else if ($data['conf_img_yn'] == 'N') { + $builder->where('e.rsrv_sq IS NULL', null, false); + } + + // 분양권 + if ($data['parcel_out_yn'] == 'Y') { + $builder->where('a.parcel_out_yn', 'Y'); + } else if ($data['parcel_out_yn'] == 'N') { + $builder->where('a.parcel_out_yn', 'N'); + } + + // CP ID + if (!empty($data['rcpt_cpid'])) { + if (strcmp($data['rcpt_cpid'], 'naver') == 0) { + $builder->where('a.rcpt_cpid =', ''); + } else if (strcmp($data['rcpt_cpid'], 'cleancente') == 0) { + $builder->where("a.rcpt_cpid !=", ""); + } else { + $builder->where('a.rcpt_cpid', $data['rcpt_cpid']); + } + } + + // 매물종류 + if (!empty($data['rcpt_product'])) { + $builder->where('a.parcel_out_yn', $data['rcpt_product']); + } + + // 면적확인 + if ($data['exp_spc_yn'] == 'Y') { + $builder->where('a.parcel_out_yn', 'Y'); + } else if ($data['exp_spc_yn'] == 'N') { + $builder->where('a.parcel_out_yn', 'N'); + } + + // 체크리스트 + if ($data['check_list_img_yn'] == 'Y') { + $builder->where('a.check_list_img_yn', 'Y'); + } else if ($data['check_list_img_yn'] == 'N') { + $builder->where('a.check_list_img_yn', 'N'); + } + + // 평면도유무 + if ($data['ground_plan_yn'] == 'Y') { + $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } else if ($data['ground_plan_yn'] == 'N') { + $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE); + } + + // 평면도요청 + if (!empty($data['ground_plan'])) { + $builder->where('a.ground_plan', $data['ground_plan']); + } + + // 직거래 + if ($data['direct_trad_yn'] == "Y") { + $builder->where('a.direct_trad_yn', 'Y'); + } else if ($data['direct_trad_yn'] == "N") { + $builder->where('a.direct_trad_yn', 'N'); + } + + // 360촬영여부 + if ($data['image_360_yn'] == "Y") { + $builder->where('a.image_360_yn', 'Y'); + } else if ($data['image_360_yn'] == "N") { + $builder->where('a.image_360_yn', 'N'); + } + + if (!empty($data['srchTxt'])) { + // 중개사 + if ($data['srchType'] == '1') { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + // 주소 + } else if ($data['srchType'] == '2') { + $builder->groupStart() + ->like('a.rcpt_dtl_addr', $data['srchTxt']) + ->orLike('a.rcpt_hscp_nm', $data['srchTxt']) + ->orLike('a.rcpt_jibun_addr', $data['srchTxt']) + ->groupEnd(); + + // 사업자번호 + } else if ($data['srchType'] == '3') { + $builder->like('a.image_360_yn', $data['srchTxt'], 'both'); + } else { + $builder->groupStart() + ->like('a.agent_nm', $data['srchTxt']) + ->orLike('a.sellr_nm', $data['srchTxt']) + ->groupEnd(); + + $builder->groupStart() + ->like('a.rcpt_dtl_addr', $data['srchTxt']) + ->orLike('a.rcpt_hscp_nm', $data['srchTxt']) + ->orLike('a.rcpt_jibun_addr', $data['srchTxt']) + ->groupEnd(); + + $builder->like('a.image_360_yn', $data['srchTxt'], 'both'); + } + } + + } + + + $builder->orderBy('a.rcpt_atclno', 'DESC'); + + return $builder->get()->getResultArray(); + } + + // 상세 + public function getDetail($id) + { + + $builder = $this->db->table('receipt a'); + + $builder->select(" + a.rcpt_sq + ,a.comp_sq + ,a.excls_spc + ,a.rcpt_rating + ,a.rcpt_key + ,a.rcpt_atclno + ,a.rcpt_type + ,a.rcpt_product + ,a.rcpt_product_nm + ,a.rcpt_product_area + ,a.rcpt_product_price + , a.rcpt_deal_type + ,a.rcpt_product_info1 + ,a.rcpt_product_info2 + ,a.rcpt_product_info3 + ,a.rcpt_product_info4 + ,a.rcpt_product_info5 + ,a.rcpt_office + ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent + ,a.rcpt_sido + ,a.rcpt_gugun + ,a.rcpt_dong + ,a.rcpt_dtl_addr + ,a.rcpt_li_addr + ,a.rcpt_jibun_addr + ,a.rcpt_etc_addr + ,a.rcpt_ref_addr + ,a.rcpt_ho + ,a.rcpt_hscp_nm + ,a.rcpt_floor + ,a.rcpt_floor2 + ,a.chg_floor_yn + ,a.rcpt_tm + ,a.rcpt_stat + ,a.rcpt_x + ,a.rcpt_y + ,a.rcpt_living_yn + ,a.cust_nm + ,a.cust_tel1 + ,a.cust_tel2 + ,a.cust_zip + ,a.cust_addr1 + ,a.cust_addr2 + ,a.remark rcpt_remark + , a.rcpt_cpid + ,a.agent_id + ,a.agent_nm + ,a.agent_head + ,a.agent_head_tel + ,a.agent_contact + ,a.agent_contact_tel + ,a.agent_fax + ,a.agent_tel + ,a.excls_spc + ,a.excls_spc1 + ,a.excls_spc2 + ,a.sply_spc + ,a.share_spc + ,a.share_spc1 + ,a.share_spc2 + ,a.share_spc3 + ,a.share_spc4 + ,a.share_spc5 + ,a.room_cnt + ,a.tot_spc + ,a.tot_spc1 + ,a.tot_spc2 + ,a.grnd_spc + ,a.grnd_spc1 + ,a.grnd_spc2 + ,a.grnd_spc3 + ,a.grnd_spc4 + ,a.grnd_spc5 + ,a.spc_stat + ,a.exp_spc_yn + ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date + ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap + ,a.insert_usr + ,a.insert_tm + ,a.update_usr + ,a.update_tm + ,a.svc_type1 + ,a.svc_type2 + ,a.reconf_yn + ,a.cupnNo + ,b.rsrv_sq + ,b.dept_sq + ,b.usr_sq + ,b.req_rec_yn + ,b.rec_yn + ,b.rec_tel + ,b.rec_nm + ,b.remark + ,b.rsrv_tm_hour + ,b.result_cd1 + ,get_code_name('RECEIPT_STATUS1', b.result_cd1) AS result_cd1_nm + ,b.result_cd2 + ,get_code_name('RECEIPT_STATUS2', b.result_cd2) AS result_cd2_nm + ,b.result_cd3 + ,get_code_name('RECEIPT_STATUS3', b.result_cd3) AS result_cd3_nm + ,b.result_msg + ,b.rsrv_save_dt + ,b.photo_save_dt + ,DATE_FORMAT(b.photo_save_dt, '%Y-%m-%d') as photo_save_dt_dt + ,DATE_FORMAT(b.photo_save_dt, '%H:%i:%s') as photo_save_dt_tm + ,b.assign_save_dt + ,b.result_save_dt + ,b.request_msg + ,b.rsrv_delay_dt + ,DATE_FORMAT(b.rsrv_delay_dt, '%Y-%m-%d') as rsrv_delay_dt_dt + ,DATE_FORMAT(b.rsrv_delay_dt, '%H:%i:%s') as rsrv_delay_dt_tm + ,b.rsrv_cplt_dt + ,DATE_FORMAT(b.rsrv_cplt_dt, '%Y-%m-%d') as rsrv_cplt_dt_dt + ,DATE_FORMAT(b.rsrv_cplt_dt, '%H:%i:%s') as rsrv_cplt_dt_tm + ,b.check_dt + ,DATE_FORMAT(b.check_dt, '%Y-%m-%d') as check_dt_dt + ,DATE_FORMAT(b.check_dt, '%H:%i:%s') as check_dt_tm + ,b.check_cplt_dt + ,DATE_FORMAT(b.check_cplt_dt, '%Y-%m-%d') as check_cplt_dt_dt + ,DATE_FORMAT(b.check_cplt_dt, '%H:%i:%s') as check_cplt_dt_tm + ,b.cancel_dt + ,DATE_FORMAT(b.cancel_dt, '%Y-%m-%d') as cancel_dt_dt + ,DATE_FORMAT(b.cancel_dt, '%H:%i:%s') as cancel_dt_tm + ,b.check_delay_dt + ,DATE_FORMAT(b.check_delay_dt, '%Y-%m-%d') as check_delay_dt_dt + ,DATE_FORMAT(b.check_delay_dt, '%H:%i:%s') as check_delay_dt_tm + ,b.check_fail_dt + ,DATE_FORMAT(b.check_fail_dt, '%Y-%m-%d') as check_fail_dt_dt + ,DATE_FORMAT(b.check_fail_dt, '%H:%i:%s') as check_fail_dt_tm + ,get_code_name('RECEIPT_STATUS3', a.rcpt_stat) AS rcpt_stat_nm + ,DATE_FORMAT(a.insert_tm, '%Y년 %m월 %d일') as insert_tm2 + ,DATE_FORMAT(a.rsrv_date, '%Y-%m-%d') as rsrv_date2 + ,c.region_nm as addr + ,c.dept_sq as region_dept_sq + ,c.usr_sq as region_usr_sq + ,d.pdept_sq + ,d.dept_nm + ,a.rcpt_exps_type + ,a.exp_photo_yn + ,a.exp_movie_yn + ,b.resYn + ,DATE_ADD(a.insert_tm, INTERVAL +3 MONTH) as months + ,b.dbUsageAgrYn + ,a.trade_type + , a.rcpt_hscp_no + , a.rcpt_ptp_nm + , a.rcpt_ptp_no + , a.modify_yn + , a.ground_plan + ,a.direct_trad_yn + ,a.sellr_nm + ,a.sellr_tel_no + ,a.virAddr_yn + ,a.isSiteVRVerification + ,a.isPromotionApply + ,DATE_FORMAT(b.vr_check_cplt_dt, '%Y-%m-%d') as vr_check_cplt_dt_dt + ,DATE_FORMAT(b.vr_check_cplt_dt, '%H:%i:%s') as vr_check_cplt_dt_dm + ", false); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left'); + + $builder->where('a.rcpt_key', $id); + $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', NULL, FALSE); + + + return $builder->get()->getRowArray(); + } + + // 정보변경이력 + public function getHistory($id) + { + $sql = "SELECT seq" . + " ,rcpt_sq" . + " ,rcpt_stat" . + " ,get_code_name('RECEIPT_STATUS3', rcpt_stat) AS rcpt_stat_nm" . + " ,rcpt_stat" . + " ,get_code_name('CHANGED_TYPE', changed_type) AS changed_type_nm" . + " ,changed_type" . + " ,changed_id" . + " ,remark" . + " ,DATE_FORMAT(changed_tm, '%Y.%m.%d %H:%i:%s') as changed_tm" . + " FROM changed_history" . + " WHERE rcpt_sq = ?" . + " ORDER BY changed_tm DESC"; + + $data = [$id]; + $query = $this->db->query($sql, $data); + + return $query->getResultArray(); + } + + // 시간대별통계 + public function getUsrRsrvDateTmCount($id) + { + $sql = "SELECT b.usr_sq, b.rsrv_date FROM receipt a INNER JOIN result b ON a.rcpt_sq = b.rcpt_sq WHERE a.rcpt_key = ?"; + $data = [$id]; + $query = $this->db->query($sql, $data); + $row = $query->getRowArray(); + + if (!empty($row['usr_sq'])) { + $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" . + " FROM result" . + " WHERE rsrv_date = ?" . + " AND usr_sq = ?" . + " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" . + " ORDER BY rsrv_tm_ap, rsrv_tm_hour"; + + $data2 = [$row['rsrv_date'], $row['usr_sq']]; + } else { + $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" . + " FROM result" . + " WHERE rsrv_date = ?" . + " AND usr_sq = (SELECT b.usr_sq FROM receipt a, region_codes b WHERE a.rcpt_dong = b.region_cd AND a.rcpt_key = ?)" . + " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" . + " ORDER BY rsrv_tm_ap, rsrv_tm_hour"; + + $data2 = [$row['rsrv_date'], $id]; + } + + $query2 = $this->db->query($sql2, $data2); + + return $query2->getResultArray(); + } + + public function getAptGround($rcpt_dong) + { + + $sql = "SELECT "; + $sql .= "* "; + $sql .= "FROM apt_ground "; + $sql .= "WHERE region_cd = ? "; + + $data = [$rcpt_dong]; + + $query = $this->db->query($sql, $data); + + return $query->getResultArray(); + + } +} \ No newline at end of file diff --git a/app/Views/pages/article/dept/detail.php b/app/Views/pages/article/dept/detail.php new file mode 100644 index 0000000..dd95c01 --- /dev/null +++ b/app/Views/pages/article/dept/detail.php @@ -0,0 +1,1331 @@ + +extend('layouts/main') ?> +section('content') ?> + + + +
+
+
+
현장확인매물 상세 내용
+
+
+
+ +
+
+ +
+
+ + + + + + + + + + + +
+ 매물ID : + + + CP ID : + +
+
+ +
+
공인 중개사 정보
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
중개사ID중개사명
대표전화담당자전화
검증방식 + 현장V2" + : "현장"; ?> + 연락가능전화 + +
+ + +
+
+ +
+
+ + +
+
+
매물 정보
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 지하층 / 지상층"); + } else if (in_array($data['rcpt_product'], $chk_product_nm)) { + echo (""); + } else { + echo (""); + } + ?> + + + + + + + + + +
등록일 + + 예약(촬영)요청일 + + + +
현장확인(촬영)일자 + + 가주소 여부 + 가주소 + +
매물구분거래구분 + +
지역구분 + + 리 주소 + +
+
상세주소 + + + +
+ + + + + +
+ + + +
기타주소 + +
단지명가격 + + + +
+
+ + 만원 +
+ + +
+
+ + 만원 (월) +
+
+ + + +
+ 분양가 + + 만원 + + / + + 프리미엄 + + 만원 +
+ + + +
+ + +
+
+
평형지하층 / 지상층층 / 총층 + + +
지도좌표 +
+ + +
+
+ 경도 + +
+ +
+ 위도 + +
+
+ + +
+ + + +
+ +
+
+ + + +
+ +
+
+ + +
+
+
거주여부
+ + + + + + + + + + +
거주여부 + + +
DB활용동의여부
+
+
+ +
+
+ +
+
+
+ + +
+
+
평면도요청
+ + + + + + + + + + +
+
평면도요청
+
+ + 평면도 등록 여부 + 0) { + echo "Y"; + } else { + echo "N"; + } + ?> + + +
+
+
+ + +
+
+
예약확정
+ + + + + + + + + + + + + + + + + + + +
방문희망일시 + + + +
방문날짜 + + + + 담당자 + + + +
+
+ +
+ + +
+
+
동영상촬영여부
+ + + + + + + + +
+ 동영상촬영여부 + + + + +
+
+
+ + +
+
+
중개인 요청사항
+ + + + + + + + +
+ 중개인 요청사항 + + + + +
+
+
+ + +
+
+
+ 담당자 예약현황 () +
+ + + + + + + + + + + + + + + + + +
+ + 시 +
+
+
+ + +
+
+
취소
+ + + + + + + + + + +
+
취소
+
+ + + 취소사유 + + + +
+
+
+ + +
+
+
매물 상태 정보 + + + +
+ + " . $data['rsrv_delay_dt_tm']; //예약지연 + $stat2 = $data['rsrv_cplt_dt_dt'] . "
" . $data['rsrv_cplt_dt_tm']; //에약확인 + if ($data['req_rec_yn'] == "Y") { //촬영 + $stat3 = $data['photo_save_dt_dt'] . "
" . $data['photo_save_dt_tm'] . "
녹취필요"; + } else { + $stat3 = $data['photo_save_dt_dt'] . "
" . $data['photo_save_dt_tm']; + } + $stat4 = $data['check_delay_dt_dt'] . "
" . $data['check_delay_dt_tm']; //검수지연 + $stat5 = $data['check_fail_dt_dt'] . "
" . $data['check_fail_dt_tm']; //검수실패 + $stat6 = $data['check_dt_dt'] . "
" . $data['check_dt_tm']; //검수 + $stat7 = $data['check_cplt_dt_dt'] . "
" . $data['check_cplt_dt_tm']; //검수완료 + $stat8 = $data['cancel_dt_dt'] . "
" . $data['cancel_dt_tm']; //취소 + + $currStat = substr($data['rcpt_stat'], 0, 2); + $currStat2 = substr($data['rcpt_stat'], 2, 2); + + if ($currStat == 15) { //예약지연 + $stat1 = "" . $stat1 . ""; + } else if ($currStat == 20) { //예약확인 + $stat2 = "" . $stat2 . ""; + } else if ($currStat == 40) { //촬영 + $stat3 = "" . $stat3 . ""; + } else if ($currStat == 50) { //검수 + $stat6 = "" . $stat6 . ""; + } else if ($currStat == 60) { //검수완료 + $stat7 = "" . $stat7 . ""; + } else if ($currStat == 70) { //검수지연 + $stat4 = "" . $stat4 . "
" . $data['rcpt_stat_nm'] . "
"; + } + if ($currStat == 90 && $currStat2 != 50) { //취소 + $stat8 = "" . $stat8 . "
" . $data['result_cd2_nm'] . "
"; + } else if ($currStat == 90 && $currStat2 == 50) { //검수실패 + $stat5 = "" . $stat5 . "
" . $data['rcpt_stat_nm'] . "
"; + } + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
현장확인
진행상황
예약지연예약확인촬영검수지연검수실패검수검수완료취소
+ + + + + + + + + + + + + + + +
상태변경 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+
+
SMS 보내기
+ + + + + + + "; + } + $smsCnt++; + endforeach; ?> + +
+ 상황별
SMS선택 +
+ + + +
+
+
+ + +
+
+
매물 위치
+ + + + + + + + +
+
+
+
+
+ + +
+
+
확인 정보 및 사진 정보
+
+ + +
+
+
+
홍보확인서
+ + + +
+ +
+ 홍보확인서 +
+
+
+ + +
+
+
+
촬영동의서
+ +
+ +
+ 촬영동의서 +
+
+
+ + +
+
+
+
현장확인내역서
+ +
+ +
+ 현장확인내역서 +
+
+
+
+ +
+ + +
+
+
분양권 (최대 5장)
+ +
+ +
+ +
+ 분양권1 +
+
+
+ +
+ + +
+
+
매물사진 (최대 15장)
+ +
+ + + + +
+
+ +
+ + +
+ +
+ 매물사진 +
+
+ +
+
+ +
+ + +
+
+
+
+
동영상
+ +
+
+ 동영상 +
+
+
+ +
+
+
+
평면도
+ +
+
+ 평면도 +
+
+
+ +
+
+
+
체크리스트
+ +
+
+ 체크리스트 +
+
+
+
+ + +
+
검수사항
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
360이미지 / 촬영위치
+ +
+ +
+ +
+
+ 360이미지 +
+ +
+ +
+
+ 360이미지 +
+ +
+ +
+
+ 360이미지 +
+ +
+ + +
+
+
+
+ + + +
+
+
중개인 요청사항
+ + + + + + + + + + + + + + + + + + + + + + + +
거주자 전화번호거주인 이름
음성파일 +
+ + + + + +
+ + +
+ +
+
거주인 요청사항 + +
+
+
+ + +
+
+
정보변경 이력
+
+ + + + + + + + + + + + + + + + + + + +
진행상태변경내용처리자(ID)처리일시세부내용
+ + + + + + + + + +
+
+
+
+ +
+
+ + + + +endSection() ?> \ No newline at end of file diff --git a/app/Views/pages/article/dept/lists.php b/app/Views/pages/article/dept/lists.php new file mode 100644 index 0000000..0dd5226 --- /dev/null +++ b/app/Views/pages/article/dept/lists.php @@ -0,0 +1,1048 @@ + +extend('layouts/main') ?> + +section('content') ?> + + +

조직별 배정 현황

+ +
+
+
+ +
+
+
+ + + + +
+
+ +
+ + +
+ + +
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + +
+ +
+ + ~ + +
+
+ + +
+ +
+ + + ~ + +
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+
+ + +
+ + + +
+ + +
+ + +
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + +
+ + 관할본부방문담당배정건수
+
+
+ + +
+
+ +
+
+
+
+ + + + + + + + +
지역구분요청건수
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+ + + + + + + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + 진행상태매물ID접수(등록)일시중개사주소연락처예약일자매물종류관할조직방문담당평면도유무평면도요청면적확인
+
+
+ +
+
+ +section('modals') ?> + +endSection() ?> + + + + + +endSection() ?> \ No newline at end of file diff --git a/app/Views/pages/article/dept/printMap.php b/app/Views/pages/article/dept/printMap.php new file mode 100644 index 0000000..78c8fd2 --- /dev/null +++ b/app/Views/pages/article/dept/printMap.php @@ -0,0 +1,237 @@ + + + + + + + + + 지도보기 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ 관할 배정 지도 +
+
+ +
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/app/Views/pages/article/printMap.php b/app/Views/pages/article/printMap.php index 7ff91cc..8ea2251 100644 --- a/app/Views/pages/article/printMap.php +++ b/app/Views/pages/article/printMap.php @@ -16,7 +16,7 @@ $long = $long / $cnt; - 컨펌스 로그인 + 지도보기 diff --git a/app/Views/pages/article/receipt/lists.php b/app/Views/pages/article/receipt/lists.php index 1866b12..7cbeb8c 100644 --- a/app/Views/pages/article/receipt/lists.php +++ b/app/Views/pages/article/receipt/lists.php @@ -401,6 +401,10 @@ $usr_nm = session('usr_nm'); + + +endSection() ?> \ No newline at end of file diff --git a/app/Views/pages/article/record/lists.php b/app/Views/pages/article/record/lists.php new file mode 100644 index 0000000..d3ec638 --- /dev/null +++ b/app/Views/pages/article/record/lists.php @@ -0,0 +1,613 @@ + +extend('layouts/main') ?> + +section('content') ?> + + + +

녹취매물 내역

+ +
+
+
+
+ + +
+
+ + +
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+
+
+
+ +
+ + ~ + +
+
+ +
+ +
+ + ~ + +
+
+ +
+ +
+ + ~ + +
+
+ +
+ + +
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ + +
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
진행상태매물ID접수(등록)일자촬영일자녹취완료일자중개사주소거주인명거주인연락처관할조직방문담당
+
+ +
+
+
+ + + + + + +endSection() ?> \ No newline at end of file