示例#1
0
        public async Task <IncomingCratesDTO> GetAvailableData(Guid activityId, CrateDirection direction, AvailabilityType availability)
        {
            var url           = $"{GetHubUrlWithApiVersion()}/plan_nodes/signals?id={activityId}&direction={(int)direction}&availability={(int)availability}";
            var uri           = new Uri(url, UriKind.Absolute);
            var availableData = await _restfulServiceClient.GetAsync <IncomingCratesDTO>(uri, null, await GetHMACHeader(uri));

            return(availableData);
        }
示例#2
0
        public IncomingCratesDTO GetIncomingData(Guid activityId, CrateDirection direction, AvailabilityType availability)
        {
            var crates        = GetCrateManifestsByDirection(activityId, direction, AvailabilityType.NotSet);
            var availableData = new IncomingCratesDTO();

            availableData.AvailableCrates.AddRange(crates.SelectMany(x => x.CrateDescriptions).Where(x => availability == AvailabilityType.NotSet || (x.Availability & availability) != 0));

            return(availableData);
        }
        public async Task <IncomingCratesDTO> GetAvailableData(Guid activityId, CrateDirection direction, AvailabilityType availability)
        {
            var crates = await GetCratesByDirection <CrateDescriptionCM>(activityId, direction);

            var availableData = new IncomingCratesDTO();

            availableData.AvailableCrates.AddRange(crates.SelectMany(x => x.Content.CrateDescriptions).Where(x => availability == AvailabilityType.NotSet || (x.Availability & availability) != 0));

            return(availableData);
        }
示例#4
0
        private List <PlanNodeDO> GetActivitiesByDirection(IUnitOfWork uow, CrateDirection direction, PlanNodeDO curActivityDO)
        {
            switch (direction)
            {
            case CrateDirection.Downstream:
                return(GetDownstreamActivities(uow, curActivityDO));

            case CrateDirection.Upstream:
                return(GetUpstreamActivities(uow, curActivityDO));

            default:
                return(GetDownstreamActivities(uow, curActivityDO).Concat(GetUpstreamActivities(uow, curActivityDO)).ToList());
            }
        }
示例#5
0
        public List <CrateDescriptionCM> GetCrateManifestsByDirection(
            Guid activityId,
            CrateDirection direction,
            AvailabilityType availability,
            bool includeCratesFromActivity = true
            )
        {
            Func <Crate <CrateDescriptionCM>, bool> cratePredicate;


            //validation errors don't need to be present as available data, so remove Validation Errors
            cratePredicate = f => f.Label != ValidationErrorsLabel;


            using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
            {
                var activityDO = uow.PlanRepository.GetById <ActivityDO>(activityId);
                var activities = GetActivitiesByDirection(uow, direction, activityDO)
                                 .OfType <ActivityDO>();

                if (!includeCratesFromActivity)
                {
                    activities = activities.Where(x => x.Id != activityId);
                }
                // else
                // {
                //     if (!activities.Any(x => x.Id == activityId))
                //     {
                //         var activitiesToAdd = activities.ToList();
                //         activitiesToAdd.Insert(0, activityDO);
                //         activities = activitiesToAdd;
                //     }
                // }

                var result = activities
                             .SelectMany(x => _crate.GetStorage(x).CratesOfType <CrateDescriptionCM>().Where(cratePredicate))
                             .Select(x =>
                {
                    foreach (var crateDescription in x.Content.CrateDescriptions)
                    {
                        crateDescription.Label = crateDescription.Label ?? crateDescription.ProducedBy;
                    }
                    return(x.Content);
                })
                             .ToList();

                return(result);
            }
        }
        public Task <List <Crate> > GetCratesByDirection(Guid activityId, CrateDirection direction)
        {
            var searchLabel = direction == CrateDirection.Upstream
                ? LabelPrefix + "_UpstreamCrate"
                : LabelPrefix + "_DownstreamCrate";

            var crateStorage = Crate.GetStorage(ExplicitData);
            var crates       = crateStorage
                               .Where(x => x.Label.StartsWith(searchLabel))
                               .ToList();

            StripLabelPrefix(crates, searchLabel);

            return(Task.FromResult(crates));
        }
