IsDefault

extraSaveContainer
This commit is contained in:
Mike Phares 2023-07-31 09:47:56 -07:00
parent 5b9e32bce6
commit c06435abf9
6 changed files with 52 additions and 56 deletions

View File

@ -57,6 +57,8 @@ public partial class DlibDotNet
_IsEnvironment = isEnvironment; _IsEnvironment = isEnvironment;
long ticks = DateTime.Now.Ticks; long ticks = DateTime.Now.Ticks;
_Exceptions = new List<string>(); _Exceptions = new List<string>();
if (ticks.ToString().Last() == '0')
ticks += 1;
_Log = Serilog.Log.ForContext<DlibDotNet>(); _Log = Serilog.Log.ForContext<DlibDotNet>();
ReadOnlyCollection<PersonContainer> personContainers; ReadOnlyCollection<PersonContainer> personContainers;
Property.Models.Configuration propertyConfiguration = Property.Models.Binder.Configuration.Get(isEnvironment, configurationRoot); Property.Models.Configuration propertyConfiguration = Property.Models.Binder.Configuration.Get(isEnvironment, configurationRoot);

View File

@ -383,14 +383,13 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
string facesDirectory; string facesDirectory;
string? directoryName; string? directoryName;
string personDirectory; string personDirectory;
string facePartsDirectory;
FileHolder faceFileHolder; FileHolder faceFileHolder;
string facePartsDirectory;
string personKeyFormatted; string personKeyFormatted;
List<int> distinct = new(); List<int> distinct = new();
SaveContainer? saveContainer; SaveContainer? saveContainer;
FileHolder facePartsFileHolder; FileHolder facePartsFileHolder;
FileHolder hiddenFaceFileHolder; FileHolder hiddenFaceFileHolder;
string? facePartsContentCollectionFile;
Dictionary<int, Mapping>? wholePercentagesToMapping; Dictionary<int, Mapping>? wholePercentagesToMapping;
int padLeft = _Configuration.FaceDistancePermyriad.ToString().Length; int padLeft = _Configuration.FaceDistancePermyriad.ToString().Length;
string forceSingleImageHumanized = nameof(Shared.Models.Stateless.IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title); string forceSingleImageHumanized = nameof(Shared.Models.Stateless.IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
@ -491,10 +490,11 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
{ {
if (saveIndividually) if (saveIndividually)
{ {
facePartsContentCollectionFile = Stateless.MapLogic.GetFacePartsContentCollectionFile(_Configuration.FacePartsFileNameExtension, d2FacePartsContentCollectionDirectory, mapping.MappingFromItem); facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, mapping.MappingFromItem);
if (facePartsContentCollectionFile is null) facePartsFileHolder = new(Path.Combine(facePartsDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacePartsFileNameExtension}"));
(saveContainer, SaveContainer? extraSaveContainer) = Stateless.MapLogic.GetContainers(_Configuration.FacesFileNameExtension, _Configuration.FacePartsFileNameExtension, directory, faceFileHolder, facePartsFileHolder, mapping);
if (extraSaveContainer is null)
continue; continue;
(saveContainer, SaveContainer extraSaveContainer) = Stateless.MapLogic.GetContainers(_Configuration.FacesFileNameExtension, _Configuration.FacePartsFileNameExtension, directory, faceFileHolder, facePartsContentCollectionFile, mapping);
results.Add(extraSaveContainer); results.Add(extraSaveContainer);
} }
else else

View File

@ -3,6 +3,7 @@ using ShellProgressBar;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Globalization;
using View_by_Distance.Shared.Models; using View_by_Distance.Shared.Models;
using View_by_Distance.Shared.Models.Stateless.Methods; using View_by_Distance.Shared.Models.Stateless.Methods;
using WindowsShortcutFactory; using WindowsShortcutFactory;
@ -14,10 +15,12 @@ internal abstract class MapLogic
private record Record(string PersonKeyFormatted, private record Record(string PersonKeyFormatted,
string[] PersonDisplayDirectoryNames, string[] PersonDisplayDirectoryNames,
bool IsDefault,
string MappedFaceFile); string MappedFaceFile);
private record PersonKeyFormattedIdThenWholePercentages(string PersonKeyFormatted, private record PersonKeyFormattedIdThenWholePercentages(string PersonKeyFormatted,
string[] PersonDisplayDirectoryNames, string[] PersonDisplayDirectoryNames,
bool IsDefault,
string MappedFaceFile, string MappedFaceFile,
int Id, int Id,
int WholePercentages); int WholePercentages);
@ -90,6 +93,7 @@ internal abstract class MapLogic
private static void Individually(Configuration configuration, string ticksDirectory, string directory) private static void Individually(Configuration configuration, string ticksDirectory, string directory)
{ {
bool isDefault;
string[] files; string[] files;
FileInfo[] collection; FileInfo[] collection;
string[] facesFileNames; string[] facesFileNames;
@ -133,7 +137,8 @@ internal abstract class MapLogic
if (files.Length != 4) if (files.Length != 4)
continue; continue;
collection = files.Select(l => new FileInfo(l)).ToArray(); collection = files.Select(l => new FileInfo(l)).ToArray();
if (IPerson.IsDefaultName(configuration.MappingDefaultName, alphaDirectoryName)) isDefault = alphaDirectoryName.First() == 'Z' && IPersonBirthday.IsCounterPersonYear(personKeyFormatted[..4]);
if (isDefault)
facesFileNames = (from l in collection where l.Extension == configuration.FacesFileNameExtension select l.FullName).ToArray(); facesFileNames = (from l in collection where l.Extension == configuration.FacesFileNameExtension select l.FullName).ToArray();
else else
facesFileNames = (from l in collection where l.Extension == configuration.FacesFileNameExtension && l.Name.Contains(matchDirectoryName) select l.FullName).ToArray(); facesFileNames = (from l in collection where l.Extension == configuration.FacesFileNameExtension && l.Name.Contains(matchDirectoryName) select l.FullName).ToArray();
@ -215,12 +220,14 @@ internal abstract class MapLogic
List<Record> results = new(); List<Record> results = new();
int? id; int? id;
long ticks; long ticks;
bool isDefault;
string[] files; string[] files;
string fileName; string fileName;
bool isNotDefault; DateTime dateTime;
TimeSpan timeSpan; TimeSpan timeSpan;
bool check = false; bool check = false;
int? wholePercentages; int? wholePercentages;
string checkDirectory;
string[] yearDirectories; string[] yearDirectories;
string personKeyFormatted; string personKeyFormatted;
string ticksDirectoryName; string ticksDirectoryName;
@ -274,9 +281,12 @@ internal abstract class MapLogic
personDisplayDirectoryNames = IPath.GetDirectoryNames(personNameDirectory); personDisplayDirectoryNames = IPath.GetDirectoryNames(personNameDirectory);
if (!personDisplayDirectoryNames.Any()) if (!personDisplayDirectoryNames.Any())
continue; continue;
if (personDisplayDirectoryNames[^1] == "Z" && personKeyFormatted.StartsWith("140")) isDefault = personDisplayDirectoryNames[^1].First() == 'Z' && IPersonBirthday.IsCounterPersonYear(personKeyFormatted[..4]);
if (isDefault && personDisplayDirectoryNames[^1].Length == 1)
{ {
string checkDirectory = Path.Combine(yearDirectory, $"Z]{DateTime.Now.Ticks}"); if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length || !DateTime.TryParseExact(personKeyFormatted, configuration.PersonBirthdayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
continue;
checkDirectory = Path.Combine(yearDirectory, $"Z]{dateTime.Ticks}");
if (Directory.Exists(checkDirectory)) if (Directory.Exists(checkDirectory))
{ {
files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly); files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
@ -284,6 +294,8 @@ internal abstract class MapLogic
continue; continue;
} }
Directory.Move(personNameDirectory, checkDirectory); Directory.Move(personNameDirectory, checkDirectory);
if (!check)
check = true;
continue; continue;
} }
files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly); files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
@ -293,8 +305,7 @@ internal abstract class MapLogic
throw new Exception($"Move personKey directories up one from {manualCopyHumanized} and delete {manualCopyHumanized} directory!"); throw new Exception($"Move personKey directories up one from {manualCopyHumanized} and delete {manualCopyHumanized} directory!");
if (personKeyFormatted == forceSingleImageHumanized && files.Any()) if (personKeyFormatted == forceSingleImageHumanized && files.Any())
throw new Exception($"Move personKey directories up one from {forceSingleImageHumanized} and delete {forceSingleImageHumanized} directory!"); throw new Exception($"Move personKey directories up one from {forceSingleImageHumanized} and delete {forceSingleImageHumanized} directory!");
isNotDefault = personDisplayDirectoryNames[^1].First() != 'Z' || !personKeyFormatted.StartsWith("140"); if (!isDefault)
if (isNotDefault)
{ {
if (personKeyFormattedToNewestPersonKeyFormatted.Count > 0 && newestPersonKeyFormatted is null) if (personKeyFormattedToNewestPersonKeyFormatted.Count > 0 && newestPersonKeyFormatted is null)
RenameUnknown(files); RenameUnknown(files);
@ -308,7 +319,7 @@ internal abstract class MapLogic
} }
if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length) if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length)
continue; continue;
if (personDisplayDirectoryNames[^1].Length == 1 || !isNotDefault || !personKeyFormattedCollection.Contains(personKeyFormatted)) if (personDisplayDirectoryNames[^1].Length == 1 || isDefault || !personKeyFormattedCollection.Contains(personKeyFormatted))
personFirstInitialDirectory = personNameDirectory; personFirstInitialDirectory = personNameDirectory;
else else
{ {
@ -344,7 +355,7 @@ internal abstract class MapLogic
continue; continue;
} }
distinct.Add(fileName); distinct.Add(fileName);
results.Add(new(personKeyFormatted, personDisplayDirectoryNames, mappedFaceFile)); results.Add(new(personKeyFormatted, personDisplayDirectoryNames, isDefault, mappedFaceFile));
} }
personNameLinkDirectories = Directory.GetDirectories(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly); personNameLinkDirectories = Directory.GetDirectories(personFirstInitialDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string personNameLinkDirectory in personNameLinkDirectories) foreach (string personNameLinkDirectory in personNameLinkDirectories)
@ -479,10 +490,10 @@ internal abstract class MapLogic
string message = $") {collection.Count:000} join from ticks Director(ies) - C - {totalSeconds} total second(s)"; string message = $") {collection.Count:000} join from ticks Director(ies) - C - {totalSeconds} total second(s)";
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true }; ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
using ProgressBar progressBar = new(collection.Count, message, options); using ProgressBar progressBar = new(collection.Count, message, options);
foreach ((string personKeyFormatted, string[] personDisplayDirectoryNames, string mappedFaceFile) in collection) foreach (Record record in collection)
{ {
progressBar.Tick(); progressBar.Tick();
(id, wholePercentages) = IMapping.GetConverted(configuration.FacesFileNameExtension, mappedFaceFile); (id, wholePercentages) = IMapping.GetConverted(configuration.FacesFileNameExtension, record.MappedFaceFile);
if (id is null || wholePercentages is null) if (id is null || wholePercentages is null)
{ {
result++; result++;
@ -493,10 +504,10 @@ internal abstract class MapLogic
wholePercentagesCollection = idToWholePercentagesCollection[id.Value]; wholePercentagesCollection = idToWholePercentagesCollection[id.Value];
wholePercentagesCollection.Add(wholePercentages.Value); wholePercentagesCollection.Add(wholePercentages.Value);
idToWholePercentagesCollection[id.Value].Add(wholePercentages.Value); idToWholePercentagesCollection[id.Value].Add(wholePercentages.Value);
personDisplayDirectoryName = personDisplayDirectoryNames[^1]; personDisplayDirectoryName = record.PersonDisplayDirectoryNames[^1];
if (string.IsNullOrEmpty(personDisplayDirectoryName)) if (string.IsNullOrEmpty(personDisplayDirectoryName))
continue; continue;
personKeyFormattedIdThenWholePercentagesCollection.Add(new(personKeyFormatted, personDisplayDirectoryNames, mappedFaceFile, id.Value, wholePercentages.Value)); personKeyFormattedIdThenWholePercentagesCollection.Add(new(record.PersonKeyFormatted, record.PersonDisplayDirectoryNames, record.IsDefault, record.MappedFaceFile, id.Value, wholePercentages.Value));
} }
return result; return result;
} }
@ -536,7 +547,7 @@ internal abstract class MapLogic
person = IPerson.GetPerson(configuration.MappingDefaultName, configuration.PersonCharacters.ToArray(), configuration.MappingDefaultName, personKey, personBirthday); person = IPerson.GetPerson(configuration.MappingDefaultName, configuration.PersonCharacters.ToArray(), configuration.MappingDefaultName, personKey, personBirthday);
personContainer = new(approximateYears, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey, person); personContainer = new(approximateYears, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey, person);
results.Add(personContainer); results.Add(personContainer);
if (results.Count > 999) if (results.Count > 99)
break; break;
} }
return results; return results;
@ -773,7 +784,7 @@ internal abstract class MapLogic
(id, wholePercentages) = IMapping.GetConverted(configuration.FacesFileNameExtension, file[..^4]); (id, wholePercentages) = IMapping.GetConverted(configuration.FacesFileNameExtension, file[..^4]);
if (id is null || wholePercentages is null) if (id is null || wholePercentages is null)
return; return;
if (file.EndsWith(lnk) || (!configuration.DistanceMoveUnableToMatch && !configuration.DistanceRenameToMatch)) if (file.EndsWith(lnk) || (!configuration.DistanceMoveUnableToMatch && !configuration.DistanceRenameToMatch) || !File.Exists(file))
directories = new List<MetadataExtractor.Directory>(); directories = new List<MetadataExtractor.Directory>();
else else
directories = MetadataExtractor.ImageMetadataReader.ReadMetadata(file); directories = MetadataExtractor.ImageMetadataReader.ReadMetadata(file);
@ -1023,16 +1034,16 @@ internal abstract class MapLogic
return (result, saveContainer); return (result, saveContainer);
} }
internal static (SaveContainer, SaveContainer) GetContainers(string facesFileNameExtension, string facePartsFileNameExtension, string directory, FileHolder faceFileHolder, string facePartsContentCollectionFile, Mapping mapping) internal static (SaveContainer, SaveContainer?) GetContainers(string facesFileNameExtension, string facePartsFileNameExtension, string directory, FileHolder faceFileHolder, FileHolder facePartsFileHolder, Mapping mapping)
{ {
string checkFile; string checkFile;
SaveContainer result; SaveContainer? saveContainer;
if (mapping.MappingFromLocation is null) if (mapping.MappingFromLocation is null)
throw new NullReferenceException(nameof(mapping.MappingFromLocation)); throw new NullReferenceException(nameof(mapping.MappingFromLocation));
checkFile = Path.Combine(directory, $"{mapping.MappingFromItem.ImageFileHolder.Name}{facePartsFileNameExtension}"); checkFile = Path.Combine(directory, $"{mapping.MappingFromItem.ImageFileHolder.Name}{facePartsFileNameExtension}");
result = new(checkFile, directory, new(facePartsContentCollectionFile)); saveContainer = !facePartsFileHolder.Exists ? null : new(checkFile, directory, facePartsFileHolder);
checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{facesFileNameExtension}"); checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{facesFileNameExtension}");
return (result, new(checkFile, directory, faceFileHolder)); return (new(checkFile, directory, faceFileHolder), saveContainer);
} }
private static IEnumerable<(string, string)> GetCollection(string[] yearDirectories) private static IEnumerable<(string, string)> GetCollection(string[] yearDirectories)

