public async Task <OperationDataResult <Paged <FractionModel> > > Index([FromBody] FractionRequestModel requestModel)
 {
     return(await _fractionService.Index(requestModel));
 }
예제 #2
0
        public async Task <OperationDataResult <Paged <FractionModel> > > Index(FractionRequestModel pnRequestModel)
        {
            try
            {
                var fractionsModel = new Paged <FractionModel>();

                var fractionsQuery = _dbContext.Fractions
                                     .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                     .AsQueryable();
                //if (!pnRequestModel.NameFilter.IsNullOrEmpty() && pnRequestModel.NameFilter != "")
                //{
                //    fractionsQuery = fractionsQuery.Where(x =>
                //        x.Name.Contains(pnRequestModel.NameFilter) ||
                //        x.Description.Contains(pnRequestModel.NameFilter));
                //}

                fractionsQuery = QueryHelper.AddSortToQuery(fractionsQuery, pnRequestModel.Sort, pnRequestModel.IsSortDsc);

                fractionsModel.Total = await fractionsQuery.Select(x => x.Id).CountAsync();

                fractionsQuery
                    = fractionsQuery
                      .Skip(pnRequestModel.Offset)
                      .Take(pnRequestModel.PageSize);

                var fractions = await fractionsQuery
                                .Select(x => new FractionModel
                {
                    Id           = x.Id,
                    Name         = x.Name,
                    eFormId      = x.eFormId,
                    Description  = x.Description,
                    LocationCode = x.LocationCode,
                    ItemNumber   = x.ItemNumber
                })
                                .ToListAsync();

                fractionsModel.Entities = fractions;
                var core = await _coreHelper.GetCore();

                var eFormNames = new List <KeyValuePair <int, string> >();

                var locale = await _userService.GetCurrentUserLocale();

                var language = core.DbContextHelper.GetDbContext().Languages.Single(x => x.LanguageCode == locale);
                foreach (var fractionModel in fractionsModel.Entities)
                {
                    if (fractionModel.eFormId > 0)
                    {
                        if (eFormNames.Any(x => x.Key == fractionModel.eFormId))
                        {
                            fractionModel.SelectedTemplateName = eFormNames.First(x => x.Key == fractionModel.eFormId).Value;
                        }
                        else
                        {
                            try
                            {
                                var eFormName = core.TemplateItemRead(fractionModel.eFormId, language).Result.Label;
                                fractionModel.SelectedTemplateName = eFormName;
                                var kvp =
                                    new KeyValuePair <int, string>(fractionModel.eFormId, eFormName);
                                eFormNames.Add(kvp);
                            }
                            catch
                            {
                                var kvp = new KeyValuePair <int, string>(fractionModel.eFormId, "");
                                eFormNames.Add(kvp);
                            }
                        }
                    }
                }

                return(new OperationDataResult <Paged <FractionModel> >(true, fractionsModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _coreHelper.LogException(e.Message);
                return(new OperationDataResult <Paged <FractionModel> >(false,
                                                                        _trashInspectionLocalizationService.GetString("ErrorObtainingFractions")));
            }
        }