using Hcs.Client.Api.Payload.DeviceMetering;
using Hcs.Client.Api.Request.DeviceMetering;
using Hcs.Service.Async.DeviceMetering;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Hcs.Client.Api
{
    // http://open-gkh.ru/DeviceMeteringServiceAsync/
    public class DeviceMeteringApi(ClientBase client) : ApiBase(client)
    {
        /// <summary>
        /// Экспорт истории показаний и поверок приборов учета пользователя, установленных в указанном доме
        /// </summary>
        /// <param name="payload">Пейлоад выборки ПУ</param>
        /// <param name="token">Токен отмены</param>
        /// <returns>Лицевые счета</returns>
        public async Task<IEnumerable<exportMeteringDeviceHistoryResultType>> ExportMeteringDeviceHistoryAsync(ExportMeteringDeviceHistoryPayload payload, CancellationToken token = default)
        {
            var request = new ExportMeteringDeviceHistoryRequest(client);
            return await request.ExecuteAsync(payload, token);
        }

        /// <summary>
        /// Импорт показаний приборов учета
        /// </summary>
        /// <param name="values">Показания прибора учета</param>
        /// <param name="token">Токен отмены</param>
        /// <returns>true, если операция выполнена успешно, иначе - false</returns>
        public async Task<bool> ImportMeteringDeviceValuesAsync(importMeteringDeviceValuesRequestMeteringDevicesValues values, CancellationToken token = default)
        {
            var request = new ImportMeteringDeviceValuesRequest(client);
            return await request.ExecuteAsync(values, token);
        }
    }
}
