// <---------- Item ----------> public async Task <ResponseResult <ItemResponse> > CreateItemAsync(ItemRequest itemRequest, string creatorId) { var isCategoryExists = await _shopRepository.IsCategoryExistsAsync(itemRequest.CategoryId); if (!isCategoryExists) { return(new ResponseResult <ItemResponse> { Errors = new[] { "Item category is not exists" } }); } var dateNow = DateTimeOffset.UtcNow; var item = _mapper.Map <Item>(itemRequest); item.Id = Guid.NewGuid(); item.CreatorId = Guid.Parse(creatorId); item.CreatedAt = dateNow; item.UpdatedAt = dateNow; var createdItem = await _shopRepository.CreateItemAsync(item, itemRequest.CategoryId); if (createdItem == null) { return(new ResponseResult <ItemResponse> { Errors = new[] { "Item with this name already exists" } }); } var itemCategory = new ItemCategory { ItemId = item.Id, CategoryId = itemRequest.CategoryId }; var createdItemCategory = await _shopRepository.CreateItemCategoryAsync(itemCategory); if (createdItemCategory == null) { return(new ResponseResult <ItemResponse> { Errors = new[] { "Item with this category already exists" } }); } var mappedItemResponse = _mapper.Map <ItemResponse>(createdItem); return(new ResponseResult <ItemResponse> { Success = true, Response = mappedItemResponse }); }