public async Task <PagedResult <ElectionDTO> > GetElectionsListAsync(ElectionSearch model)
        {
            PagedResult <ElectionDTO> result = new PagedResult <ElectionDTO>();

            model.Name    = model.Name ?? "";
            model.Address = model.Address ?? "";

            var elections = await _commonDbContext.Elections
                            .Where(e => e.Name.Contains(model.Name) &&
                                   e.Address.Contains(model.Address))
                            .OrderByDescending(e => e.InsertDate)
                            .ProjectTo <ElectionDTO>(_mapper.ConfigurationProvider)
                            .ToListAsync();

            result.TotalCount = elections.Count();
            result.Items      = elections;
            return(result);
        }
        public async Task <PagedResult <ElectionDTO> > GetElectionsAsync(ElectionSearch model)
        {
            PagedResult <ElectionDTO> result = new PagedResult <ElectionDTO>();

            model.Name    = model.Name ?? "";
            model.Address = model.Address ?? "";

            var elections = await _commonDbContext.Elections
                            .Where(e => e.Name.Contains(model.Name) &&
                                   e.Address.Contains(model.Address))
                            .OrderByDescending(e => e.InsertDate)
                            .ProjectTo <ElectionDTO>(_mapper.ConfigurationProvider)
                            .ToListAsync();


            var _candidates = elections.SelectMany(e => e.Candidates);
            var candidates  = await _commonDbContext.Users
                              .Where(u => _candidates.Select(c => c.CandidateAddress).Contains(u.PublicKey))
                              .ToListAsync();

            //var candidates = await _commonDbContext.Users
            //    .Where(u =>
            //        elections.SelectMany(e => e.Candidates).Select(c => c.CandidateAddress).Contains(u.PublicKey))
            //    .ToListAsync();



            result.TotalCount = elections.Count();
            result.Items      = elections;
            foreach (var candidate in result.Items.SelectMany(i => i.Candidates))
            {
                candidate.CandidateName =
                    candidates.Any(c => c.PublicKey == candidate.CandidateAddress)
                        ? candidates.Single(c => c.PublicKey == candidate.CandidateAddress).Name
                        : "";
            }

            return(result);
        }
        public async Task <IActionResult> GetElectionList([FromQuery] ElectionSearch model)
        {
            PagedResult <ElectionDTO> elections = await _electionService.GetElectionsListAsync(model);

            return(Ok(elections));
        }