Skip to content

Commit 977b007

Browse files
Updated to resolve issues from file format change
1 parent bcafd63 commit 977b007

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed

Source/GitHubCostVisualizer.Web/Models/GithubUsageEntry.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,20 @@ public class GithubUsageEntry
1111
public string Product { get; set; }
1212
[Name("Repository Slug")]
1313
public string Repository { get; set; }
14+
[Name("SKU")]
15+
public string Sku { get; set; }
1416
[Name("Quantity")]
1517
public decimal Quantity { get; set; }
1618
[Name("Unit Type")]
1719
public string UnitType { get; set; }
18-
[Name("Price Per Unit")]
19-
public string PricePer { get; set; }
20+
[Name("Price Per Unit ($)")]
21+
public decimal PricePer { get; set; }
22+
[Name("Multiplier")]
23+
public decimal Multiplier { get; set; }
2024
[Name("Actions Workflow")]
2125
public string ActionWorkflow { get; set; }
26+
[Name("Username")]
27+
public string Username { get; set; }
2228
[Name("Notes")]
2329
public string Notes { get; set; }
2430
}

Source/GitHubCostVisualizer.Web/Models/UsageReportViewModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class UsageReportViewModel
2727
public DateTime StartDate { get; set; }
2828
public DateTime EndDate { get; set; }
2929
public int TotalActionMinutesUsed { get; set; }
30+
public int TotalBillableActionMinutes { get; set; }
31+
public decimal TotalActionMinutesCost { get; set; }
3032
public List<KeyValuePair<string, int>> ActionsSummary { get; set; }
3133
public List<KeyValuePair<string, int>> ActionMinutesByRepository { get; set; }
3234
public decimal AverageDailyStorage { get; set; }

