using System;
using System.Collections.Generic;
using UnityEngine;

public class SceneTaskDataLoader : SceneBaseDataLoader<Task>
{
    public SceneTaskDataLoader(string _objectListName, string _objectFolderName) 
    {
        SaveModelSystem = new SaveTaskDataManager();
        SaveModelSystem.ObjectFolderName = _objectFolderName;
        SaveModelSystem.ObjectListName = _objectListName;
    }

    // public override List<Task> LoadData(SceneElementTypeEnum type)
    // {
    //     string path = SaveSystem.GetSavePath();
    //
    //     if (!Directory.Exists(path))    // if not exists thats mean there was nothing saved yet - nothing to load
    //         return new List<Task>();
    //
    //     FileInfo[] fileInfo = new DirectoryInfo(path).GetFiles();
    //
    //     foreach(FileInfo file in fileInfo)
    //     {
    //         if(file.Name != ItemsListName + ".fun")
    //             continue;
    //
    //         List<Task> taskList = SaveQuestSystem.LoadQuestsList(ItemsListName);
    //
    //         foreach(Task task in taskList)
    //             Elements.Add(task);
    //     }
    //
    //     return Elements;
    // }

    // public override void SaveData(List<Task> _elements, SceneElementTypeEnum type)
    // {
    //     // Case I - if we remember all list
    //     //      1) if after removed item form DynamicList is empty - remove all file
    //     //      2) if after removed item form DynamciList there are another one - save updated list again
    //     if(TaskManager.Instance.taskList.Count > 0) {
    //         SaveQuestSystem.SaveQuestsList(_elements, ItemsListName);
    //     } else {
    //         string _path = SaveSystem.GetSavePath() + "/" + ItemsListName + ".fun";
    //
    //         try    
    //         {    
    //             Debug.Log("File to remove: " + _path);
    //
    //             if(File.Exists(_path))
    //             {
    //                 File.Delete(_path);
    //             }    
    //         }    
    //         catch (IOException ioExp)    
    //         {    
    //             Debug.LogError(ioExp.Message);    
    //         }
    //     }
    //
    //     // Case II - if we rememenber object per file 
    //     //      1) remove specyfic file
    //     //
    //     // Unfortunatelly we don't use this way of saving items yet :D
    //
    // }

    protected override List<Task> LoadGenericData()
    {
        SaveModelSystem.Path = PathBuilder.BuildSavePath().GetString();

        return SaveModelSystem.LoadModelList();
    }

    protected override bool SaveGenericData(List<Task> _elements)
    {
        SaveModelSystem.Path = PathBuilder.BuildSavePath().GetString();

        try
        {
            SaveModelSystem.SaveModelList(_elements);

            return true;
        }
        catch (Exception e) { Debug.LogError(e.Message); }

        return false;
    }
    

    protected override List<Task> LoadDynamicData() 
    {
        SaveModelSystem.Path = PathBuilder.BuildSavePath().GetString();

        return SaveModelSystem.LoadModelList();
    }
    
    protected override bool SaveDynamicData(List<Task> _elements) 
    {
        SaveModelSystem.Path = PathBuilder.BuildSavePath().GetString();

        return base.SaveDynamicData(_elements);
    }


}