CRM apis
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Get,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
} from '@nestjs/common';
|
||||
import { AuthType, Roles } from '../common/decorators/auth.decorators';
|
||||
import { CurrentUser } from '../common/decorators/current-user.decorator';
|
||||
import type { AuthPrincipal } from '../common/decorators/current-user.decorator';
|
||||
import { CrmService } from './crm.service';
|
||||
import {
|
||||
CreateNextActionDto,
|
||||
CreateOpportunityDto,
|
||||
CreateTimelineEventDto,
|
||||
SetCustomerAssignmentDto,
|
||||
UpdateNextActionDto,
|
||||
} from './dto/crm.dto';
|
||||
|
||||
@Controller('admin/customers')
|
||||
@AuthType('admin')
|
||||
@Roles('admin', 'sales')
|
||||
export class CustomerCrmController {
|
||||
constructor(private readonly crmService: CrmService) {}
|
||||
|
||||
@Get(':id/timeline')
|
||||
timeline(@Param('id') id: string) {
|
||||
return this.crmService.listTimeline(id);
|
||||
}
|
||||
|
||||
@Post(':id/timeline')
|
||||
addTimeline(
|
||||
@Param('id') id: string,
|
||||
@CurrentUser() user: AuthPrincipal,
|
||||
@Body() dto: CreateTimelineEventDto,
|
||||
) {
|
||||
return this.crmService.createTimeline(id, user.id, dto);
|
||||
}
|
||||
|
||||
@Get(':id/next-actions')
|
||||
nextActions(@Param('id') id: string) {
|
||||
return this.crmService.listNextActions(id);
|
||||
}
|
||||
|
||||
@Post(':id/next-actions')
|
||||
createNextAction(
|
||||
@Param('id') id: string,
|
||||
@Body() dto: CreateNextActionDto,
|
||||
) {
|
||||
return this.crmService.createNextAction(id, dto);
|
||||
}
|
||||
|
||||
@Post(':id/opportunities')
|
||||
createOpportunity(
|
||||
@Param('id') id: string,
|
||||
@Body() dto: CreateOpportunityDto,
|
||||
) {
|
||||
return this.crmService.createOpportunity(id, dto);
|
||||
}
|
||||
|
||||
@Patch(':id/assignment')
|
||||
setAssignment(
|
||||
@Param('id') id: string,
|
||||
@Body() dto: SetCustomerAssignmentDto,
|
||||
) {
|
||||
return this.crmService.setCustomerAssignment(id, dto);
|
||||
}
|
||||
}
|
||||
|
||||
@Controller('admin/next-actions')
|
||||
@AuthType('admin')
|
||||
@Roles('admin', 'sales')
|
||||
export class AdminNextActionsController {
|
||||
constructor(private readonly crmService: CrmService) {}
|
||||
|
||||
@Patch(':id')
|
||||
update(@Param('id') id: string, @Body() dto: UpdateNextActionDto) {
|
||||
return this.crmService.updateNextAction(id, dto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user