diff --git a/backend/db/db.controller.ts b/backend/db/db.controller.ts index 8267ae4..f115792 100644 --- a/backend/db/db.controller.ts +++ b/backend/db/db.controller.ts @@ -2,6 +2,7 @@ import { drizzle } from "drizzle-orm/postgres-js"; import postgres from "postgres"; import * as scanUserSchema from "./schema/scanUsers.js"; +import * as settingsSchema from "./schema/settings.schema.js"; const dbURL = `postgres://${process.env.DATABASE_USER}:${process.env.DATABASE_PASSWORD}@${process.env.DATABASE_HOST}:${process.env.DATABASE_PORT}/${process.env.DATABASE_DB}`; @@ -20,5 +21,6 @@ const queryClient = postgres(dbURL, { export const db = drizzle(queryClient, { schema: { ...scanUserSchema, + ...settingsSchema, }, }); diff --git a/backend/mobile/downloadApps.route.ts b/backend/mobile/downloadApps.route.ts index 69f5a87..a871206 100644 --- a/backend/mobile/downloadApps.route.ts +++ b/backend/mobile/downloadApps.route.ts @@ -62,7 +62,27 @@ router.get("/ehs/xml", (_, res) => { return res.sendFile(xmlPath); }); -router.get("/upgrade/android/13", (_, res) => { +router.get("/android/upgrade/11", (_, res) => { + const apkPath = path.join( + downloadDir, + "HE_FULL_UPDATE_11-70-20.00-RG-U00-STD-HEL-04.zip", + ); + + if (!fs.existsSync(apkPath)) { + return res.status(404).json({ success: false, message: "APK not found" }); + } + + //res.setHeader("Content-Type", "application/vnd.android.package-archive"); + res.setHeader("Content-Type", "application/zip"); + res.setHeader( + "Content-Disposition", + `attachment; filename="HE_FULL_UPDATE_11.zip"`, + ); + + return res.sendFile(apkPath); +}); + +router.get("/android/upgrade/13", (_, res) => { const apkPath = path.join( downloadDir, "HE_FULL_UPDATE_13-51-16.00-TG-U00-STD-HEL-04.zip", @@ -82,7 +102,7 @@ router.get("/upgrade/android/13", (_, res) => { return res.sendFile(apkPath); }); -router.get("/upgrade/android/14", (_, res) => { +router.get("/android/upgrade/14", (_, res) => { const apkPath = path.join( downloadDir, "HE_FULL_UPDATE_14-38-04.00-UG-U15-STD-HEL-04.zip", diff --git a/backend/opendock/openDockRreleaseMonitor.utils.ts b/backend/opendock/openDockRreleaseMonitor.utils.ts index cc2c8d3..46d00cd 100644 --- a/backend/opendock/openDockRreleaseMonitor.utils.ts +++ b/backend/opendock/openDockRreleaseMonitor.utils.ts @@ -73,6 +73,10 @@ const postRelease = async (release: Releases) => { log.info({}, "Refreshing Auth Token"); await getToken(); } + + const defaultDock = await db.query.settings.findFirst({ + where: (u, { eq }) => eq(u.name, "defaultLoadType"), + }); // .where(eq(settings.name, "defaultLoadType")) /** * ReleaseState * 0 = open @@ -101,6 +105,7 @@ const postRelease = async (release: Releases) => { : release.DeliveryState === 4 && "Completed", userId: process.env.DEFAULT_CARRIER, // this should be the carrierid loadTypeId: process.env.DEFAULT_LOAD_TYPE, // well get this and make it a default one + // TODO: look in the remarks in the release and if its says dockId: process.env.DEFAULT_DOCK, // this the warehouse we want it in to start out refNumbers: [release.ReleaseNumber], //refNumber: release.ReleaseNumber, @@ -229,7 +234,7 @@ const postRelease = async (release: Releases) => { log.info({}, `${release.ReleaseNumber} was updated`); } catch (e) { log.error( - { error: e }, + { stack: e }, `Error updating the release: ${release.ReleaseNumber}`, ); } @@ -237,10 +242,52 @@ const postRelease = async (release: Releases) => { } catch (e: any) { //console.info(newDockApt); log.error( - { error: e.response.data }, + { stack: e.response.data }, `An error has occurred during patching of the release: ${release.ReleaseNumber}`, ); + if ( + defaultDock?.value === "drop" && + e.response.data.message.incudes( + "Cannot change status from Scheduled to InProgress", + ) + ) { + const dropTrailer = { ...newDockApt, status: "Arrived" }; + const response = await axios.patch( + `${process.env.OPENDOCK_URL}/appointment/${id}`, + dropTrailer, + { + headers: { + "content-type": "application/json; charset=utf-8", + Authorization: `Bearer ${odToken.odToken}`, + }, + }, + ); + + if (response.status === 400) { + log.error({}, response.data.data.message); + return; + } + await delay(1500); + const dropTrailerProgress = { ...newDockApt, status: "InProgress" }; + + const res = await axios.patch( + `${process.env.OPENDOCK_URL}/appointment/${id}`, + dropTrailerProgress, + { + headers: { + "content-type": "application/json; charset=utf-8", + Authorization: `Bearer ${odToken.odToken}`, + }, + }, + ); + + if (res.status === 400) { + log.error({}, response.data.data.message); + return; + } + } + return; } } else { @@ -287,13 +334,13 @@ const postRelease = async (release: Releases) => { log.info({}, `${release.ReleaseNumber} was created`); } catch (e) { - log.error({ error: e }, "Error creating new release"); + log.error({ stack: e }, "Error creating new release"); } // biome-ignore lint/suspicious/noExplicitAny: to many possibilities } catch (e: any) { log.error( - { error: e?.response?.data }, - "Error posting new release to opendock", + { stack: e?.response?.data }, + `Error posting new release to opendock, ${release.ReleaseNumber}`, ); return; diff --git a/backend/system/settingsBase.controller.ts b/backend/system/settingsBase.controller.ts index c3fa6d6..80ce217 100644 --- a/backend/system/settingsBase.controller.ts +++ b/backend/system/settingsBase.controller.ts @@ -357,6 +357,17 @@ const newSettings: NewSetting[] = [ roles: ["admin"], seedVersion: 1, }, + { + name: "defaultLoadType", + value: "drop", + active: false, + description: + "What is the default load type we will use for creating new apt: drop or live are the current options.", + moduleName: "opendock", + settingType: "standard", + roles: ["admin"], + seedVersion: 1, + }, ]; export const baseSettingValidationCheck = async () => {