CQRS_Simple/CQRS_Simple.API/Products/ProductsController.cs

99 lines
2.9 KiB
C#
Raw Normal View History

2022-04-07 14:00:58 +08:00
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Autofac;
using CQRS_Simple.API.Products.Commands;
using CQRS_Simple.API.Products.Queries;
using CQRS_Simple.Domain.Products;
using CQRS_Simple.Domain.Products.Request;
using CQRS_Simple.Infrastructure;
using CQRS_Simple.Infrastructure.Uow;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Serilog;
namespace CQRS_Simple.API.Products
{
[ApiController]
[Route("api/products")]
public class ProductsController : ControllerBase
{
private readonly IMediator _mediator;
private readonly IIocManager _iocManager;
private readonly IUnitOfWork _unitOfWork;
public ProductsController(IMediator mediator, IIocManager iocManager, IUnitOfWork unitOfWork)
{
_mediator = mediator;
_iocManager = iocManager;
_unitOfWork = unitOfWork;
}
[HttpGet]
[Route("GetProduct")]
public async Task<IActionResult> GetProduct(int id)
{
var result = await _mediator.Send(new GetProductByIdQuery(id));
var _r1 = _unitOfWork.GetRepository<Product, int>();
_r1.UnitOfWork.PrintKey();
var _repository = _iocManager.GetInstance<IRepository<Product, int>>();
_repository.UnitOfWork.PrintKey();
var _repository2 = _iocManager.GetInstance<IRepository<Product, int>>();
_repository2.UnitOfWork.PrintKey();
var find = await _repository.GetByIdAsync(id);
if (find != null)
{
find.Name += "1_";
Log.Information(find?.Name);
await _unitOfWork.SaveChangesAsync();
}
// throw new Exception("ss");
return result != null ? (IActionResult)Ok(result) : NotFound();
}
[HttpGet]
[Route("GetAll")]
public async Task<IActionResult> GetAll([FromQuery] ProductsRequestInput input)
{
var list = await _mediator.Send(new GetProductsQuery(input));
Debugger.Break();
return Ok(list);
}
[HttpPost]
[Route("Create")]
public async Task<IActionResult> Create([FromBody]Product input)
{
var result = await _mediator.Send(new CreateProductCommand(input));
return result > 0 ? (IActionResult)Ok(result) : BadRequest();
}
[HttpDelete]
[Route("Delete/{id}")]
public async Task<IActionResult> Delete(int id)
{
var count = await _mediator.Send(new DeleteProductCommand(id));
return count > 0 ? (IActionResult)Ok() : NotFound();
}
[HttpPut]
[Route("Update")]
public async Task<IActionResult> Update([FromBody]Product input)
{
var count = await _mediator.Send(new UpdateProductCommand(input));
return count > 0 ? (IActionResult)Ok() : NotFound();
}
}
}