using Elwig.Helpers;
using Elwig.Models.Dtos;
using Elwig.Models.Entities;
using System.Linq;

namespace Elwig.Documents {
    public class CreditNote : BusinessDocument {

        public PaymentMember? Payment;
        public Credit? Credit;
        public CreditNoteData Data;
        public string? Text;
        public string CurrencySymbol;
        public int Precision;
        public string MemberModifier;

        public CreditNote(AppDbContext ctx, PaymentMember p, CreditNoteData data) :
            base($"Traubengutschrift {(p.Credit != null ? $"Nr. {p.Credit.Year}/{p.Credit.TgNr:000}" : p.Member.Name)} – {p.Variant.Name}", p.Member) {
            UseBillingAddress = true;
            ShowDateAndLocation = true;
            Data = data;
            Payment = p;
            Credit = p.Credit;
            var season = p.Variant.Season;
            var mod = App.Client.IsMatzen ? ctx.Modifiers.Where(m => m.Year == season.Year && m.Name.StartsWith("Treue")).FirstOrDefault() : null;
            if (mod != null) {
                MemberModifier = $"{mod.Name} ({mod.ValueStr})";
            } else {
                MemberModifier = "Sonstige Zu-/Abschläge";
            }
            Aside = Aside.Replace("</table>", "") +
                $"<thead><tr><th colspan='2'>Gutschrift</th></tr></thead><tbody>" +
                $"<tr><th>TG-Nr.</th><td>{(p.Credit != null ? $"{p.Credit.Year}/{p.Credit.TgNr:000}" : "-")}</td></tr>" +
                $"<tr><th>Überw. am</th><td>{p.Variant.TransferDate:dd.MM.yyyy}</td></tr>" +
                $"<tr><th>Datum/Zeit</th><td>{p.Credit?.ModifiedTimestamp:dd.MM.yyyy} / {p.Credit?.ModifiedTimestamp:HH:mm}</td></tr>" +
                $"</tbody></table>";
            Text = App.Client.TextDeliveryNote;
            DocumentId = $"Tr.-Gutschr. " + (p.Credit != null ? $"{p.Credit.Year}/{p.Credit.TgNr:000}" : p.MgNr);
            CurrencySymbol = season.Currency.Symbol ?? season.Currency.Code;
            Precision = season.Precision;
        }
    }}