public async Task <CustomerDashboardRp> GetCustomersDashboardProductJourneys(DateTime?start, DateTime?end) { var result = new CustomerDashboardRp(); result = await this.InternalGetDashboardCustomersProductJourneys(start, end); var(bs, be, ps, pe) = DateTimeUtils.CalculateBeforePreviousDates(start, end); var before = await this.InternalGetDashboardCustomersProductJourneys(bs, be); var previous = await this.InternalGetDashboardCustomersProductJourneys(ps, pe); foreach (var product in result.Products) { var target_product = previous.Products.Where(c => c.ProductId == product.ProductId).SingleOrDefault(); if (target_product != null) { product.Previous = target_product.Effectiveness; } var target_before = before.Products.Where(c => c.ProductId == product.ProductId).SingleOrDefault(); if (target_before != null) { product.Before = target_before.Effectiveness; } } return(result); }
public void CalculateBeforePreviousDatesTest() { var start = OwlveyCalendar.January201903; var end = OwlveyCalendar.January201910; var diff = DateTimeUtils.DaysDiff(end, start); var(bs, be, ps, pe) = DateTimeUtils.CalculateBeforePreviousDates(start, end); Assert.Equal(new DateTime(2018, 12, 26), ps); Assert.Equal(new DateTime(2019, 1, 2, 23, 59, 59), pe); Assert.Equal(diff, DateTimeUtils.DaysDiff(pe, ps)); Assert.Equal(new DateTime(2018, 12, 18), bs); Assert.Equal(new DateTime(2018, 12, 25, 23, 59, 59), be); Assert.Equal(diff, DateTimeUtils.DaysDiff(be, bs)); }
public (DatePeriodValue before, DatePeriodValue previous) CalculateBeforePreviousDates() { var(bs, be, ps, pe) = DateTimeUtils.CalculateBeforePreviousDates(this.Start, this.End); return(new DatePeriodValue(bs, be), new DatePeriodValue(ps, pe)); }