Besuchsstellen
query("SELECT * FROM seelsorge_besuchsstellen ORDER BY CASE WHEN reservation IS NOT NULL THEN 0 WHEN priority = 2 OR ((CURRENT_DATE - letzter_besuch) > 180) THEN 1 WHEN priority = 1 OR ((CURRENT_DATE - letzter_besuch) > 60) THEN 2 ELSE 3 END, last_name ASC")->fetchAll(); $visitEntriesForJs = array_map('seelsorge_visit_entry_client_data', $visitRows); $households = seelsorge_group_households($visitRows); // Reservierende in einer Abfrage laden statt pro Tabellenzeile. $reservationIds = array_values(array_unique(array_filter(array_map( static fn($row) => isset($row['reservation']) ? (int) $row['reservation'] : 0, $visitRows )))); $reservationUsers = []; if ($reservationIds) { $placeholders = implode(',', array_fill(0, count($reservationIds), '?')); $stmtReservations = $pdo->prepare("SELECT user_id, first_name, last_name FROM user_general_information WHERE user_id IN ($placeholders)"); $stmtReservations->execute($reservationIds); foreach ($stmtReservations->fetchAll() as $reservationUser) { $reservationUsers[(int) $reservationUser['user_id']] = $reservationUser; } } foreach ($households as &$household) { $reservationId = (int) ($household['reservation'] ?? 0); if ($reservationId > 0) { $reservationUser = $reservationUsers[$reservationId] ?? []; $household['reservation_name'] = trim(($reservationUser['first_name'] ?? '') . ' ' . ($reservationUser['last_name'] ?? '')); $household['reservation_img'] = seelsorge_profile_image_url($reservationId); } } unset($household); ?> $household): $members = $household['members']; $firstMember = $members[0]; $isReserved = $household['reservation'] !== null; $status = seelsorge_household_status($members, $isReserved); $worstStatus = $status['key']; $statusLabel = $status['label']; // Name: Nachname, Vorname1 & Vorname2 ... $lastName = $firstMember['last_name'] ?? ''; $firstNames = array_column($members, 'first_name'); $nameDisplay = htmlspecialchars($lastName) . ', ' . htmlspecialchars(implode(' & ', $firstNames)); // Letzter Besuch (ältester im Haushalt) $visitDates = array_filter(array_column($members, 'letzter_besuch')); $oldestVisit = $visitDates ? min($visitDates) : SEELSORGE_INITIAL_VISIT_DATE; $visitText = seelsorge_relative_visit_text($oldestVisit); // Reservierender $reserverHtml = ''; if ($isReserved && (int) $household['reservation'] !== $current_user_id) { $resName = $household['reservation_name'] ?: 'Geplant'; $resImgPath = $household['reservation_img'] ?? seelsorge_profile_image_url((int) $household['reservation']); $reserverHtml = "
Geplant von " . htmlspecialchars($resName) . "
"; } elseif ($isReserved) { $reserverHtml = "
Von Ihnen geplant
"; } // JSON data for modal $householdJson = htmlspecialchars(json_encode([ 'members' => array_map(function($m) use ($priestById) { $dob = new DateTime($m['birth_date']); $age = (new DateTime())->diff($dob)->y; $priestId = (int) ($m['pr_bezirk'] ?? 0); $priest = $priestById[$priestId] ?? []; $priestName = trim(($priest['first_name'] ?? '') . ' ' . ($priest['last_name'] ?? '')); $priestImg = seelsorge_profile_image_url($priestId); return [ 'besuch_id' => (int)$m['besuch_id'], 'last_name' => $m['last_name'], 'first_name' => $m['first_name'], 'birth_date' => $m['birth_date'], 'birth_formatted' => date('d.m.Y', strtotime($m['birth_date'])), 'age' => $age, 'phone' => $m['phone'] ?? '', 'comment' => $m['comment'] ?? '', 'priority' => (int)($m['priority'] ?? 0), 'pr_bezirk' => ($m['pr_bezirk'] === null ? '' : (int)$m['pr_bezirk']), 'priest_name' => $priestName, 'priest_id' => $priestId, 'priest_img' => $priestImg, 'address_street' => $m['address_street'] ?? '', 'address_plz' => $m['address_plz'] ?? '', 'address_link' => $m['address_link'] ?? '', 'letzter_besuch' => $m['letzter_besuch'] ?? '', 'reservation' => $m['reservation'], ]; }, $members), 'address_street' => $household['address_street'], 'address_plz' => $household['address_plz'], 'address_link' => $household['address_link'], 'phone' => $household['phone'], 'reservation' => $household['reservation'], 'reservation_name' => $household['reservation_name'] ?? '', 'reservation_img' => $household['reservation_img'] ?? '', 'status' => $worstStatus, ], JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT), ENT_QUOTES); ?>
Name Letzter Besuch
Keine Einträge vorhanden.