using Elwig.Models; using System; using System.Collections.Generic; using System.Linq; namespace Elwig.Helpers.Billing { public class Transaction { public readonly Member Member; public readonly long AmountCent; public readonly string Currency; public readonly int Nr; public Transaction(Member m, decimal amount, string currency, int nr) { Member = m; AmountCent = (long)Math.Round(amount * 100); Currency = currency; Nr = nr; } public static IEnumerable FromPaymentVariant(PaymentVar variant) { var last = variant.Season.PaymentVariants.Where(v => v.TransferDate != null).OrderBy(v => v.TransferDate).LastOrDefault(); var dict = last?.MemberPayments.ToDictionary(m => m.MgNr, m => m.Amount) ?? new(); return variant.Credits .OrderBy(c => c.MgNr) .Select(c => new Transaction(c.Member, c.Amount, variant.Season.CurrencyCode, c.TgNr)) .ToList(); } public static string FormatAmountCent(long cents) => $"{cents / 100}.{cents % 100:00}"; } }