Пример #1
0
        public async Task AddITemToCatalogAsync(CatalogItemDto catalogItemDto)
        {
            try
            {
                var request = _daprClient.CreateInvokeMethodRequest(
                    HttpMethod.Post,
                    _configuration["DaprConfiguration:AppId_Catalog"],
                    _catalogApiDefaultMethod,
                    catalogItemDto
                    );

                var response = await _daprClient.InvokeMethodWithResponseAsync(request);

                if (!response.IsSuccessStatusCode)
                {
                    _logger.LogCritical("Failed to add items to the catalog.", response);
                    throw new Exception($"Failed to add items to the catalog. Please try again.");
                }
            }
            catch (Exception ex)
            {
                throw;
            }

            _logger.LogInformation("An item was added to the basket.", catalogItemDto);
        }
Пример #2
0
    public override async Task <ActionResult <UpdateCatalogItemResponse> > HandleAsync(UpdateCatalogItemRequest request, CancellationToken cancellationToken)
    {
        var response = new UpdateCatalogItemResponse(request.CorrelationId());

        var existingItem = await _itemRepository.GetByIdAsync(request.Id, cancellationToken);

        existingItem.UpdateDetails(request.Name, request.Description, request.Price);
        existingItem.UpdateBrand(request.CatalogBrandId);
        existingItem.UpdateType(request.CatalogTypeId);

        await _itemRepository.UpdateAsync(existingItem, cancellationToken);

        var dto = new CatalogItemDto
        {
            Id             = existingItem.Id,
            CatalogBrandId = existingItem.CatalogBrandId,
            CatalogTypeId  = existingItem.CatalogTypeId,
            Description    = existingItem.Description,
            Name           = existingItem.Name,
            PictureUri     = _uriComposer.ComposePicUri(existingItem.PictureUri),
            Price          = existingItem.Price
        };

        response.CatalogItem = dto;
        return(response);
    }
