Version 3.0.239

This commit is contained in:
Oliver Hauff 2021-07-12 19:30:14 +02:00
parent 2a2d814243
commit 553eaaa4e0
15 changed files with 773 additions and 180 deletions

View file

@ -170,99 +170,99 @@ namespace TINK.Model.Connector
/// <param name="p_oBikesAvailable">Response to create bikes from.</param>
/// <returns>New collection of occupied bikes.</returns>
public static BikeCollection GetBikesOccupied(
this BikesReservedOccupiedResponse p_oBikesOccupiedResponse,
string p_strMail,
Func<DateTime> p_oDateTimeProvider)
this BikesReservedOccupiedResponse bikesOccupiedResponse,
string mail,
Func<DateTime> dateTimeProvider)
{
return GetBikesAll(
new BikesAvailableResponse(),
p_oBikesOccupiedResponse,
p_strMail,
p_oDateTimeProvider);
bikesOccupiedResponse,
mail,
dateTimeProvider);
}
/// <summary> Gets bikes occupied from copri server response. </summary>
/// <param name="p_oBikesAvailable">Response to create bikes from.</param>
/// <returns>New collection of occupied bikes.</returns>
public static BikeCollection GetBikesAll(
BikesAvailableResponse p_oBikesAvailableResponse,
BikesReservedOccupiedResponse p_oBikesOccupiedResponse,
BikesAvailableResponse bikesAvailableResponse,
BikesReservedOccupiedResponse bikesOccupiedResponse,
string p_strMail,
Func<DateTime> p_oDateTimeProvider)
{
var l_oBikesDictionary = new Dictionary<string, BikeInfo>();
var l_oDuplicates = new Dictionary<string, BikeInfo>();
var bikesDictionary = new Dictionary<string, BikeInfo>();
var duplicates = new Dictionary<string, BikeInfo>();
// Get bikes from Copri/ file/ memory, ....
if (p_oBikesAvailableResponse != null
&& p_oBikesAvailableResponse.bikes != null)
if (bikesAvailableResponse != null
&& bikesAvailableResponse.bikes != null)
{
foreach (var bikeInfoResponse in p_oBikesAvailableResponse.bikes.Values)
foreach (var bikeInfoResponse in bikesAvailableResponse.bikes.Values)
{
var l_oBikeInfo = BikeInfoFactory.Create(bikeInfoResponse);
if (l_oBikeInfo == null)
var bikeInfo = BikeInfoFactory.Create(bikeInfoResponse);
if (bikeInfo == null)
{
// Response is not valid.
continue;
}
if (l_oBikesDictionary.ContainsKey(l_oBikeInfo.Id))
if (bikesDictionary.ContainsKey(bikeInfo.Id))
{
// Duplicates are not allowed.
Log.Error($"Duplicate bike with id {l_oBikeInfo.Id} detected evaluating bikes available. Bike status is {l_oBikeInfo.State.Value}.");
Log.Error($"Duplicate bike with id {bikeInfo.Id} detected evaluating bikes available. Bike status is {bikeInfo.State.Value}.");
if (!l_oDuplicates.ContainsKey(l_oBikeInfo.Id))
if (!duplicates.ContainsKey(bikeInfo.Id))
{
l_oDuplicates.Add(l_oBikeInfo.Id, l_oBikeInfo);
duplicates.Add(bikeInfo.Id, bikeInfo);
}
continue;
}
l_oBikesDictionary.Add(l_oBikeInfo.Id, l_oBikeInfo);
bikesDictionary.Add(bikeInfo.Id, bikeInfo);
}
}
// Get bikes from Copri/ file/ memory, ....
if (p_oBikesOccupiedResponse != null
&& p_oBikesOccupiedResponse.bikes_occupied != null)
if (bikesOccupiedResponse != null
&& bikesOccupiedResponse.bikes_occupied != null)
{
foreach (var l_oBikeInfoResponse in p_oBikesOccupiedResponse.bikes_occupied.Values)
foreach (var bikeInfoResponse in bikesOccupiedResponse.bikes_occupied.Values)
{
BikeInfo l_oBikeInfo = BikeInfoFactory.Create(
l_oBikeInfoResponse,
BikeInfo bikeInfo = BikeInfoFactory.Create(
bikeInfoResponse,
p_strMail,
p_oDateTimeProvider);
if (l_oBikeInfo == null)
if (bikeInfo == null)
{
continue;
}
if (l_oBikesDictionary.ContainsKey(l_oBikeInfo.Id))
if (bikesDictionary.ContainsKey(bikeInfo.Id))
{
// Duplicates are not allowed.
Log.Error($"Duplicate bike with id {l_oBikeInfo.Id} detected evaluating bikes occupied. Bike status is {l_oBikeInfo.State.Value}.");
if (!l_oDuplicates.ContainsKey(l_oBikeInfo.Id))
Log.Error($"Duplicate bike with id {bikeInfo.Id} detected evaluating bikes occupied. Bike status is {bikeInfo.State.Value}.");
if (!duplicates.ContainsKey(bikeInfo.Id))
{
l_oDuplicates.Add(l_oBikeInfo.Id, l_oBikeInfo);
duplicates.Add(bikeInfo.Id, bikeInfo);
}
continue;
}
l_oBikesDictionary.Add(l_oBikeInfo.Id, l_oBikeInfo);
bikesDictionary.Add(bikeInfo.Id, bikeInfo);
}
}
// Remove entries which are not unique.
foreach (var l_oDuplicate in l_oDuplicates)
foreach (var l_oDuplicate in duplicates)
{
l_oBikesDictionary.Remove(l_oDuplicate.Key);
bikesDictionary.Remove(l_oDuplicate.Key);
}
return new BikeCollection(l_oBikesDictionary);
return new BikeCollection(bikesDictionary);
}
}
@ -416,7 +416,8 @@ namespace TINK.Model.Connector
bikeInfo.GetIsDemo(),
bikeInfo.GetGroup(),
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike());
bikeInfo.GetTypeOfBike(),
bikeInfo.description);
}
catch (ArgumentException ex)
{
@ -465,7 +466,8 @@ namespace TINK.Model.Connector
bikeInfo.GetIsDemo(),
bikeInfo.GetGroup(),
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike());
bikeInfo.GetTypeOfBike(),
bikeInfo.description);
}
catch (ArgumentException ex)
{
@ -480,7 +482,7 @@ namespace TINK.Model.Connector
}
}
public static Bikes.Bike.TariffDescription Create(this TINK.Repository.Response.TariffDescription tariffDesciption)
public static Bikes.Bike.TariffDescription Create(this TariffDescription tariffDesciption)
{
return new Bikes.Bike.TariffDescription
{