Skip to content

Commit

Permalink
fix: date is not updating
Browse files Browse the repository at this point in the history
  • Loading branch information
dodyagung committed May 3, 2024
1 parent 5504c14 commit 74ab392
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 82 deletions.
120 changes: 57 additions & 63 deletions src/sale/sale.constant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,94 +17,88 @@ const CONF_TZ = 'Asia/Jakarta';
const CONF_DATE_FORMAT_SHORT = 'EEEE, dd MMMM yyyy';
const CONF_DATE_FORMAT_LONG = 'EEEE, dd MMMM yyyy - HH:mm z';
const CONF_TZ_FORMAT = 'zzzz (OOO)';
const CONF_NOW = () => new Date();

let CONF_SALE_DAY: Date;
let CONF_RESET_DAY: Date;
let CONF_RESET_DAY_MINUS_1_WEEK: Date;
let CONF_SALE_DAY: () => Date;
let CONF_RESET_DAY: () => Date;
let CONF_RESET_DAY_MINUS_1_WEEK: () => Date;
switch (process.env.TELEGRAM_SALE_DAY) {
case 'monday':
CONF_SALE_DAY = subDays(nextTuesday(new Date()), 1);
CONF_RESET_DAY = nextTuesday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextTuesday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextTuesday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextTuesday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextTuesday(CONF_NOW()), 1);
break;
case 'tuesday':
CONF_SALE_DAY = subDays(nextWednesday(new Date()), 1);
CONF_RESET_DAY = nextWednesday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextWednesday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextWednesday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextWednesday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextWednesday(CONF_NOW()), 1);
break;
case 'wednesday':
CONF_SALE_DAY = subDays(nextThursday(new Date()), 1);
CONF_RESET_DAY = nextThursday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextThursday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextThursday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextThursday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextThursday(CONF_NOW()), 1);
break;
case 'thursday':
CONF_SALE_DAY = subDays(nextFriday(new Date()), 1);
CONF_RESET_DAY = nextFriday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextFriday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextFriday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextFriday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextFriday(CONF_NOW()), 1);
break;
case 'friday':
CONF_SALE_DAY = subDays(nextSaturday(new Date()), 1);
CONF_RESET_DAY = nextSaturday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextSaturday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextSaturday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextSaturday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextSaturday(CONF_NOW()), 1);
break;
case 'saturday':
CONF_SALE_DAY = subDays(nextSunday(new Date()), 1);
CONF_RESET_DAY = nextSunday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextSunday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextSunday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextSunday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextSunday(CONF_NOW()), 1);
break;
case 'sunday':
CONF_SALE_DAY = subDays(nextMonday(new Date()), 1);
CONF_RESET_DAY = nextMonday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextMonday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextMonday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextMonday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextMonday(CONF_NOW()), 1);
break;
default:
CONF_SALE_DAY = subDays(nextSaturday(new Date()), 1);
CONF_RESET_DAY = nextSaturday(new Date());
CONF_RESET_DAY_MINUS_1_WEEK = subWeeks(nextSaturday(new Date()), 1);
CONF_SALE_DAY = () => subDays(nextSaturday(CONF_NOW()), 1);
CONF_RESET_DAY = () => nextSaturday(CONF_NOW());
CONF_RESET_DAY_MINUS_1_WEEK = () => subWeeks(nextSaturday(CONF_NOW()), 1);
break;
}

export const TODAY = formatInTimeZone(
new Date(),
CONF_TZ,
CONF_DATE_FORMAT_LONG,
CONF_LOCALE,
);
export const TODAY_LONG = () =>
formatInTimeZone(CONF_NOW(), CONF_TZ, CONF_DATE_FORMAT_LONG, CONF_LOCALE);

export const TODAY_SHORT = formatInTimeZone(
new Date(),
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);
export const TODAY_SHORT = () =>
formatInTimeZone(CONF_NOW(), CONF_TZ, CONF_DATE_FORMAT_SHORT, CONF_LOCALE);

