32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
7 years ago
|
using System.Collections.Generic;
|
||
7 years ago
|
using System.Globalization;
|
||
7 years ago
|
using System.IO;
|
||
7 years ago
|
using System.Linq;
|
||
7 years ago
|
using Yavsc.Abstract.FileSystem;
|
||
7 years ago
|
using Yavsc.Billing;
|
||
7 years ago
|
using Yavsc.Models.Billing;
|
||
7 years ago
|
|
||
|
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);
|
||
|
|
||
7 years ago
|
public static decimal Addition(this List<CommandLine> items) => items.Select(i=>((IBillItem)i)).ToList().Addition();
|
||
|
|
||
7 years ago
|
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;
|
||
|
}
|
||
7 years ago
|
|
||
7 years ago
|
public static FileInfo GetBillInfo(this IBillable bill)
|
||
7 years ago
|
{
|
||
7 years ago
|
var suffix = bill.GetIsAcquitted() ? "-ack":null;
|
||
|
var filename = bill.GetFileBaseName()+".pdf";
|
||
7 years ago
|
return new FileInfo(Path.Combine(AbstractFileSystemHelpers.UserBillsDirName, filename));
|
||
7 years ago
|
}
|
||
7 years ago
|
}
|
||
|
}
|