private UserYearlySalesSearchRequest GetSearchRequest() { UserYearlySalesSearchRequest searchRequest = new UserYearlySalesSearchRequest(); searchRequest = ApplyDefaultSearchValues(searchRequest) as UserYearlySalesSearchRequest; searchRequest.PageIndex = pgnYearlySales.PageIndex; searchRequest.UserFullName = txtCustomerName.Text; searchRequest.Year = DateTime.UtcNow.Year; if (nmrNumberOfEntries.Value > 0) { searchRequest.PageSize = (int)nmrNumberOfEntries.Value; } if (nmrYear.Value > 0) { searchRequest.Year = (int)nmrYear.Value; } if (nmrUserId.Value > 0) { searchRequest.UserId = (int)nmrUserId.Value; } return(searchRequest); }
private async void LoadCharts() { UserYearlySalesSearchRequest searchRequest = new UserYearlySalesSearchRequest(); searchRequest = ApplyDefaultSearchValues(searchRequest) as UserYearlySalesSearchRequest; searchRequest.PageSize = int.MaxValue; searchRequest.ReturnAll = true; searchRequest.Year = DateTime.UtcNow.Year; string route = "user-yearly-sales"; var yearlySales = await _reportsApi.Get <YearlySalesReportDto>(searchRequest, route); lblMainChartName.Text = $"Ticketing data for the year {searchRequest.Year}"; List <float> monthlyTotals = new List <float>(); foreach (var monthlyTotal in yearlySales.MonthlyTotalsForPage) { monthlyTotals.Add((float)monthlyTotal.Total); } var chart = crtSalesPerMonth.ChartAreas[0]; chart.AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Number; chart.AxisY.LabelStyle.Format = ""; chart.AxisY.LabelStyle.Format = ""; chart.AxisY.LabelStyle.IsEndLabelVisible = true; double maximumY = (double)yearlySales.MonthlyTotalsForPage.Max(x => x.Total) + 1000; double intervalY = 1000; if (maximumY > 5000) { intervalY = 2500; } chart.AxisX.Minimum = 1; chart.AxisX.Maximum = 12; chart.AxisY.Minimum = 0; chart.AxisY.Maximum = maximumY; chart.AxisX.Interval = 1; chart.AxisY.Interval = intervalY; string label = "Sales (without VAT)"; crtSalesPerMonth.Series.Add(label); crtSalesPerMonth.Series[label].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline; crtSalesPerMonth.Series[label].Color = Color.Green; for (int i = 0; i < monthlyTotals.Count; i++) { crtSalesPerMonth.Series[label].Points.AddXY(i + 1, monthlyTotals[i]); } await LoadWidgets(yearlySales); }
private async void dgvUserSalesList_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { DataGridViewColumn clickedColumn = dgvUserSalesList.Columns[e.ColumnIndex]; ChangeSorting(clickedColumn.Name); _request = GetSearchRequest(); _request.SortColumn = CurrentSortPropertyName; _request.SortOrder = CurrentSortOrder; await LoadYearlySalesReportData(); }
private async Task <List <UserMonthlySalesDto> > GetUserSalesAsync(UserYearlySalesSearchRequest searchRequest) { IEnumerable <Reservation> reservations = await _reservationRepo.GetForYearlySalesReportAsync(searchRequest, searchRequest.Year, searchRequest.UserId, searchRequest.UserFullName); List <UserMonthlySalesDto> userSales = reservations.Select(x => x.User).Distinct() .Select(x => new UserMonthlySalesDto { UserId = x.Id, UserFullName = x.FullName, UserMonthlyTotals = CalculateUserMonthlySales(x.Id, reservations) }).ToList(); foreach (var userSale in userSales) { userSale.UserYearlyTotal = CalculateUserTotal(userSale); } return(userSales); }
/// <summary> /// Gets summed sales per user and month, with a total sum and monthly sums for a year. The returned amounts are without VAT. /// </summary> /// <param name="searchRequest"></param> /// <returns></returns> public async Task <YearlySalesReportDto> GetYearlySalesReportPerUserAsync(UserYearlySalesSearchRequest searchRequest) { List <UserMonthlySalesDto> userSales = await GetUserSalesAsync(searchRequest); userSales = ApplySortingForSalesReport(userSales, searchRequest); PagedList <UserMonthlySalesDto> pagedModel = PagedList <UserMonthlySalesDto> .Create(userSales, searchRequest.PageIndex, searchRequest.PageSize); YearlySalesReportDto monthlySales = new YearlySalesReportDto { UserMonthlySales = pagedModel, MonthlyTotalsForPage = pagedModel.Data.SelectMany(x => x.UserMonthlyTotals) .GroupBy(x => x.MonthNumber) .Select(x => new MonthlySaleTotalDto { MonthNumber = x.Key, Total = x.Sum(y => y.Total) }).ToList() }; monthlySales.YearlyTotalForPage = monthlySales.MonthlyTotalsForPage.Sum(x => x.Total); return(monthlySales); }
public async Task <ActionResult <YearlySalesReportDto> > GetYearlyUserSales([FromQuery] UserYearlySalesSearchRequest searchRequest) { var result = await _reportService.GetYearlySalesReportPerUserAsync(searchRequest); return(Ok(result)); }
private async void FormReports_Load(object sender, EventArgs e) { _request = GetSearchRequest(); await LoadYearlySalesReportData(); }
private async void pgnYearlySales_PageChanged(object sender, EventArgs e) { _request = GetSearchRequest(); await LoadYearlySalesReportData(); }