yavsc/Yavsc/Helpers/BillingHelpers.cs

30 lines
1.2 KiB
C#
Raw Normal View History

2017-05-12 16:29:47 +02:00
using System.Collections.Generic;
2017-06-02 21:34:18 +02:00
using System.Globalization;
using System.IO;
2017-05-12 16:29:47 +02:00
using System.Linq;
2017-05-27 16:22:58 +02:00
using Yavsc.Billing;
2017-06-02 10:13:55 +02:00
using Yavsc.Models.Billing;
2017-05-12 16:29:47 +02:00
namespace Yavsc.Helpers
{
public static class BillingHelpers
{
public static decimal Addition(this List<IBillItem> items) => items.Aggregate<IBillItem, decimal>(0m, (t, l) => t + l.Count * l.UnitaryCost);
2017-06-02 10:13:55 +02:00
public static decimal Addition(this List<CommandLine> items) => items.Select(i=>((IBillItem)i)).ToList().Addition();
2017-06-02 21:34:18 +02:00
public static string GetBillText(this IBillable query) {
string total = query.GetBillItems().Addition().ToString("C", CultureInfo.CurrentUICulture);
string bill = string.Join("\n", query.GetBillItems().Select(l=> $"{l.Name} {l.Description} : {l.UnitaryCost} € " + ((l.Count != 1) ? "*"+l.Count.ToString() : ""))) +
$"\n\nTotal: {total}";
return bill;
}
public static FileInfo GetBillInfo(this IBillable bill)
{
var suffix = bill.GetIsAcquitted() ? "-ack":null;
var filename = bill.GetFileBaseName()+".pdf";
return new FileInfo(Path.Combine(Startup.UserBillsDirName, filename));
}
2017-05-12 16:29:47 +02:00
}
}