import { useState } from 'react';

// material-ui
import {
  Grid,
  Typography,
  Stack,
  Button,
  Box,
  Dialog, DialogTitle, DialogContent, DialogActions,
} from '@mui/material';
import { isORGLoggedIn, } from "utils/Utils";
import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png'
import { FormattedMessage, useIntl } from "react-intl";
import AdsClickRoundedIcon from '@mui/icons-material/AdsClickRounded';
import * as React from "react";
import Loadable from 'components/Loadable';
import * as HttpUtils from "utils/HttpUtils";
import * as UrlUtils from "utils/ApiPathConst";
import * as DateUtils from "utils/DateUtils";
import { checkPaymentSuspension } from "utils/Utils";

const Message = Loadable(React.lazy(() => import('./Message')));
const Notice = Loadable(React.lazy(() => import('./Notice')));
// import { lazy } from 'react';

const LoadingComponent = Loadable(React.lazy(() => import('../../extra-pages/LoadingComponent')));

import { useNavigate } from "react-router-dom";

// ==============================|| DASHBOARD - DEFAULT ||============================== //

const DashboardDefault = () => {
  const navigate = useNavigate()
  const intl = useIntl();
  const userData = JSON.parse(localStorage.getItem("userData"));
  const BackgroundHead = {
    // backgroundColor: '#0d47a1',
    backgroundImage: `url(${titleBackgroundImg})`,
    width: '100%',
    height: '100%',
    backgroundSize: 'contain',
    backgroundRepeat: 'no-repeat',
    backgroundColor: '#0C489E',
    backgroundPosition: 'right'
  }

  const { locale } = intl;
  const [messageOnReady, setMessageOnReady] = useState(false);
  const [onNoticeReady, setNoticeOnReady] = useState(false);
  const [isLoading, setLoding] = useState(true);
  const [itemList, setItemList] = React.useState([]);
  const [listData, setListData] = React.useState([]);
  const [isPopUp, setIsPopUp] = React.useState(false);
  
  React.useEffect(() => {
    loadMessageData()
    loadNoticeData()
    
    localStorage.setItem('searchCriteria',"")
  }, []);

  const getWelcomeMsg=()=>{
    
    var current = new Date()
    var curHr = current.getHours()

    if (curHr < 12) {
      return <FormattedMessage id="welcomeMsg_am" />
    } else if (curHr < 18) {
      return <FormattedMessage id="welcomeMsg_pm" />
    } else {
      return <FormattedMessage id="welcomeMsg_night" />
    }
  }

  React.useEffect(() => {
    // console.log(messageOnReady)
    // console.log(onNoticeReady)
    if(messageOnReady&&onNoticeReady){
      setLoding(false)
      if(checkPaymentSuspension()){
        setIsPopUp(true);
      }
      // console.log(123)
    }
  }, [messageOnReady,onNoticeReady]);

  const loadMessageData = () => {
    HttpUtils.get({
        url: UrlUtils.GET_MSG_DASHBOARD,
        onSuccess: function (response) {
            let list = []
            response.map((item) => {
                list.push(
                    <Button onClick={()=>{navigate("/msg/details/"+item.id);}} color={item.readTime?"gray":"black"} style={{justifyContent: "flex-start"}} sx={{p:2}}>
                        <Stack direction="column" >
                            <Typography variant='string' align="justify"><b>{item.subject}</b></Typography>
                            <Typography align="justify">{DateUtils.datetimeStr(item.sentDate)}</Typography>
                        </Stack>
                    </Button>
                )
            });

            setItemList(list);
            setMessageOnReady(true);
            // console.log('123')
        },
        onError: function (){
            // console.log('123')
            setMessageOnReady(true);
        }
    });
    // props.setMessageOnReady(true);

  };

  const loadNoticeData = () => {
    HttpUtils.get({
        url: UrlUtils.GET_ANNOUNCE_DASHBOARD,
        onSuccess: function (response) {
            setListData(response);
            setNoticeOnReady(true)
        },
        onError: function () {
            setNoticeOnReady(true)
        }
    });
  };

  return (
        isLoading ?
          <Grid container sx={{ minHeight: '87vh' }} direction="column">
            <Grid item xs={12} >
              <div style={BackgroundHead}>
                <Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center">
                  {/* <Typography variant="h5">我的公共啟事</Typography> */}
                  <Typography color='#FFF' variant="h5" sx={{ ml: 10, display: { xs: 'none', sm: 'none', md: 'block' } }}>
                    {isORGLoggedIn() ? userData.fullenName: (locale === 'en' ?userData.fullenName: userData.fullchName)}, {getWelcomeMsg()}
                  </Typography>
                </Stack>
              </div>
            </Grid>
            <Grid item xs={12} md={12} sx={{ textAlign: "center" }}>
              <Grid container sx={{ minHeight: '75vh', mb: 3 }} direction="column" justifyContent="center" alignItems="center">
                <Grid item>
                    <LoadingComponent />
                </Grid>
              </Grid>
            </Grid>
          </Grid>
        :
        <Grid container sx={{ minHeight: '87vh' }} direction="column">
          <Grid item xs={12} >
            <div style={BackgroundHead}>
              <Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center">
                {/* <Typography variant="h5">我的公共啟事</Typography> */}
                <Typography color='#FFF' variant="h5" sx={{ ml: 10, display: { xs: 'none', sm: 'none', md: 'block' } }}>
                  {isORGLoggedIn() ? userData.fullenName: (locale === 'en' ?userData.fullenName: userData.fullchName)}, {getWelcomeMsg()}
                </Typography>
              </Stack>
            </div>
          </Grid>
          <Grid item xs={12} md={12} sx={{ textAlign: "center" }}>
            <Grid container justifyContent="center" spacing={2} sx={{ pt: 2 }} alignitems="stretch" >
              <Grid item xs={12} lg={5} sx={{ pt: 2 }} style={{ height: '100%' }}>
                <Button
                  xs={12} onClick={() => { navigate("/publicNotice/apply"); }}
                  style={{ justifyContent: "flex-start" }}
                  aria-label={intl.formatMessage({ id: 'submitApplication' })}
                  sx={{ width: "100%", p: 4, border: '3px solid #e1edfc', borderRadius: '10px', backgroundColor: "#e1edfc" }}
                >
                  <Stack direction="row" spacing={2}>
                    <AdsClickRoundedIcon />
                    <Stack direction="column" alignItems="start">
                      <Typography variant="h4" >
                        <FormattedMessage id="submitApplication" />
                      </Typography>
                      <Typography >
                        <FormattedMessage id="applicationSubheading" />
                      </Typography>
                    </Stack>
                  </Stack>
                </Button>
                <Stack direction="row" justifyContent="space-between" sx={{ pl: 2, pr: 2, pt: 2 }} >
                  <Typography variant="h4">
                    <FormattedMessage id="announcement" />
                  </Typography>
                  <Button
                    color="gray"
                    aria-label={intl.formatMessage({ id: 'viewAllAnnouncement' })}
                    onClick={()=>{navigate("/announcement/search")}}
                  ><u>
                      <FormattedMessage id="viewAllAnnouncement" />
                    </u></Button>
                </Stack>
                <Box xs={12} md={12} sx={{ p: 1, border: '3px solid #eee', borderRadius: '10px' }} >
                  <Notice
                    listData = {listData}
                  />
                </Box>
              </Grid>
              <Grid item xs={12} lg={5} sx={{ pt: 2 }} style={{ height: '100%' }}>
                <Stack direction="row" justifyContent="space-between" sx={{ pl: 2, pr: 2, pt: 2 }} >
                  <Typography variant="h4">
                    <FormattedMessage id="systemMessage" />
                  </Typography>
                  <Button
                    aria-label={intl.formatMessage({ id: 'viewAllSystemMessage' })}
                    onClick={() => { navigate("/msg/search"); }}
                    color="gray"
                  ><u>
                      <FormattedMessage id="viewAllSystemMessage" />
                    </u></Button>
                </Stack>
                <Box xs={12} md={12} sx={{ p: 1, fontSize: 12, border: '3px solid #eee', borderRadius: '10px' }} >
                  <Message 
                    itemList = {itemList}
                  />
                </Box>
              </Grid>
            </Grid>
          </Grid>
          <div>
            <Dialog
                open={isPopUp}
                onClose={() => setIsPopUp(false)}
                PaperProps={{
                    sx: {
                        minWidth: '40vw',
                        maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' },
                        maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' }
                    }
                }}
            >
              <DialogTitle>
                <Typography variant="h5">
                  <FormattedMessage id="systemNotice" />
                </Typography>
              </DialogTitle>
              <DialogContent style={{ display: 'flex', }}>
                  <Typography variant="h5" style={{ padding: '16px' }}>
                    <div dangerouslySetInnerHTML={{ __html: intl.formatMessage({ id: "suspensionMessageText" }) }} />
                  </Typography>
              </DialogContent>
              <DialogActions>
                  <Button onClick={() => setIsPopUp(false)}><Typography variant="h5"><FormattedMessage id="ok" /></Typography></Button>
              </DialogActions>
            </Dialog>
        </div>
        </Grid>
  );
};

export default DashboardDefault;
