public async Task <HardwareItemRequest> ParseItem(IParserSettings settings, string type)
        {
            HardwareItemRequest item = null;

            try
            {
                item = await ParseProductItem(settings.BaseUrl);

                item.HardwareType = type;
            }
            catch (Exception ex)
            {
                logger.LogError($"{ex.Message} at the {settings.BaseUrl}");
            }

            return(item);
        }
        private async Task <HardwareItemRequest> ParseProductItem(string uri)
        {
            var item = new HardwareItemRequest();

            var parser = new ParserWorker <HardwareItemRequest>(new CitilinkParserItem());

            parser.OnCompleted += (s, e) =>
            {
                logger.LogInformation($"{e.Name} - successfully paired");
                item = e;
            };

            parser.Uri = uri;

            await parser.Start();

            return(item);
        }
Beispiel #3
0
        /// <summary>
        /// Добавляет новую деталь в базу, в случае если изготовитель или тип детали отсутствует в базе,
        /// он будет добавлен автоматически
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResultObject <HardwareItemResponse> > AddHardwareItem(HardwareItemRequest request)
        {
            var result = ResultObject <HardwareItemResponse> .Create();

            var mapEntity = mapper.Map <HardwareItemEntity>(request);

            HardwareItemEntity entity = null;

            try
            {
                await MapPropertyRequest(mapEntity, request.PropertysItems);

                var manufacturerEntity = await GetOrCreateEntity(container.ManufacturerRepository, request.Manufacturer);

                mapEntity.Manufacturer = manufacturerEntity;

                var hardwareTypeEntity = await GetOrCreateEntity(container.HardwareTypeRepository, request.HardwareType);

                mapEntity.HardwareType = hardwareTypeEntity;

                entity = await container.HardwareItemRepository.AddAsync(mapEntity);

                await container.SaveAsync();
            }
            catch (Exception ex)
            {
                if (entity != null)
                {
                    await container.HardwareItemRepository.RemoveAsync(entity);
                }

                return(result.AddError(ex));
            }

            var response = mapper.Map <HardwareItemResponse>(entity);

            return(result.SetValue(response));
        }
Beispiel #4
0
        /// <summary>
        /// Изменяет данные указанного объекта
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResultObject <HardwareItemResponse> > UpdateHardwareItem(HardwareItemRequest request)
        {
            var result = ResultObject <HardwareItemResponse> .Create();

            var entity = await container.HardwareItemRepository.GetFullObject(request.Id);

            if (entity == null)
            {
                return(result.AddError(new Exception($"The specified object could not be found: Id = {request.Id}")));
            }

            try
            {
                /// Мапит в entity, игнорируя связи, новый объект который мы получили
                mapper.Map(request, entity);

                /// Удаляет старые связи детали к характеристикам
                entity.PropertysItems.Clear();
                await MapPropertyRequest(entity, request.PropertysItems);

                var manufacturerEntity = await GetOrCreateEntity(container.ManufacturerRepository, request.Manufacturer);

                entity.Manufacturer = manufacturerEntity;

                var hardwareTypeEntity = await GetOrCreateEntity(container.HardwareTypeRepository, request.HardwareType);

                entity.HardwareType = hardwareTypeEntity;

                await container.SaveAsync();
            }
            catch (Exception ex)
            {
                return(result.AddError(ex));
            }

            return(result);
        }
Beispiel #5
0
        public async Task <ActionResult <ResultObject <HardwareItemResponse> > > Update([FromBody] HardwareItemRequest request)
        {
            var result = await service.UpdateHardwareItem(request);

            return(Ok(result));
        }