namespace View_by_Distance.Shared.Models.Stateless.Methods;

public interface IPerson
{

    // ...

    Models.PersonName TestStatic_GetPersonName(string name) =>
        GetPersonName(name);
    static Models.PersonName GetPersonName(string name) =>
       PersonName.GetPersonName(name);

    bool TestStatic_IsDefaultName(string mappingDefaultName, string value) =>
        IsDefaultName(mappingDefaultName, value);
    static bool IsDefaultName(string mappingDefaultName, string value) =>
        value == mappingDefaultName || (value.Length > 1 && value[0] == 'Z' && value[1] == ']');

    bool TestStatic_IsDefaultName(string mappingDefaultName, Models.Person person) =>
        IsDefaultName(mappingDefaultName, person);
    static bool IsDefaultName(string mappingDefaultName, Models.Person person) =>
        IsDefaultName(mappingDefaultName, person.Name.Alias is null ? string.Empty : person.Name.Alias.Value);

    string TestStatic_GetFileFullName(Properties.IStorage storage, string personBirthdayFormat, Models.Person person) =>
        GetFileFullName(storage, personBirthdayFormat, person);
    static string GetFileFullName(Properties.IStorage storage, string personBirthdayFormat, Models.Person person) =>
        IPersonBirthday.GetFileFullName(storage, personBirthdayFormat, person.Birthday);

    Models.Person TestStatic_GetPerson(string mappingDefaultName, char[] personCharacters, string personDisplayDirectoryName, long personKey, Models.PersonBirthday personBirthday) =>
        GetPerson(mappingDefaultName, personCharacters, personDisplayDirectoryName, personKey, personBirthday);
    static Models.Person GetPerson(string mappingDefaultName, char[] personCharacters, string personDisplayDirectoryName, long personKey, Models.PersonBirthday personBirthday) =>
        Person.GetPerson(mappingDefaultName, personCharacters, personDisplayDirectoryName, Array.Empty<string>(), personKey, personBirthday);

    Models.Person TestStatic_GetPerson(string mappingDefaultName, char[] personCharacters, string personDisplayDirectoryName, string[] personDisplayDirectoryAllFiles, long personKey) =>
        GetPerson(mappingDefaultName, personCharacters, personDisplayDirectoryName, personDisplayDirectoryAllFiles, personKey);
    static Models.Person GetPerson(string mappingDefaultName, char[] personCharacters, string personDisplayDirectoryName, string[] personDisplayDirectoryAllFiles, long personKey) =>
        Person.GetPerson(mappingDefaultName, personCharacters, personDisplayDirectoryName, personDisplayDirectoryAllFiles, personKey, IPersonBirthday.GetPersonBirthday(personKey));

}