first commit

This commit is contained in:
2026-02-26 14:04:18 +07:00
parent 57ac80a666
commit 4b7236493f
92 changed files with 4999 additions and 0 deletions

View 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>();
}

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