ADBWohneinheit/add-new-greenfield-check
This commit is contained in:
@@ -185,20 +185,29 @@ class ADBWohneinheitController extends mfBaseController {
|
||||
|
||||
}
|
||||
|
||||
protected function duplicateAction() {
|
||||
if (!$this->me->is("Admin") && !$this->me->can("ADBExtended")) {
|
||||
protected function duplicateAction()
|
||||
{
|
||||
if (!$this->user->is("Admin") && !$this->user->can("ADBExtended")) {
|
||||
$this->redirect("Dashboard");
|
||||
}
|
||||
|
||||
$address_id = $this->me->is("Admin") ? null : $this->me->address->id;
|
||||
$address_id = $this->user->is("Admin") ? null : $this->user->address->id;
|
||||
$isAdmin = $this->user->is("Admin");
|
||||
|
||||
$duplicateHomes = array_merge(
|
||||
ADBWohneinheitModel::searchDuplicateExtref([], $address_id),
|
||||
ADBWohneinheitModel::searchDuplicateOAID([], $address_id),
|
||||
ADBWohneinheitModel::getRimoDeletedHomes([], $address_id),
|
||||
($this->me->is("Admin") || $address_id === "4807") ? ADBWohneinheitModel::getUnscheduledOrderHomes([], 4807) : []
|
||||
ADBWohneinheitModel::getRimoDeletedHomes([], $address_id)
|
||||
);
|
||||
|
||||
if ($isAdmin || $address_id === "4807") {
|
||||
$duplicateHomes = array_merge($duplicateHomes, ADBWohneinheitModel::getUnscheduledOrderHomes([], 4807));
|
||||
}
|
||||
|
||||
if ($isAdmin) {
|
||||
$duplicateHomes = array_merge($duplicateHomes, ADBWohneinheitModel::getGreenfieldWithActivePreorders([], $address_id));
|
||||
}
|
||||
|
||||
$getUniqueValues = fn($key) => array_values(array_unique(array_filter(array_column($duplicateHomes, $key))));
|
||||
|
||||
$networkOwners = array_map(
|
||||
@@ -217,10 +226,10 @@ class ADBWohneinheitController extends mfBaseController {
|
||||
"BASE_URL" => self::getUrl(""),
|
||||
"DASHBOARD_URL" => self::getUrl("Dashboard"),
|
||||
"MFAPPNAME" => MFAPPNAME_SLUG,
|
||||
"PAGE_TITLE" => "Doppelte Homes",
|
||||
"PAGE_TITLE" => "Datenqualitäts-Checks",
|
||||
"PATH" => [
|
||||
["text" => MFAPPNAME_SLUG, "href" => self::getUrl("Dashboard")],
|
||||
["text" => "Doppelte Homes", "href" => self::getUrl("ADBWohneinheit", "duplicate")],
|
||||
["text" => "Datenqualitäts-Checks", "href" => self::getUrl("ADBWohneinheit", "duplicate")],
|
||||
],
|
||||
"DUPLICATE_HOMES" => $duplicateHomes,
|
||||
"ADB_NETZGEBIETE" => $networks,
|
||||
|
||||
@@ -485,4 +485,69 @@ class ADBWohneinheitModel {
|
||||
return array_values($deletedHomes);
|
||||
}
|
||||
|
||||
public static function getGreenfieldWithActivePreorders($filter = [], $network_owner = null) {
|
||||
$homes = [];
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME)->link;
|
||||
$where = self::getSqlFilter($filter);
|
||||
|
||||
if ($network_owner) {
|
||||
$where .= " AND Network.owner_id = '" . $db->real_escape_string($network_owner) . "'";
|
||||
}
|
||||
|
||||
$detailSql = "
|
||||
SELECT
|
||||
W.*,
|
||||
Owner.company AS company,
|
||||
H.rimo_id AS hausnummer_extref,
|
||||
NG.id AS netzgebiet_id,
|
||||
Owner.company as netzgebiet_owner
|
||||
FROM ". ADDRESSDB_DBNAME .".Wohneinheit W
|
||||
JOIN ". ADDRESSDB_DBNAME .".Hausnummer H ON H.id = W.hausnummer_id
|
||||
JOIN ". FRONKDB_DBNAME .".Preorder P ON P.adb_wohneinheit_id = W.id
|
||||
JOIN ". FRONKDB_DBNAME .".Preorderstatus PS ON PS.id = P.status_id
|
||||
LEFT JOIN ". ADDRESSDB_DBNAME .".Netzgebiet NG ON NG.id = H.netzgebiet_id
|
||||
LEFT JOIN ". FRONKDB_DBNAME .".Network Network ON Network.adb_netzgebiet_id = NG.id
|
||||
LEFT JOIN ". FRONKDB_DBNAME .".Address Owner ON Network.owner_id = Owner.id
|
||||
WHERE $where
|
||||
AND H.rimo_type = 'greenfield'
|
||||
AND PS.code < 899
|
||||
AND P.deleted = 0
|
||||
GROUP BY W.id -- Ensure each Wohneinheit appears only once
|
||||
ORDER BY W.oaid";
|
||||
|
||||
$detailRes = $db->query($detailSql);
|
||||
if (!$detailRes) {
|
||||
return [];
|
||||
}
|
||||
|
||||
while($homeData = $detailRes->fetch_assoc()) {
|
||||
if (empty($homeData['netzgebiet_owner'])) continue;
|
||||
|
||||
$homes[] = [
|
||||
"duplicateType" => "greenfield_with_order",
|
||||
'oaid' => $homeData['oaid'] ?? 'Keine OAID',
|
||||
'extref' => $homeData['extref'],
|
||||
'netzgebiet_id' => $homeData['netzgebiet_id'],
|
||||
'netzgebiet_owner' => $homeData['netzgebiet_owner'],
|
||||
'count' => 1,
|
||||
'homeData' => [[
|
||||
"id" => $homeData['id'],
|
||||
'oaid' => $homeData['oaid'] ?? 'Keine 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 $homes;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user