View File

@ -4,6 +4,7 @@ using Serilog;
using ShellProgressBar; using ShellProgressBar;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Globalization;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using View_by_Distance.Offset.Date.Time.Original.Models; using View_by_Distance.Offset.Date.Time.Original.Models;
@ -198,8 +199,8 @@ public class OffsetDateTimeOriginal
bool targetIsValidImageFormatExtension = _PropertyConfiguration.ValidImageFormatExtensions.Contains(targetFileHolder.ExtensionLowered); bool targetIsValidImageFormatExtension = _PropertyConfiguration.ValidImageFormatExtensions.Contains(targetFileHolder.ExtensionLowered);
badIsIgnoreExtension = badIsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(badFileHolder.ExtensionLowered); badIsIgnoreExtension = badIsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(badFileHolder.ExtensionLowered);
targetIsIgnoreExtension = targetIsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(targetFileHolder.ExtensionLowered); targetIsIgnoreExtension = targetIsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(targetFileHolder.ExtensionLowered);
DateTime minimumDateTime = DateTime.ParseExact(Path.GetFileName(minimumDirectory.First()), format, null, System.Globalization.DateTimeStyles.None); DateTime minimumDateTime = DateTime.ParseExact(Path.GetFileName(minimumDirectory.First()), format, CultureInfo.InvariantCulture, DateTimeStyles.None);
DateTime maximumDateTime = DateTime.ParseExact(Path.GetFileName(maximumDirectory.First()), format, null, System.Globalization.DateTimeStyles.None).AddHours(23); DateTime maximumDateTime = DateTime.ParseExact(Path.GetFileName(maximumDirectory.First()), format, CultureInfo.InvariantCulture, DateTimeStyles.None).AddHours(23);
(badDateTimeOriginal, badDateTimes, badId, badMessage) = Property.Models.Stateless.IProperty.Get(_PropertyConfiguration.PopulatePropertyId, badFileHolder, badIsIgnoreExtension, badIsValidImageFormatExtension, asciiEncoding); (badDateTimeOriginal, badDateTimes, badId, badMessage) = Property.Models.Stateless.IProperty.Get(_PropertyConfiguration.PopulatePropertyId, badFileHolder, badIsIgnoreExtension, badIsValidImageFormatExtension, asciiEncoding);
if (badMessage is not null) if (badMessage is not null)
throw new Exception(badMessage); throw new Exception(badMessage);

