using AutoMapper;
using Services.CouponAPI.Data;
using Services.CouponAPI.Models;
using Services.CouponAPI.Models.Dto;
using Microsoft.AspNetCore.Mvc;
namespace Services.CouponAPI.Controllers
{
[Route("api/coupon")]
[ApiController]
public class CouponAPIController : ControllerBase
{
private readonly AppDbContext _db;
private ResponseDto _response;
private IMapper _mapper;
public CouponAPIController(AppDbContext db, IMapper mapper)
{
_db = db;
_mapper = mapper;
_response = new ResponseDto();
}
[HttpGet]
public ResponseDto Get()
{
try
{
IEnumerable<Coupon> objList = _db.Coupons.ToList();
_response.Result = _mapper.Map<IEnumerable<CouponDto>>(objList);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
[HttpGet]
[Route("{id:int}")]
public ResponseDto Get(int id)
{
try
{
Coupon obj = _db.Coupons.First(u => u.CouponId == id);
_response.Result = _mapper.Map<CouponDto>(obj);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
[HttpGet]
[Route("GetByCode/{code}")]
public ResponseDto Get(string code)
{
try
{
Coupon obj = _db.Coupons.First(u => u.CouponCode.ToLower() == code.ToLower());
_response.Result = _mapper.Map<CouponDto>(obj);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
[HttpPut]
public ResponseDto Put([FromBody] CouponDto couponDto)
{
try
{
Coupon obj = _mapper.Map<Coupon>(couponDto);
_db.Coupons.Update(obj);
_db.SaveChanges();
_response.Result = _mapper.Map<CouponDto>(obj);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
[HttpDelete]
public ResponseDto Delete(int id)
{
try
{
Coupon obj = _db.Coupons.First(u => u.CouponId == id);
_db.Coupons.Remove(obj);
_db.SaveChanges();
_response.Result = _mapper.Map<CouponDto>(obj);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
}
}