using MyNewProjectName.Application.Features.Sample.Commands.CreateSample; using MyNewProjectName.Application.Features.Sample.Queries.GetSamples; using MyNewProjectName.Contracts.DTOs.Requests; using MyNewProjectName.Contracts.DTOs.Responses; using Microsoft.AspNetCore.Mvc; namespace MyNewProjectName.WebAPI.Controllers; /// /// Sample controller to demonstrate CQRS pattern /// public class SamplesController : BaseApiController { /// /// Get all samples /// [HttpGet] [ProducesResponseType(typeof(ApiResponse>), StatusCodes.Status200OK)] public async Task GetAll() { var result = await Mediator.Send(new GetSamplesQuery()); return Ok(ApiResponse>.SuccessResponse(result)); } /// /// Create a new sample /// [HttpPost] [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status201Created)] [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status400BadRequest)] public async Task Create([FromBody] CreateSampleRequest request) { var command = new CreateSampleCommand(request.Name, request.Description); var id = await Mediator.Send(command); return CreatedAtAction(nameof(GetAll), new { id }, ApiResponse.SuccessResponse(id, "Sample created successfully")); } }