import React from 'react';
import {
  View,
  Text,
  TouchableOpacity,
  ScrollView,
} from 'react-native';
import R from '../../../assets/R';
import styles from './style';

const FilterDayView = (props) => {
  const {   
    selectedDate,
    showMonthPicker,
    scrollViewRef,
    panResponder,
    getEventsForDate,
    getDayName,
    calculateEventPosition,  } = props;

    const isToday = (date) => {
      const today = new Date();
      return (
        date.getDate() === today.getDate() &&
        date.getMonth() === today.getMonth() &&
        date.getFullYear() === today.getFullYear()
      );
    };
    const renderMonthPicker = () => {
      if (!showMonthPicker) return null;
    }

    const renderDateInfo = () => {
      return (
        <View style={{backgroundColor: R.colors.grayBorderInputTextHeader}}>
               <View style={styles.dateInfoContainer}>
          <Text style={styles.dayName}>{getDayName(selectedDate)}</Text>
          <Text style={
            isToday(selectedDate)
            ? styles.dayNumberToday
            : styles.dayNumber

          }>{selectedDate.getDate()}</Text>
        </View>
        </View>
     
      );
    };
  
    const renderTimeSlots = () => {
      const hours = Array.from({length: 24}, (_, i) => i);
      const selectedEvents = getEventsForDate(selectedDate);
  
      return (
        <View style={styles.timeSlotsContainer} {...panResponder.panHandlers}>
          <ScrollView
            ref={scrollViewRef}
            showsVerticalScrollIndicator={false}
            contentContainerStyle={styles.scrollContent}>
            
            <View style={styles.timelineContainer}>
              <View style={styles.timeLabelsColumn}>
                {hours.map((hour) => {
                  const timeStr = hour.toString().padStart(2, '0') + ':00';
                  return (
                    <View key={hour} style={styles.timeSlot}>
                      <Text style={styles.timeText}>{timeStr}</Text>
                    </View>
                  );
                })}
              </View>
  
              <View style={styles.eventsColumn}>
                {hours.map((hour) => (
                  <View key={hour} style={styles.gridLine} />
                ))}
  
                {selectedEvents.map((event) => {
                  const { topPosition, height } = calculateEventPosition(event.time, event.endTime);
                  
                  return (
                    <TouchableOpacity
                      key={event.id}
                      style={[
                        styles.eventCard,
                        {
                          position: 'absolute',
                          top: topPosition,
                          height: Math.max(height, 40), 
                          left: 5,
                          right: 15,
                          zIndex: 10,
                          backgroundColor: R.colors.blue,
                        }
                      ]}
                      activeOpacity={0.7}>
                      <Text style={styles.eventTitle} numberOfLines={height > 60 ? 2 : 1}>
                        {event.title}
                      </Text>
                      {height > 40 && (
                        <Text style={styles.eventSubtitle} numberOfLines={1}>
                          {event.subtitle}
                        </Text>
                      )}
                      <Text style={styles.eventTime}>
                        {event.time} - {event.endTime}
                      </Text>
                    </TouchableOpacity>
                  );
                })}
              </View>
            </View>
          </ScrollView>
        </View>
      );
    };
  return (
     <View style={styles.container}>
       {renderMonthPicker()}
      {renderDateInfo()}
      {renderTimeSlots()}
      </View>
  );
};

export default FilterDayView;
