using System;

namespace Txt2Bib.Records
{
    public interface IBib { }

    public record class ArticleBib : IBib
    {
        public string Type { get; init; } = "article";
        public string[] Author { get; init; } = { "Gianni e Pinotto" };
        public string Title { get; init; } = "";
        public string Journal { get; init; } = "";
        public ushort Year { get; init; } = 1950;
        public ushort Volume { get; init; } = 1;
        public byte Issue { get; init; } = 1;
        public ushort FirstPage { get; init; } = 1;
        public ushort LastPage { get; init; } = 1;

        public override string ToString()
        {
            return $"@{Type}" + "{" +$"{Author[0][..5]}_{Year},\n" +
                $"\ttitle = \"{Title}\",\n" +
                $"\tjournal = \"{Journal}\",\n" +
                $"\tyear = \"{Year}\",\n" +
                $"\tvolume = \"{Volume}\",\n" +
                $"\tnumber = \"{Issue}\",\n" +
                $"\tpages = \"{FirstPage}--{LastPage}\",\n" +
            "}\n";
        }
    }

    public record class BookBib : IBib
    {
        public string Type { get; init; } = "book";
        public string[] Author { get; init; } = { "Gianni e Pinotto" };
        public string Title { get; init; } = "";
        public string Publisher { get; init; } = "";
        public ushort Year { get; init; } = 1950;

        public override string ToString()
        {
            return $"@{Type}" + "{" +$"{Author[0][..5]}_{Year},\n" +
                $"\ttitle = \"{Title}\",\n" +
                $"\tpublisher = \"{Publisher}\",\n" +
                $"\tyear = \"{Year}\",\n" +
                "}\n";
        }
    }
}