feat: routines module; super admin subscription badge, 7-day trial and lifetime plan
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user