public void NormalizeTraject(TrajectTaskModel model)
        {
            List <TraveltimeSegment> input = model.InputQueryManager.GetAllResults($"select * from c where c.TrajectID = '{model.Segment}'");

            _logger.LogInformation($"Found {input.Count} documents to process for traject {model.Segment}");

            foreach (TraveltimeSegment t in input)
            {
                SegmentTaskModel segmentModel = new SegmentTaskModel
                {
                    OutputQueryManager = model.OutputQueryManager,
                    TraveltimeStatic   = model.StaticData.Find(x => x.Merged.Id == t.Id),
                    TraveltimeSegment  = t
                };
                _segmentQueue.Queue.Add(new GenericQueueTask <SegmentTaskModel>
                {
                    Function = ProcessAndUploadSegment,
                    Item     = segmentModel
                });
            }
            _trajectQueue.Finished += 1;
        }
        public async void ProcessAndUploadSegment(SegmentTaskModel model)
        {
            GenericTraveltimeSegment merged = NormalizeSegment(model.TraveltimeSegment, model.TraveltimeStatic);

            try
            {
                await model.OutputQueryManager.Create(merged, 0, 10);

                _segmentQueue.Finished += 1;
            }
            catch (Microsoft.Azure.Documents.DocumentClientException ex)
            {
                //TODO: handle exception
            }
            catch (System.Threading.Tasks.TaskCanceledException ex)
            {
                _logger.LogWarning($"A task has been canceled: {ex.Task.Id}");
                _segmentQueue.Failed += 1;
            }
            catch (System.OperationCanceledException ex)
            {
                _logger.LogWarning($"An operation has been canceled: {ex.Message}");
            }
        }