public async Task <OperationDataResult <WorkOrdersModel> > GetWorkOrdersAsync(WorkOrdersRequestModel pnRequestModel)
        {
            try
            {
                var core = await _coreService.GetCore();

                var sites = await core.Advanced_SiteItemReadAll(false);

                var workOrdersModel = new WorkOrdersModel();
                var workOrdersQuery = _dbContext.WorkOrders
                                      .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                      .AsQueryable();

                // add serch
                if (!string.IsNullOrEmpty(pnRequestModel.SearchString))
                {
                    workOrdersQuery = workOrdersQuery.Where(x =>
                                                            x.Description.ToLower().Contains(pnRequestModel.SearchString.ToLower()) ||
                                                            x.DescriptionOfTaskDone.ToLower().Contains(pnRequestModel.SearchString.ToLower()));
                }

                // sort
                if (!string.IsNullOrEmpty(pnRequestModel.Sort))
                {
                    if (pnRequestModel.IsSortDsc)
                    {
                        workOrdersQuery = workOrdersQuery.CustomOrderByDescending(pnRequestModel.Sort);
                    }
                    else
                    {
                        workOrdersQuery = workOrdersQuery.CustomOrderBy(pnRequestModel.Sort);
                    }
                }
                else
                {
                    workOrdersQuery = _dbContext.WorkOrders.OrderBy(x => x.Id);
                }

                // pagination
                workOrdersQuery = workOrdersQuery
                                  .Skip(pnRequestModel.Offset)
                                  .Take(pnRequestModel.PageSize);

                // add select
                var workOrderList = await AddSelectToQuery(workOrdersQuery).Result.ToListAsync();

                foreach (var workOrderModel in workOrderList)
                {
                    workOrderModel.CreatedBy = sites
                                               .Where(x => x.SiteUId == workOrderModel.CreatedByUserId)
                                               .Select(x => x.SiteName)
                                               .FirstOrDefault();

                    workOrderModel.DoneBy = sites
                                            .Where(x => x.SiteUId == workOrderModel.DoneBySiteId)
                                            .Select(x => x.SiteName)
                                            .FirstOrDefault();
                }

                workOrdersModel.Total = await _dbContext.WorkOrders.CountAsync(x =>
                                                                               x.WorkflowState != Constants.WorkflowStates.Removed);

                workOrdersModel.WorkOrders = workOrderList;

                return(new OperationDataResult <WorkOrdersModel>(true, workOrdersModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <WorkOrdersModel>(false,
                                                                 _workOrdersLocalizationService.GetString("ErrorWhileObtainingWorkOrders")));
            }
        }
 public async Task <OperationDataResult <WorkOrdersModel> > GetWorkOrders([FromBody] WorkOrdersRequestModel requestModel)
 {
     return(await _workOrdersService.GetWorkOrdersAsync(requestModel));
 }