import React, { useEffect, useState, useRef } from 'react';
import { InputText } from 'primereact/inputtext';
import { Button } from 'primereact/button';
import { InputTextarea } from 'primereact/inputtextarea';
import { useCookies } from "react-cookie";
import { DataTable } from 'primereact/datatable';
import { Column } from 'primereact/column';
import { Toast } from 'primereact/toast';
import { Dialog } from 'primereact/dialog';
import { Toolbar } from 'primereact/toolbar';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faHome, faUserAlt } from '@fortawesome/free-solid-svg-icons';
import { faCommentAlt } from '@fortawesome/free-solid-svg-icons';
import { faEllipsis } from '@fortawesome/free-solid-svg-icons';
import classNames from 'classnames';

const RegistroComunicado = () => {

  let emptyComunicado = {
    _id: null,
    post: '',
    user_id: '',
    community_id: ''
  };

  useEffect(() => {
    listaComunis();
  }, [])


  const [comunicado, setComunicado] = useState(emptyComunicado);
  const [comunicados, setComunicados] = useState([]);
  const [comunicadoId, setComunicadoId] = useState(null);
  const [submitted, setSubmitted] = useState(false);
  const toast = useRef(null);
  const dt = useRef(null);
  const [cookies, setCookie] = useCookies();
  const [globalFilter, setGlobalFilter] = useState(null);

  async function listaComunis() {
    let comunicadosA = await fetch('http://localhost:4000/post/allPosts', { method: 'GET' });
    let comunicadosRes = await comunicadosA.json();
    setComunicados(comunicadosRes.message);
    console.log(comunicadosRes.message);
  }


  const saveComunicado = () => {
    var data = {
      post: document.getElementById('txt_comunicado').value,
      user_id: cookies.id,
      community_id: cookies.community_id
    };

    fetch('http://localhost:4000/post/createPost', {
      cache: 'no-cache',
      method: 'POST',
      body: JSON.stringify(data),
      headers: {
        'Content-Type': 'application/json'
      }
    })
      .then(
        function(response) {
          if (response.status != 201)
            console.log('Ocurrió un error con el servicio: ' + response.status);
          else
            return response.json();
        }
      )
      .then(
        function(response) {

        }
      )
      .catch(
        err => console.log('Ocurrió un error con el fetch', err)
      );
  }

  const header = (
    <React.Fragment>

      <div className="flex flex-column md:flex-row md:justify-content-between md:align-items-center">
        <h5 className="m-0">Comunicados de la comunidad</h5>
        <span className="block mt-2 md:mt-0 p-input-icon-left">
          <i className="pi pi-search" />
          <InputText type="search" onInput={(e) => setGlobalFilter(e.target.value)} placeholder="Buscar..." />
        </span>
      </div>
    </React.Fragment>
  );
  const headerPost = (
    <>
      <p>
        {' '}
        <FontAwesomeIcon icon={faCommentAlt} style={{ color: "#D7A86E" }} />{' '}
      Descripción comunicado</p>
    </>
  )

  const leftToolbarTemplate = () => {
    return (
      <React.Fragment>
        <div className="my-2">
          <Button label="Eliminar" icon="pi pi-trash" className="p-button-danger" />
        </div>
      </React.Fragment>
    )
  }

  const rightToolbarTemplate = () => {
    return (
      <React.Fragment>
        <Button label="Exportar" icon="pi pi-upload" className="p-button-help" />
      </React.Fragment>
    )
  }

  return (
    <div className="grid">
      <div className="col-12">
        <Toast ref={toast} />
        <div className="card">
          <Toolbar className="mb-4" left={leftToolbarTemplate} right={rightToolbarTemplate}></Toolbar>
          <DataTable ref={dt} value={comunicados} dataKey="_id" paginator rows={5}
            scrollable scrollHeight="400px" scrollDirection="both" header={header}
            rowsPerPageOptions={[5, 10, 25]} className="datatable-responsive mt-3"
            paginatorTemplate="FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink CurrentPageReport RowsPerPageDropdown"
            currentPageReportTemplate="Mostrando {first} a {last} de {totalRecords} administradores de comunidades de viviendas"
            globalFilter={globalFilter} emptyMessage="No hay administradores de comunidades registrados.">
            <Column selectionMode="multiple" headerStyle={{ width: '3rem' }}></Column>
            <Column field="post" sortable header={headerPost} style={{ flexGrow: 1, flexBasis: '160px', minWidth: '160px', wordBreak: 'break-word' }}></Column>

          </DataTable>
        </div>
      </div>
      <div className="col-12">
        <div className="card">
          <h5>Registro de un comunicado para la comunidad</h5>
          <div className="p-fluid formgrid grid">
            <div className="field col-12 md:col-12">
              <label htmlFor="name">Contenido del comunicado</label>
              <div className="p-0 col-12 md:col-12">
                <div className="p-inputgroup">
                  <span className="p-inputgroup-addon p-button p-icon-input-khaki">
                    <i className="pi pi-pencil"></i>
                  </span>
                  <InputTextarea id="txt_comunicado" rows="4" />
                </div>
              </div>
            </div>
            <Button label="Registrar" onClick={saveComunicado} />
          </div>
        </div>
      </div>
    </div>
  );
};

export default React.memo(RegistroComunicado);