first commit
This commit is contained in:
16
MyNewProjectName.WebAPI/Controllers/BaseApiController.cs
Normal file
16
MyNewProjectName.WebAPI/Controllers/BaseApiController.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace MyNewProjectName.WebAPI.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// Base API controller with common functionality
|
||||
/// </summary>
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public abstract class BaseApiController : ControllerBase
|
||||
{
|
||||
private ISender? _mediator;
|
||||
|
||||
protected ISender Mediator => _mediator ??= HttpContext.RequestServices.GetRequiredService<ISender>();
|
||||
}
|
||||
37
MyNewProjectName.WebAPI/Controllers/SamplesController.cs
Normal file
37
MyNewProjectName.WebAPI/Controllers/SamplesController.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
|
||||
/// <summary>
|
||||
/// Sample controller to demonstrate CQRS pattern
|
||||
/// </summary>
|
||||
public class SamplesController : BaseApiController
|
||||
{
|
||||
/// <summary>
|
||||
/// Get all samples
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(ApiResponse<List<SampleResponse>>), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> GetAll()
|
||||
{
|
||||
var result = await Mediator.Send(new GetSamplesQuery());
|
||||
return Ok(ApiResponse<List<SampleDto>>.SuccessResponse(result));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a new sample
|
||||
/// </summary>
|
||||
[HttpPost]
|
||||
[ProducesResponseType(typeof(ApiResponse<Guid>), StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(typeof(ApiResponse), StatusCodes.Status400BadRequest)]
|
||||
public async Task<IActionResult> 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<Guid>.SuccessResponse(id, "Sample created successfully"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user