mirror of
https://gitlab.com/mobicoop/v3/service/matcher.git
synced 2026-01-01 16:02:40 +00:00
create ad WIP, extract geography methods to dedicated module
This commit is contained in:
116
src/modules/ad/domain/dtos/create-ad.request.ts
Normal file
116
src/modules/ad/domain/dtos/create-ad.request.ts
Normal file
@@ -0,0 +1,116 @@
|
||||
import { AutoMap } from '@automapper/classes';
|
||||
import { IsBoolean, IsNotEmpty, IsNumber, IsString } from 'class-validator';
|
||||
|
||||
export class CreateAdRequest {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@IsBoolean()
|
||||
@AutoMap()
|
||||
driver: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
@AutoMap()
|
||||
passenger: boolean;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
frequency: number;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
fromDate: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
toDate: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
monTime: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
tueTime: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
wedTime: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
thuTime: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
friTime: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
satTime: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
sunTime: string;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
monMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
tueMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
wedMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
thuMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
friMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
satMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
sunMargin: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
originType: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
destinationType: number;
|
||||
|
||||
@AutoMap()
|
||||
waypoints: [];
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
seatsDriver: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
seatsPassenger: number;
|
||||
|
||||
@IsNumber()
|
||||
@AutoMap()
|
||||
seatsUsed: number;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
createdAt: string;
|
||||
|
||||
@IsString()
|
||||
@AutoMap()
|
||||
updatedAt: string;
|
||||
}
|
||||
@@ -4,38 +4,105 @@ export class Ad {
|
||||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@AutoMap()
|
||||
driver: boolean;
|
||||
|
||||
@AutoMap()
|
||||
passenger: boolean;
|
||||
|
||||
@AutoMap()
|
||||
frequency: number;
|
||||
|
||||
@AutoMap()
|
||||
fromDate: string;
|
||||
|
||||
@AutoMap()
|
||||
toDate: string;
|
||||
|
||||
@AutoMap()
|
||||
monTime: string;
|
||||
|
||||
@AutoMap()
|
||||
tueTime: string;
|
||||
|
||||
@AutoMap()
|
||||
wedTime: string;
|
||||
|
||||
@AutoMap()
|
||||
thuTime: string;
|
||||
|
||||
@AutoMap()
|
||||
friTime: string;
|
||||
|
||||
@AutoMap()
|
||||
satTime: string;
|
||||
|
||||
@AutoMap()
|
||||
sunTime: string;
|
||||
|
||||
@AutoMap()
|
||||
monMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
tueMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
wedMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
thuMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
friMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
satMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
sunMargin: number;
|
||||
|
||||
@AutoMap()
|
||||
driverDuration: number;
|
||||
|
||||
@AutoMap()
|
||||
driverDistance: number;
|
||||
|
||||
@AutoMap()
|
||||
passengerDuration: number;
|
||||
|
||||
@AutoMap()
|
||||
passengerDistance: number;
|
||||
|
||||
@AutoMap()
|
||||
originType: number;
|
||||
|
||||
@AutoMap()
|
||||
destinationType: number;
|
||||
|
||||
@AutoMap()
|
||||
waypoints: [];
|
||||
|
||||
@AutoMap()
|
||||
direction: string;
|
||||
|
||||
@AutoMap()
|
||||
fwdAzimuth: number;
|
||||
|
||||
@AutoMap()
|
||||
backAzimuth: number;
|
||||
|
||||
@AutoMap()
|
||||
seatsDriver: number;
|
||||
|
||||
@AutoMap()
|
||||
seatsPassenger: number;
|
||||
|
||||
@AutoMap()
|
||||
seatsUsed: number;
|
||||
|
||||
@AutoMap()
|
||||
createdAt: string;
|
||||
|
||||
@AutoMap()
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
17
src/modules/ad/domain/usecases/create-ad.usecase.ts
Normal file
17
src/modules/ad/domain/usecases/create-ad.usecase.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { CommandHandler } from '@nestjs/cqrs';
|
||||
import { CreateAdCommand } from '../../commands/create-ad.command';
|
||||
import { Ad } from '../entities/ad';
|
||||
import { AdRepository } from '../../adapters/secondaries/ad.repository';
|
||||
|
||||
@CommandHandler(CreateAdCommand)
|
||||
export class CreateAdUseCase {
|
||||
constructor(private readonly adRepository: AdRepository) {}
|
||||
|
||||
async execute(command: CreateAdCommand): Promise<Ad> {
|
||||
try {
|
||||
return await this.adRepository.createAd(command.createAdRequest);
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user