Пример #3
0
        public async Task <ActionResult> Post([FromBody] CatalogItemDto catalogItemDto)
        {
            if (catalogItemDto == null)
            {
                return(BadRequest());
            }
            try
            {
                CatalogItem catalogItem = _mapper.Map <CatalogItem>(catalogItemDto);
                if (catalogItem == null)
                {
                    return(BadRequest());
                }

                catalogItem.CatalogItemId = Guid.NewGuid();
                await _catalogItemUnit.CatalogItemABCRepository.Insert(catalogItem);

                await _catalogItemUnit.SaveChangesAsync();

                return(Ok(catalogItem));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Пример #4
0
        public async Task <IActionResult> UpdateCatalogItem([FromBody] CatalogItemDto ctgItem, int Id, int itemId)
        {
            if (ctgItem is null)
            {
                return(BadRequest());
            }

            var data = await _catalogDataRepository.GetCatalogItem(Id, itemId);

            if (data is null)
            {
                _logger.LogInformation($"With id {itemId} data wasn't found in Db");

                return(NotFound());
            }

            var resultDto = Mapper.Map <CatalogItem>(ctgItem);

            var result = _catalogDataRepository.UpdateCatalogItem(Id, itemId, resultDto);

            if (!_catalogDataRepository.Save())
            {
                return(StatusCode(500, "A problem happened while handeling your request"));
            }

            return(Ok(data));
        }
Пример #5
0
        public async Task <IActionResult> CreateCatalogItem([FromBody] CatalogItemDto ctgItem, int Id)
        {
            if (ctgItem is null)
            {
                return(BadRequest());
            }

            var data = await _catalogDataRepository.GetCatalogItemsByIdAsync(Id);

            if (data is null)
            {
                _logger.LogInformation($"With id {Id} data wasn't found in Db");

                return(NotFound());
            }

            var result = Mapper.Map <CatalogItem>(ctgItem);

            await _catalogDataRepository.CreateCatalogItem(Id, result);

            if (!_catalogDataRepository.Save())
            {
                return(StatusCode(500, "A problem happened while handeling your request"));
            }

            var resultDto = Mapper.Map <CatalogItemDto>(result);

            return(CreatedAtRoute(routeName: "GetCatalogItem",
                                  routeValues: new { id = resultDto.CatalogTypeId, itemId = resultDto.Id },
                                  value: resultDto));
        }
Пример #6
0
        public async Task AddITemToCatalogAsync(CatalogItemDto catalogItem)
        {
            var itemToAdd = _mapper.Map <CatalogItem>(catalogItem);

            var result = _catalogContext.CatalogItems.Add(itemToAdd);
            await _catalogContext.SaveChangesAsync(new CancellationToken());

            return;
        }
Пример #7
0
        protected override Task OnInitializedAsync()
        {
            CatalogItemDto catalogItem = CatalogItemState.CatalogItems[EntityId];

            UpdateCatalogItemRequest = new UpdateCatalogItemRequest();

            MapToRequest(catalogItem);

            return(base.OnInitializedAsync());
        }
        public async Task <IActionResult> CreateItem([FromBody] CatalogItemDto catalogItemDto)
        {
            var catalogItem = mapper.Map <CatalogItem>(catalogItemDto);

            var result = await dbContext.CatalogItems.AddAsync(catalogItem);

            await dbContext.SaveChangesAsync();

            return(Ok(result.Entity.Id));
        }
Пример #9
0
 private void MapToRequest(CatalogItemDto catalogItem)
 {
     // TODO: consider Automapper here
     UpdateCatalogItemRequest.CatalogItemId  = catalogItem.Id;
     UpdateCatalogItemRequest.CatalogBrandId = catalogItem.CatalogBrandId;
     UpdateCatalogItemRequest.CatalogTypeId  = catalogItem.CatalogTypeId;
     UpdateCatalogItemRequest.Description    = catalogItem.Description;
     UpdateCatalogItemRequest.Name           = catalogItem.Name;
     UpdateCatalogItemRequest.PictureUri     = catalogItem.PictureUri;
     UpdateCatalogItemRequest.Price          = catalogItem.Price;
 }
Пример #10
0
        public async Task <ActionResult> AddCatalogItemAsync([FromBody] CatalogItemDto catalogItem)
        {
            try
            {
                await _catalogService.AddITemToCatalogAsync(catalogItem);

                return(Created("Item added to catalog.", catalogItem));
            }
            catch (Exception ex)
            {
                return(BadRequest($"{ex.Message} \n {ex.InnerException.Message}"));
            }
        }
Пример #11
0
        public ActionResult <CatalogItemDto> GetById(Guid catalogItemId)
        {
            var item = _catalogRepository.GetById(catalogItemId);

            if (item == null)
            {
                return(NotFound(value: "Catalog item not found."));
            }

            var itemDto = new CatalogItemDto(item);

            return(Ok(itemDto));
        }
        public async Task <IActionResult> UpdateItem(int id, [FromBody] CatalogItemDto catalogItemDto)
        {
            var item = await dbContext.CatalogItems.FindAsync(id);

            if (item == null)
            {
                return(BadRequest($"Элемента с id:{id} не существует"));
            }
            var updatedItem = mapper.Map(catalogItemDto, item);

            dbContext.CatalogItems.Update(updatedItem);
            await dbContext.SaveChangesAsync();

            return(Ok());
        }
Пример #13
0
    public async Task <IResult> HandleAsync(CreateCatalogItemRequest request)
    {
        var response = new CreateCatalogItemResponse(request.CorrelationId());

        var catalogItemNameSpecification = new CatalogItemNameSpecification(request.Name);
        var existingCataloogItem         = await _itemRepository.CountAsync(catalogItemNameSpecification);

        if (existingCataloogItem > 0)
        {
            throw new DuplicateException($"A catalogItem with name {request.Name} already exists");
        }

        var newItem = new CatalogItem(request.CatalogTypeId, request.CatalogBrandId, request.Description, request.Name, request.Price, request.PictureUri);

        newItem = await _itemRepository.AddAsync(newItem);

        if (newItem.Id != 0)
        {
            //We disabled the upload functionality and added a default/placeholder image to this sample due to a potential security risk
            //  pointed out by the community. More info in this issue: https://github.com/dotnet-architecture/eShopOnWeb/issues/537
            //  In production, we recommend uploading to a blob storage and deliver the image via CDN after a verification process.

            newItem.UpdatePictureUri("eCatalog-item-default.png");
            await _itemRepository.UpdateAsync(newItem);
        }

        var dto = new CatalogItemDto
        {
            Id             = newItem.Id,
            CatalogBrandId = newItem.CatalogBrandId,
            CatalogTypeId  = newItem.CatalogTypeId,
            Description    = newItem.Description,
            Name           = newItem.Name,
            PictureUri     = _uriComposer.ComposePicUri(newItem.PictureUri),
            Price          = newItem.Price
        };

        response.CatalogItem = dto;
        return(Results.Created($"api/catalog-items/{dto.Id}", response));
    }
Пример #14
0
        public async Task <ActionResult> Get(string id)
        {
            try
            {
                Guid _id = Guid.Empty;
                if (!Guid.TryParse(id, out _id))
                {
                    return(BadRequest());
                }

                CatalogItem catalogItem = await _catalogItemUnit.CatalogItemABCRepository.GetByID(_id);

                if (catalogItem == null)
                {
                    return(Ok());
                }
                CatalogItemDto catalogItemDto = _mapper.Map <CatalogItemDto>(catalogItem);
                return(Ok(catalogItemDto));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Пример #15
0
 public CatalogItemDtoBuilder()
 {
     _catalogItemDto = WithDefaults();
 }
Пример #16
0
 public void Insert(CatalogItemDto catalogItem)
 {
     _dbContext.Items.Add(catalogItem);
     _dbContext.SaveChanges();
 }
Пример #17
0
 public void Insert(CatalogItemDto catalogItem)
 {
     _logger.LogTrace("Inserting new catalog item");
     _dbContext.Items.Add(catalogItem);
     _dbContext.SaveChanges();
 }