1import * as gql from './graphql.js'; 2import * as common from './common.js'; 3import * as config from './config.js'; 4 5// updateTracking 6// ========================= 7// update the tracking inside the database without user modification. 8/* 9updateTracking(sent_year: String, receipt_tracking: String, 10 first_tracking: String, second_tracking: String, 11 third_tracking: String, tracking_id: ID, 12 participant_code: ID, modifyUser: Boolean): Tracking 13*/ 14export async function updateTracking(config) 15{ 16 17 let query_dict = Object.entries(config).map(([key, value]) => `${ key }: "${ value }"`); 18 query_dict.push("modifyUser: false"); 19 20 let query = `mutation { 21 updateTracking(${ query_dict.join(',') }) { 22 tracking_id 23 } 24 }`; 25 26 try { 27 let ret = await gql.sendMutation({ query }); 28 29 if(ret['status'] == 'success') { 30 let tracking = ret['response']['data']['updateTracking']; 31 return tracking; 32 } 33 } catch(error) { 34 console.error(error); 35 } 36 37 return null; 38} 39 40// approvedTrackings 41// ========================= 42// update the tracking on receipt tracking inside the database without user modification. 43// according to participant_code and year (sent_year). 44export async function approvedTracking(participant_code, sent_year) 45{ 46 let tracking_ret = await updateTracking({ participant_code, sent_year, receipt_tracking: "à¸à¸³à¸£à¸°à¹à¸à¸´à¸à¹à¸£à¸µà¸¢à¸à¸£à¹à¸à¸¢à¹à¸¥à¹à¸§"}); 47 48 if(tracking_ret) 49 return true; 50 51 return false; 52} 53 54// addTracking 55// ========================= 56// add the new tracking 57/* addTracking(participant_code: ID, sent_year: String): Tracking */ 58export async function addTracking(participant_code, sent_year = null) 59{ 60 let current_year = sent_year || (new Date()).getFullYear() ; 61 62 let query = `mutation { 63 addTracking(participant_code: "${ participant_code }", sent_year: "${ current_year }") { 64 tracking_id 65 participant_code 66 sent_year 67 receipt_tracking 68 first_tracking 69 second_tracking 70 third_tracking 71 } 72 }`; 73 74 try { 75 let ret = await gql.sendMutation({ query }); 76 77 if(ret['status'] == 'success') { 78 let tracking = ret['response']['data']['addTracking']; 79 return tracking; 80 } 81 } catch(error) { 82 console.error(error); 83 } 84 85 return null; 86} 87 88/* 89 getTracking 90 ================= 91 get the tracking data according to participant_code 92*/ 93export async function getTracking(config) 94{ 95 if(!config.hasOwnProperty('participant_code')) 96 return null; 97 98 let query = `{ 99 getTracking(participant_code: "${ config['participant_code'] }") { 100 tracking_id 101 sent_year 102 receipt_tracking 103 first_tracking 104 second_tracking 105 third_tracking 106 } 107 }`; 108 109 try { 110 let ret = await gql.sendGQL('query', query); 111 112 if(ret['status'] == 'success') { 113 let tracking_data = ret['response']['data']['getTracking']; 114 tracking_data = tracking_data.sort(sortTracking); 115 return tracking_data; 116 } 117 } catch(error) { 118 console.error(error); 119 } 120 121 return null; 122} 123 124// sortTracking 125// ================= 126// sort the tracking data according to participant_code 127function sortTracking(a, b) 128{ 129 if(a.hasOwnProperty('participant_code') && b.hasOwnProperty('participant_code')) { 130 let isparticipantequal = a['participant_code'] - b['participant_code']; 131 132 if(isparticipantequal != 0) 133 return isparticipantequal; 134 } 135 136 return a['sent_year'] - b['sent_year']; 137} 138 139export async function listTracking(year = 0) 140{ 141 let query = ''; 142 if(year == 0) { 143 query = `{ 144 getTracking { 145 tracking_id 146 participant_code 147 sent_year 148 receipt_tracking 149 first_tracking 150 second_tracking 151 third_tracking 152 } 153 }`; 154 } else { 155 query = `{ 156 getTracking(sent_year: "${ year }") { 157 tracking_id 158 participant_code 159 sent_year 160 receipt_tracking 161 first_tracking 162 second_tracking 163 third_tracking 164 } 165 }`; 166 } 167 168 try { 169 let ret = await gql.sendGQL('query', query); 170 171 if(ret['status'] == 'success') { 172 let tracking_data = ret['response']['data']['getTracking']; 173 tracking_data = tracking_data.sort(sortTracking); 174 return tracking_data; 175 } 176 } catch(error) { 177 console.error(error); 178 } 179 180 return null; 181} 182 183/* 184 * uploadTracking(config) 185 * ========================================== 186 * how to send => send via object { tracking_file: Upload!, tracking_type: String } 187 * if(tracking_type != 'receipt_tracking' && tracking_type != 'first_tracking' 188 * && tracking_type != 'second_tracking' && tracking_type != 'third_tracking') 189 */ 190export async function uploadTracking(config,) 191{ 192 let { tracking_type, tracking_json, tracking_year } = config; 193 let query = `mutation { 194 uploadTracking(tracking_type: "${ tracking_type }", tracking_json: "${ tracking_json }", tracking_year: "${ tracking_year }") 195 }`; 196 197 try { 198 let ret = await gql.sendMutation({ query }); 199 if(ret['status'] == 'success') { 200 let tracking = ret['response']['data']['uploadTracking']; 201 return tracking; 202 } 203 } catch(error) { 204 console.error(error); 205 } 206 207 return null; 208}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.