"use client"
import React, { ChangeEvent, SyntheticEvent, useState, useEffect } from 'react'
import CommonCardHeader from "@/CommonComponent/CommonCardHeader";
import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
import { CKEditor } from '@ckeditor/ckeditor5-react';
import Link from "next/link";
import { useAppSelector } from "@/Redux/Hooks";
import {
    Button,
    Card,
    CardBody,
    Col,
    Container,
    Form,
    FormGroup,
    Input,
    Label,
    Row,
} from "reactstrap";
import { useRouter, useParams } from 'next/navigation';
import Select from "react-select"
import logo from '../../../../../../../public/assets/images/logo/04.png'
import { toast } from 'react-toastify';
import DataService from '@/Config/Axios';
import Breadcrumbs from '@/CommonComponent/Breadcrumbs';
import { getEngBody, getPortugueseBody, getSpanishBody, getfrenchBody } from '@/Data/Application/Invoices/InvoicesDataSource';

interface EmailTemplateData {
    subject: string;
    content: string;
    language: string;
    level: string;
    // Add other fields as necessary
}

const Page = () => {
    const router = useRouter();
    const { id } = useParams();
    const [data, setData] = useState<EmailTemplateData | null>(null);
    const { i18LangStatus } = useAppSelector((state) => state.langSlice);
    const [editorText, setEditorText] = useState('')
    const asdf = `<!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Kap Collect</title>
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
        <link
          href="https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;600;700;800;900&display=swap"
          rel="stylesheet"
        />
        <style>
        .main-body {
            width: 800px;
            margin: auto;
            text-decoration: none;
            color: black;
          }
          .body-wrapper {
            // width: 800px;
            margin: auto;
          }
          .container {
            margin: auto;
            background-color: white;
            font-size: 14px;
            color: #051a1a;
            line-height: 1.5rem;
            padding: 20px;
            width: 80%;
          }
    
          h1,
          h2,
          h3,
          h4,
          h5,
          h6,
          p,
          div,
          * {
            margin: 0;
            font-family: "Rubik", sans-serif;
            font-weight: 400;
          }
          .name,
          th {
            font-weight: 500;
          }
          table,
          th,
          td {
            border: 1px solid black;
            border-collapse: collapse;
          }
          table {
            text-align: center;
            width: 100%;
          }
          .header > img {
            margin: auto !important;
          }
          .header {
            width: 100%;
            padding: 10px;
            display: flex;
            justify-content: center !important;
          }
          .footer-wrap {
            background-color: black;
            padding: 20px;
            padding-bottom: 25px;
            text-align: center;
          }
          .footer-wrap > p {
            color: rgb(160, 160, 160) !important;
          }
          .smallText {
            font-size: 10px;
            color: rgb(160, 160, 160) !important;
          }
          .login-button {
            background-color: #016666;
            border-radius: 5px;
            color: white;
            padding: 8px 15px;
            border: none;
          }
          a {
            text-decoration: none !important;
            color: rgb(160, 160, 160) !important;
          }
        </style>
      </head>
    
      <body class='main-body'>
        <div class="body-wrapper">
          <header class="header">
            <img
              style="margin: auto !important"
              width="300px"
              height="80px"
              src=${logo.src}
              alt=""
            />
          </header>
          <main class="container">
       ${data?.language === 'french' ?
            getfrenchBody(editorText) :
            data?.language === 'portuguese' ?
                getPortugueseBody(editorText) :
                data?.language === 'spanish' ?
                    getSpanishBody(editorText) :
                    getEngBody(editorText)
        }
        </main>
        <footer class="footer-wrap">
          <p style="line-height: 2; color: #016666 !important; font-weight: 700">
            KapCollect Inc.
          </p>
  
          <p class="smallText">1234 Collection Avenue</p>
          <p class="smallText">Suite 567</p>
          <p class="smallText">City, State, ZIP Code</p>
          <p class="smallText">info@kapcollect.com</p>
          <p class="smallText">© 2024 KapCollect Inc. All rights reserved.</p>
        </footer>
      </div>
    </body>
  </html>
    `
    const handleSubmit = async (e: SyntheticEvent) => {
        e.preventDefault();
        console.log(data)
        try {
            const response = await DataService.post(`/ email - templates / update / ${id} `, data)
            if (response.data.status) {
                toast.success(response.data.message)
            }
        } catch (error: any) {
            toast.error(error.response.data.message)
        }
        // router.push(`/ ${ i18LangStatus } /email`);
    };
    const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
        const { name, value } = event.target;
        setData({
            ...data,
            [name]: value
        } as EmailTemplateData)
    }
    useEffect(() => {
        if (data) {
            setData({ ...data, content: editorText });
        }
    }, [editorText])

    const fetchData = async () => {
        try {
            const response = await DataService.post(`/email-templates/${id}`);
            if (response.data.status) {
                setData(response.data.data);
            }
        } catch (error: any) {
            toast.error(error.response.data.message);
        }
    };
    useEffect(() => {
        fetchData();
    }, []);
    console.log(data, "Data")
    return (
        <Container fluid>
            <div className='my-3'>
                <Breadcrumbs pageTitle="Edit" parent='Email Templates' />
            </div>
            <Row>
                <Col sm={6}>
                    <Card>
                        <CardBody>
                            <Form className="theme-form" onSubmit={handleSubmit}>
                                <Row>
                                    {/* <Col sm="6">
                                <FormGroup>
                                    <Label check>
                                        Name<span className="text-danger">*</span>
                                    </Label>
                                    <Input
                                        disabled
                                        onChange={handleChange}
                                        name="name"
                                        type="text"
                                        className="form-control"
                                        placeholder={"Name"}
                                        value={data.name}
                                    />
                                </FormGroup>
                            </Col> */}

                                    <Col sm="3">
                                        <FormGroup>
                                            <Label check>
                                                Language<span className="text-danger">*</span>
                                            </Label>
                                        </FormGroup>
                                    </Col>
                                    <Col sm="3">
                                        <span className='text-capitalize'>{data?.language}</span>
                                    </Col>
                                    <Col sm="3">
                                        <FormGroup>
                                            <Label check>
                                                Level<span className="text-danger">*</span>
                                            </Label>
                                        </FormGroup>
                                    </Col>
                                    <Col sm="3">
                                        <span>{data?.level}</span>
                                    </Col>
                                    <Col sm="12">
                                        <FormGroup>
                                            <Label check>
                                                Subject<span className="text-danger">*</span>
                                            </Label>
                                            <Input
                                                onChange={handleChange}
                                                name="subject"
                                                type='text'
                                                placeholder={"Subject"}
                                                className="form-control"
                                                value={data?.subject}
                                            />
                                        </FormGroup>
                                    </Col>
                                    <Col sm="12">
                                        <FormGroup>
                                            <Label check>
                                                Reminder Level
                                                <span className="text-danger">*</span>
                                            </Label>
                                            <CKEditor
                                                editor={ClassicEditor}
                                                config={{
                                                    removePlugins: ['PasteFromOffice'],
                                                    clipboard: {
                                                        removeStyles: true
                                                    }
                                                }}
                                                data={data?.content ?? ''}
                                                onChange={(event: any, editor: any) => {
                                                    const editordata = editor.getData();
                                                    setEditorText(editordata)
                                                    console.log({ event, editor, data });
                                                }} />
                                        </FormGroup>
                                    </Col>
                                </Row>
                                <Row>
                                    <Col>
                                        <div className="text-end">
                                            <Button
                                                type="submit"
                                                color="primary"
                                                className="me-3"
                                            >
                                                Add
                                            </Button>
                                            <Link
                                                href={`/${i18LangStatus}/email`}
                                                className="btn btn-outline-primary"
                                            >
                                                Cancel
                                            </Link>
                                        </div>
                                    </Col>
                                </Row>
                            </Form>
                        </CardBody>
                    </Card>
                </Col>
                <Col sm={6}>
                    <div style={{ marginTop: '10px', background: 'white' }} className='rounded' dangerouslySetInnerHTML={{ __html: asdf }}>
                    </div>
                </Col>
            </Row>

        </Container>
    )
}

export default Page