示例#7
0
        public async Task <IncomingCratesDTO> GetAvailableData(Guid activityId, CrateDirection direction, AvailabilityType availability)
        {
            var url           = $"{GetHubUrlWithApiVersion()}/plan_nodes/signals?id={activityId}&direction={(int)direction}&availability={(int)availability}";
            var uri           = new Uri(url, UriKind.Absolute);
            var availableData = await _restfulServiceClient.GetAsync <IncomingCratesDTO>(uri, null);

            foreach (var availableCrate in availableData.AvailableCrates)
            {
                foreach (var fieldDto in availableCrate.Fields)
                {
                    fieldDto.SourceCrateLabel = availableCrate.Label;
                    fieldDto.SourceActivityId = availableCrate.SourceActivityId;
                    fieldDto.Availability     = availableCrate.Availability;
                }
            }

            return(availableData);
        }
示例#8
0
        public async Task <List <Crate> > GetCratesByDirection(Guid activityId, CrateDirection direction)
        {
            var directionSuffix = direction == CrateDirection.Upstream
                ? "upstream"
                : "downstream";

            var uri           = new Uri($"{GetHubUrlWithApiVersion()}/plan_nodes?id={activityId}&direction={directionSuffix}", UriKind.Absolute);
            var curActivities = await _restfulServiceClient.GetAsync <List <ActivityDTO> >(uri, null, await GetHMACHeader(uri));

            var curCrates = new List <Crate>();

            foreach (var curAction in curActivities)
            {
                var storage = _crate.FromDto(curAction.CrateStorage);
                curCrates.AddRange(storage);
            }

            return(curCrates);
        }
示例#9
0
 public List <CrateDescriptionCM> GetCrateManifestsByDirection(Guid activityId, CrateDirection direction,
                                                               AvailabilityType availability, bool includeCratesFromActivity = true)
 {
     throw new NotImplementedException();
 }
示例#10
0
 public IHttpActionResult GetAvailableData(Guid id, CrateDirection direction = CrateDirection.Upstream, AvailabilityType availability = AvailabilityType.RunTime)
 {
     return(Ok(_activity.GetIncomingData(id, direction, availability)));
 }
 public async Task <List <Crate> > GetCratesByDirection(CrateDirection direction)
 {
     return(await _hubCommunicator.GetCratesByDirection(ActivityId, direction));
 }
 public async Task <List <TManifest> > GetCrateManifestsByDirection <TManifest>(CrateDirection direction)
 {
     return((await _hubCommunicator.GetCratesByDirection <TManifest>(ActivityId, direction)).Select(x => x.Content).ToList());
 }
 public Task <List <Crate> > GetCratesByDirection(Guid activityId, CrateDirection direction)
 {
     throw new NotImplementedException("Terminals can't communicate with an unknown hub");
 }
示例#14
0
        public async Task <List <Crate <TManifest> > > GetCratesByDirection <TManifest>(Guid activityId, CrateDirection direction)
        {
            var directionSuffix = direction == CrateDirection.Upstream
                ? "upstream"
                : "downstream";
            var uri           = new Uri($"{GetHubUrlWithApiVersion()}/plan_nodes?id={activityId}&direction={directionSuffix}", UriKind.Absolute);
            var curActivities = await _restfulServiceClient.GetAsync <List <ActivityDTO> >(uri, null);

            var curCrates = new List <Crate <TManifest> >();

            foreach (var curAction in curActivities)
            {
                var storage = CrateStorageSerializer.Default.ConvertFromDto(curAction.CrateStorage);

                curCrates.AddRange(storage.CratesOfType <TManifest>());
            }

            return(curCrates);
        }
示例#15
0
 public IncomingCratesDTO GetIncomingData(Guid activityId, CrateDirection direction, AvailabilityType availability)
 {
     throw new NotImplementedException();
 }
示例#16
0
 public FieldDescriptionsCM GetDesignTimeFieldsByDirection(Guid activityId, CrateDirection direction, AvailabilityType availability)
 {
     throw new NotImplementedException();
 }
 public Task <IncomingCratesDTO> GetAvailableData(Guid activityId, CrateDirection direction, AvailabilityType availability)
 {
     throw new NotImplementedException("Terminals can't communicate with an unknown hub");
 }