public IActionResult Load([FromBody] DbExtractProtocolDTO entity) { if (null == entity) { return(BadRequest()); } if (!entity.IsValid()) { return(BadRequest()); } try { //check if busy var extractHistory = _psmartExtractService.HasStarted(entity.Extract.Id); if (extractHistory.IsStarted()) { var eventHistory = _psmartExtractService.GetStatus(entity.Extract.Id); if (null != eventHistory) { return(Ok(new { IsComplete = false, IsStarted = true, eEvent = eventHistory })); } } _psmartExtractService.Clear(); _psmartExtractService.Find(entity); _psmartExtractService.Sync(entity); _psmartExtractService.Complete(entity.Extract.Id); var history = _psmartExtractService.GetStatus(entity.Extract.Id); if (null != history) { return(Ok(new { IsComplete = true, IsStarted = false, eEvent = history })); } throw new ArgumentException("Server could not precess your"); } catch (Exception e) { var msg = $"Error parsing {nameof(Extract)} {_psmartExtractService.GetLoadError()}"; Log.Error(msg); Log.Error($"{e}"); return(StatusCode(500, msg)); } }
public void Sync(DbExtractProtocolDTO extract) { try { int count = 0; _extractHistoryRepository.UpdateStatus(extract.Extract.Id, ExtractStatus.Loading); var psmartSource = Extract(extract.DatabaseProtocol, extract.Extract).ToList(); if (psmartSource.Any()) { count = Load(psmartSource); } _extractHistoryRepository.UpdateStatus(extract.Extract.Id, ExtractStatus.Loaded, count); //_extractHistoryRepository.UpdateStatus(extract.Extract.Id, ExtractStatus.Idle); } catch (Exception e) { errorList.Add(e.Message); _extractHistoryRepository.UpdateStatus(extract.Extract.Id, ExtractStatus.Idle, express: true); throw; } }
public void Find(DbExtractProtocolDTO dbExtractProtocolDto) { var extract = dbExtractProtocolDto.Extract; var protocol = dbExtractProtocolDto.DatabaseProtocol; _extractHistoryRepository.ClearHistory(extract.Id); _extractHistoryRepository.UpdateStatus(extract.Id, ExtractStatus.Idle); _extractHistoryRepository.UpdateStatus(extract.Id, ExtractStatus.Finding); try { var found = _psmartSourceReader.Find(protocol, extract); _extractHistoryRepository.UpdateStatus(extract.Id, ExtractStatus.Found, found); } catch (Exception ex) { _extractHistoryRepository.UpdateStatus(extract.Id, ExtractStatus.Idle, express: true); throw ex; } }