function errorResponse(error: string, status = 400): Response { return new Response(JSON.stringify({ error }), { headers: { "content-type": "application/json", }, status, }); } export default function ( selectedDepartments: string[], end: any, reason: any, start: any, userDepartments?: string[], ): void | Response { if (!userDepartments) return errorResponse("Not part of any departments", 403); if ( !Array.isArray(selectedDepartments) || !selectedDepartments.length || typeof end !== "string" || typeof reason !== "string" || typeof start !== "string" ) return errorResponse("Invalid notice"); if (!selectedDepartments.every((dept) => userDepartments.includes(dept))) return errorResponse( "Cannot file an inactivity notice in a department you are not part of", 403, ); const endDate = new Date(end); const now = new Date(); const startDate = new Date(start); if ( isNaN(endDate.getFullYear()) || isNaN(startDate.getFullYear()) || endDate.getFullYear() < now.getFullYear() || endDate.getFullYear() > now.getFullYear() + 1 || startDate.getFullYear() < now.getFullYear() || startDate.getFullYear() > now.getFullYear() + 1 || endDate.valueOf() < startDate.valueOf() ) return errorResponse("Dates are invalid"); }