import * as React from 'react';
import { Card, CardHeader, CardContent } from '@mui/material';
import {
    ResponsiveContainer,
    AreaChart,
    Area,
    XAxis,
    YAxis,
    CartesianGrid,
    Tooltip,
} from 'recharts';
import { useTranslate } from 'react-admin';
import { format, subDays, addDays } from 'date-fns';

const lastDay = new Date();
const lastMonthDays = Array.from({ length: 30 }, (_, i) => subDays(lastDay, i));
const aMonthAgo = subDays(new Date(), 30);

const dateFormatter = (date) =>
    new Date(date).toLocaleDateString();

// const aggregateOrdersByDay = (orders) =>
//     orders
//         .filter((order) => order.status !== 'cancelled')
//         .reduce(
//             (acc, curr) => {
//                 const day = format(curr.date, 'yyyy-MM-dd');
//                 if (!acc[day]) {
//                     acc[day] = 0;
//                 }
//                 acc[day] += curr.total;
//                 return acc;
//             },
//             {}
//         );

// const getRevenuePerDay = (orders) => {
//     const daysWithRevenue = aggregateOrdersByDay(orders);
//     return lastMonthDays.map(date => ({
//         date: date.getTime(),
//         total: daysWithRevenue[format(date, 'yyyy-MM-dd')] || 0,
//     }));
// };

const NbChart = (props) => {
    const { orders } = props;
    const translate = useTranslate();
    if (!orders) return null;

    return (
        <Card>
            <CardHeader title={translate('page.dashboard.chart.histories')} />
            <CardContent>
                <div style={{ width: '100%', height: 300 }}>
                    <ResponsiveContainer>
                        <AreaChart data={orders?.trandItem
                        }>
                            <defs>
                                <linearGradient
                                    id="colorUv"
                                    x1="0"
                                    y1="0"
                                    x2="0"
                                    y2="1"
                                >
                                    <stop
                                        offset="5%"
                                        stopColor="#5091abff"
                                        stopOpacity={0.8}
                                    />
                                    <stop
                                        offset="95%"
                                        stopColor="#5091abff"
                                        stopOpacity={0}
                                    />
                                </linearGradient>
                            </defs>
                            <XAxis
                                dataKey="orderTime"

                                domain={[
                                    addDays(aMonthAgo, 1).getTime(),
                                    new Date().getTime(),
                                ]}
                                tickFormatter={dateFormatter}
                            />
                            <YAxis dataKey="inQty" name="Revenue" unit="" />
                            <CartesianGrid strokeDasharray="3 3" />
                            <Tooltip
                                cursor={{ strokeDasharray: '3 3' }}
                                formatter={(value) =>
                                    new Intl.NumberFormat(undefined, {
                                        style: 'currency',
                                        currency: 'USD',
                                    }).format(value)
                                }
                                labelFormatter={(label) =>
                                    dateFormatter(label)
                                }
                            />
                            <Area
                                type="monotone"
                                dataKey="inQty"
                                stroke="#50911aff"
                                strokeWidth={2}
                                fill="url(#colorUv)"
                            />
                            <Area
                                type="monotone"
                                dataKey="outQty"
                                stroke="#5091abff"
                                strokeWidth={2}
                                fill="url(#colorUv)"
                            />
                        </AreaChart>
                    </ResponsiveContainer>
                </div>
            </CardContent>
        </Card>
    );
};

export default NbChart;
