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); }
/// <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)); }
/// <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); }
public async Task <ActionResult <ResultObject <HardwareItemResponse> > > Update([FromBody] HardwareItemRequest request) { var result = await service.UpdateHardwareItem(request); return(Ok(result)); }