コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }