From 189c80bd74b6e9394c5426b572745d2382ee0129 Mon Sep 17 00:00:00 2001 From: Al Garcia Date: Mon, 19 Sep 2022 15:15:01 -0500 Subject: [PATCH] Se le agrega el control de los estatus del viaje --- src/Components/Home/Home.tsx | 7 +- src/Components/Operaciones/OpMonitor.tsx | 18 ++++- src/Components/Operaciones/Viaje/Viaje.tsx | 1 + .../Operaciones/Viaje/ViajeEstatus.tsx | 81 ++++++++++++++++--- src/DTOs/Operaciones/DTOChangeTripStatus.ts | 4 + src/DTOs/Operaciones/DTOResultTripStatus.ts | 4 + src/DTOs/Operaciones/DTOViajes.ts | 3 +- src/Services/Operaciones/OpViajes.Services.ts | 37 +++++---- 8 files changed, 122 insertions(+), 33 deletions(-) create mode 100644 src/DTOs/Operaciones/DTOChangeTripStatus.ts create mode 100644 src/DTOs/Operaciones/DTOResultTripStatus.ts diff --git a/src/Components/Home/Home.tsx b/src/Components/Home/Home.tsx index e8c1d1a..7b5bb83 100644 --- a/src/Components/Home/Home.tsx +++ b/src/Components/Home/Home.tsx @@ -35,6 +35,7 @@ export const Home: FC = (props) => { const loadCatalogs = () => { DSCatClientes.Get() .then((response) => { + // console.log(response.data) dispatch(populateCatClientes(response.data)) }) .catch((e: Error) => {}) @@ -58,12 +59,6 @@ export const Home: FC = (props) => { dispatch(populateCatServicios(response.data)) }) .catch((e: Error) => {}) - - DSOpStatusSecuence.GetStatusSecuence() - .then((response) => { - dispatch(populateOpViajesEstatusSecuencia(response.data)) - }) - .catch((e: Error) => {}) } const validateToken = () => { diff --git a/src/Components/Operaciones/OpMonitor.tsx b/src/Components/Operaciones/OpMonitor.tsx index 60a2063..e84b8b8 100644 --- a/src/Components/Operaciones/OpMonitor.tsx +++ b/src/Components/Operaciones/OpMonitor.tsx @@ -7,6 +7,7 @@ import { useDispatch, useSelector } from 'react-redux' import { RootState } from '../../store/store' import DTOOpViajes from '../../DTOs/Operaciones/DTOViajes' import DSOpViajes from '../../Services/Operaciones/OpViajes.Services' +import DSOpStatusSecuence from '../../Services/Operaciones/OpViajes.Services' import { Servicios } from './Viaje/Servicios/Servicios' import { populateOpViajes, updateOpViajes } from '../../store/features/Operaciones/OpViajesSlice' import { Viaje } from './Viaje/Viaje' @@ -16,6 +17,7 @@ import { populateOpViajesServicios, updateOpViajesServicios, } from '../../store/features/Operaciones/OpViajesServiciosSlice' +import { populateOpViajesEstatusSecuencia } from '../../store/features/Operaciones/OpViajes.Estatus.SecuenciaSlice' import { ViajeEstatus } from './Viaje/ViajeEstatus' interface IProps {} @@ -81,9 +83,18 @@ export const OpMonitor: FC = (props) => { } useEffect(() => { + loadStatus() loadTrips() }, []) + const loadStatus = () => { + DSOpStatusSecuence.GetStatusSecuence() + .then((response) => { + dispatch(populateOpViajesEstatusSecuencia(response.data)) + }) + .catch((e: Error) => {}) + } + const loadTrips = () => { DSOpViajes.Get() .then((response) => { @@ -248,7 +259,12 @@ export const OpMonitor: FC = (props) => { style={{ textAlign: 'left' }} className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} > - + = (props) => { tipoOperacion: TipoOperacion, pedimento: Pedimento, max: true, + status: 1, } DSOpViajes.Append(data) .then((response) => { diff --git a/src/Components/Operaciones/Viaje/ViajeEstatus.tsx b/src/Components/Operaciones/Viaje/ViajeEstatus.tsx index b06b937..d3d9d38 100644 --- a/src/Components/Operaciones/Viaje/ViajeEstatus.tsx +++ b/src/Components/Operaciones/Viaje/ViajeEstatus.tsx @@ -1,34 +1,97 @@ -import React, { FC, useState } from 'react' +import React, { FC, useEffect, useState } from 'react' import { Form } from 'react-bootstrap' -import { useSelector } from 'react-redux' +import { useDispatch, useSelector } from 'react-redux' import { RootState } from '../../../store/store' +import DSOpStatusSecuence from '../../../Services/Operaciones/OpViajes.Services' +import { deleteOpViajes, updateOpViajes } from '../../../store/features/Operaciones/OpViajesSlice' +import DTOChangeTripStatus from '../../../DTOs/Operaciones/DTOChangeTripStatus' +import DTOOpViajes from '../../../DTOs/Operaciones/DTOViajes' +import DTOViajeEstatusSecuencia from '../../../DTOs/Operaciones/DTOViajeEstatusSecuencia' +import { setStatus } from '../../../store/features/Auth/UserProfileSlice' +import { SignatureHelpTriggerReason } from 'typescript' interface IProps { IDViaje: number + sCliente: string TipoOperacion: number + Status: number } export const ViajeEstatus: FC = (props) => { + const dispatch = useDispatch() const mTripStatus = useSelector((state: RootState) => state.OpViajesEstatusSecuencia.OpViajesEstatusSecuencia) - const [IDStatus, setIDStatus] = useState(0) + const AllTrips = useSelector((state: RootState) => state.OpViajes.OpViajes) + const [IDStatus, setIDStatus] = useState(props.Status) + const [ListaSecuencia, setListaSecuencia] = useState([]) + const [Secuencia, setSecuencia] = useState(1) + + const changeStatus = (e: any) => { + setIDStatus(parseInt(e.target.value)) + } + + const enlistaSecuenciaViaje = () => { + const Lista: DTOViajeEstatusSecuencia[] = mTripStatus + .filter((row) => row.tipoOperacion === props.TipoOperacion && row.secuencia >= Secuencia) + .sort((a, b) => a.secuencia - b.secuencia) + setListaSecuencia(Lista) + } + + useEffect(() => { + const filtraLista: DTOViajeEstatusSecuencia[] = mTripStatus + .filter((row) => row.estatus === props.Status) + .sort((a, b) => a.secuencia - b.secuencia) + setSecuencia(filtraLista[0] ? filtraLista[0].secuencia : 100) + enlistaSecuenciaViaje() + }, []) + + useEffect(() => { + enlistaSecuenciaViaje() + }, [Secuencia, IDStatus]) + + const selectedStatus = () => { + const data: DTOChangeTripStatus = { + idViaje: props.IDViaje, + idEstatus: IDStatus, + } + DSOpStatusSecuence.ChangeTripStatus(data) + .then((response) => { + const Item: DTOViajeEstatusSecuencia[] = mTripStatus + .filter((row) => row.tipoOperacion === props.TipoOperacion && row.estatus === IDStatus) + .sort((a, b) => a.secuencia - b.secuencia) + alert('A cambiado el estatus del cliente: ' + props.sCliente + ' a : ' + Item[0].sEstatus) + let result = AllTrips.filter((a) => { + if (a.id == props.IDViaje) { + return a + } + }) + const updatedRow: DTOOpViajes = { ...result[0] } + setSecuencia(response.data.secuencia) + updatedRow.status = response.data.secuencia + if (response.data.secuencia !== 100) { + updatedRow.status = response.data.secuencia + dispatch(updateOpViajes(updatedRow)) + } else dispatch(deleteOpViajes(props.IDViaje)) + }) + .catch((e: Error) => {}) + } + return (
{ - setIDStatus(parseInt(e.target.value)) + changeStatus(e) }} + onKeyPress={(e) => e.key === 'Enter' && selectedStatus()} value={IDStatus} className='form-select form-select-sm dialogLabel' > - - {mTripStatus - ? mTripStatus - .filter((row) => row.tipoOperacion === props.TipoOperacion) + {ListaSecuencia && Secuencia + ? ListaSecuencia.filter((row) => row.tipoOperacion === props.TipoOperacion && row.secuencia >= Secuencia) .sort((a, b) => a.secuencia - b.secuencia) .map((row) => { return ( - ) diff --git a/src/DTOs/Operaciones/DTOChangeTripStatus.ts b/src/DTOs/Operaciones/DTOChangeTripStatus.ts new file mode 100644 index 0000000..a8a9edd --- /dev/null +++ b/src/DTOs/Operaciones/DTOChangeTripStatus.ts @@ -0,0 +1,4 @@ +export default interface DTOChangeTripStatus { + idViaje: number, + idEstatus: number +} \ No newline at end of file diff --git a/src/DTOs/Operaciones/DTOResultTripStatus.ts b/src/DTOs/Operaciones/DTOResultTripStatus.ts new file mode 100644 index 0000000..f635029 --- /dev/null +++ b/src/DTOs/Operaciones/DTOResultTripStatus.ts @@ -0,0 +1,4 @@ +export default interface DTOResultTripStatus { + idViaje: number, + secuencia: number +} \ No newline at end of file diff --git a/src/DTOs/Operaciones/DTOViajes.ts b/src/DTOs/Operaciones/DTOViajes.ts index 50ac129..4a74d6d 100644 --- a/src/DTOs/Operaciones/DTOViajes.ts +++ b/src/DTOs/Operaciones/DTOViajes.ts @@ -16,5 +16,6 @@ export default interface DTOOpViajes { sDestino: string, tipoOperacion: number, pedimento: string, - max: boolean + max: boolean, + status: number } \ No newline at end of file diff --git a/src/Services/Operaciones/OpViajes.Services.ts b/src/Services/Operaciones/OpViajes.Services.ts index 5646bf5..85ce973 100644 --- a/src/Services/Operaciones/OpViajes.Services.ts +++ b/src/Services/Operaciones/OpViajes.Services.ts @@ -4,31 +4,36 @@ import IRespuesta from "../../Interfaces/Respuestas/IRespuesta"; import DTOViajesServicios from "../../DTOs/Operaciones/DTOViajesServicios"; import DTOUltimaCaja from "../../DTOs/Operaciones/DTOUltimaCaja"; import DTOViajeEstatusSecuencia from "../../DTOs/Operaciones/DTOViajeEstatusSecuencia"; +import DTOChangeTripStatus from "../../DTOs/Operaciones/DTOChangeTripStatus"; +import DTOResultTripStatus from "../../DTOs/Operaciones/DTOResultTripStatus"; class OpViajesDataService { - Get() { - return http.get("Operaciones/OpViajes/Get"); + async Get() { + return await http.get("Operaciones/OpViajes/Get"); } - GetAllServices() { - return http.get("Operaciones/OpViajes/GetAllServices"); + async GetAllServices() { + return await http.get("Operaciones/OpViajes/GetAllServices"); } - GetLastTrailerBox(idViaje: number) { - return http.get(`Operaciones/OpViajes/GetLastTrailerBox?idViaje=${idViaje}`); + async GetLastTrailerBox(idViaje: number) { + return await http.get(`Operaciones/OpViajes/GetLastTrailerBox?idViaje=${idViaje}`); } - GetStatusSecuence() { - return http.get(`Operaciones/OpViajes/GetStatusSecuence`); + async GetStatusSecuence() { + return await http.get(`Operaciones/OpViajes/GetStatusSecuence`); } - Append(data: DTOViajes) { - return http.post(`Operaciones/OpViajes/Append`,data); + async ChangeTripStatus(data: DTOChangeTripStatus) { + return await http.put(`Operaciones/OpViajes/ChangeTripStatus/${data.idViaje}`, data); } - AppendServices(data: DTOViajesServicios) { - return http.post(`Operaciones/OpViajes/AppendService`,data); + async Append(data: DTOViajes) { + return await http.post(`Operaciones/OpViajes/Append`,data); } - Delete(id: number) { - return http.delete(`Operaciones/OpViajes/Delete/${id}`); + async AppendServices(data: DTOViajesServicios) { + return await http.post(`Operaciones/OpViajes/AppendService`,data); } - DeleteService(id: number) { - return http.delete(`Operaciones/OpViajes/DeleteService/${id}`); + async Delete(id: number) { + return await http.delete(`Operaciones/OpViajes/Delete/${id}`); + } + async DeleteService(id: number) { + return await http.delete(`Operaciones/OpViajes/DeleteService/${id}`); } } export default new OpViajesDataService(); \ No newline at end of file