public async Task <ActionResult <List <Arg_AdreseDTO> > > FilterPaginated([FromQuery] FilterArg_AdreseDTO filterArg_AdreseDTO, int page, int pageSize) { var adreseQueryable = _context.Arg_Adrese_ .AsQueryable(); if (!string.IsNullOrWhiteSpace(filterArg_AdreseDTO.STD)) { adreseQueryable = adreseQueryable.Where(x => x.STD.Contains(filterArg_AdreseDTO.STD)); } if (filterArg_AdreseDTO.TIPS_CD != 0) { adreseQueryable = adreseQueryable.Where(o => o.TIPS_CD.Equals(filterArg_AdreseDTO.TIPS_CD)); } //if (filterArg_AdreseDTO.ADR_CD != 0) //{ // adreseQueryable = adreseQueryable.Where(o => o.ADR_CD.Equals(filterArg_AdreseDTO.ADR_CD) && o.dat_beig != null); //} //if (filterArg_AdreseDTO.VKUR_CD != 0) { // adreseQueryable = adreseQueryable.Where(o => o.VKUR_CD.Equals(filterArg_AdreseDTO.VKUR_CD)); //} else if (filterArg_AdreseDTO.VKUR_CD_NOV != 0) { // adreseQueryable = adreseQueryable.Where(o => o.VKUR_CD.Equals(filterArg_AdreseDTO.VKUR_CD_NOV)); //} adreseQueryable = adreseQueryable.Where(o => o.VKUR_CD.Equals( filterArg_AdreseDTO.VKUR_CD != 0 ? filterArg_AdreseDTO.VKUR_CD : filterArg_AdreseDTO.VKUR_CD_NOV )); //ja nav selectionā izvelēts pagasts, tad atlasa no novada - iegūst datus par pagastiem if (!string.IsNullOrWhiteSpace(filterArg_AdreseDTO.STATUSS)) { adreseQueryable = adreseQueryable.Where(o => o.STATUSS.Equals(filterArg_AdreseDTO.STATUSS)); } if (filterArg_AdreseDTO.DAT_SAK != DateTime.MinValue) { adreseQueryable = adreseQueryable.Where(o => o.DAT_SAK.Date.Equals(filterArg_AdreseDTO.DAT_SAK)); } if (filterArg_AdreseDTO.DAT_MOD != DateTime.MinValue) // visi null datumi lasās kā '01.01.0001 00:00:00' kas ir arī MinValue { adreseQueryable = adreseQueryable.Where(o => o.dat_mod.Date.Equals(filterArg_AdreseDTO.DAT_MOD)); // dat_mod ielasot null nestrādā, ielaspt DaeTime strādā. } //if (filterArg_AdreseDTO.DAT_BEIG != DateTime.MinValue) //{ // adreseQueryable = adreseQueryable.Where(o => o.dat_beig.Date.Equals(filterArg_AdreseDTO.DAT_BEIG)); //} var adreses = await adreseQueryable//.Where(o => o.dat_mod.Date.Equals(filterArg_AdreseDTO.DAT_MOD)) .Include(q => q.Art_KonstTips) .Include(q => q.Art_KonstStatuss) .OrderBy(n => n.ADR_CD) .AsNoTracking() .ToListAsync(); //var adresesSorted = adreses.OrderBy(n => n.ADR_CD).ToList(); //vajag sortot jo asinhroni liekot adreses lista katra adrese ne vienmer bus vienaa un tada pasa pozicijaa var paginatedAdreses = await PaginatedList <Arg_Adrese> .Create(adreses, page, pageSize); var metadata = new { paginatedAdreses.PageIndex, paginatedAdreses.TotalPages, paginatedAdreses.ElementCount, paginatedAdreses.HasNextPage, paginatedAdreses.HasPreviousPage }; Response.Headers.Add("Pagination", JsonConvert.SerializeObject(metadata)); return(_mapper.Map <List <Arg_AdreseDTO> >(paginatedAdreses)); }
public async Task <ActionResult <List <Arg_AdreseDTO> > > Filter([FromQuery] FilterArg_AdreseDTO filterArg_AdreseDTO) { var adreseQueryable = _context.Arg_Adrese_ .AsQueryable(); if (!string.IsNullOrWhiteSpace(filterArg_AdreseDTO.STD)) { adreseQueryable = adreseQueryable.Where(x => x.STD.Contains(filterArg_AdreseDTO.STD)); } if (filterArg_AdreseDTO.TIPS_CD != 0) { adreseQueryable = adreseQueryable.Where(o => o.TIPS_CD.Equals(filterArg_AdreseDTO.TIPS_CD)); } //if (filterArg_AdreseDTO.ADR_CD != 0) //{ // adreseQueryable = adreseQueryable.Where(o => o.ADR_CD.Equals(filterArg_AdreseDTO.ADR_CD) && o.dat_beig != null); //} if (filterArg_AdreseDTO.VKUR_CD != 0) { adreseQueryable = adreseQueryable.Where(o => o.VKUR_CD.Equals(filterArg_AdreseDTO.VKUR_CD)); } if (!string.IsNullOrWhiteSpace(filterArg_AdreseDTO.STATUSS)) { adreseQueryable = adreseQueryable.Where(o => o.STATUSS.Equals(filterArg_AdreseDTO.STATUSS)); } //https://localhost:44302/api/adreses/filter?DAT_SAK=2011-07-07&STD=dzirn /* * if (value.HasValue) * { * Console.WriteLine(value.Value); * } * else * { * Console.WriteLine(0); * }*/ if (filterArg_AdreseDTO.DAT_SAK != DateTime.MinValue) { adreseQueryable = adreseQueryable.Where(o => o.DAT_SAK.Date.Equals(filterArg_AdreseDTO.DAT_SAK)); } if (filterArg_AdreseDTO.DAT_MOD != DateTime.MinValue) // visi null datumi lasās kā '01.01.0001 00:00:00' kas ir arī MinValue { adreseQueryable = adreseQueryable.Where(o => o.dat_mod.Date.Equals(filterArg_AdreseDTO.DAT_MOD)); // dat_mod ielasot null nestrādā, ielaspt DaeTime strādā. } //if (filterArg_AdreseDTO.DAT_BEIG != DateTime.MinValue) //{ // adreseQueryable = adreseQueryable.Where(o => o.dat_beig.Date.Equals(filterArg_AdreseDTO.DAT_BEIG)); //} Console.WriteLine("arg_Adrese.ADR_CD: " + filterArg_AdreseDTO.ADR_CD); Console.WriteLine("arg_Adrese.STD: " + filterArg_AdreseDTO.STD); Console.WriteLine("arg_Adrese.tips_cd: " + filterArg_AdreseDTO.TIPS_CD); Console.WriteLine("arg_Adrese.STATUSS: " + filterArg_AdreseDTO.STATUSS); Console.WriteLine("arg_Adrese.DAT_SAK: " + filterArg_AdreseDTO.DAT_SAK); var adreses = await adreseQueryable//.Where(o => o.dat_mod.Date.Equals(filterArg_AdreseDTO.DAT_MOD)) .Include(q => q.Art_KonstTips) .Include(q => q.Art_KonstStatuss) .ToListAsync(); var adresesSorted = adreses.OrderBy(n => n.ADR_CD).ToList(); //vajag sortot jo asinhroni liekot adreses lista katra adrese ne vienmer bus vienaa un tada pasa pozicijaa return(_mapper.Map <List <Arg_AdreseDTO> >(adresesSorted)); }