using Edge.Core.Domain.FccNozzleInfo.Output;
using Edge.Core.Domain.FccTankInfo.Input;
using Edge.Core.Domain.FccTankInfo.Output;

namespace FccLite.Web.Repositories.FccTankInfo
{
    public interface ITankReposity
    {
        /// <summary>
        /// 统计站点 id 获取油罐基本信息
        /// </summary>
        /// <param name="stationId">站点id</param>
        /// <returns></returns>
        Task<List<BaseTankInfoOutput>> GetBaseTankByStationIdAsync(long stationId);

        /// <summary>
        /// 通过油罐id获取油罐详情信息
        /// </summary>
        /// <param name="tankId">油罐id</param>
        /// <returns></returns>
        Task<Edge.Core.Domain.FccTankInfo.FccTankInfo?> GetDetailsTankByTankIdAsync(long tankId);

        /// <summary>
        /// 增加油罐
        /// </summary>
        /// <param name="addTankInput">油罐信息</param>
        /// <returns></returns>
        Task<long> AddDetailsTankAsync(AddTankInput addTankInput);

        /// <summary>
        /// 修改油罐
        /// </summary>
        /// <param name="updateTankInput">油罐信息</param>
        /// <returns></returns>
        Task<long> UpdateDetailsTankAsync(UpdateTankInput updateTankInput);

        /// <summary>
        /// 通过油罐id删除油罐
        /// </summary>
        /// <param name="id">油罐id</param>
        /// <returns></returns>
        Task<Edge.Core.Domain.FccTankInfo.FccTankInfo?> DeleteTankById(long id);

        /// <summary>
        /// 获取油罐id,油罐号
        /// </summary>
        /// <returns></returns>
        Task<List<DetailsNozzleInfoOutput.RelatableTank>> GetTankInfo();

        /// <summary>
        /// 获取油罐详情
        /// </summary>
        /// <param name="id">油罐id</param>
        /// <returns></returns>
        Task<DetailTankInfoForCloud?> GetTankDetail(long id);
    }
}
