1
1
import socketEmission from '../services/websocket' ;
2
+ /* eslint-disable no-else-return */
2
3
import {
3
4
onewayTripService ,
5
+ createTripService ,
4
6
showManagerPendingAppr ,
5
7
showUsertravelsStatus ,
6
8
approveTravel ,
9
+ mostTraveled ,
10
+ editOpenRequests ,
11
+ checkApprovalStatus
7
12
} from '../services/travelServices' ;
13
+
8
14
import { findUserByEmail } from '../services/authServices' ;
9
15
import { successResponseWithData , errorResponse } from '../utils/response' ;
10
16
import sendVerificationEmail from '../utils/email' ;
@@ -14,7 +20,7 @@ import statusCode from '../utils/statusCode';
14
20
15
21
const { emission } = socketEmission ;
16
22
17
- export const createOneWayTrip = async ( req , res ) => {
23
+ const createOneWayTrip = async ( req , res ) => {
18
24
try {
19
25
const user = await findUserByEmail ( req . userData . email ) ;
20
26
const { id, email, dept_id } = user . dataValues ;
@@ -46,7 +52,31 @@ export const createOneWayTrip = async(req, res) => {
46
52
}
47
53
} ;
48
54
49
- export const pendingManagerApproval = async ( req , res ) => {
55
+ const createReturnTrip = async ( req , res ) => {
56
+ try {
57
+ const user = await findUserByEmail ( req . userData . email ) ;
58
+ const { id, dept_id } = user . dataValues ;
59
+
60
+ const travelRequestData = {
61
+ user_id : id ,
62
+ dept_id,
63
+ ...req . body
64
+ } ;
65
+
66
+ const createdReturnTripData = await createTripService ( travelRequestData ) ;
67
+
68
+ successResponseWithData (
69
+ res ,
70
+ statusCode . created ,
71
+ message . returnTripCreated ,
72
+ createdReturnTripData
73
+ ) ;
74
+ } catch ( err ) {
75
+ errorResponse ( res , err . statusCode || statusCode . serverError , err ) ;
76
+ }
77
+ } ;
78
+
79
+ const pendingManagerApproval = async ( req , res ) => {
50
80
const { role } = req . userData ;
51
81
52
82
const { manager } = req . params ;
@@ -73,7 +103,7 @@ export const pendingManagerApproval = async(req, res) => {
73
103
}
74
104
} ;
75
105
76
- export const getUserTravelStatus = async ( req , res ) => {
106
+ const getUserTravelStatus = async ( req , res ) => {
77
107
const { role, id } = req . userData ;
78
108
79
109
if ( role === 'manager' ) {
@@ -92,7 +122,9 @@ export const getUserTravelStatus = async(req, res) => {
92
122
}
93
123
} ;
94
124
95
- export const approveTravelRequest = async ( req , res ) => {
125
+ const approveTravelRequest = async ( req , res ) => {
126
+ const { role, id } = req . userData ;
127
+
96
128
try {
97
129
const updatedTravel = await approveTravel ( req . params . travel_id ) ;
98
130
@@ -104,5 +136,54 @@ export const approveTravelRequest = async(req, res) => {
104
136
) ;
105
137
} catch ( err ) {
106
138
errorResponse ( res , statusCode . serverError , err ) ;
139
+ if ( role === 'admin' ) {
140
+ return errorResponse ( res , statusCode . unauthorized , message . unauthorized ) ;
141
+ } else {
142
+ try {
143
+ const data = await showUsertravelsStatus ( id ) ;
144
+ return successResponseWithData ( res , statusCode . success , message . userApproval , data ) ;
145
+ } catch ( error ) {
146
+ errorResponse ( res , statusCode . serverError , error ) ;
147
+ }
148
+ }
107
149
}
108
150
} ;
151
+
152
+ const userCanEditOpenRequest = async ( req , res ) => {
153
+ const { travel_id } = req . params ;
154
+
155
+ const userId = req . userData . id ;
156
+
157
+ try {
158
+ const result = await checkApprovalStatus ( travel_id , userId ) ;
159
+
160
+ if ( result [ 0 ] . approval_status !== 'pending' ) {
161
+ errorResponse ( res , statusCode . badRequest , message . requestNotOpen ) ;
162
+ }
163
+
164
+ const updatedRequest = await editOpenRequests ( req . body , userId , travel_id ) ;
165
+
166
+ successResponseWithData ( res , statusCode . success , message . requestUpdated , updatedRequest [ 1 ] [ 0 ] ) ;
167
+ } catch ( err ) {
168
+ errorResponse ( res , statusCode . serverError , err ) ;
169
+ }
170
+ } ;
171
+
172
+ const mostTravelledDest = async ( req , res ) => {
173
+ try {
174
+ const travelled = await mostTraveled ( ) ;
175
+ successResponseWithData ( res , statusCode . success , message . oneWayTripCreated , travelled ) ;
176
+ } catch ( error ) {
177
+ errorResponse ( res , statusCode . serverError , error ) ;
178
+ }
179
+ } ;
180
+
181
+ export {
182
+ createOneWayTrip ,
183
+ createReturnTrip ,
184
+ pendingManagerApproval ,
185
+ getUserTravelStatus ,
186
+ approveTravelRequest ,
187
+ userCanEditOpenRequest ,
188
+ mostTravelledDest
189
+ } ;
0 commit comments