From 371636a2a0a5d1f8d7650169e135a8b438c9ddc2 Mon Sep 17 00:00:00 2001 From: Henry Heikkinen Date: Sun, 16 May 2021 19:24:30 +0300 Subject: [PATCH] Submit all rides in current month instead of all rides anywhere in the past --- src/main.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main.ts b/src/main.ts index 952abea..aa1eaff 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,7 @@ import * as puppeteer from "puppeteer" import {fetchRentals, Rental} from "./hsl" import {submitKaupunkifillariStats, Submission} from "./kilometrikisa" -import {DateTime} from "luxon"; +import {DateTime, Interval} from "luxon"; const HSL_USERNAME = requireEnv("HSL_USERNAME") const HSL_PASSWORD = requireEnv("HSL_PASSWORD") @@ -17,20 +17,25 @@ async function main() { try { const page = await browser.pages().then(([first, ...rest]) => first) - const rentals = await fetchRentals(page, HSL_USERNAME, HSL_PASSWORD) - const submissions = groupRentalsIntoDailyKilometrikisaSubmissions(rentalsBeforeToday(rentals)) + const rentalsThisMonth = rentalsInThisMonth(await fetchRentals(page, HSL_USERNAME, HSL_PASSWORD)) + const submissions = groupRentalsIntoDailyKilometrikisaSubmissions(rentalsThisMonth) await submitKaupunkifillariStats(page, submissions, KILOMETRIKISA_USERNAME, KILOMETRIKISA_PASSWORD) } finally { await browser.close() } } +function rentalsInThisMonth(rentals: ReadonlyArray): Rental[] { + const now = DateTime.now() + const interval = Interval.fromDateTimes(now.startOf('month'), now.endOf('month')) + return rentals.filter(r => interval.contains(r.date)) +} + function rentalsBeforeToday(rentals: ReadonlyArray): Rental[] { const today = DateTime.now().startOf("day") return rentals.filter(r => r.date < today) } - function groupRentalsIntoDailyKilometrikisaSubmissions(rentals: ReadonlyArray): Map { const grouped = groupBy(rentals, r => r.date.toFormat("yyyy-MM-dd")) return mapValues(grouped, sumRentalsToSubmission)