Source/GitHubCostVisualizer.Web/Processor/GithubUsageProcessor.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,24 @@ public UsageReportViewModel ProcessUsageReport(List<GithubUsageEntry> entries)
2020
model.StartDate = entries.Min(i => i.Date);
2121
model.EndDate = entries.Max(i => i.Date);
2222
model.TotalActionMinutesUsed =
23-
entries.Where(i => i.Product == "actions").Sum(i => (int)i.Quantity);
24-
model.ActionsSummary = (from x in entries.Where(i => i.Product == "actions")
25-
group x by x.UnitType
23+
entries.Where(i => i.Product.Equals(Constants.GitHubProducts.Actions, StringComparison.InvariantCultureIgnoreCase)).Sum(i => (int)i.Quantity);
24+
model.TotalBillableActionMinutes = entries
25+
.Where(i => i.Product.Equals(Constants.GitHubProducts.Actions, StringComparison.InvariantCultureIgnoreCase))
26+
.Sum(i => (int)(i.Quantity * i.Multiplier));
27+
model.TotalActionMinutesCost = entries
28+
.Where(i => i.Product.Equals(Constants.GitHubProducts.Actions, StringComparison.InvariantCultureIgnoreCase))
29+
.Sum(i => i.Quantity * i.Multiplier * i.PricePer);
30+
model.ActionsSummary = (from x in entries.Where(i => i.Product.Equals(Constants.GitHubProducts.Actions, StringComparison.InvariantCultureIgnoreCase))
31+
group x by x.Sku
2632
into grp
2733
select new KeyValuePair<string, int>(grp.Key, grp.Sum(i => (int)i.Quantity)))
2834
.ToList();
29-
model.ActionMinutesByRepository = (from x in entries.Where(i => i.Product == Constants.GitHubProducts.Actions)
35+
model.ActionMinutesByRepository = (from x in entries.Where(i => i.Product.Equals(Constants.GitHubProducts.Actions, StringComparison.InvariantCultureIgnoreCase))
3036
group x by x.Repository
3137
into grp
3238
select new KeyValuePair<string, int>(grp.Key, grp.Sum(i => (int)i.Quantity))).ToList();
3339

34-
model.DailyStorageSummary = (from x in entries.Where(i => i.Product == "shared storage")
40+
model.DailyStorageSummary = (from x in entries.Where(i => i.Product.Equals(Constants.GitHubProducts.SharedStorage, StringComparison.InvariantCultureIgnoreCase))
3541
group x by x.Date
3642
into grp
3743
select new KeyValuePair<DateTime, decimal>(grp.Key, grp.Sum(i => i.Quantity)))
@@ -45,7 +51,7 @@ into grp
4551
model.DailyStorageSummary.Sum(i => i.Value) / model.DailyStorageSummary.Count;
4652

4753
var totalDays = model.DailyStorageSummary.Count();
48-
model.AverageDailyStorageByRepo = (from x in entries.Where(i => i.Product == Constants.GitHubProducts.SharedStorage)
54+
model.AverageDailyStorageByRepo = (from x in entries.Where(i => i.Product.Equals(Constants.GitHubProducts.SharedStorage, StringComparison.InvariantCultureIgnoreCase))
4955
group x by x.Repository
5056
into grp
5157
select new KeyValuePair<string, decimal>(grp.Key, grp.Sum(i => i.Quantity) / grp.Count())).ToList();
@@ -56,7 +62,7 @@ into grp
5662

5763
private DailyStorageData GenerateStorageByDays(List<GithubUsageEntry> entries)
5864
{
59-
var storage = entries.Where(e => e.Product == Constants.GitHubProducts.SharedStorage).ToList();
65+
var storage = entries.Where(e => e.Product.Equals(Constants.GitHubProducts.SharedStorage, StringComparison.InvariantCultureIgnoreCase)).ToList();
6066
var startDate = storage.Min(r => r.Date);
6167
var endDate = storage.Max(r => r.Date);
6268

@@ -72,8 +78,6 @@ from bd in byDay.DefaultIfEmpty()
7278
var results = q.GroupBy(k => k.Repo)
7379
.OrderBy(g => g.Key)
7480
.Select(g => new DailyStorageDataSet { Label = g.Key, Data = g.OrderBy(r => r.Date).Select(r => r.Quantity).ToList() });
75-
//.Select(r=>new KeyValuePair<DateTime, decimal>(r.Date, r.Quantity)).ToArray());
76-
//results.Dump();
7781

7882
return new DailyStorageData
7983
{

Source/GitHubCostVisualizer.Web/Views/Home/_SummaryItems.cshtml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
@model UsageReportViewModel
22

33
<div class="row">
4-
<div class="col-md-4">
4+
<div class="col-md-3">
55
<div class="stat-box card card-primary card-darker card-full">
66
<div class="card-header d-block">
77
<div class="row align-items-center justify-content-between flex-nowrap">
88
<div class="col-auto">
9-
<span class="display-5">@Model.TotalActionMinutesUsed</span>
9+
<span class="display-5">@Model.TotalActionMinutesUsed.ToString("N0")</span>
1010
<h5>Total Action Minutes</h5>
1111
</div>
1212
<div class="col-auto">
@@ -16,7 +16,22 @@
1616
</div>
1717
</div>
1818
</div>
19-
<div class="col-md-4">
19+
<div class="col-md-3">
20+
<div class="stat-box card card-primary card-darker card-full">
21+
<div class="card-header d-block">
22+
<div class="row align-items-center justify-content-between flex-nowrap">
23+
<div class="col-auto">
24+
<span class="display-5">@Model.TotalBillableActionMinutes.ToString("N0") (@Model.TotalActionMinutesCost.ToString("C"))</span>
25+
<h5>Total Billable Action Minutes</h5>
26+
</div>
27+
<div class="col-auto">
28+
<i class="fas fa-stopwatch"></i>
29+
</div>
30+
</div>
31+
</div>
32+
</div>
33+
</div>
34+
<div class="col-md-3">
2035
<div class="stat-box card card-primary card-darker card-full">
2136
<div class="card-header d-block">
2237
<div class="row align-items-center justify-content-between flex-nowrap">

0 commit comments

Comments
 (0)