using FastEndpoints; using MediatR; using Workflow.Application.Features.WorkflowDefinitions.Commands; using Workflow.Application.Features.WorkflowDefinitions.DTOs; namespace Workflow.Api.Endpoints.WorkflowDefinition; public class CreateWorkflowDefinitionEndpoint : Endpoint { private readonly IMediator _mediator; public CreateWorkflowDefinitionEndpoint(IMediator mediator) => _mediator = mediator; public override void Configure() { Post("/workflow-definitions"); AllowAnonymous(); Summary(s => { s.Summary = "Create a new workflow definition"; }); } public override async Task HandleAsync(CreateWorkflowDefinitionRequest req, CancellationToken ct) { var command = new CreateWorkflowDefinitionCommand(req.Name, req.Code, req.Description); var result = await _mediator.Send(command, ct); await SendAsync(result, 200, ct); } } public class CreateWorkflowDefinitionRequest { public string Name { get; set; } = string.Empty; public string Code { get; set; } = string.Empty; public string? Description { get; set; } }