update: add company services and products
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
import { ApiProperty, PickType } from "@nestjs/swagger";
|
||||
import { Type } from "class-transformer";
|
||||
import {
|
||||
ArrayMinSize,
|
||||
IsArray,
|
||||
IsBoolean,
|
||||
IsDateString,
|
||||
IsEmail,
|
||||
IsNotEmpty,
|
||||
IsOptional,
|
||||
IsString,
|
||||
IsUUID,
|
||||
IsUrl,
|
||||
Length,
|
||||
ValidateNested,
|
||||
} from "class-validator";
|
||||
|
||||
import { CreateCompanyProductDto } from "./create-company-product.dto";
|
||||
import { CreateCompanyServiceDto } from "./create-company-service.dto";
|
||||
import { CompanyMessage } from "../../../common/enums/message.enum";
|
||||
import { CompleteRegistrationDto } from "../../auth/DTO/complete-register.dto";
|
||||
|
||||
export class CreateCompanyDto extends PickType(CompleteRegistrationDto, ["phone", "firstName", "lastName", "password", "nationalCode"]) {
|
||||
@IsNotEmpty({ message: CompanyMessage.NAME_REQUIRED })
|
||||
@Length(3, 255, { message: CompanyMessage.NAME_LENGTH })
|
||||
@IsString({ message: CompanyMessage.NAME_MUST_BE_STRING })
|
||||
@ApiProperty({ description: "نام شرکت", example: "شرکت تولیدی و صنعتی کارگر" })
|
||||
name: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.EMAIL_REQUIRED })
|
||||
@IsEmail(undefined, { message: CompanyMessage.EMAIL_MUST_BE_VALID })
|
||||
@ApiProperty({ description: "ایمیل", example: "info@example.com" })
|
||||
email: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.IDENTIFICATION_NUMBER_REQUIRED })
|
||||
@IsString({ message: CompanyMessage.IDENTIFICATION_NUMBER_MUST_BE_STRING })
|
||||
@ApiProperty({ description: "شماره ثبت", example: "1234567890" })
|
||||
identificationNumber: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.DATE_OF_ESTABLISHMENT_REQUIRED })
|
||||
@IsDateString(undefined, { message: CompanyMessage.DATE_OF_ESTABLISHMENT_MUST_BE_DATE })
|
||||
@ApiProperty({ description: "تاریخ تاسیس", example: "2021-01-01" })
|
||||
dateOfEstablishment: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.ADDRESS_REQUIRED })
|
||||
@IsString({ message: CompanyMessage.ADDRESS_MUST_BE_STRING })
|
||||
@ApiProperty({ description: "آدرس", example: "تهران، خیابان ولیعصر، پلاک 123" })
|
||||
address: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.MAP_ADDRESS_LINK_REQUIRED })
|
||||
@IsUrl({ protocols: ["http", "https"] }, { message: CompanyMessage.MAP_ADDRESS_LINK_MUST_BE_URL })
|
||||
@ApiProperty({ description: "لینک آدرس", example: "https://maps.app.goo.gl/1234567890" })
|
||||
mapAddressLink: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.DESCRIPTION_REQUIRED })
|
||||
@IsString({ message: CompanyMessage.DESCRIPTION_MUST_BE_STRING })
|
||||
@ApiProperty({ description: "توضیحات", example: "شرکت تولیدی و صنعتی کارگر" })
|
||||
description: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.WEBSITE_URL_REQUIRED })
|
||||
@IsUrl({ protocols: ["http", "https"] }, { message: CompanyMessage.WEBSITE_URL_MUST_BE_URL })
|
||||
@ApiProperty({ description: "آدرس وبسایت", example: "https://www.example.com" })
|
||||
websiteUrl: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.PROFILE_IMAGE_URL_REQUIRED })
|
||||
@IsUrl({ protocols: ["http", "https"] }, { message: CompanyMessage.PROFILE_IMAGE_URL_MUST_BE_URL })
|
||||
@ApiProperty({ description: "آدرس تصویر پروفایل", example: "https://www.example.com/profile.jpg" })
|
||||
profileImageUrl: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.COVER_IMAGE_URL_REQUIRED })
|
||||
@IsUrl({ protocols: ["http", "https"] }, { message: CompanyMessage.COVER_IMAGE_URL_MUST_BE_URL })
|
||||
@ApiProperty({ description: "آدرس تصویر کاور", example: "https://www.example.com/cover.jpg" })
|
||||
coverImageUrl: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsNotEmpty({ message: CompanyMessage.IS_ACTIVE_REQUIRED })
|
||||
@IsBoolean({ message: CompanyMessage.IS_ACTIVE_MUST_BE_BOOLEAN })
|
||||
@ApiProperty({ description: "وضعیت فعالیت", example: true })
|
||||
isActive?: boolean;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.INDUSTRY_ID_REQUIRED })
|
||||
@IsUUID("7", { message: CompanyMessage.INDUSTRY_ID_SHOULD_BE_UUID })
|
||||
@ApiProperty({ description: "شناسه صنعت", example: "123e4567-e89b-12d3-a456-426614174000" })
|
||||
industryId: string;
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.PRODUCTS_REQUIRED })
|
||||
@IsArray({ message: CompanyMessage.PRODUCTS_MUST_BE_ARRAY })
|
||||
@ArrayMinSize(1, { message: CompanyMessage.PRODUCTS_REQUIRED })
|
||||
@ValidateNested({ each: true })
|
||||
@Type(() => CreateCompanyProductDto)
|
||||
@ApiProperty({ description: "محصولات شرکت", type: [CreateCompanyProductDto], required: false })
|
||||
products: CreateCompanyProductDto[];
|
||||
|
||||
@IsNotEmpty({ message: CompanyMessage.SERVICES_REQUIRED })
|
||||
@IsArray({ message: CompanyMessage.SERVICES_MUST_BE_ARRAY })
|
||||
@ArrayMinSize(1, { message: CompanyMessage.SERVICES_REQUIRED })
|
||||
@ValidateNested({ each: true })
|
||||
@Type(() => CreateCompanyServiceDto)
|
||||
@ApiProperty({ description: "خدمات شرکت", type: [CreateCompanyServiceDto], required: false })
|
||||
services: CreateCompanyServiceDto[];
|
||||
}
|
||||
Reference in New Issue
Block a user