import { useState } from 'react';
import { post } from '@/api1/apiUtils';
import toast from 'react-hot-toast';
import LayoutWrapper from '@/components/Layout/LayOutWrapper';
import Head from 'next/head';

function App() {
    const [formData, setFormData] = useState({
        name: '',
        email: '',
        password: '',
        cnfPassword: ''
    });

    const [formErrors, setFormErrors] = useState({
        name: '',
        email: '',
        password: '',
        cnfPassword: ''
    });

    const handleChange = (e: any) => {
        const { name, value } = e.target;
        setFormData(prevState => ({
            ...prevState,
            [name]: value
        }));
    };

    const validateForm = () => {
        let valid = true;
        const errors = {
            name: '',
            email: '',
            password: '',
            cnfPassword: ''
        };

        // Name validation
        if (formData.name.trim() === '') {
            errors.name = 'Name is required';
            valid = false;
        }

        // Email validation
        if (!formData.email.match(/^([\w.%+-]+)@([\w-]+\.)+([\w]{2,})$/i)) {
            errors.email = 'Invalid email address';
            valid = false;
        }

        // Password validation
        if (formData.password.length < 8) {
            errors.password = 'Password must be at least 8 characters long';
            valid = false;
        }

        // Confirm Password validation
        if (formData.password !== formData.cnfPassword) {
            errors.cnfPassword = 'Passwords do not match';
            valid = false;
        }

        setFormErrors(errors);
        return valid;
    };

    const handleSubmit = async (e: any) => {
        e.preventDefault();

        if (validateForm()) {
            try {
                const res = await post('/register', {
                    name: formData.name,
                    email: formData.email,
                    password: formData.password,
                });

                if (res?.user?.id) {
                    toast.success(res?.message);
                }

                // Reset form
                setFormData({
                    name: '',
                    email: '',
                    password: '',
                    cnfPassword: ''
                });
            } catch (err: any) {
                console.log(err);
                toast.error(err?.response?.data?.message);
            }
        } else {
            console.error('Form has errors. Cannot submit.');
        }
    };

    return (
        <>
            <Head>
                <title>Register - ayodhyas</title>
                <meta name="description" content="Register to ayodhyas to access your personalized dashboard and services." />
                <meta name="keywords" content="ayodhyas, Register, User Dashboard, Access, Authentication" />
                <meta name="robots" content="index, follow" />
                <meta name="viewport" content="width=device-width, initial-scale=1.0" />

                {/* Open Graph (OG) Meta Tags for Social Sharing */}
                <meta property="og:title" content="Register - ayodhyas" />
                <meta property="og:description" content="Register to ayodhyas to access your personalized dashboard and services." />
                <meta property="og:url" content="https://ayodhyas.com/register" />
                <meta property="og:type" content="website" />
            </Head>
            <LayoutWrapper>
                <div className="banner-main-szvw-1">

                    <div className="lg-page">




                        <div className="container d-flex justify-content-center align-items-center login-card-outer" style={{ minHeight: '100vh' }}>
                            {/* <div className="p-5 bg-image" style={{ backgroundImage: 'url(https://mdbootstrap.com/img/new/textures/full/171.jpg)', height: '300px' }}></div> */}
                            <div className="card mb-5 shadow-lg " style={{ maxWidth: "450px", width: '100%', marginTop: '0px' }}>
                                <div className="card-body p-4 text-center">
                                    <h2 className="fw-bold mb-4">Register Here</h2>
                                    <form>
                                        {/* Name Input */}
                                        <div className="form-group mb-3">
                                            <input
                                                type="text"
                                                className={`form-control ${formErrors.name ? 'is-invalid' : ''}`}
                                                placeholder="Full name"
                                                name="name"
                                                value={formData.name}
                                                onChange={handleChange}
                                            />
                                            {formErrors.name && <div className="invalid-feedback">{formErrors.name}</div>}
                                        </div>

                                        {/* Email Input */}
                                        <div className="form-group mb-3">
                                            <input
                                                type="email"
                                                className={`form-control ${formErrors.email ? 'is-invalid' : ''}`}
                                                placeholder="Email"
                                                name="email"
                                                value={formData.email}
                                                onChange={handleChange}
                                            />
                                            {formErrors.email && <div className="invalid-feedback">{formErrors.email}</div>}
                                        </div>

                                        {/* Password Input */}
                                        <div className="form-group mb-3">
                                            <input
                                                type="password"
                                                className={`form-control ${formErrors.password ? 'is-invalid' : ''}`}
                                                placeholder="Password"
                                                name="password"
                                                value={formData.password}
                                                onChange={handleChange}
                                            />
                                            {formErrors.password && <div className="invalid-feedback">{formErrors.password}</div>}
                                        </div>

                                        {/* Confirm Password Input */}
                                        <div className="form-group mb-4">
                                            <input
                                                type="password"
                                                className={`form-control ${formErrors.cnfPassword ? 'is-invalid' : ''}`}
                                                placeholder="Confirm Password"
                                                name="cnfPassword"
                                                value={formData.cnfPassword}
                                                onChange={handleChange}
                                            />
                                            {formErrors.cnfPassword && <div className="invalid-feedback">{formErrors.cnfPassword}</div>}
                                        </div>

                                        <button type="submit" className="btn btn-primary rental-frm-btns w-50" onClick={handleSubmit}>Sign Up</button>

                                        {/* Social Sign Up Buttons */}
                                        <div className="mt-4">
                                            <p>Already have an account? <a href='/login' style={{ textDecoration: "underline", color: "blue" }}>Login</a></p>
                                            {/* <div className="d-flex justify-content-center">
                                    <button className="btn btn-link p-0 mx-2">
                                        <i className="bi bi-facebook" style={{ fontSize: '1.5rem', color: '#3b5998' }}></i>
                                    </button>
                                    <button className="btn btn-link p-0 mx-2">
                                        <i className="bi bi-twitter" style={{ fontSize: '1.5rem', color: '#1DA1F2' }}></i>
                                    </button>
                                    <button className="btn btn-link p-0 mx-2">
                                        <i className="bi bi-google" style={{ fontSize: '1.5rem', color: '#db4a39' }}></i>
                                    </button>
                                    <button className="btn btn-link p-0 mx-2">
                                        <i className="bi bi-github" style={{ fontSize: '1.5rem', color: '#333' }}></i>
                                    </button>
                                </div> */}
                                        </div>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </LayoutWrapper>
        </>
    );
}

export default App;
