Mike Phares 73de1070b8 SegmentB, personKey,
personKeyFormatted and Sorting
2022-09-01 01:18:08 -07:00

50 lines
2.0 KiB
C#

namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class Sorting
{
internal static Models.Sorting Get(int[] collection)
{
if (collection.Length != 5)
throw new Exception();
Models.Sorting result;
int id = collection[3];
int distance = collection[1];
int confidence = collection[2];
int faceEncoding = collection[0];
int normalizedPixelPercentage = collection[4];
result = new(confidence, distance, faceEncoding, id, normalizedPixelPercentage);
return result;
}
internal static List<int[]> GetFaceNumbers(List<Models.Sorting> collection)
{
List<int[]> results = new();
List<int> faceNumbers;
collection = (from l in collection orderby l.FaceEncoding is not null, l.Distance, l.Confidence descending, l.Id, l.NormalizedPixelPercentage select l).ToList();
foreach (Models.Sorting sorting in collection)
{
faceNumbers = new();
if (sorting.FaceEncoding is null)
faceNumbers.Add(Stateless.ILocation.Factor);
else
faceNumbers.Add(Stateless.ILocation.Factor * 2);
if (sorting.Distance is null)
faceNumbers.Add(Stateless.ILocation.Factor);
else
faceNumbers.Add((int)(Math.Round(sorting.Distance.Value, Stateless.ILocation.Digits) * Stateless.ILocation.Factor));
if (sorting.Confidence is null)
faceNumbers.Add(Stateless.ILocation.Factor);
else
faceNumbers.Add((int)(Math.Round(sorting.Confidence.Value, Stateless.ILocation.Digits) * Stateless.ILocation.Factor));
faceNumbers.Add(sorting.Id);
if (sorting.NormalizedPixelPercentage is null)
faceNumbers.Add(Stateless.ILocation.Factor);
else
faceNumbers.Add(sorting.NormalizedPixelPercentage.Value);
results.Add(faceNumbers.ToArray());
}
return results;
}
}