Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16259 | Rev 16264 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
16255 stevensc 1
import React, { useState, useEffect } from "react";
16253 stevensc 2
import { axios } from "../../../../utils";
3
import { useDispatch } from "react-redux";
16254 stevensc 4
import { useForm } from "react-hook-form";
16256 stevensc 5
import { Modal } from "@mui/material";
6
import Datetime from "react-datetime";
16253 stevensc 7
 
16256 stevensc 8
import FormErrorFeedback from "../../../../shared/form-error-feedback/FormErrorFeedback";
9
 
16253 stevensc 10
const ConferenceModal = ({
11
  show = false,
12
  timezones = {},
13
  zoomUrl = "",
14
  onCreate = () => null,
15
}) => {
16
  const dt = new Date();
16261 stevensc 17
 
16253 stevensc 18
  const { handleSubmit, register, errors, reset } = useForm({ mode: "all" });
19
  const [date, setDate] = useState({
20
    year: dt.toLocaleString("default", { year: "numeric" }),
21
    month: dt.toLocaleString("default", { month: "2-digit" }),
22
    day: dt.toLocaleString("default", { day: "2-digit" }),
23
  });
24
  const [time, setTime] = useState(
25
    dt.toLocaleString("es", {
26
      hour: "numeric",
27
      minute: "2-digit",
28
      second: "2-digit",
29
    })
30
  );
31
  const [coferenceType, setConferenceType] = useState(1);
32
  const [isShow, setIsShow] = useState(show);
16259 stevensc 33
  const dispatch = useDispatch();
16253 stevensc 34
 
16261 stevensc 35
  const closeModal = () => {
36
    setIsShow(false);
37
  };
16253 stevensc 38
 
16261 stevensc 39
  const handleChange = (value) => {
40
    setConferenceType(value);
41
  };
16253 stevensc 42
 
43
  const handleDateTime = (value) => {
44
    setDate({
45
      ...date,
46
      year: new Intl.DateTimeFormat("es", { year: "numeric" }).format(value),
47
      month: new Intl.DateTimeFormat("es", { month: "2-digit" }).format(value),
48
      day: new Intl.DateTimeFormat("es", { day: "2-digit" }).format(value),
49
    });
50
    setTime(
51
      new Intl.DateTimeFormat("es", {
52
        hour: "numeric",
53
        minute: "2-digit",
54
        second: "numeric",
55
      }).format(value)
56
    );
57
  };
58
 
59
  const onSubmit = async (data) => {
60
    try {
61
      const formData = new FormData();
62
 
63
      Object.entries(data).forEach(([key, value]) =>
64
        formData.append(key, value)
65
      );
66
      formData.append("date", `${date.year}-${date.month}-${date.day}`);
67
      formData.append("time", time);
68
 
69
      const { data: response } = await axios.post(zoomUrl, formData);
70
 
71
      if (!response.success && typeof response.data === "string") {
72
        dispatch(addNotification({ msg: response.data, style: "danger" }));
73
        return;
74
      }
75
 
76
      if (!response.success && typeof response.data === "object") {
77
        Object.entries(response.data).forEach(([key, value]) => {
78
          dispatch(
79
            addNotification({ msg: `${key}: ${value[0]}`, style: "danger" })
80
          );
81
        });
82
        return;
83
      }
84
 
85
      dispatch(addNotification({ msg: response.data, style: "success" }));
86
      onCreate();
87
      reset();
88
    } catch (error) {
89
      console.log(`Error: ${error.message}`);
90
      return dispatch(
91
        addNotification({ msg: "Ha ocurrido un error", style: "danger" })
92
      );
93
    }
94
  };
95
 
16261 stevensc 96
  useEffect(() => {
97
    setIsShow(show);
98
  }, [show]);
99
 
16253 stevensc 100
  return (
101
    <Modal show={isShow} onHide={closeModal}>
102
      <Modal.Header closeButton>
103
        <Modal.Title>Crear Conferencia</Modal.Title>
104
      </Modal.Header>
16261 stevensc 105
      <Modal.Body></Modal.Body>
16253 stevensc 106
    </Modal>
107
  );
108
};
109
 
110
export default ConferenceModal;