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"));
}
}