import React from 'react';
import { Box, Card, CardContent, Typography, Button, LinearProgress, Stack } from '@mui/material';
import {
  Add as AddIcon,
  Visibility as VisibilityIcon,
  Download as DownloadIcon,
  ContactMail as ContactMailIcon,
  Edit as EditIcon,
  TipsAndUpdates as TipsIcon,
} from '@mui/icons-material';
import { useAuth } from 'hooks/AuthContext';
import { LoginRequired } from 'components/ui/LoginRequired';
import { BackstoryElementProps } from 'components/BackstoryTab';
import { useNavigate } from 'react-router-dom';
import { ComingSoon } from 'components/ui/ComingSoon';
import { useAppState } from 'hooks/GlobalContext';

type CandidateDashboardProps = BackstoryElementProps;

const CandidateDashboard = (_props: CandidateDashboardProps) => {
  const { setSnack } = useAppState();
  const navigate = useNavigate();
  const { user } = useAuth();
  const profileCompletion = 75;

  if (!user) {
    return <LoginRequired asset="candidate dashboard" />;
  }

  if (user?.userType !== 'candidate') {
    setSnack(
      `The page you were on is only available for candidates (you are a ${user.userType}`,
      'warning'
    );
    navigate('/');
    return <></>;
  }

  return (
    <>
      {/* Main Content */}
      <ComingSoon>
        <Box sx={{ flex: 1, p: 3 }}>
          {/* Welcome Section */}
          <Box sx={{ mb: 4 }}>
            <Typography variant="h4" sx={{ mb: 2, fontWeight: 'bold' }}>
              Welcome back, {user.firstName}!
            </Typography>

            <Box sx={{ mb: 2 }}>
              <Typography variant="body1" sx={{ mb: 1 }}>
                Your profile is {profileCompletion}% complete
              </Typography>
              <LinearProgress
                variant="determinate"
                value={profileCompletion}
                sx={{
                  height: 8,
                  borderRadius: 4,
                  backgroundColor: '#e0e0e0',
                  '& .MuiLinearProgress-bar': {
                    backgroundColor: '#4caf50',
                  },
                }}
              />
            </Box>

            <Button
              variant="contained"
              color="primary"
              sx={{ mt: 1 }}
              onClick={e => {
                e.stopPropagation();
                navigate('/candidate/profile');
              }}
            >
              Complete Your Profile
            </Button>
          </Box>

          {/* Cards Grid */}
          <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
            {/* Top Row */}
            <Box sx={{ display: 'flex', gap: 3 }}>
              {/* Resume Builder Card */}
              <Card sx={{ flex: 1, minHeight: 200 }}>
                <CardContent>
                  <Typography variant="h6" sx={{ mb: 2, fontWeight: 'bold' }}>
                    Resume Builder
                  </Typography>

                  <Typography variant="body2" sx={{ mb: 1, color: '#666' }}>
                    3 custom resumes
                  </Typography>

                  <Typography variant="body2" sx={{ mb: 3, color: '#666' }}>
                    Last created: May 15, 2025
                  </Typography>

                  <Button variant="outlined" startIcon={<AddIcon />} fullWidth>
                    Create New
                  </Button>
                </CardContent>
              </Card>

              {/* Recent Activity Card */}
              <Card sx={{ flex: 1, minHeight: 200 }}>
                <CardContent>
                  <Typography variant="h6" sx={{ mb: 2, fontWeight: 'bold' }}>
                    Recent Activity
                  </Typography>

                  <Stack spacing={1} sx={{ mb: 3 }}>
                    <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
                      <VisibilityIcon sx={{ fontSize: 16, color: '#666' }} />
                      <Typography variant="body2">5 profile views</Typography>
                    </Box>

                    <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
                      <DownloadIcon sx={{ fontSize: 16, color: '#666' }} />
                      <Typography variant="body2">2 resume downloads</Typography>
                    </Box>

                    <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
                      <ContactMailIcon sx={{ fontSize: 16, color: '#666' }} />
                      <Typography variant="body2">1 direct contact</Typography>
                    </Box>
                  </Stack>

                  <Button variant="outlined" fullWidth>
                    View All Activity
                  </Button>
                </CardContent>
              </Card>
            </Box>

            {/* Bottom Row */}
            <Box sx={{ display: 'flex', gap: 3 }}>
              {/* Complete Your Backstory Card */}
              <Card sx={{ flex: 1, minHeight: 200 }}>
                <CardContent>
                  <Typography variant="h6" sx={{ mb: 2, fontWeight: 'bold' }}>
                    Complete Your Backstory
                  </Typography>

                  <Stack spacing={1} sx={{ mb: 3 }}>
                    <Typography variant="body2" sx={{ display: 'flex', alignItems: 'center' }}>
                      • Add projects
                    </Typography>
                    <Typography variant="body2" sx={{ display: 'flex', alignItems: 'center' }}>
                      • Detail skills
                    </Typography>
                    <Typography variant="body2" sx={{ display: 'flex', alignItems: 'center' }}>
                      • Work history
                    </Typography>
                  </Stack>

                  <Button variant="outlined" startIcon={<EditIcon />} fullWidth>
                    Edit Backstory
                  </Button>
                </CardContent>
              </Card>

              {/* Improvement Suggestions Card */}
              <Card sx={{ flex: 1, minHeight: 200 }}>
                <CardContent>
                  <Typography variant="h6" sx={{ mb: 2, fontWeight: 'bold' }}>
                    Improvement Suggestions
                  </Typography>

                  <Stack spacing={1} sx={{ mb: 3 }}>
                    <Typography variant="body2" sx={{ display: 'flex', alignItems: 'center' }}>
                      • Add certifications
                    </Typography>
                    <Typography variant="body2" sx={{ display: 'flex', alignItems: 'center' }}>
                      • Enhance your project details
                    </Typography>
                  </Stack>

                  <Button variant="outlined" startIcon={<TipsIcon />} fullWidth>
                    View All Tips
                  </Button>
                </CardContent>
              </Card>
            </Box>
          </Box>
        </Box>
      </ComingSoon>
    </>
  );
};

export { CandidateDashboard };
