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 GetProduct(int id) { var result = await _mediator.Send(new GetProductByIdQuery(id)); var _r1 = _unitOfWork.GetRepository(); _r1.UnitOfWork.PrintKey(); var _repository = _iocManager.GetInstance>(); _repository.UnitOfWork.PrintKey(); var _repository2 = _iocManager.GetInstance>(); _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 GetAll([FromQuery] ProductsRequestInput input) { var list = await _mediator.Send(new GetProductsQuery(input)); Debugger.Break(); return Ok(list); } [HttpPost] [Route("Create")] public async Task 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 Delete(int id) { var count = await _mediator.Send(new DeleteProductCommand(id)); return count > 0 ? (IActionResult)Ok() : NotFound(); } [HttpPut] [Route("Update")] public async Task Update([FromBody]Product input) { var count = await _mediator.Send(new UpdateProductCommand(input)); return count > 0 ? (IActionResult)Ok() : NotFound(); } } }