ASPNetCore/TestAppRuna/API/CartController.cs
2021-03-24 17:28:45 +07:00

103 lines
2.9 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using TestAppRuna.Entities;
using TestAppRuna.Services;
namespace TestAppRuna.API
{
[Route("api/[controller]")]
[ApiController]
public class CartController : ControllerBase
{
public ICartService CartSvc { get; }
public CartController(ICartService cartSvc)
{
this.CartSvc = cartSvc;
}
[HttpGet]
public async Task<ActionResult<List<CartCustomerListItem>>> Get()
{
return await CartSvc.Get();
}
[HttpGet("{customerId}")]
public async Task<ActionResult<List<CartListItem>>> GetFromCustomer(Guid customerId)
{
return await CartSvc.GetFromCustomer(customerId);
}
[HttpPost]
public async Task<ActionResult<bool>> Post([FromBody] CartCreateUpdateModel model)
{
if (await CartSvc.HasCustomerID(model.CustomerID))
{
ModelState.AddModelError("CustomerID", "Customer ID not found");
}
if(await CartSvc.HasProductID(model.ProductID))
{
ModelState.AddModelError("ProductID", "Product ID not found");
}
if(ModelState.IsValid == false)
{
return BadRequest(ModelState);
}
return await CartSvc.CreateOrUpdateCart(model);
}
[HttpPost("delete")]
public async Task<ActionResult<bool>> Delete([FromBody] CartDeleteModel model)
{
var success = await CartSvc.DeleteCart(model);
if(success == false)
{
return NotFound();
} else
{
return true;
}
}
}
public class CartListItem {
public Guid ProductID { get; set; }
public string ProductName { get; set; }
public decimal ProductPrice { get; set; }
public int Quantity { get; set; }
}
public class CartCustomerListItem
{
public Guid ProductID { get; set; }
public string ProductName { get; set; }
public decimal ProductPrice { get; set; }
public string CustomerName { get; set; }
public string CustomerEmail { get; set; }
public int Quantity { get; set; }
}
public class CartCreateUpdateModel
{
[Required]
public Guid CustomerID { get; set; }
[Required]
public Guid ProductID { get; set; }
[Required]
[Range(1,Double.MaxValue)]
public int Quantity { get; set; }
}
public class CartDeleteModel
{
[Required]
public Guid CustomerID { get; set; }
[Required]
public Guid ProductID { get; set; }
}
}