public async Task <OperationDataResult <RentableItemsModel> > Index(RentableItemsRequestModel pnRequestModel)
        {
            try
            {
                RentableItemsModel rentableItemsPnModel = new RentableItemsModel();

                IQueryable <RentableItem> rentableItemsQuery = _dbContext.RentableItem.
                                                               Where(x => x.WorkflowState != Constants.WorkflowStates.Removed).AsQueryable();
                if (!CollectionExtensions.IsNullOrEmpty(pnRequestModel.NameFilter) && pnRequestModel.NameFilter != "")
                {
                    rentableItemsQuery = rentableItemsQuery.Where(x =>
                                                                  x.Brand.ToLower().Contains(pnRequestModel.NameFilter.ToLower()) ||
                                                                  x.VinNumber.ToLower().Contains(pnRequestModel.NameFilter.ToLower()) ||
                                                                  x.SerialNumber.ToLower().Contains(pnRequestModel.NameFilter.ToLower()) ||
                                                                  x.PlateNumber.ToLower().Contains(pnRequestModel.NameFilter.ToLower()) ||
                                                                  x.ModelName.ToLower().Contains(pnRequestModel.NameFilter.ToLower()));
                }
                if (!string.IsNullOrEmpty(pnRequestModel.Sort))
                {
                    if (pnRequestModel.IsSortDsc)
                    {
                        rentableItemsQuery = rentableItemsQuery.CustomOrderByDescending(pnRequestModel.Sort);
                    }
                    else
                    {
                        rentableItemsQuery = rentableItemsQuery.CustomOrderBy(pnRequestModel.Sort);
                    }
                }

                rentableItemsPnModel.Total = rentableItemsQuery.Count(x => x.WorkflowState != Constants.WorkflowStates.Removed);
                rentableItemsQuery
                    = rentableItemsQuery
                      .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                      .Skip(pnRequestModel.Offset)
                      .Take(pnRequestModel.PageSize);
                List <RentableItem> rentableItems = await rentableItemsQuery.ToListAsync();

                rentableItems.ForEach(rentableItem =>
                {
                    rentableItemsPnModel.RentableItems.Add(new RentableItemModel
                    {
                        VinNumber        = rentableItem.VinNumber,
                        RegistrationDate = rentableItem.RegistrationDate,
                        Brand            = rentableItem.Brand,
                        PlateNumber      = rentableItem.PlateNumber,
                        ModelName        = rentableItem.ModelName,
                        SerialNumber     = rentableItem.SerialNumber,
                        Id       = rentableItem.Id,
                        EFormId  = rentableItem.eFormId,
                        FullName = $"{rentableItem.Brand} - {rentableItem.ModelName} - {rentableItem.SerialNumber} - {rentableItem.VinNumber} - {rentableItem.PlateNumber}"
                    });
                });
                return(new OperationDataResult <RentableItemsModel>(true, rentableItemsPnModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <RentableItemsModel>(true,
                                                                    _rentableItemsLocalizationService.GetString("ErrorObtainingRentableItemsInfo")));
            }
        }
예제 #2
0
 public Task <OperationDataResult <RentableItemsModel> > Index(RentableItemsRequestModel requestModel)
 {
     return(_rentableItemsService.Index(requestModel));
 }