import { Body, Controller, Get, Param, Patch, Post } from "@nestjs/common";
import { CurrentUser } from "../../common/decorators/current-user.decorator";
import { EngagementsService } from "./engagements.service";

@Controller("engagements")
export class EngagementsController {
  constructor(private readonly engagements: EngagementsService) {}

  @Get(":id")
  detail(@CurrentUser() user: { sub: string }, @Param("id") id: string) {
    return this.engagements.detail(id, user.sub);
  }

  @Patch(":id/complete")
  complete(@CurrentUser() user: { sub: string }, @Param("id") id: string) {
    return this.engagements.complete(id, user.sub);
  }

  @Patch(":id/cancel")
  cancel(@CurrentUser() user: { sub: string }, @Param("id") id: string) {
    return this.engagements.cancel(id, user.sub);
  }

  @Post(":id/stages")
  addStage(@CurrentUser() user: { sub: string }, @Param("id") id: string, @Body() body: { title?: string; description?: string; allowMedia?: boolean }) {
    return this.engagements.addStage(id, user.sub, body);
  }

  @Patch(":id/stages/:stageId")
  updateStage(@CurrentUser() user: { sub: string }, @Param("id") id: string, @Param("stageId") stageId: string, @Body() body: { title?: string; description?: string; allowMedia?: boolean; completed?: boolean; completionNote?: string }) {
    return this.engagements.updateStage(id, stageId, user.sub, body);
  }
}
