solicitudes.js
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { merge, mergeAll, filter, contains, mergeDeepRight } from 'ramda'
import {
SOLICITUDES_REQUESTED,
SOLICITUDES_RECEIVED,
SOLICITUDES_FAILED,
VER_DETALLE_SOLICITUD,
FLUJOS_RECEIVED, FLUJOS_REQUESTED,
SOLICITUD_POST_SUCCESS,
SOLICITUD_POST_FAILED,
SOLICITUD_POSTED,
CAMBIAR_PAGINA_SOLICITUD,
CAMBIAR_BUSQUEDA_SOLICITUD
} from '../actions/solicitudes'
import { ESTADOS_SOLICITUDES } from '../../constants'
const solicitudes = {
data: {},
own: [],
current: null,
loading: false,
error: null,
pendientes: {
title: 'PENDIENTES', data: []
},
finalizadas: {
title: 'FINALIZADAS', data: []
},
flujos: {
loading: true,
datos: null
},
post: { loading: false, error: null, result: null },
busqueda: { page: 1, by_titulo: '', by_usuario: '' },
pages: { totalPages: 0, totalCount: 0 }
}
const esPendiente = (solicitud) =>
contains(
solicitud.estado.nombre,
ESTADOS_SOLICITUDES.pendientes)
const esFinal = (solicitud) => contains(
solicitud.estado.nombre,
ESTADOS_SOLICITUDES.finalizados)
const receive = (data) => ({
data,
pendientes: {
title: 'PENDIENTES',
data: filter(esPendiente, data)
},
finalizadas: {
title: 'FINALIZADAS',
data: filter(esFinal, data)
}
})
export default (state, action) => {
switch (action.type) {
case SOLICITUDES_REQUESTED:
return merge(state, { loading: true })
case VER_DETALLE_SOLICITUD:
return merge(state, { current: action.solicitud })
case SOLICITUDES_RECEIVED:
return mergeAll([
state,
{ pages: action.pages },
{ loading: false },
receive(action.solicitudes)])
case SOLICITUDES_FAILED:
return mergeAll([
state,
{ loading: false },
{ error: action.error }])
case FLUJOS_REQUESTED:
return merge(state, { flujos: { loading: true } })
case FLUJOS_RECEIVED:
return merge(state, { flujos: { loading: false, datos: action.flujos } })
case SOLICITUD_POST_SUCCESS:
return merge(state, { post: { loading: false, error: null, result: action.result } })
case SOLICITUD_POSTED:
return merge(state, { post: { loading: true, error: null, result: null } })
case SOLICITUD_POST_FAILED:
return merge(state, { post: { loading: false, error: action.error, result: null } })
case CAMBIAR_BUSQUEDA_SOLICITUD:
case CAMBIAR_PAGINA_SOLICITUD:
return mergeDeepRight(state, { busqueda: action.busqueda })
default:
return state || solicitudes
}
}