public async Task <PostMeterReadingsResponse> Upload(PostMeterReadingsRequest request, CancellationToken cancellationToken = default)
        {
            var requestUrl      = "https://localhost:44362/customers/meter-readings";
            var responseMessage = await s_client.PostAsJsonAsync(requestUrl, request, cancellationToken);

            var jsonString = await responseMessage.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <PostMeterReadingsResponse>(jsonString));
        }
        public async Task OnPostAsync()
        {
            if (FormFile == null)
            {
                return;
            }

            var request = new PostMeterReadingsRequest();

            try
            {
                using var reader = FormFile.OpenReadStream();
                using var csv    = new CsvReader(new ExcelParser(reader, "in"));
                var meterReadings = csv.GetRecordsAsync <MeterReading>();

                request.MeterReadings = new List <PostMeterReadingsRequest.MeterReading>();

                await foreach (var meterReading in meterReadings)
                {
                    request.MeterReadings.Add(new PostMeterReadingsRequest.MeterReading
                    {
                        AccountId            = meterReading.AccountId,
                        MeterReadValue       = meterReading.MeterReadValue,
                        MeterReadingDateTime = DateTime.Parse(meterReading.MeterReadingDateTime)
                    });
                }
            }
            catch (Exception)
            {
                UploadError = true;
                return;
            }

            var response = await _meterReadingsClient.Upload(request, CancellationToken.None);

            TotalSuccessCount = response.TotalSuccessCount;
            TotalFailCount    = response.TotalFailCount;
        }