/// <summary>
        /// Convert business model to DTO.
        /// </summary>
        /// <param name="model">The business model.</param>
        /// <returns>The DTO.</returns>
        public static SalesReportDto ToDto(this DailySalesReportDetails model)
        {
            if (model == null)
            {
                return(null);
            }

            return(new SalesReportDto()
            {
                StartDate = model.StartDate.ToString("yyyy-MM-dd"),
                EndDate = model.EndDate.ToString("yyyy-MM-dd"),
                GroupBy = SalesReportGroupByOption.Day,
                XAxisLabel = "Date",
                YAxisLabel = "Total sales",
                Entries = model.Entries.Select(x => new SalesReportEntryDto()
                {
                    Label = x.Date.ToString("yyyy-MM-dd"),
                    Value = x.Amount,
                }).ToArray(),
            });
        }
        public async Task <IActionResult> GetDailySalesReportAsync(
            [FromQuery] DateTime from,
            [FromQuery] DateTime to)
        {
            try
            {
                // Lookup sales
                DailySalesReportDetails report = await this.ReportService.GetDailySalesReportAsync(from, to).ConfigureAwait(false);

                // Map to DTO model
                return(this.Ok(report.ToDto()));
            }
            catch (SaleExceptions.SaleException ex) when(
                ex is SaleExceptions.FromDateRequired ||
                ex is SaleExceptions.ToDateRequired ||
                ex is SaleExceptions.ToDateMustBeAfterFromDate ||
                ex is SaleExceptions.DateRangeMustNoMoreThanAYear)
            {
                return(this.BadRequest(new ErrorDto()
                {
                    Code = ex.GetType().Name,
                }));
            }
        }