export const SALE_DAY = formatInTimeZone(
CONF_SALE_DAY,
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);
export const SALE_DAY = () =>
formatInTimeZone(
CONF_SALE_DAY(),
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);

export const RESET_DAY = formatInTimeZone(
CONF_RESET_DAY,
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);
export const RESET_DAY = () =>
formatInTimeZone(
CONF_RESET_DAY(),
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);

export const RESET_DAY_MINUS_1_WEEK = formatInTimeZone(
CONF_RESET_DAY_MINUS_1_WEEK,
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);
export const RESET_DAY_MINUS_1_WEEK = () =>
formatInTimeZone(
CONF_RESET_DAY_MINUS_1_WEEK(),
CONF_TZ,
CONF_DATE_FORMAT_SHORT,
CONF_LOCALE,
);

export const TIMEZONE = formatInTimeZone(
new Date(),
CONF_TZ,
CONF_TZ_FORMAT,
CONF_LOCALE,
);
export const TIMEZONE = () =>
formatInTimeZone(CONF_NOW(), CONF_TZ, CONF_TZ_FORMAT, CONF_LOCALE);

export const NOW = CONF_NOW;

export const FALLBACK_MESSAGE =
'Wrong input, invalid command or something error.\n\nPlease restart by clicking /start.';
17 changes: 9 additions & 8 deletions src/sale/sale.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { Prisma } from '@prisma/client';
// import { Cron } from '@nestjs/schedule';
import { PrismaService } from 'src/prisma/prisma.service';
import { NOW } from './sale.constant';