View File

@ -13,6 +13,18 @@ public interface IPersonBirthday
// ... // ...
static bool IsCounterPersonBirthday(Models.PersonBirthday personBirthday) =>
personBirthday.Value.Year < 1809;
static bool IsCounterPersonYear(int year) =>
year < 1809;
static bool IsCounterPersonYear(string year) =>
new string[] { year, "1809" }.Min() == year;
static bool IsWrongYearFilterOrCounterPersonBirthday(bool? isWrongYear, Models.PersonBirthday personBirthday) =>
isWrongYear is null || isWrongYear.Value || IsCounterPersonBirthday(personBirthday);
string TestStatic_GetDateTime(string personKeyFormatted) => string TestStatic_GetDateTime(string personKeyFormatted) =>
GetDateTime(personKeyFormatted); GetDateTime(personKeyFormatted);
static string GetDateTime(string personKeyFormatted) => static string GetDateTime(string personKeyFormatted) =>
@ -68,11 +80,6 @@ public interface IPersonBirthday
static string GetFormatted(string personBirthdayFormat, long personKey) => static string GetFormatted(string personBirthdayFormat, long personKey) =>
GetFormatted(personBirthdayFormat, GetPersonBirthday(personKey)); GetFormatted(personBirthdayFormat, GetPersonBirthday(personKey));
bool TestStatic_IsCounterPersonBirthday(Models.PersonBirthday personBirthday) =>
IsCounterPersonBirthday(personBirthday);
static bool IsCounterPersonBirthday(Models.PersonBirthday personBirthday) =>
PersonBirthday.IsCounterPersonBirthday(personBirthday);
Models.PersonBirthday TestStatic_GetNextBirthDate(Properties.IStorage storage) => Models.PersonBirthday TestStatic_GetNextBirthDate(Properties.IStorage storage) =>
GetNextBirthDate(storage); GetNextBirthDate(storage);
static Models.PersonBirthday GetNextBirthDate(Properties.IStorage storage) => static Models.PersonBirthday GetNextBirthDate(Properties.IStorage storage) =>
@ -103,11 +110,6 @@ public interface IPersonBirthday
static TimeSpan? GetTimeSpan(DateTime minimumDateTime, bool? isWrongYear, Models.PersonBirthday personBirthday) => static TimeSpan? GetTimeSpan(DateTime minimumDateTime, bool? isWrongYear, Models.PersonBirthday personBirthday) =>
PersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear, personBirthday); PersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear, personBirthday);
bool TestStatic_IsWrongYearFilterOrCounterPersonBirthday(bool? isWrongYear, Models.PersonBirthday personBirthday) =>
IsWrongYearFilterOrCounterPersonBirthday(isWrongYear, personBirthday);
static bool IsWrongYearFilterOrCounterPersonBirthday(bool? isWrongYear, Models.PersonBirthday personBirthday) =>
PersonBirthday.IsWrongYearFilterOrCounterPersonBirthday(isWrongYear, personBirthday);
string TestStatic_GetFileFullName(Properties.IStorage storage, string personBirthdayFormat, Models.PersonBirthday personBirthday) => string TestStatic_GetFileFullName(Properties.IStorage storage, string personBirthdayFormat, Models.PersonBirthday personBirthday) =>
GetFileFullName(storage, personBirthdayFormat, personBirthday); GetFileFullName(storage, personBirthdayFormat, personBirthday);
static string GetFileFullName(Properties.IStorage storage, string personBirthdayFormat, Models.PersonBirthday personBirthday) => static string GetFileFullName(Properties.IStorage storage, string personBirthdayFormat, Models.PersonBirthday personBirthday) =>

