Пример #1
0
        public async Task<List<TeamModel>> Handle(GetAllTeamQuery request, CancellationToken cancellationToken)
        {
            var user = await userStore.FindByIdAsync(request.GetUser(), cancellationToken);
            if (user == null) throw new UserDoesNotExistException();

            var teamsDb = await _teamRepository.GetAllTeamsAsync();
            var teamsByWorkerDb = await _workersByTeamRepository.GetTotalWorkersByTeam();

            var response = new List<TeamModel>();

            var groupByTeamId = teamsByWorkerDb
                                    .GroupBy(x => x.TeamId)
                                    .Select(w => new TeamModel(w.Key, w.Count())
                                    );

            response.AddRange(
                teamsDb.Select(x =>
                    new TeamModel(x.TeamId, x.Name)
                    {
                        TotalWorkers = groupByTeamId.Any(y => y.TeamId == x.TeamId)
                        ? groupByTeamId.Where(y => y.TeamId == x.TeamId).Select(y => y.TotalWorkers).FirstOrDefault()
                        : 0
                    })
                );

            return response;
        }
Пример #2
0
        public async Task <ActionResult <TeamModel> > GetAllTeamAsync([FromQuery] GetAllTeamQuery request)
        {
            try
            {
                request.SetUser(User.GetUserId());
                var response = await _mediator.Send(request);

                return(Ok(response));
            }
            catch (Exception ex)
            {
                _logger.Error(ex, $"Operation failed into controller {Routes.Get_All_Teams} with message: {ex.Message}");
                return(BadRequest(ex.Message));
            }
        }