209 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
import Env from "@ioc:Adonis/Core/Env";
 | 
						|
// const axios = require("axios");
 | 
						|
// import fs from "fs";
 | 
						|
 | 
						|
import axios from "axios";
 | 
						|
import { addLogFunction } from "./addLogFunction";
 | 
						|
import moment from "moment";
 | 
						|
 | 
						|
export const checkIndexSN = async (content, beginLine, nameF) => {
 | 
						|
  try {
 | 
						|
    const arrayLine = content;
 | 
						|
 | 
						|
    let output = [];
 | 
						|
    if (arrayLine !== undefined) {
 | 
						|
      for (let i = 0; i < arrayLine.length; i++) {
 | 
						|
        let SN = arrayLine[i]
 | 
						|
          ?.split("SN:")[1]
 | 
						|
          ?.trim()
 | 
						|
          .replace(/[!@#$%^&*()_+{}\[\]:;<>,.?~\\/]/g, "");
 | 
						|
        if (
 | 
						|
          arrayLine[i].search("PID:") !== -1 &&
 | 
						|
          arrayLine[i].search("SN:") !== -1 &&
 | 
						|
          arrayLine[i].search("%") === -1 &&
 | 
						|
          SN !== "" &&
 | 
						|
          SN !== "N/A" &&
 | 
						|
          SN.length > 4 &&
 | 
						|
          i >= beginLine
 | 
						|
        ) {
 | 
						|
          if (output.some((u) => u.SN === SN)) {
 | 
						|
            output.map((u, index) => {
 | 
						|
              if (u.SN === SN) {
 | 
						|
                output[index].PID =
 | 
						|
                  arrayLine[i]?.split("VID:")[0] !== undefined
 | 
						|
                    ? arrayLine[i]
 | 
						|
                        ?.split("VID:")[0]
 | 
						|
                        ?.slice(arrayLine[i]?.split("VID:")[0]?.search("PID"))
 | 
						|
                        ?.split(":")[1]
 | 
						|
                        ?.split(",")[0]
 | 
						|
                        ?.trim()
 | 
						|
                    : "";
 | 
						|
                (output[index].VID =
 | 
						|
                  arrayLine[i]?.split("SN:")[0] !== undefined
 | 
						|
                    ? arrayLine[i]
 | 
						|
                        ?.split("SN:")[0]
 | 
						|
                        ?.split("VID:")[1]
 | 
						|
                        ?.split(",")[0]
 | 
						|
                        ?.trim()
 | 
						|
                    : ""),
 | 
						|
                  (output[index].line = output[index].line.concat([i + 1]));
 | 
						|
              }
 | 
						|
            });
 | 
						|
          } else {
 | 
						|
            output.push({
 | 
						|
              PID:
 | 
						|
                arrayLine[i]?.split("VID:")[0] !== undefined
 | 
						|
                  ? arrayLine[i]
 | 
						|
                      ?.split("VID:")[0]
 | 
						|
                      ?.slice(arrayLine[i]?.split("VID:")[0]?.search("PID"))
 | 
						|
                      ?.split(":")[1]
 | 
						|
                      ?.split(",")[0]
 | 
						|
                      ?.trim()
 | 
						|
                  : "",
 | 
						|
              VID:
 | 
						|
                arrayLine[i]?.split("SN:")[0] !== undefined
 | 
						|
                  ? arrayLine[i]
 | 
						|
                      ?.split("SN:")[0]
 | 
						|
                      ?.split("VID:")[1]
 | 
						|
                      ?.split(",")[0]
 | 
						|
                      ?.trim()
 | 
						|
                  : "",
 | 
						|
              SN:
 | 
						|
                arrayLine[i].split("SN:")[1] !== undefined
 | 
						|
                  ? SN.search(" ") !== -1
 | 
						|
                    ? SN?.split(" ")[0]
 | 
						|
                    : SN
 | 
						|
                  : "",
 | 
						|
              line: [i + 1],
 | 
						|
              fileName: nameF,
 | 
						|
              warehouse:
 | 
						|
                (nameF.search("-US") !== -1 ||
 | 
						|
                  nameF.search(".US") !== -1 ||
 | 
						|
                  nameF.search("US-") !== -1) &&
 | 
						|
                nameF.search("AUS") === -1
 | 
						|
                  ? "US"
 | 
						|
                  : "AU",
 | 
						|
            });
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        if (arrayLine[i].search("Serial Number") !== -1 && i >= beginLine) {
 | 
						|
          let PCB_SN = arrayLine[i]
 | 
						|
            ?.split("Serial Number")[1]
 | 
						|
            .split(":")[1]
 | 
						|
            ?.replace("\r", "")
 | 
						|
            .trim()
 | 
						|
            .replace(/[!@#$%^&*()_+{}\[\]:;<>,.?~\\/]/g, "");
 | 
						|
          if (
 | 
						|
            //Neu SN da nam trong output
 | 
						|
            output.some((u) => u.SN === PCB_SN)
 | 
						|
          ) {
 | 
						|
            output.map((u, index) => {
 | 
						|
              if (u.SN === PCB_SN) {
 | 
						|
                output[index].line = output[index].line.concat([i + 1]);
 | 
						|
              }
 | 
						|
            });
 | 
						|
          } else {
 | 
						|
            // if (
 | 
						|
            //   /^[A-Z0-9-]{5,}$/.test(
 | 
						|
            //     PCB_SN
 | 
						|
            //   )
 | 
						|
            // ) {
 | 
						|
 | 
						|
            output.push({
 | 
						|
              PID: "",
 | 
						|
              VID: "",
 | 
						|
              SN: PCB_SN?.search(" ") !== -1 ? PCB_SN?.split(" ")[0] : PCB_SN,
 | 
						|
              line: [i + 1],
 | 
						|
              fileName: nameF,
 | 
						|
              warehouse:
 | 
						|
                (nameF.search("-US") !== -1 ||
 | 
						|
                  nameF.search(".US") !== -1 ||
 | 
						|
                  nameF.search("US-") !== -1) &&
 | 
						|
                nameF.search("AUS") === -1
 | 
						|
                  ? "US"
 | 
						|
                  : "AU",
 | 
						|
            });
 | 
						|
            // }
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        if (
 | 
						|
          arrayLine[i].search("Processor board ID") !== -1 &&
 | 
						|
          i >= beginLine
 | 
						|
        ) {
 | 
						|
          let PBID = arrayLine[i]
 | 
						|
            ?.split(" ")
 | 
						|
            [arrayLine[i]?.split(" ").length - 1]?.replace("\r", "")
 | 
						|
            .trim()
 | 
						|
            .replace(/[!@#$%^&*()_+{}\[\]:;<>,.?~\\/]/g, "");
 | 
						|
          if (
 | 
						|
            //Neu SN da nam trong output
 | 
						|
            output.some((u) => u.SN === PBID)
 | 
						|
          ) {
 | 
						|
            output.map((u, index) => {
 | 
						|
              if (u.SN === PBID) {
 | 
						|
                output[index].line = output[index].line.concat([i + 1]);
 | 
						|
              }
 | 
						|
            });
 | 
						|
          } else {
 | 
						|
            if (PBID?.length >= 8) {
 | 
						|
              output.push({
 | 
						|
                PID: "",
 | 
						|
                VID: "",
 | 
						|
                SN: PBID?.search(" ") !== -1 ? PBID?.split(" ")[0] : PBID,
 | 
						|
                line: [i + 1],
 | 
						|
                fileName: nameF,
 | 
						|
                warehouse:
 | 
						|
                  (nameF.search("-US") !== -1 ||
 | 
						|
                    nameF.search(".US") !== -1 ||
 | 
						|
                    nameF.search("US-") !== -1) &&
 | 
						|
                  nameF.search("AUS") === -1
 | 
						|
                    ? "US"
 | 
						|
                    : "AU",
 | 
						|
              });
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      //   console.log(nameF+" output\n", output);
 | 
						|
      let pattern = /[\x00-\x20\x7F]/g;
 | 
						|
      if (output.filter((i) => i.PID !== "" && i.PID.match(pattern)==null).length > 0) {
 | 
						|
        let token =
 | 
						|
          "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwaS5uc3d0ZWFtLm5ldC9hcGkvbG9naW4iLCJpYXQiOjE2OTg0NTg5MTAsImV4cCI6MTcyOTk5NDkxMCwibmJmIjoxNjk4NDU4OTEwLCJqdGkiOiJobGxQYWVZQzBmd2xlamZtIiwic3ViIjoxLCJwcnYiOiJjOGVlMWZjODllNzc1ZWM0YzczODY2N2U1YmUxN2E1OTBiNmQ0MGZjIn0.miEyaJEQmovST6Bu43USWAz5xND-9C49uB_3WEudqEs";
 | 
						|
 | 
						|
        let token_int =
 | 
						|
          "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2ludC5pcHN1cHBseS5jb20uYXUvYXBpL2xvZ2luIiwiaWF0IjoxNjg5ODYyNjAxLCJleHAiOjE3MjEzOTg2MDEsIm5iZiI6MTY4OTg2MjYwMSwianRpIjoiUElZVjNBM3ZPQVlMQ081SyIsInN1YiI6MSwicHJ2IjoiYzhlZTFmYzg5ZTc3NWVjNGM3Mzg2NjdlNWJlMTdhNTkwYjZkNDBmYyJ9.UcybIKMBjTAY9i0PfIDQMtqHyN72Ul0jC03ZDGLGpMI";
 | 
						|
 | 
						|
        let data = {
 | 
						|
          data: output.filter((i) => i.PID !== "" && i.PID.match(pattern)===null),
 | 
						|
          urlAPI: "/api/test-log-serial-number/save-data",
 | 
						|
        };
 | 
						|
 | 
						|
        const response = await axios.post(
 | 
						|
          "https://api.nswteam.net/api/transferPostData",
 | 
						|
          data,
 | 
						|
          { headers: { Authorization: "Bearer " + token } }
 | 
						|
        );
 | 
						|
 | 
						|
        if (Env.get("RUN_ENV") === "prod") {
 | 
						|
          const response_int = await axios.post(
 | 
						|
            "https://int.ipsupply.com.au/api/transferPostData",
 | 
						|
            data,
 | 
						|
            { headers: { Authorization: "Bearer " + token_int } }
 | 
						|
          );
 | 
						|
 | 
						|
          console.log(nameF + " response\n", response_int.data);
 | 
						|
          const fileName =
 | 
						|
            "./app/store/logsAPI/" +
 | 
						|
            moment(Date.now()).format("DD_MM_YYYY").toString() +
 | 
						|
            ".log";
 | 
						|
          addLogFunction(fileName, "URL: https://int.ipsupply.com.au/api/transferPostData\n"+ JSON.stringify(response_int.data, null, 2), "Update SN index to int.ipsupply.com.au");
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  } catch (error) {
 | 
						|
    console.log("Can't connect to log server", error);
 | 
						|
  }
 | 
						|
};
 |