@@ -13,6 +13,7 @@ import {
1313import { stakeholdersDaysHours } from "../components/FoodSeeker/SearchResults/StakeholderPreview/StakeholderPreview" ;
1414import * as analytics from "../services/analytics" ;
1515import * as stakeholderService from "../services/stakeholder-best-service" ;
16+ import dayjs from "dayjs" ;
1617
1718const sortOrganizations = ( a , b ) => {
1819 if (
@@ -71,23 +72,35 @@ export default function useOrganizationBests() {
7172 }
7273
7374 if ( filters . showActiveOnly ) {
74- // filter out inactive, inactiveTemporary stakeholders
7575 filteredStakeholders = filteredStakeholders . filter ( ( stakeholder ) => {
7676 return ! stakeholder . inactive && ! stakeholder . inactiveTemporary ;
7777 } ) ;
7878 }
7979
8080 const { day, time } = filters . openTimeFilter ;
81- if ( day !== "" && time !== "" ) {
81+ if ( day || ( time && time !== "Any" ) ) {
8282 filteredStakeholders = filteredStakeholders . filter ( ( stakeholder ) => {
83- const nextDateForDay = getNextDateForDay ( day , time , tenantTimeZone ) ;
84- const hours = stakeholdersDaysHours (
85- stakeholder ,
86- tenantTimeZone ,
87- nextDateForDay
88- ) ;
89-
90- return ! ! hours ;
83+ return stakeholder . hours ?. some ( ( h ) => {
84+ const dayMatch = day ? h . day_of_week . toUpperCase ( ) === day : true ;
85+
86+ const timeMatch =
87+ ! time || time === "Any"
88+ ? true
89+ : ( ( ) => {
90+ const openTime = dayjs ( h . open , "HH:mm:ss" ) ;
91+ const closeTime = dayjs ( h . close , "HH:mm:ss" ) ;
92+ const filterTime = dayjs ( time , "hh:mmA" ) ;
93+
94+ return (
95+ filterTime . isSame ( openTime ) ||
96+ filterTime . isSame ( closeTime ) ||
97+ ( filterTime . isAfter ( openTime ) &&
98+ filterTime . isBefore ( closeTime ) )
99+ ) ;
100+ } ) ( ) ;
101+
102+ return dayMatch && timeMatch ;
103+ } ) ;
91104 } ) ;
92105 }
93106 if ( filters . orgNameFilter ) {
0 commit comments