コード例 #1
0
        public async Task CreateAsync()
        {
            var body = new ItemTypeRequest
            {
                TypeKey       = "JOB",
                Display       = "Job",
                DisplayPlural = "Jobs",
                Description   = "HR"
            };

            MetaResponse response = await _service.CreateAsync(body);

            Assert.IsNotNull(response);
        }
 public async Task <OperationDataResult <Paged <ItemTypeSimpleModel> > > Index(
     [FromBody] ItemTypeRequest itemTypeRequest)
 {
     return(await _inventoryItemTypeService.GetItemTypes(itemTypeRequest));
 }
        public async Task <OperationDataResult <Paged <ItemTypeSimpleModel> > > GetItemTypes(
            ItemTypeRequest itemTypeRequest)
        {
            try
            {
                var inventoryItemTypeQuery = _dbContext.ItemTypes
                                             .AsQueryable();

                // filter by name
                if (!string.IsNullOrEmpty(itemTypeRequest.NameFilter))
                {
                    inventoryItemTypeQuery = inventoryItemTypeQuery
                                             .Where(x => x.Name.Contains(itemTypeRequest.NameFilter));
                }

                // filter by tags
                if (itemTypeRequest.TagIds.Any())
                {
                    foreach (var tagId in itemTypeRequest.TagIds)
                    {
                        inventoryItemTypeQuery = inventoryItemTypeQuery
                                                 .Where(x => x.ItemTypeTags
                                                        .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed)
                                                        .Any(y => y.InventoryTagId == tagId));
                    }
                }

                inventoryItemTypeQuery = inventoryItemTypeQuery
                                         .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

                // calculate total before pagination
                var total = await inventoryItemTypeQuery.Select(x => x.Id).CountAsync();

                // pagination
                inventoryItemTypeQuery
                    = inventoryItemTypeQuery
                      .Skip(itemTypeRequest.Offset)
                      .Take(itemTypeRequest.PageSize);

                // get userIds for get full name users
                var fullNamesUserWithId = new List <KeyValuePair <int, string> >();
                foreach (var userId in inventoryItemTypeQuery.Select(x => x.CreatedByUserId).Distinct())
                {
                    // get full names users
                    fullNamesUserWithId.Add(new KeyValuePair <int, string>(userId, await _userService.GetFullNameUserByUserIdAsync(userId)));
                }

                // add select
                var inventoryItemTypeMappedQuery = AddSelectToItemTypeQuery(inventoryItemTypeQuery);

                // sort
                inventoryItemTypeMappedQuery = QueryHelper.AddSortToQuery(inventoryItemTypeMappedQuery, itemTypeRequest.Sort,
                                                                          itemTypeRequest.IsSortDsc);

                // take objects from db
                var inventoryItemTypeFromDb = await inventoryItemTypeMappedQuery.ToListAsync();

                foreach (var(userId, fullNameUser) in fullNamesUserWithId)
                {
                    foreach (var itemTypeSimpleModel in inventoryItemTypeFromDb.Where(x => x.CreatedByUserId == userId))
                    {
                        itemTypeSimpleModel.CreatedBy = fullNameUser;
                    }
                }

                var returnValue = new Paged <ItemTypeSimpleModel>
                {
                    Entities = inventoryItemTypeFromDb,
                    Total    = total,
                };

                return(new OperationDataResult <Paged <ItemTypeSimpleModel> >(true, returnValue));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                return(new OperationDataResult <Paged <ItemTypeSimpleModel> >(false,
                                                                              _inventoryLocalizationService.GetString("ErrorObtainingLists")));
            }
        }