entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

problemas al registrar una fecha con mongodb

intento guardar un registro masivo desde un archivo .txt, y ademas un campo de fecha que registre a todos los registros del archivo.txt con la fecha seleccionado por el usuario, pero al registrar se registra con la fecha del dia que se lleva a cabo el registro, alguien sabe como solucionar esto


import { useState } from 'react';
import { Button, Col, Form, Row, Spinner, ProgressBar } from 'react-bootstrap';
import { toast } from 'react-toastify';
import queryString from "query-string";
import { getRazonSocial } from '../../../api/auth';
import { registraMovimientoSaldosSocios2 } from '../../GestionAutomatica/Saldos/Movimientos';
import {obtenerFolioActualRendimientos, registraRendimientosSocios} from "../../../api/rendimientos";

const CargaMasivaRendimientos = ({ setShowModal, history }) => {

  const [loading, setLoading] = useState(false);
  const [dataFile, setDataFile] = useState([]);
  const [count, setCount] = useState(0)

  const handleCancel = () => setShowModal(false)

  const handleSubmit = async (evt) => {
    evt.preventDefault();

    if (dataFile.length === 0) {
      toast.error('No hay datos para cargar');
      return;
    }

    const razonSocial = getRazonSocial();

    setLoading(true);

    for (const { fichaSocio, rendimiento } of dataFile) {
      const responseFolio = await obtenerFolioActualRendimientos();
      const { data: { folio } } = responseFolio;

      const dataRendimiento = {
        folio,
        fichaSocio,
        rendimiento,
        tipo: razonSocial,
      }

      await registraRendimientosSocios(dataRendimiento);
      await registraMovimientoSaldosSocios2(fichaSocio, rendimiento, '0', '0', '0', 'Rendimiento');

      // increment count for render value in progress bar
      setCount(oldCount => oldCount + 1);
    }

    setDataFile([]);
    setLoading(false);

    history.push({
      search: queryString.stringify(''),
    });

    setShowModal(false);

  }

  const handleChange = (e) => {
    const { files } = e.target;

    if (files.length > 0) {
      const [file] = files;

      const reader = new FileReader();
      reader.readAsText(file, 'UTF-8');

      reader.onload = (evt) => {
        const { result } = evt.target;
        const lines = result.split('\r\n');
        const data = lines.map(line => {
          const [fichaSocio, rendimiento] = line.split('\t');

          return { fichaSocio, rendimiento }

        });

        setDataFile(data.filter(({ fichaSocio, rendimiento }) => fichaSocio && rendimiento));
      }

      reader.onerror = (_evt) => toast.error('Error al leer el archivo')

    }
  }

  const Loading = () => (
    !loading ? 'Cargar' : <Spinner animation='border' />
  )

  return (
    <>
      <div className='contenidoFormularioPrincipal'>
        <Form>
          <Form.Group as={Row} className='botones pt-3'>
            <Col sm={12}>
              <div className='flex justify-center'>
                <div className='mb-3 w-96'>
                  <label htmlFor='createdAt' className='form-label inline-block mb-2 text-gray-700'>Seleccione fichero:</label>
                  <input onChange={handleChange} className='form-control block w-full px-3 py-1.5 text-base font-normaltext-gray-700bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none' accept='.txt, text/plain' type='file' id='formFile' />
                  <br/>
                  <label htmlFor='createdAt' className='form-label inline-block mb-2 text-gray-700'>Fecha de registro:</label>
                  <input className='form-control block w-full px-3 py-1.5 text-base font-normaltext-gray-700bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none' type='datetime-local' name="createdAt" id="createdAt"/>
                </div>
              </div>
            </Col>
          </Form.Group>
          {
            dataFile.length > 0 && (<Form.Group as={Row} className='botones pt-4'>
              <Col sm={12}>
                <div className='flex flex-col justify-center'>
                  <div className='mb-3 w-100'>
                    <span className='inline-block mb-2 text-gray-700'>Total de registros a cargar: {dataFile.length}</span>
                  </div>
                  {
                    count > 0 && (<div className='mb-3 w-100'>
                      <span className='flex justify-center mb-2 text-gray-700'>{count} de {dataFile.length}</span>
                      <Form.Group as={Row}>
                        <Col sm={12}>
                          <ProgressBar animated now={count} max={dataFile.length} variant='info' />
                        </Col>
                      </Form.Group>
                    </div>)
                  }
                </div>
              </Col>
            </Form.Group>)
          }

          <Form.Group as={Row} className='botones pt-5'>
            <Col>
              <Button
                type='submit'
                variant='success'
                className='registrar'
                onClick={handleSubmit}
                disabled={loading}
              >
                <Loading />
              </Button>
            </Col>
            <Col>
              <Button
                variant='danger'
                className='cancelar'
                onClick={handleCancel}
                disabled={loading}
              >
                Cancelar
              </Button>
            </Col>
          </Form.Group>
        </Form>
      </div>
    </>
  );
}

export default CargaMasivaRendimientos;

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta