import React, {useMemo, useState} from 'react';
import {Text, View, StyleSheet} from 'react-native';
import ListStudentView from './view';

const ListStudent = (props) => {
    const [searchText, setSearchText] = useState('');
    const handleSearchChange = (text) => {
      setSearchText(text);
    };
    const filter = useMemo(()=>{
      if(!searchText.trim()) return dataListStudent;
      return dataListStudent.filter(item => item.name.toLowerCase().includes(searchText.toLowerCase()));
    },[dataListStudent, searchText]);

    const [dataListStudent, setDataListStudent]= useState([
      {
        "id": "1",
        "name": "Nguyễn Minh Đức",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259101",
        "date_student": "23/10/2004",
        "tele_phone": "0987654321"
      },
      {
        "id": "2",
        "name": "Bùi Thanh Ngọc",
        "status": "Cảnh cáo",
        "gender": "Nữ",
        "code_student": "259102",
        "date_student": "12/03/2005",
        "tele_phone": "0978123456"
      },
      {
        "id": "3",
        "name": "Trần Văn Hùng",
        "status": "Thôi học",
        "gender": "Nam",
        "code_student": "259103",
        "date_student": "05/08/2004",
        "tele_phone": "0912345678"
      },
      {
        "id": "4",
        "name": "Phạm Thị Hòa",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259104",
        "date_student": "19/11/2004",
        "tele_phone": "0908765432"
      },
      {
        "id": "5",
        "name": "Lê Văn Nam",
        "status": "Cảnh cáo",
        "gender": "Nam",
        "code_student": "259105",
        "date_student": "01/01/2005",
        "tele_phone": "0981112233"
      },
      {
        "id": "6",
        "name": "Đặng Thị Mai",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259106",
        "date_student": "14/02/2005",
        "tele_phone": "0934567890"
      },
      {
        "id": "7",
        "name": "Ngô Văn Sơn",
        "status": "Thôi học",
        "gender": "Nam",
        "code_student": "259107",
        "date_student": "29/06/2004",
        "tele_phone": "0923456789"
      },
      {
        "id": "8",
        "name": "Hoàng Thị Lan",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259108",
        "date_student": "08/09/2005",
        "tele_phone": "0919876543"
      },
      {
        "id": "9",
        "name": "Nguyễn Văn Tài",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259109",
        "date_student": "17/07/2004",
        "tele_phone": "0909123456"
      },
      {
        "id": "10",
        "name": "Trịnh Thị Hồng",
        "status": "Cảnh cáo",
        "gender": "Nữ",
        "code_student": "259110",
        "date_student": "24/04/2005",
        "tele_phone": "0965432109"
      },
      {
        "id": "11",
        "name": "Vũ Minh Quân",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259111",
        "date_student": "12/12/2004",
        "tele_phone": "0912233445"
      },
      {
        "id": "12",
        "name": "Phan Thanh Tùng",
        "status": "Thôi học",
        "gender": "Nam",
        "code_student": "259112",
        "date_student": "06/03/2005",
        "tele_phone": "0945566778"
      },
      {
        "id": "13",
        "name": "Nguyễn Thị Kim",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259113",
        "date_student": "22/05/2004",
        "tele_phone": "0906677889"
      },
      {
        "id": "14",
        "name": "Đỗ Văn Hào",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259114",
        "date_student": "15/08/2005",
        "tele_phone": "0978899001"
      },
      {
        "id": "15",
        "name": "Nguyễn Thu Hằng",
        "status": "Cảnh cáo",
        "gender": "Nữ",
        "code_student": "259115",
        "date_student": "10/10/2004",
        "tele_phone": "0983456789"
      },
      {
        "id": "16",
        "name": "Trần Quốc Anh",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259116",
        "date_student": "27/02/2005",
        "tele_phone": "0914455667"
      },
      {
        "id": "17",
        "name": "Hoàng Đức Thịnh",
        "status": "Thôi học",
        "gender": "Nam",
        "code_student": "259117",
        "date_student": "30/06/2004",
        "tele_phone": "0933344556"
      },
      {
        "id": "18",
        "name": "Phạm Mỹ Duyên",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259118",
        "date_student": "02/09/2005",
        "tele_phone": "0921234567"
      },
      {
        "id": "19",
        "name": "Nguyễn Văn Kiên",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259119",
        "date_student": "14/11/2004",
        "tele_phone": "0977778888"
      },
      {
        "id": "20",
        "name": "Trần Ngọc Ánh",
        "status": "Cảnh cáo",
        "gender": "Nữ",
        "code_student": "259120",
        "date_student": "25/07/2005",
        "tele_phone": "0911222333"
      },
      {
        "id": "21",
        "name": "Ngô Văn Lâm",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259121",
        "date_student": "07/04/2005",
        "tele_phone": "0903344556"
      },
      {
        "id": "22",
        "name": "Lưu Thị Thu",
        "status": "Thôi học",
        "gender": "Nữ",
        "code_student": "259122",
        "date_student": "19/06/2004",
        "tele_phone": "0988776655"
      },
      {
        "id": "23",
        "name": "Phạm Văn Toàn",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259123",
        "date_student": "28/08/2005",
        "tele_phone": "0929988776"
      },
      {
        "id": "24",
        "name": "Nguyễn Thị Yến",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259124",
        "date_student": "13/01/2005",
        "tele_phone": "0910099887"
      },
      {
        "id": "25",
        "name": "Trần Minh Hiếu",
        "status": "Cảnh cáo",
        "gender": "Nam",
        "code_student": "259125",
        "date_student": "04/05/2004",
        "tele_phone": "0961122334"
      },
      {
        "id": "26",
        "name": "Vũ Thị Mai",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259126",
        "date_student": "16/02/2005",
        "tele_phone": "0932211334"
      },
      {
        "id": "27",
        "name": "Nguyễn Văn Phúc",
        "status": "Thôi học",
        "gender": "Nam",
        "code_student": "259127",
        "date_student": "09/12/2004",
        "tele_phone": "0907788990"
      },
      {
        "id": "28",
        "name": "Bùi Thanh Tâm",
        "status": "Đang học",
        "gender": "Nam",
        "code_student": "259128",
        "date_student": "18/03/2005",
        "tele_phone": "0914455778"
      },
      {
        "id": "29",
        "name": "Lê Thị Trang",
        "status": "Đang học",
        "gender": "Nữ",
        "code_student": "259129",
        "date_student": "06/06/2005",
        "tele_phone": "0925566778"
      },
      {
        "id": "30",
        "name": "Nguyễn Khánh Duy",
        "status": "Cảnh cáo",
        "gender": "Nam",
        "code_student": "259130",
        "date_student": "21/09/2004",
        "tele_phone": "0978899221"
      }
    
    ])
    const getStatusColor = (status)=>{
      const statusColor ={
        'Đang học': '#4CAF50',
        'Cảnh cáo': '#FFC107',
        'Thôi học': '#F44336',
      }
      return statusColor[status] || '#9E9E9E';
    }
    const statusStats = useMemo(()=>{
      const stats = dataListStudent.reduce((acc, student)=>{
        acc[student.status] =(acc[student.status] || 0 ) + 1;
        return acc;
      },{});

      return Object.entries(stats).map(([status, count]) =>({
        status,
        count,
        color: getStatusColor(status),
      }));
    },[dataListStudent]);
    
  return (
    <ListStudentView 
    searchText={searchText}
    onSearchChange={handleSearchChange}
    filter={dataListStudent}
    statusStats={statusStats}
    />
  );
};

export default ListStudent;