View File

@ -24,30 +24,10 @@ internal abstract class PersonBirthday
return result; return result;
} }
internal static bool IsCounterPersonBirthday(Models.PersonBirthday personBirthday)
{
bool result;
if (personBirthday.Value.Year < 1809)
result = true;
else
result = false;
return result;
}
internal static bool IsWrongYearFilterOrCounterPersonBirthday(bool? isWrongYear, Models.PersonBirthday personBirthday)
{
bool result;
if (isWrongYear is null || isWrongYear.Value || IsCounterPersonBirthday(personBirthday))
result = true;
else
result = false;
return result;
}
internal static TimeSpan? GetTimeSpan(long minimumDateTimeTicks, bool? isWrongYear, Models.PersonBirthday personBirthday) internal static TimeSpan? GetTimeSpan(long minimumDateTimeTicks, bool? isWrongYear, Models.PersonBirthday personBirthday)
{ {
TimeSpan? timeSpan; TimeSpan? timeSpan;
bool isWrongYearFilterOrCounterPersonBirthday = IsWrongYearFilterOrCounterPersonBirthday(isWrongYear, personBirthday); bool isWrongYearFilterOrCounterPersonBirthday = IPersonBirthday.IsWrongYearFilterOrCounterPersonBirthday(isWrongYear, personBirthday);
if (isWrongYearFilterOrCounterPersonBirthday) if (isWrongYearFilterOrCounterPersonBirthday)
timeSpan = null; timeSpan = null;
else else