mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2024-11-05 02:26:29 +01:00
64 lines
2.8 KiB
C#
64 lines
2.8 KiB
C#
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
namespace TINK.Model.Connector.Updater
|
|||
|
{
|
|||
|
public static class RentalDescriptionFactory
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Creates rental description object from JSON- tarif description object.
|
|||
|
/// </summary>
|
|||
|
/// <param name="rentalDesciption">Source JSON object.</param>
|
|||
|
/// <returns>Tariff description object.</returns>
|
|||
|
|
|||
|
public static Bikes.BikeInfoNS.RentalDescription Create(this Repository.Response.RentalDescription rentalDesciption)
|
|||
|
{
|
|||
|
Bikes.BikeInfoNS.RentalDescription.TariffElement CreateTarifEntry(string[] elementValue)
|
|||
|
{
|
|||
|
return new Bikes.BikeInfoNS.RentalDescription.TariffElement
|
|||
|
{
|
|||
|
Description = elementValue != null && elementValue.Length > 0 ? elementValue[0] : string.Empty,
|
|||
|
Value = elementValue != null && elementValue.Length > 1 ? elementValue[1] : string.Empty,
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
Bikes.BikeInfoNS.RentalDescription.InfoElement CreateInfoElement(string[] elementValue)
|
|||
|
{
|
|||
|
return new Bikes.BikeInfoNS.RentalDescription.InfoElement
|
|||
|
{
|
|||
|
Key = elementValue != null && elementValue.Length > 0 ? elementValue[0] : string.Empty,
|
|||
|
Value = elementValue != null && elementValue.Length > 1 ? elementValue[1] : string.Empty,
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
// Read tariff elements.
|
|||
|
var tarifEntries = rentalDesciption?.tarif_elements != null
|
|||
|
? rentalDesciption.tarif_elements.Select(x => new
|
|||
|
{
|
|||
|
Key = x.Key,
|
|||
|
Value = CreateTarifEntry(x.Value)
|
|||
|
}).ToLookup(x => x.Key, x => x.Value).ToDictionary(x => x.Key, x => x.First())
|
|||
|
: new Dictionary<string, Bikes.BikeInfoNS.RentalDescription.TariffElement>();
|
|||
|
|
|||
|
// Read info elements.
|
|||
|
var InfoEntries = rentalDesciption?.rental_info != null
|
|||
|
? rentalDesciption.rental_info.Select(x => new
|
|||
|
{
|
|||
|
Key = x.Key,
|
|||
|
Value = CreateInfoElement(x.Value)
|
|||
|
}).ToLookup(x => x.Key, x => x.Value).ToDictionary(x => x.Key, x => x.First())
|
|||
|
: new Dictionary<string, Bikes.BikeInfoNS.RentalDescription.InfoElement>();
|
|||
|
|
|||
|
var bike = new Bikes.BikeInfoNS.RentalDescription
|
|||
|
{
|
|||
|
Name = rentalDesciption?.name ?? string.Empty,
|
|||
|
Id = int.TryParse(rentalDesciption?.id ?? string.Empty, out int number) ? number : (int?)null,
|
|||
|
TariffEntries = tarifEntries,
|
|||
|
InfoEntries = InfoEntries
|
|||
|
};
|
|||
|
|
|||
|
return bike;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|