@Injectable()
export class SaleService {
Expand Down Expand Up @@ -31,7 +32,7 @@ export class SaleService {

async disableAllEnabledPosts(): Promise<void> {
await this.prismaService.posts.updateMany({
data: { is_enabled: false, updated_at: new Date() },
data: { is_enabled: false, updated_at: NOW() },
where: { is_enabled: true },
});
}
Expand Down Expand Up @@ -91,7 +92,7 @@ export class SaleService {

async editSale(id: number, user_id: string, post: string): Promise<void> {
await this.prismaService.posts.update({
data: { post, updated_at: new Date() },
data: { post, updated_at: NOW() },
where: { id, user_id },
});
}
Expand All @@ -102,14 +103,14 @@ export class SaleService {
is_enabled: boolean,
): Promise<void> {
await this.prismaService.posts.update({
data: { is_enabled, updated_at: new Date() },
data: { is_enabled, updated_at: NOW() },
where: { id, user_id },
});
}

async deleteSale(id: number, user_id: string): Promise<void> {
await this.prismaService.posts.update({
data: { is_deleted: true, updated_at: new Date() },
data: { is_deleted: true, updated_at: NOW() },
where: { id, user_id },
});
}
Expand All @@ -135,14 +136,14 @@ export class SaleService {
): Promise<void> {
await this.prismaService.users.upsert({
where: { id },
update: { username, first_name, last_name, updated_at: new Date() },
update: { username, first_name, last_name, updated_at: NOW() },
create: {
id,
username,
first_name,
last_name,
created_at: new Date(),
updated_at: new Date(),
created_at: NOW(),
updated_at: NOW(),
},
});
}
Expand All @@ -156,7 +157,7 @@ export class SaleService {

async editPhone(id: string, phone: string | null): Promise<void> {
await this.prismaService.users.update({
data: { phone, updated_at: new Date() },
data: { phone, updated_at: NOW() },
where: { id },
});
}
Expand Down
8 changes: 4 additions & 4 deletions src/sale/sale.update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
RESET_DAY,
RESET_DAY_MINUS_1_WEEK,
SALE_DAY,
TODAY,
TODAY_LONG,
TODAY_SHORT,
} from './sale.constant';
import { Context, Telegraf } from 'telegraf';
Expand All @@ -32,12 +32,12 @@ export class SaleUpdate {

@Cron(CronExpression.EVERY_HOUR)
async saleDayScheduler() {
if (TODAY_SHORT === SALE_DAY) {
if (TODAY_SHORT() === SALE_DAY()) {
this.logger.log('Running sale day scheduler');
const users = await this.saleService.getUsersWithScheduledSales();

let message = `🔥 **Today Hot Sale**\n\n`;
message += `It's **${TODAY}**. Want to join the sale? [Chat me!](tg://user?id=${this.configService.get<string>('TELEGRAM_SALE_BOT_TOKEN')!.split(':')[0]})\n\n`;
message += `It's **${TODAY_LONG()}**. Want to join the sale? [Chat me!](tg://user?id=${this.configService.get<string>('TELEGRAM_SALE_BOT_TOKEN')!.split(':')[0]})\n\n`;

users.forEach((user) => {
message += `💰 [${user.first_name}](tg://user?id=${user.id}) ${user.phone ? `(\`${user.phone}\`)` : ``}\n`;
Expand All @@ -63,7 +63,7 @@ export class SaleUpdate {

@Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
async resetDayScheduler() {
if (TODAY_SHORT === RESET_DAY_MINUS_1_WEEK) {
if (TODAY_SHORT() === RESET_DAY_MINUS_1_WEEK()) {
this.logger.log('Running reset day scheduler');
// await this.saleService.disableAllEnabledPosts();
}
Expand Down
5 changes: 3 additions & 2 deletions src/sale/scene/sale/sale_add.scene.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
} from 'src/sale/sale.common';
import { SaleService } from 'src/sale/sale.service';
import { Prisma } from '@prisma/client';
import { NOW } from 'src/sale/sale.constant';

@Scene('SALE_ADD_SCENE')
export class SaleAddScene {
Expand Down Expand Up @@ -51,8 +52,8 @@ export class SaleAddScene {
is_enabled: true,
is_deleted: false,
post: msg.text,
created_at: new Date(),
updated_at: new Date(),
created_at: NOW(),
updated_at: NOW(),
};
await this.saleService.addSale(sale);

Expand Down
10 changes: 5 additions & 5 deletions src/sale/scene/welcome.scene.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
import { SceneContext } from 'telegraf/scenes';
import { Markup } from 'telegraf';
import { ConfigService } from '@nestjs/config';
import { RESET_DAY, SALE_DAY, TIMEZONE, TODAY } from '../sale.constant';
import { RESET_DAY, SALE_DAY, TIMEZONE, TODAY_LONG } from '../sale.constant';
import { leaveScene, sendMessageWithKeyboard } from '../sale.common';
import { SaleService } from '../sale.service';

Expand Down Expand Up @@ -58,12 +58,12 @@ export class WelcomeScene {
);

let message: string = `**🏠 Welcome**\n\n`;
message += `Hello **${firstName}${lastName ? ' ' + lastName : ''}**, I'm [telegram-sale-bot](https://github.com/dodyagung/telegram-sale-bot). Now is **${TODAY}**, what can I help you today?\n\n`;
message += `Hello **${firstName}${lastName ? ' ' + lastName : ''}**, I'm [telegram-sale-bot](https://github.com/dodyagung/telegram-sale-bot). Now is **${TODAY_LONG()}**, what can I help you today?\n\n`;

message += `**Sale Time**\n`;
message += `├ Sale Day : \`${SALE_DAY}\`\n`;
message += `├ Reset Day : \`${RESET_DAY}\`\n`;
message += `└ Timezone : \`${TIMEZONE}\`\n\n`;
message += `├ Sale Day : \`${SALE_DAY()}\`\n`;
message += `├ Reset Day : \`${RESET_DAY()}\`\n`;
message += `└ Timezone : \`${TIMEZONE()}\`\n\n`;

message += `**Sale Group**\n`;
message += `├ Name : \`${group_title.title}\`\n`;
Expand Down

0 comments on commit 74ab392

Please sign in to comment.