diff --git a/application/ADBWohneinheit/ADBWohneinheitController.php b/application/ADBWohneinheit/ADBWohneinheitController.php index b9dbb95cd..a7d8cd0c5 100644 --- a/application/ADBWohneinheit/ADBWohneinheitController.php +++ b/application/ADBWohneinheit/ADBWohneinheitController.php @@ -161,7 +161,9 @@ class ADBWohneinheitController extends mfBaseController { protected function duplicateAction() { $duplicateHomes = array_merge(ADBWohneinheitModel::searchDuplicateExtref(), - ADBWohneinheitModel::searchDuplicateOAID()); + ADBWohneinheitModel::searchDuplicateOAID(), + ADBWohneinheitModel::getRimoDeletedHomes() + ); $ADBNetzgebiete = array_map(function($network) { return [ diff --git a/application/ADBWohneinheit/ADBWohneinheitModel.php b/application/ADBWohneinheit/ADBWohneinheitModel.php index f246f1531..0f0975f93 100644 --- a/application/ADBWohneinheit/ADBWohneinheitModel.php +++ b/application/ADBWohneinheit/ADBWohneinheitModel.php @@ -16,6 +16,7 @@ class ADBWohneinheitModel { public $enduser_setup_invoice_date; public $rimo_ex_state; public $rimo_op_state; + public $rimo_deleted; public $patch_cluster; public $patch_shelf; public $patch_module; @@ -158,6 +159,15 @@ class ADBWohneinheitModel { } } } + + if(array_key_exists("rimo_deleted", $filter)) { + $rimo_deleted = $filter['rimo_deleted']; + if($rimo_deleted === true || $rimo_deleted === 1) { + $where .= " AND Wohneinheit.`rimo_deleted` = 1"; + } elseif($rimo_deleted === false || $rimo_deleted === 0) { + $where .= " AND Wohneinheit.`rimo_deleted` = 0"; + } + } if(array_key_exists("netzgebiet_id", $filter)) { $netzgebiet_id = $filter['netzgebiet_id']; @@ -402,8 +412,62 @@ class ADBWohneinheitModel { return array_values($duplicates); } + public static function getRimoDeletedHomes($filter = []) { + $deletedHomes = []; + $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME)->link; + $where = self::getSqlFilter($filter); + $sql = "SELECT Wohneinheit.oaid, Hausnummer.netzgebiet_id as netzgebiet_id + FROM Wohneinheit + LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id) + WHERE $where AND Wohneinheit.rimo_deleted = 1 AND Wohneinheit.oaid IS NOT NULL + ORDER BY Wohneinheit.oaid"; + $res = $db->query($sql); + $rimoDeletedOaids = []; + while($data = $res->fetch_assoc()) { + $rimoDeletedOaids[] = $data['oaid']; + $deletedHomes[$data['oaid']] = [ + "duplicateType" => "rimo_deleted", + 'oaid' => $data['oaid'], + 'count' => 1, // Always 1 since we're not counting duplicates + 'netzgebiet_id' => $data['netzgebiet_id'], + 'homeData' => [] + ]; + } + + if (!empty($rimoDeletedOaids)) { + $oaidList = "'" . implode("','", array_map([$db, 'real_escape_string'], $rimoDeletedOaids)) . "'"; + $detailSql = "SELECT Wohneinheit.*, thetool.Address.company AS company, Hausnummer.rimo_id AS hausnummer_extref + FROM Wohneinheit + LEFT JOIN Hausnummer ON (Hausnummer.id = Wohneinheit.hausnummer_id) + LEFT JOIN Netzgebiet ON (Netzgebiet.id = Hausnummer.netzgebiet_id) + LEFT JOIN thetool.Network ON (Network.adb_netzgebiet_id = Netzgebiet.id) + LEFT JOIN thetool.Address ON (Network.owner_id = Address.id) + WHERE $where AND Wohneinheit.oaid IN ($oaidList) AND Wohneinheit.rimo_deleted = 1 + ORDER BY Wohneinheit.oaid"; + + $detailRes = $db->query($detailSql); + while($homeData = $detailRes->fetch_assoc()) { + $deletedHomes[$homeData['oaid']]['homeData'][] = [ + "id" => $homeData['id'], + 'oaid' => $homeData['oaid'], + "extref" => $homeData['extref'], + "network_company" => $homeData['company'], + "hausnummer_id" => $homeData['hausnummer_id'], + "hausnummer_extref" => $homeData['hausnummer_extref'], + "num" => $homeData['num'], + "nutzung" => $homeData['nutzung'], + "rimo_ex_state" => $homeData['rimo_ex_state'], + "rimo_op_state" => $homeData['rimo_op_state'], + "create" => $homeData['create'], + "edit" => $homeData['edit'], + ]; + } + } + + return array_values($deletedHomes); + } } diff --git a/public/js/pages/ADBWohneinheitDuplicate/ADBWohneinheitDuplicate.js b/public/js/pages/ADBWohneinheitDuplicate/ADBWohneinheitDuplicate.js index 555bf0733..5b39c3efb 100644 --- a/public/js/pages/ADBWohneinheitDuplicate/ADBWohneinheitDuplicate.js +++ b/public/js/pages/ADBWohneinheitDuplicate/ADBWohneinheitDuplicate.js @@ -73,7 +73,8 @@ Vue.component('a-d-b-wohneinheit-duplicate', { {text: 'HomeID | OAID', key: 'extref', sortable: true, class: 'text-nowrap', priority: 10}, {text: 'Duplicate Type', key: 'duplicateType', sortable: true, class: 'text-nowrap', priority: 9, filter: 'select', filterOptions: [ {text: 'HomeID', value: 'extref'}, - {text: 'OAID', value: 'oaid'}, + {text: 'OAID', value: 'oaid'}, + {text: 'RIMO gelöscht', value: 'rimo_deleted'}, ]}, {text: 'Anzahl gleicher HomeIDs', key: 'count', sortable: true, class: 'text-center', priority: 8}, {