agmission/Development/server/routes/upload_job.js

118 lines
4.1 KiB
JavaScript

module.exports = function (app) {
const router = require('express').Router(),
uploadJobCtl = require('../controllers/upload_job')(app),
{ checkRqPkgSubscription } = require('../middlewares/app_validator');
/**
* @api {post} /imports/uploadJob Upload Job items, data or both
* @apiVersion 1.2.1
* @apiName PostImportsUploadJob
* @apiGroup Imports
* @apiDescription Upload the file then update given Job with items, data files. Supported files: zip (AgNav or ESRI shape), kml/kml. Upload uses HTTP MultiPart form data encoding type.
* @apiParam {Integer} jobId Job Id
* @apiParam {Integer} updateOp Job update type. For aircraft users, value of 1 is normally always be used.
*
* 1: Only import data files
*
* 2: Append found items to job items
*
* 3: Override job items with the found items
*
* @apiParam name Field name for the file in Multipart. Value must always be "jobs[]"
* @apiSuccessExample {json} Success
* HTTP/1.1 200 OK
* @apiuse JobNotFoundError
* @apiuse WrongJobFileError
* @apiuse JobNotAssignedError
*/
router.post('/uploadJob', uploadJobCtl.uploadJob_post);
/**
* Handle uploading Job areas/data files from a multi-part request
*/
router.post('/uploadData', uploadJobCtl.uploadData_post);
router.post('/cancelImport', uploadJobCtl.cancelImport_post);
/**
* Handle uploading areas files (from a multi-part request) to add Areas from files to the Client's library
* @param ops options in structure:
* {
* clientId: [applicattor Id], // Optional when readOnly = true
* readOnly: [boolean], // Read the areas then return only, not store into db or other processing.
* }
**/
router.post('/uploadAreas', checkRqPkgSubscription, uploadJobCtl.uploadAreas_post);
/**
* @api {post} /imports/parseSatLocLog Parse SatLoc Binary Log File
* @apiVersion 1.0.0
* @apiName PostImportsParseSatLocLog
* @apiGroup Imports
* @apiDescription Parse a SatLoc binary log file (.log) and extract application data records
* @apiParam {String} filePath Absolute path to the .log file to parse
* @apiParam {String} [jobId] Optional Job ID to associate parsed data with
* @apiSuccessExample {json} Success
* HTTP/1.1 200 OK
* {
* "success": true,
* "fileName": "example.log",
* "fileSize": 1048576,
* "headerInfo": {
* "version": "3.76",
* "dataStartOffset": 8
* },
* "statistics": {
* "totalRecords": 1500,
* "validRecords": 1485,
* "invalidRecords": 15,
* "recordTypes": {
* "1": 800,
* "2": 400,
* "10": 200,
* "30": 85
* }
* },
* "recordCount": 1485,
* "applicationDetailCount": 800,
* "savedToDatabase": 800
* }
*/
router.post('/parseSatLocLog', uploadJobCtl.parseSatLocLog_post);
/**
* @api {post} /imports/uploadSatLocLog Upload and Parse SatLoc Binary Log File
* @apiVersion 1.0.0
* @apiName PostImportsUploadSatLocLog
* @apiGroup Imports
* @apiDescription Upload and parse a SatLoc binary log file (.log) with automatic data extraction
* @apiParam {File} logFile The .log file to upload (multipart form field)
* @apiParam {String} [jobId] Optional Job ID to associate parsed data with
* @apiParam {String} [clientId] Optional Client ID for data organization
* @apiSuccessExample {json} Success
* HTTP/1.1 200 OK
* {
* "success": true,
* "appId": "507f1f77bcf86cd799439011",
* "fileName": "flight_001.log",
* "fileSize": 2097152,
* "headerInfo": {
* "version": "3.76",
* "dataStartOffset": 8
* },
* "statistics": {
* "totalRecords": 2500,
* "validRecords": 2485,
* "recordTypes": {
* "1": 1200,
* "2": 600,
* "10": 300
* }
* },
* "savedToDatabase": 1200
* }
*/
router.post('/uploadSatLocLog', uploadJobCtl.uploadSatLocLog_post);
app.use('/api/imports/', router);
}