@php use App\Enums\LinkingTagTarget; use App\Enums\LinkingTagType; use App\Enums\ElementTarget; $linkingTags = []; $planLinkingTags = []; $substring = 'post_'; $fillterPlanData = []; foreach ($planData as $key => $plan) { if (!empty($plan['linking_tags'])) { foreach ($plan['linking_tags'] as $linkingTag) { $planLinkingTags[] = $linkingTag['target']; } } if (!empty($dataDetail) && !empty($plan['linking_tags'])) { $array = $plan['linking_tags']; $targets = array_column($array, 'target'); $targetIds = array_column($array, 'target_id'); $addPlan = false; switch ($mode) { case ElementTarget::ROOM_DETAIL: $addPlan = in_array(LinkingTagTarget::ROOM, $targets) ? in_array($dataDetail['id'], $targetIds) : true; break; case ElementTarget::RESTAURANT_DETAIL: $addPlan = in_array(LinkingTagTarget::RESTAURANT, $targets) ? in_array($dataDetail['id'], $targetIds) : true; break; case ElementTarget::BANQUET_DETAIL: $addPlan = in_array(LinkingTagTarget::BANQUET, $targets) ? in_array($dataDetail['id'], $targetIds) : true; break; case ElementTarget::POST_DETAIL: $addPlan = in_array($substring . $dataDetail['post_group_id'], $targets) ? in_array($dataDetail['id'], $targetIds) : true; break; default: $addPlan = true; break; } if ($addPlan) { $fillterPlanData[] = $plan; } } else { $fillterPlanData[] = $plan; } } foreach ($project->linkingTags as $linkingTag) { if ($linkingTag->type == LinkingTagType::POST) { $linkingTags[] = $substring . $linkingTag->target; } else { $linkingTags[] = $linkingTag->target; } } $uniqueLinkingTags = array_filter($linkingTags, function ($item) use ($planLinkingTags) { return in_array((string) $item, $planLinkingTags, true); }); $namePostGroups = $project->postGroups->groupBy(function ($postGroup) use ($substring) { return $substring . $postGroup['id']; }); $anyActive = false; foreach ($uniqueLinkingTags as $linkingTag) { $isActive = false; $isMatchSubstring = strpos($linkingTag, $substring) !== false; $hasPostGroup = $namePostGroups->get($linkingTag); if ($isMatchSubstring) { if ($mode == ElementTarget::POST && !empty($project['postPage'])) { $idOptional = $project['postPage']['option_manager_id']; $isActive = $linkingTag == $substring . $idOptional; } if ($mode == ElementTarget::POST_DETAIL && !empty($dataDetail)) { $idOptional = $dataDetail['post_group_id']; $isActive = $linkingTag == $substring . $idOptional; } } else { $isActive = (in_array($mode, [ElementTarget::ROOM_LIST, ElementTarget::ROOM_DETAIL]) && $linkingTag == LinkingTagTarget::ROOM) || (in_array($mode, [ElementTarget::DISHS, ElementTarget::RESTAURANT_DETAIL]) && $linkingTag == LinkingTagTarget::RESTAURANT) || (in_array($mode, [ElementTarget::BANQUET, ElementTarget::BANQUET_DETAIL]) && $linkingTag == LinkingTagTarget::BANQUET); } if ($isActive) { $anyActive = true; } } @endphp