summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLizzy Hunt <lizzy.hunt@usu.edu>2023-03-24 16:34:55 -0600
committerLizzy Hunt <lizzy.hunt@usu.edu>2023-03-24 16:34:55 -0600
commit633965afaab042ceb49ae52b0ccd7cec3430c756 (patch)
treede18603c9fbdf0f96532fff241f5fc60f68ed6fd
parent3bda8ced7d0e18eb82f77f7427c41cb93f89dd2f (diff)
downloadaggietimed-633965afaab042ceb49ae52b0ccd7cec3430c756.tar.gz
aggietimed-633965afaab042ceb49ae52b0ccd7cec3430c756.zip
Add past week action
-rw-r--r--src/actions.js1
-rw-r--r--src/aggietime.js29
-rw-r--r--src/constants.js3
3 files changed, 33 insertions, 0 deletions
diff --git a/src/actions.js b/src/actions.js
index af22c3a..c1e8d23 100644
--- a/src/actions.js
+++ b/src/actions.js
@@ -6,6 +6,7 @@ const ACTIONS = {
"current-shift": aggietime.current_shift,
"current-user": aggietime.get_user_info,
"status-line": aggietime.get_status_line,
+ "past-week": aggietime.last_week,
};
export const do_action = async (body) => {
diff --git a/src/aggietime.js b/src/aggietime.js
index 413188a..5c0ff72 100644
--- a/src/aggietime.js
+++ b/src/aggietime.js
@@ -5,8 +5,10 @@ import {
USER_CACHE_EXP_SEC,
CLOCKIN_PATH,
CLOCKOUT_PATH,
+ SUMMARY_PATH,
OPEN_SHIFT_PATH,
OPEN_SHIFT_EXP_SEC,
+ PAST_WEEK_EXP_SEC,
} from "./constants.js";
import { with_exponential_retry } from "./exponential_retry.js";
@@ -119,3 +121,30 @@ export const get_status_line = async () => {
}
return { status: expireCache.get("status_line") };
};
+
+export const last_week = async ({ position_id }) => {
+ position_id = await get_user_position_or_specified(position_id);
+ const [start, end] = [
+ ((d) => {
+ const day = d.getDay();
+ const diff = d.getDate() - day + (day == 0 ? -6 : 1);
+ return new Date(d.setDate(diff));
+ })(new Date()),
+ new Date(),
+ ].map((d) => d.toISOString().split("T")[0]);
+
+ if (!expireCache.get("past_week")) {
+ const { anumber } = await get_user_info();
+
+ const hours = await aggietime
+ .get(replace_path_args(SUMMARY_PATH, { position_id, start, end }))
+ .then(({ data: { undisputed_hours } }) => undisputed_hours);
+
+ expireCache.set(
+ "past_week",
+ `${anumber} - ${hours} hours`,
+ PAST_WEEK_EXP_SEC
+ );
+ }
+ return { status: expireCache.get("past_week") };
+};
diff --git a/src/constants.js b/src/constants.js
index 7ae26c0..8d5b6b6 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -11,8 +11,11 @@ export const LOGIN_PATH = "api/v1/auth/login";
export const CLOCKIN_PATH = "api/v1/positions/:position_id/clock_in";
export const CLOCKOUT_PATH = "api/v1/positions/:position_id/clock_out";
export const USER_PATH = "api/v1/auth/get_user_info";
+export const SUMMARY_PATH =
+ "api/v1/positions/:position_id/summary?start=:start&end=:end";
export const OPEN_SHIFT_PATH = "api/v1/users/:anumber/open_shift";
export const OPEN_SHIFT_EXP_SEC = 60;
+export const PAST_WEEK_EXP_SEC = 180;
export const USER_CACHE_EXP_SEC = 30;