Files
CRM_Montzar/apps/api/src/routines/routine-tasks.controller.ts
T

130 lines
3.5 KiB
TypeScript

import {
Body,
Controller,
Get,
Param,
Patch,
Post,
Put,
Query,
UseGuards,
} from '@nestjs/common';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { OrgModuleGuard } from '../billing/org-module.guard';
import { RequireOrgModule } from '../billing/org-module.decorator';
import { CurrentUser } from '../auth/current-user.decorator';
import type { Actor } from '../common/record-scope';
import { RoutineTasksService } from './routine-tasks.service';
import {
CompleteRoutineTaskDto,
CreateRoutineTaskDto,
RescheduleRoutineTaskDto,
RoutineEntityQueryDto,
RoutineRangeQueryDto,
RoutineTaskQueryDto,
RoutineUserSettingsUpdateDto,
SkipRoutineTaskDto,
UpdateRoutineTaskDto,
} from './dto';
@Controller('routine-tasks')
@UseGuards(JwtAuthGuard, OrgModuleGuard)
@RequireOrgModule('routines')
export class RoutineTasksController {
constructor(private readonly tasks: RoutineTasksService) {}
@Get('today')
today(@CurrentUser() user: Actor, @Query() q: RoutineTaskQueryDto) {
return this.tasks.today(user, q.userId, q.date);
}
@Get('badge')
badge(@CurrentUser() user: Actor) {
return this.tasks.badge(user);
}
@Get('overdue')
overdue(@CurrentUser() user: Actor, @Query() q: RoutineTaskQueryDto) {
return this.tasks.overdue(user, q.userId);
}
@Get('calendar')
calendar(@CurrentUser() user: Actor, @Query() q: RoutineRangeQueryDto) {
return this.tasks.calendar(user, q);
}
@Get('by-entity')
byEntity(@CurrentUser() user: Actor, @Query() q: RoutineEntityQueryDto) {
return this.tasks.byEntity(user, q);
}
@Get('settings')
settings(@CurrentUser() user: Actor) {
return this.tasks.getSettings(user);
}
@Put('settings')
updateSettings(@CurrentUser() user: Actor, @Body() dto: RoutineUserSettingsUpdateDto) {
return this.tasks.updateSettings(user, dto);
}
@Post()
create(@CurrentUser() user: Actor, @Body() dto: CreateRoutineTaskDto) {
return this.tasks.create(user, dto);
}
@Post('from-activity/:activityId')
fromActivity(@CurrentUser() user: Actor, @Param('activityId') activityId: string) {
return this.tasks.createFromActivity(user, activityId);
}
@Get(':id')
detail(@CurrentUser() user: Actor, @Param('id') id: string) {
return this.tasks.detail(user, id);
}
@Patch(':id')
update(@CurrentUser() user: Actor, @Param('id') id: string, @Body() dto: UpdateRoutineTaskDto) {
return this.tasks.update(user, id, dto);
}
@Post(':id/complete')
complete(@CurrentUser() user: Actor, @Param('id') id: string, @Body() dto: CompleteRoutineTaskDto) {
return this.tasks.complete(user, id, dto.note);
}
@Post(':id/uncomplete')
uncomplete(@CurrentUser() user: Actor, @Param('id') id: string) {
return this.tasks.uncomplete(user, id);
}
@Post(':id/start')
start(@CurrentUser() user: Actor, @Param('id') id: string) {
return this.tasks.start(user, id);
}
@Post(':id/skip')
skip(@CurrentUser() user: Actor, @Param('id') id: string, @Body() dto: SkipRoutineTaskDto) {
return this.tasks.skip(user, id, dto.reason);
}
@Post(':id/reschedule')
reschedule(
@CurrentUser() user: Actor,
@Param('id') id: string,
@Body() dto: RescheduleRoutineTaskDto,
) {
return this.tasks.reschedule(user, id, dto.dueAt);
}
@Post(':id/move-today')
moveToday(@CurrentUser() user: Actor, @Param('id') id: string) {
return this.tasks.moveToToday(user, id);
}
@Post(':id/cancel')
cancel(@CurrentUser() user: Actor, @Param('id') id: string, @Body() dto: SkipRoutineTaskDto) {
return this.tasks.cancel(user, id, dto.reason);
}
}