public async Task <DashboardDataDto> GetDashboardDataAsync(Guid userId) { var allTransactions = await _transactionQueries.GetAllTransactionsWithDetailsAsync(userId); var user = await _userQueries.GetUserAsync(userId); // not sufficient. Can be omitted and use just one query if (user == null) { throw new ServiceException(UserNotFound); } var userEmail = user.Email; var withdrawals = 0; var deposits = 0; var transfers = 0; decimal incomes = 0; decimal outcomes = 0; foreach (var transaction in allTransactions) { switch (transaction.Type) { case "Deposit": deposits++; incomes += transaction.Amount; break; case "Withdrawal": withdrawals++; outcomes += transaction.Amount; break; case "Transfer": transfers++; if (transaction.UserTo == userEmail) { incomes += transaction.Amount; } else { outcomes += transaction.Amount; } break; default: throw new ServiceException("Invalid transaction type found."); } } var dashboardData = new DashboardDataDto() { DepositsCount = deposits, WithdrawalsCount = withdrawals, TransfersCount = transfers, Incomes = incomes, Outcomes = outcomes }; return(dashboardData); }
public async Task <IActionResult> Handle(GetDashboardDataQuery request, CancellationToken cancellationToken) { try { var user = await _userRepository.GetUserByIdAsync(request.UserId); if (user != null) { var todoTasks = await _todoTaskRepository.GetTodoTasksForUserWithinDateRangeAsync(DateTime.Now.Date, DateTime.Now.Date, request.UserId); var dashboardData = new DashboardDataDto { Name = user.FirstName + " " + user.LastName, Position = user.CompanyPosition, TodoTasks = new List <TodoTaskDto>(), UserActivity = await _leadRepository.GetUserActivitiesCountAsync(request.UserId), SalesData = await _opportunityRepository.GetUserOpportunitiesCountAsync(request.UserId) }; foreach (var task in todoTasks) { dashboardData.TodoTasks.Add(new TodoTaskDto { Id = task.Id, Completed = task.Completed, Title = task.Title }); } return(new JsonResult(new ApiResponse <DashboardDataDto> { Code = 200, Data = dashboardData, ErrorMessage = "" })); } return(new JsonResult(new ApiResponse <object> { Data = null, Code = 404, ErrorMessage = "Nie znaleziono użytkownika." })); } catch { return(new JsonResult(new ApiResponse <object> { Data = null, Code = 500, ErrorMessage = "Nastąpił problem z serwerem, skontaktuj się z działem IT." })); } }
public DashboardDataDto MapToDashboardDataDto(SqlDataReader sqlDataReader) { DashboardDataDto dashboardDataDto = new DashboardDataDto(); if (sqlDataReader.Read()) { dashboardDataDto.TotalCompanyCount = sqlDataReader["TotalCompanyCount"].ToInteger(); dashboardDataDto.TotalRequestCount = sqlDataReader["TotalRequestCount"].ToInteger(); dashboardDataDto.TotalBeuatyTipCount = sqlDataReader["TotalBeuatyTipCount"].ToInteger(); sqlDataReader.NextResult(); while (sqlDataReader.Read()) { dashboardDataDto.RecentRequests.Add(CompanyRequestMapper.Instance.MapToCompanyRequestDto(sqlDataReader)); } sqlDataReader.NextResult(); while (sqlDataReader.Read()) { dashboardDataDto.RecentCompanies.Add(CompanyMappers.Instance.MapToCompanySummaryDto(sqlDataReader)); } sqlDataReader.NextResult(); while (sqlDataReader.Read()) { int companyId = sqlDataReader["CompanyId"].ToInteger(); CompanySummaryDto companyDto = dashboardDataDto.RecentCompanies.Where(item => item.Id == companyId).FirstOrDefault(); if (companyDto == null) { continue; } string imageType = sqlDataReader["ImageType"].ToString(); if (imageType == "Logo") { companyDto.Logo = CompanyLogoMappers.Instance.MapToCompanyLogoDto(sqlDataReader); } else { companyDto.Galleries.Add(CompanyLogoMappers.Instance.MapToCompanyLogoDto(sqlDataReader)); } } } return(dashboardDataDto); }
public HttpResponseMessage GetData() { DashboardDataDto response = dashboardDataManager.GetData(UserId); return(Request.CreateResponse <DashboardDataDto>(HttpStatusCode.OK, response)); }