Ask activity reminder channel: in-app notification and/or SMS.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-05 02:04:39 +03:30
co-authored by Cursor
parent 83d25ec1c5
commit 36e47e8af3
8 changed files with 212 additions and 10 deletions
@@ -28,6 +28,8 @@ type ActivityRow = {
dueAt: Date | null;
durationMinutes: number | null;
reminderAt: Date | null;
reminderNotifyApp: boolean;
reminderNotifySms: boolean;
completedAt: Date | null;
createdAt: Date;
updatedAt: Date;
@@ -183,6 +185,8 @@ export class ActivitiesService {
dueAt: dto.dueAt ? new Date(dto.dueAt) : null,
durationMinutes: dto.durationMinutes ?? null,
reminderAt: dto.reminderAt ? new Date(dto.reminderAt) : null,
reminderNotifyApp: dto.reminderNotifyApp ?? true,
reminderNotifySms: dto.reminderNotifySms ?? false,
personId: emptyToNull(dto.personId ?? null),
companyId: emptyToNull(dto.companyId ?? null),
dealId: emptyToNull(dto.dealId ?? null),
@@ -225,6 +229,8 @@ export class ActivitiesService {
if ('dueAt' in dto) data.dueAt = dto.dueAt ? new Date(dto.dueAt) : null;
if ('durationMinutes' in dto) data.durationMinutes = dto.durationMinutes ?? null;
if ('reminderAt' in dto) data.reminderAt = dto.reminderAt ? new Date(dto.reminderAt) : null;
if (dto.reminderNotifyApp !== undefined) data.reminderNotifyApp = dto.reminderNotifyApp;
if (dto.reminderNotifySms !== undefined) data.reminderNotifySms = dto.reminderNotifySms;
if ('personId' in dto) data.personId = emptyToNull(dto.personId ?? null);
if ('companyId' in dto) data.companyId = emptyToNull(dto.companyId ?? null);
if ('dealId' in dto) data.dealId = emptyToNull(dto.dealId ?? null);
@@ -412,6 +418,8 @@ export class ActivitiesService {
dueAt: row.dueAt?.toISOString() ?? null,
durationMinutes: row.durationMinutes,
reminderAt: row.reminderAt?.toISOString() ?? null,
reminderNotifyApp: row.reminderNotifyApp,
reminderNotifySms: row.reminderNotifySms,
completedAt: row.completedAt?.toISOString() ?? null,
person: row.person
? {
+17
View File
@@ -1,5 +1,6 @@
import { Type } from 'class-transformer';
import {
IsBoolean,
IsDateString,
IsIn,
IsInt,
@@ -98,6 +99,14 @@ export class CreateActivityDto {
@IsDateString()
reminderAt?: string | null;
@IsOptional()
@IsBoolean()
reminderNotifyApp?: boolean;
@IsOptional()
@IsBoolean()
reminderNotifySms?: boolean;
@IsOptional()
@ValidateIf((_, v) => v !== '' && v != null)
@IsString()
@@ -160,6 +169,14 @@ export class UpdateActivityDto {
@IsDateString()
reminderAt?: string | null;
@IsOptional()
@IsBoolean()
reminderNotifyApp?: boolean;
@IsOptional()
@IsBoolean()
reminderNotifySms?: boolean;
@IsOptional()
@ValidateIf((_, v) => v !== '' && v != null)
@IsString()