public async Task <IActionResult> ListEquipments([FromQuery] EquipmentsQuery request) { try { var result = await _service.GetEquipments(request); return(Ok(result)); } catch (BusinessLogicException ex) { return(BadRequest(new Response { Status = false, Message = ex.Message })); } catch (Exception e) { return(BadRequest(new Response { Status = false, //Message = ErrorMessages.UnkownError Message = e.Message })); } }
public async Task <Response <EquipmentsDto> > GetEquipments(EquipmentsQuery request) { var result = _context.Equipment.Include(t => t.Type). Include(b => b.Brand).Include(p => p.Place).AsQueryable(); ///filtering #region filter if (!string.IsNullOrEmpty(request.Name)) { result = result.Where(x => x.Name.Contains(request.Name)); } if (!string.IsNullOrEmpty(request.TechnicalCode)) { result = result.Where(x => x.TechnicalCode.Contains(request.TechnicalCode)); } if (!string.IsNullOrEmpty(request.Amval)) { result = result.Where(x => x.Amval.Contains(request.Amval)); } if (!string.IsNullOrEmpty(request.Model)) { result = result.Where(x => x.Model.Contains(request.Model)); } if (!string.IsNullOrEmpty(request.Serial)) { result = result.Where(x => x.Serial.Contains(request.Serial)); } if (request.IsActive == true) { result = result.Where(x => x.IsActive == request.IsActive); } if (request.IsInUse == true) { result = result.Where(x => x.IsActive == request.IsInUse); } if (!string.IsNullOrEmpty(request.BrandName)) { result = result.Where(b => b.Brand.Name.Contains(request.BrandName)); } if (!string.IsNullOrEmpty(request.TypeName)) { result = result.Where(x => x.Type.Name.Contains(request.TypeName)); } if (!string.IsNullOrEmpty(request.PlaceName)) { result = result.Where(x => x.Place.Name.Contains(request.PlaceName)); } #endregion ///pagenating int take = request.PageSize; int skip = (request.PageId - 1) * take; int totalPages = (int)Math.Ceiling(result.Count() / (double)take); var finalResult = result.OrderBy(x => x.Name).Skip(skip).Take(take).AsQueryable(); //---------------- // var list = await finalResult.ProjectTo<EquipmentDto>(_mapper.ConfigurationProvider).ToListAsync(); var resultData = new EquipmentsDto { //Dtos=list, Dtos = await finalResult.Select(d => new EquipmentDto() { Id = d.Id, Name = d.Name, Amval = d.Amval, Description = d.Description, IsActive = d.IsActive, IsInUse = d.IsInUse, Model = d.Model, Serial = d.Serial, TechnicalCode = d.TechnicalCode, Type = new EquipmentTypeDto { Id = d.Type.Id, Name = d.Type.Name }, Brand = new EquipmentBrandDto { Id = d.Brand.Id, Name = d.Brand.Name }, Place = new EquipmentPlaceDto { Id = d.Place.Id, Name = d.Place.Name } }).ToListAsync(), PageId = request.PageId, PageSize = request.PageSize, Total = await result.CountAsync() }; return(new Response <EquipmentsDto> { Data = resultData, Status = true, Message = "success" }); }