﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using TagLib;
using Microsoft.VisualBasic;
using System.Windows.Forms;
using System.IO;

namespace Custom_Tag
{
	public class vFiles : gFiles
	{

		public vFiles(string Path, int i) : base(Path, i)
		{

		}

		public string Repl(string STR) //Замена макросов на значение
		{
			Hashtable FullInf = ReadFullInf();
			Dictionary<string, string> Dict = new Dictionary<string, string>();

			Dict.Add("%id", FullInf["Id"].ToString());
			Dict.Add("%fname", FullInf["NameFile"].ToString());
			
			if (STR.Contains("$"))
			{
				string buff = PathFile.Substring(0, PathFile.Length - 1);
				int DirIx = buff.LastIndexOf(@"\") + 1;
				Dict.Add("$dir", buff.Substring(DirIx, buff.Length - DirIx)); //Папка

			}

			foreach (var item in Dict)
			{
				if (STR.Contains(item.Key))
					STR = STR.Replace(item.Key, item.Value);
			}

			return STR;
		}

		public void Save() //Сохранение файла
		{
			if (!System.IO.File.Exists(FullPath))
			{
				ERROR = 200;
				return;
			}

			if ((System.IO.File.GetAttributes(FullPath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) //Доступ к файлу (Атрибуты)
			{
				System.IO.File.SetAttributes(FullPath, FileAttributes.Normal);
			}


			if (NewInf.Contains("NameFile"))
			{
				string nName = NewInf["NameFile"].ToString();
				string nPath = PathFile + nName + FileInf["Ext"];
				if (nName != "" && !System.IO.File.Exists(@nPath) && FullPath != nPath)
				{
					System.IO.File.Move(FullPath, @nPath); //"Пемещение" файла (с новым именем)
					FileInf["NameFile"] = nName; //Сохранение имени в оъект 
					FullPath = nPath;   //Сохранение пути в оъект 
				}
				else if (nName == "") //Имя файла = null
				{
					ERROR = 201;
				}
				else if (System.IO.File.Exists(@nPath) && FullPath != nPath) //Новое имя занято
				{
					ERROR = 202;
				}
			}
			NewInf.Clear();
		}
	}
}
