Initial Mento CRM: portal OTP, reports, SMS, and deploy for crm.montzar.ir.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-29 21:06:30 +03:30
co-authored by Cursor
commit 29a040c21d
195 changed files with 39430 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
import {
IsNumber,
IsOptional,
IsString,
MaxLength,
Min,
MinLength,
} from 'class-validator';
import { Type } from 'class-transformer';
export class CreateSalesGoalDto {
@IsString()
@MinLength(2)
@MaxLength(200)
title!: string;
@IsString()
periodStart!: string;
@IsString()
periodEnd!: string;
@Type(() => Number)
@IsNumber()
@Min(0)
targetAmount!: number;
@IsOptional()
@IsString()
@MaxLength(8)
currency?: string;
@IsOptional()
@IsString()
@MaxLength(2000)
notes?: string;
@IsOptional()
@IsString()
userId?: string | null;
}
export class UpdateSalesGoalDto {
@IsOptional()
@IsString()
@MinLength(2)
@MaxLength(200)
title?: string;
@IsOptional()
@IsString()
periodStart?: string;
@IsOptional()
@IsString()
periodEnd?: string;
@IsOptional()
@Type(() => Number)
@IsNumber()
@Min(0)
targetAmount?: number;
@IsOptional()
@IsString()
@MaxLength(8)
currency?: string;
@IsOptional()
@IsString()
@MaxLength(2000)
notes?: string | null;
@IsOptional()
@IsString()
userId?: string | null;
}
export class ForecastQueryDto {
@IsOptional()
@IsString()
from?: string;
@IsOptional()
@IsString()
to?: string;
@IsOptional()
@IsString()
userId?: string;
}
export class ListGoalsQueryDto {
@IsOptional()
@IsString()
from?: string;
@IsOptional()
@IsString()
to?: string;
@IsOptional()
@IsString()
userId?: string;
}