diff --git a/EstateReportingAPI.DataTrasferObjects/CalendarYear.cs b/EstateReportingAPI.DataTrasferObjects/CalendarYear.cs index 2a28958..b5bb6c5 100644 --- a/EstateReportingAPI.DataTrasferObjects/CalendarYear.cs +++ b/EstateReportingAPI.DataTrasferObjects/CalendarYear.cs @@ -9,6 +9,13 @@ public class CalendarYear public Int32 Year{ get; set; } } + public class ComparisonDate{ + public Int32 OrderValue{ get; set; } + public DateTime Date { get; set; } + public String Description { get; set; } + + } + public class CalendarDate { public DateTime Date { get; set; } diff --git a/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs b/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs index eed960f..bcbbe74 100644 --- a/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs +++ b/EstateReportingAPI/Bootstrapper/MiddlewareRegistry.cs @@ -120,7 +120,7 @@ public MiddlewareRegistry(){ options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; options.SerializerSettings.TypeNameHandling = TypeNameHandling.None; options.SerializerSettings.Formatting = Formatting.Indented; - options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; + options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Unspecified; options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }); diff --git a/EstateReportingAPI/Controllers/Dimensions.cs b/EstateReportingAPI/Controllers/Dimensions.cs index 24bc25f..e50e645 100644 --- a/EstateReportingAPI/Controllers/Dimensions.cs +++ b/EstateReportingAPI/Controllers/Dimensions.cs @@ -78,7 +78,48 @@ public async Task GetCalendarDates([FromHeader] Guid estateId, [F YearWeekNumber = d.YearWeekNumber, })); - return this.Ok(dates); + return this.Ok(response); + } + + [HttpGet] + [Route("calendar/comparisondates")] + public async Task GetCalendarComparisonDates([FromHeader] Guid estateId, CancellationToken cancellationToken) + { + EstateManagementGenericContext? context = await this.ContextFactory.GetContext(estateId, DimensionsController.ConnectionStringIdentifier, cancellationToken); + + DateTime startOfYear = new DateTime(DateTime.Now.Year, 1, 1); + + List dates = context.Calendar.Where(c => c.Date >= startOfYear && c.Date < DateTime.Now.Date.AddDays(-1)).OrderByDescending(d => d.Date).ToList(); + + List response = new List(); + + response.Add(new ComparisonDate{ + Date = DateTime.Now.Date.AddDays(-1), + Description = "Yesterday", + OrderValue = 0 + }); + + response.Add(new ComparisonDate{ + Date = DateTime.Now.Date.AddDays(-7), + Description = "Last Week", + OrderValue = 1 + }); + response.Add(new ComparisonDate{ + Date = DateTime.Now.Date.AddMonths(-1), + Description = "Last Month", + OrderValue = 2 + }); + Int32 orderValue = 3; + dates.ForEach(d => { + response.Add(new ComparisonDate{ + Date = d.Date, + Description = d.Date.ToString("yyyy-MM-dd"), + OrderValue = orderValue + }); + orderValue++; + }); + + return this.Ok(response.OrderBy(d => d.OrderValue)); } }