using File_Folder_Helper.Models;
using Microsoft.Extensions.Logging;
using System.Text.Json;

namespace File_Folder_Helper.ADO2024.PI2;

internal static partial class Helper20240513
{

    internal static void PersonKeyToName(ILogger<Worker> logger, List<string> args)
    {
        Person? person;
        string directoryName;
        string checkDirectory;
        string root = Path.GetFullPath(args[0]);
        string json = File.ReadAllText(args[2]);
        Dictionary<string, Person> keyValuePairs = [];
        string[] directories = Directory.GetDirectories(root, "*", SearchOption.TopDirectoryOnly);
        Dictionary<long, Person> people = JsonSerializer.Deserialize(json, PeopleSourceGenerationContext.Default.DictionaryInt64Person) ?? throw new NullReferenceException();
        foreach (KeyValuePair<long, Person> keyValuePair in people)
        {
            if (keyValuePair.Value.Birth?.Note is null)
                continue;
            keyValuePairs.Add(keyValuePair.Value.Birth.Note, keyValuePair.Value);
        }
        foreach (string directory in directories)
        {
            directoryName = Path.GetFileName(directory);
            if (!keyValuePairs.TryGetValue(directoryName, out person) || person.Name?.ForwardSlashFull is null)
                continue;
            checkDirectory = Path.Combine(root, $"{person.Name.ForwardSlashFull.Replace('/', '-')}{directoryName}-{person.Id}");
            if (Directory.Exists(checkDirectory))
                continue;
            Directory.Move(directory, checkDirectory);
            logger.LogInformation("<{directory}> was moved", directory);
        }
    }

}