using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Threading.Tasks; using Dapper; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.JsonPatch; using Microsoft.AspNetCore.Mvc; using MisIngredientes.Core.Models; using MisIngredientesVue.Core.Models; using MisIngredientesVue.Core.Services; using MisIngredientesVue.Core.Extensions; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace MisIngredientesVue.Controllers { [Route("api/[controller]")] [ApiController] public class SellersController : Controller { private readonly ISellersService _sellersService; public SellersController(IRepository repository, ISellersService sellersService) { _sellersService = sellersService; } [Route("{id}")] [HttpGet] public async Task Get(int id) { return Ok(await _sellersService.GetSellerById(id)); } [Route("earnings/{id}")] [HttpGet] public async Task GetEarnings(int id, int skip, int take, string sortBy, string sortOrder, string q) { var findAll = await _sellersService.GetSellerEarnings(id, skip, take, sortBy, sortOrder, q); return Ok(new PagedResults(findAll.Results, findAll.Total, skip, take, sortBy, sortOrder)); } [HttpGet] public async Task Get(int skip, int take, string sortBy, string sortOrder, string q) { var findAll = await _sellersService.GetSellers(skip, take, sortBy, sortOrder, q); return Ok(new PagedResults(findAll.Results, findAll.Total, skip, take, sortBy, sortOrder)); } [Route("excel")] [HttpPost] public async Task GetExcel(string sortBy, string sortOrder, string q) { var memoryStream = await _sellersService.GetExcel(Request.GetTimeOffset(), sortBy, sortOrder, q); return File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); } [HttpPost] public async Task Post(Seller seller) { return Ok(await _sellersService.InsertSeller(seller)); } [Route("{id}")] [HttpPut] public async Task Put(int id, Seller seller) { if (id != seller.Id) return BadRequest(); await _sellersService.UpdateSeller(seller); return Ok(); } [Route("delete")] [HttpPut] public async Task Delete([FromBody]int[] items) { await _sellersService.DeleteSellers(items); return Ok(); } } }