using ComputerHardwareStoreContracts.BindingModels; using ComputerHardwareStoreContracts.SearchModels; using ComputerHardwareStoreContracts.StorageContracts; using Microsoft.AspNetCore.Mvc; namespace ComputerHardwareStoreREST.Controllers { [ApiController] [Route("[controller]")] public class VendorController : Controller { private readonly ILogger _logger; private readonly IVendorStorage _storage; public VendorController(ILogger logger, IVendorStorage storage) { _logger = logger; _storage = storage; } [HttpPost("get/filter")] public IActionResult GetByFilter([FromBody] VendorSearchModel model) { try { var result = _storage.GetFilteredList(model); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost("get")] public IActionResult GetById([FromBody] VendorSearchModel model) { try { var result = _storage.GetElement(model); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost("create")] public IActionResult Create([FromBody] VendorBindingModel model) { try { var result = _storage.Insert(model); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPut("update")] public IActionResult Update([FromBody] VendorBindingModel model) { try { var result = _storage.Update(model); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost("delete")] public IActionResult Delete([FromBody] VendorBindingModel model) { try { var result = _storage.Delete(model); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } } }