|
|
|
@ -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<IProps> = (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<DTOViajeEstatusSecuencia[]>([]) |
|
|
|
|
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 ( |
|
|
|
|
<div> |
|
|
|
|
<Form.Control |
|
|
|
|
as='select' |
|
|
|
|
onChange={(e) => { |
|
|
|
|
setIDStatus(parseInt(e.target.value)) |
|
|
|
|
changeStatus(e) |
|
|
|
|
}} |
|
|
|
|
onKeyPress={(e) => e.key === 'Enter' && selectedStatus()} |
|
|
|
|
value={IDStatus} |
|
|
|
|
className='form-select form-select-sm dialogLabel' |
|
|
|
|
> |
|
|
|
|
<option value='0'>Pendiente</option> |
|
|
|
|
{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 ( |
|
|
|
|
<option key={row.id} value={row.id}> |
|
|
|
|
<option key={row.estatus} value={row.estatus}> |
|
|
|
|
{row.sEstatus} |
|
|
|
|
</option> |
|
|
|
|
) |
|
|
|
|