Table of Contents

Получение единиц измерения

Пример показывает, как получить список измеряемых величин и их единицы измерения средствами клиентской библиотеки Ascon.Polynom.Web.Api.Client. Проект — Samples.WebApi.GetMeasureUnit.

Требования

  • .NET 8.
  • Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
  • Пакет Ascon.Polynom.Web.Api.Client из локального фида (подключается автоматически).

Алгоритм

  1. Авторизоваться в web-API.
  2. Получить список измеряемых величин.
  3. Выбрать измеряемую величину.
  4. Получить единицы измерения выбранной величины.
  5. Обработать и сохранить результат.
  6. Выйти из сессии.

Авторизация

Авторизация выполняется хелпером PolynomClientSession поверх AuthorizationService. Подробно — в разделе Авторизация в C# через клиентскую библиотеку.

Реализация

Измеряемые величины запрашиваются методом GetAll сервиса MeasureEntityApiClient с моделью GetAllMeasureEntityRequest. Единицы измерения получаются методом GetByEntity сервиса MeasureUnitApiClient с моделью GetByEntityMeasureUnitRequest.

using Ascon.Polynom.Web.Api.Client.Enums;
using Ascon.Polynom.Web.Api.Client.Json;

using Samples.WebApi.Common.Services;

using var session = await PolynomClientSession.CreateAsync(cancellationToken);

// Название измеряемой величины.
var measureEntityName = "Длина";

var measureEntities = await session.Factory.CreateMeasureEntityApiClient()
    .GetAll(new GetAllMeasureEntityRequest(), cancellationToken);

if (measureUnits is not null && measureUnits.Count > 0)
{
    // Базовая единица измерения выбранной величины — для пересчёта значений.
    var baseUnit = measureUnits.FirstOrDefault(unit => unit.IsBasic)
        ?? throw new InvalidOperationException(
            $"Базовая единица измерения для величины «{measureEntityName}» не найдена.");

    // Сохранение полного списка единиц измерения в файл JSON.
    var json = JsonSerializer.Serialize(measureUnits,
        new JsonSerializerOptions(PolynomJsonOptions.Options) { WriteIndented = true });
        
    await File.WriteAllTextAsync("measure-units.json", json, cancellationToken);
}

await session.SignOutAsync(cancellationToken);

Используемые методы библиотеки

Сервис Метод Назначение
MeasureEntityApiClient GetAll(GetAllMeasureEntityRequest, CancellationToken) Список измеряемых величин
MeasureUnitApiClient GetByEntity(GetByEntityMeasureUnitRequest, CancellationToken) Единицы измерения измеряемой величины

Результат

Метод возвращает список MeasureUnit для выбранной величины; при наличии единиц определяется базовая (IsBasic), а полный список сохраняется в файл JSON.

Возможные ошибки

  • Величина не найдена — ошибку выбросит First; предварительно проверьте список величин.
  • Пустой список единиц — у величины не заданы единицы измерения.
  • Сессия истекла — библиотека обновит токен и повторит запрос; при неудаче требуется повторный вход.

Ссылки

Пример-приложение в составе SDK: SDK/Web/Samples/Server/Samples.WebApi.GetMeasureUnit.