using BBWY.Server.Business;
using BBWY.Server.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace BBWY.Server.API.Controllers
{
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public class AfterSaleOrderController : BaseApiController
    {
        private AfterSaleOrderBusiness afterSaleOrderBusiness;

        public AfterSaleOrderController(IHttpContextAccessor httpContextAccessor, AfterSaleOrderBusiness afterSaleOrderBusiness) : base(httpContextAccessor)
        {
            this.afterSaleOrderBusiness = afterSaleOrderBusiness;
        }

        /// <summary>
        /// 获取服务单列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public AfterSaleOrderListResponse GetAfterSaleOrderList([FromBody] SearchAfterSaleOrderRequest request)
        {
            return afterSaleOrderBusiness.GetAfterSaleOrderList(request);
        }

        /// <summary>
        /// 获取单个服务单
        /// </summary>
        /// <param name="afterSaleOrderId"></param>
        /// <returns></returns>
        [HttpGet("{afterSaleOrderId}")]
        public AfterSaleOrderResponse GetAfterSaleOrderById([FromRoute] long afterSaleOrderId)
        {
            return afterSaleOrderBusiness.GetAfterSaleOrderById(afterSaleOrderId);
        }

        /// <summary>
        /// 手动更新服务单成本
        /// </summary>
        /// <param name="editAfterSaleOrderRequest"></param>
        [HttpPost]
        public void EditAfterSaleOrder(EditAfterSaleOrderRequest editAfterSaleOrderRequest)
        {
            afterSaleOrderBusiness.EditAfterSaleOrder(editAfterSaleOrderRequest);
        }

        /// <summary>
        /// 手动更新退款采购成本
        /// </summary>
        /// <param name="request"></param>
        [HttpPost]
        public void EditAfterSaleOrderRefundPurchaseAmount([FromBody] EditAfterSaleOrderRefundPurchaseAmountRequest request)
        {
            afterSaleOrderBusiness.EditAfterSaleOrderRefundPurchaseAmount(request);
        }
    }
}