using System.Collections.Generic;
using WebApiClient;
using WebApiClient.Attributes;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Mvc;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.DTO.AMES;

namespace AMESCoreStudio.Web
{
    [JsonReturn]
    public interface IASM : IHttpApi
    {
        /// <summary>
        /// 用內部序號取BarCode資料
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpGet("api/BarcodeInfoes/{id}")]
        ITask<List<BarcodeInfo>> GetBarcodeInfoes(int id);

        /// <summary>
        /// 用內部序號取BarCode資料
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpGet("api/BarcodeInfoes/No/{id}")]
        ITask<List<BarcodeInfo>> GetBarcodeInfoesByNo(string id);

        /// <summary>
        /// 用客戶序號取BarCode資料
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpGet("api/BarcodeInfoes/ByExtraNo/{extraNo}")]
        ITask<List<BarcodeInfo>> GetBarcodeInfoesByExtraNo(string extraNo);

        /// <summary>
        /// 用包裝箱號取BarCode資料
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpGet("api/BarcodeInfoes/ByBoxNo/{boxNo}")]
        ITask<List<BarcodeInfo>> GetBarcodeInfoesByBoxNo(string boxNo);

        /// <summary>
        /// 包裝拆箱作業-置換
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpPut("api/BarcodeInfoes/DisplaceBarcode4ASM012/{oldBarcodeID}/{oldBarcodeNo}/{oldExtraBarcodeNo}/{newBarcodeID}/{newBarcodeNo}/{newExtraBarcodeNo}/{boxNo}/{userID}")]
        ITask<ResultModel<BarcodeInfo>> DisplaceBarcode4ASM012(int oldBarcodeID, string oldBarcodeNo, string oldExtraBarcodeNo, int newBarcodeID, string newBarcodeNo, string newExtraBarcodeNo, string boxNo, int userID);

        /// <summary>
        /// 包裝拆箱作業-置換(出貨序號)
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpPut("api/BarcodeInfoes/DisplaceExtraBarcode4ASM012/{oldBarcodeID}/{oldBarcodeNo}/{oldExtraBarcodeNo}/{newBarcodeID}/{newBarcodeNo}/{newExtraBarcodeNo}/{boxNo}/{userID}")]
        ITask<ResultModel<BarcodeInfo>> DisplaceExtraBarcode4ASM012(int oldBarcodeID, string oldBarcodeNo, string oldExtraBarcodeNo, int newBarcodeID, string newBarcodeNo, string newExtraBarcodeNo, string boxNo, int userID);

        /// <summary>
        /// 包裝拆箱作業-刪除
        /// </summary>
        /// <returns></returns>
        [WebApiClient.Attributes.HttpPut("api/BarcodeInfoes/DeleteBarcode4ASM012/{oldBarcodeID}/{oldBarcodeNo}/{boxNo}/{userID}")]
        ITask<ResultModel<BarcodeInfo>> DeleteBarcode4ASM012(int oldBarcodeID, string oldBarcodeNo, string boxNo, int userID);
    }
}