/// <summary>
        /// Creates RadioButtonGroup to enter specific value or choose value from upstream crate.
        /// </summary>
        public TextSource CreateSpecificOrUpstreamValueChooser(string label,
                                                               string controlName,
                                                               string upstreamSourceLabel    = "",
                                                               string filterByTag            = "",
                                                               bool addRequestConfigEvent    = false,
                                                               bool requestUpstream          = false,
                                                               AvailabilityType availability = AvailabilityType.NotSet)
        {
            var control = new TextSource(label, upstreamSourceLabel, controlName)
            {
                Source = new FieldSourceDTO
                {
                    Label            = upstreamSourceLabel,
                    ManifestType     = CrateManifestTypes.StandardDesignTimeFields,
                    FilterByTag      = filterByTag,
                    RequestUpstream  = requestUpstream,
                    AvailabilityType = availability
                }
            };

            if (addRequestConfigEvent)
            {
                control.Events.Add(new ControlEvent("onChange", "requestConfig"));
            }

            return(control);
        }
Exemple #2
0
 public Crate <FieldDescriptionsCM> CreateDesignTimeFieldsCrate(string label, AvailabilityType availability, params FieldDTO[] fields)
 {
     return(Crate <FieldDescriptionsCM> .FromContent(label, new FieldDescriptionsCM()
     {
         Fields = fields.ToList()
     }, availability));
 }
Exemple #3
0
        /// <summary>
        /// Gets the hash code
        /// </summary>
        /// <returns>Hash code</returns>
        public override int GetHashCode()
        {
            unchecked // Overflow is fine, just wrap
            {
                var hashCode = 41;
                // Suitable nullity checks etc, of course :)
                if (Date != null)
                {
                    hashCode = hashCode * 59 + Date.GetHashCode();
                }
                if (AvailabilityType != null)
                {
                    hashCode = hashCode * 59 + AvailabilityType.GetHashCode();
                }
                if (Start != null)
                {
                    hashCode = hashCode * 59 + Start.GetHashCode();
                }
                if (End != null)
                {
                    hashCode = hashCode * 59 + End.GetHashCode();
                }

                hashCode = hashCode * 59 + NumberOfOccurrences.GetHashCode();
                if (Notes != null)
                {
                    hashCode = hashCode * 59 + Notes.GetHashCode();
                }
                return(hashCode);
            }
        }
        public FieldConfigurator MarkAvailable <TManifest>(string label, AvailabilityType availabilityType, bool suppressFieldDiscovery = false)
            where TManifest : Manifest
        {
            EnsureAvailableDataCrate();

            var manifestType = ManifestDiscovery.Default.GetManifestType <TManifest>();
            var fields       = new List <FieldDTO>();

            if (!suppressFieldDiscovery)
            {
                var members = Fr8ReflectionHelper.GetMembers(typeof(TManifest))
                              .Where(x => Fr8ReflectionHelper.IsPrimitiveType(x.MemberType))
                              .Where(x => Fr8ReflectionHelper.CheckAttributeOrTrue <ManifestFieldAttribute>(x, y => !y.IsHidden));

                foreach (var memberAccessor in members)
                {
                    fields.Add(new FieldDTO(memberAccessor.Name));
                }
            }

            _availableData.AddOrUpdate(new CrateDescriptionDTO
            {
                Availability     = availabilityType,
                Label            = label,
                ManifestId       = manifestType.Id,
                ManifestType     = manifestType.Type,
                ProducedBy       = _owner,
                SourceActivityId = _sourceActivityId.ToString(),
                Fields           = fields
            });

            return(new FieldConfigurator(fields));
        }
Exemple #5
0
 public void MergeWith(RoomAvailability otherAvailability)
 {
     if (!otherAvailability.RoomNumber.Equals(RoomNumber))
     {
         throw new Exception("Error: Cannot merge availabilities for different rooms into one object");
     }
     foreach (KeyValuePair <DateTime, AvailabilityType> otherEntry in otherAvailability.TotalAvailability)
     {
         DateTime         otherKey   = otherEntry.Key;
         AvailabilityType otherValue = otherEntry.Value;
         if (TotalAvailability.ContainsKey(otherKey))
         {
             AvailabilityType existingValue = TotalAvailability[otherKey];
             if (otherValue.Equals(AvailabilityType.NOT_SET) ^ existingValue.Equals(AvailabilityType.NOT_SET))
             {
                 throw new Exception("Error when merging room availabilities for date " +
                                     otherKey.ToLongDateString() + "; One value was set and the other was null");
             }
             else if (!otherValue.Equals(AvailabilityType.NOT_SET) && !existingValue.Equals(AvailabilityType.NOT_SET) && !otherValue.Equals(existingValue))
             {
                 throw new Exception("Error when merging room availabilities for date " +
                                     otherKey.ToLongDateString() + "; One value was " + otherValue.ToString() + " and the other was " + existingValue.ToString());
             }
         }
         else
         {
             TotalAvailability.Add(otherKey, otherEntry.Value);
         }
     }
 }
Exemple #6
0
 public FieldConfigurator(List <FieldDTO> fields, string label, CrateManifestType manifestType, Guid sourceActivityId, AvailabilityType availabilityType)
 {
     _fields           = fields;
     _label            = label;
     _manifestType     = manifestType;
     _sourceActivityId = sourceActivityId;
     _availabilityType = availabilityType;
 }
Exemple #7
0
 /**********************************************************************************/
 /// <summary>
 /// Create new create from content. Manifest type is deduced from the content.
 /// There is no compile-time checks for content's correctness. If manifest type can't be deduced from the content, then run-time error will be throwm.
 /// </summary>
 /// <param name="label"></param>
 /// <param name="content"></param>
 /// <returns></returns>
 public static Crate FromContentUnsafe(string label, object content, AvailabilityType availability = AvailabilityType.NotSet)
 {
     return(new Crate(GetManifest(content))
     {
         Label = label,
         KnownContent = content,
         Availability = availability
     });
 }
Exemple #8
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);
            }
        }
Exemple #9
0
            public static string GetSymbolForAvailability(AvailabilityType availabilityType)
            {
                switch (availabilityType)
                {
                case AvailabilityType.AVAILABLE:
                    return("Y");

                case AvailabilityType.UNAVAILABLE:
                    return("X");

                case AvailabilityType.BLOCKED:
                    return(" ");

                default:
                    throw new Exception("Error: Cannot set a symbol for an unset availability");
                }
            }
Exemple #10
0
        //Select the Availability in Profile Section
        internal void SelectAvailability()
        {
            Extension.WaitForElementDisplayed(GlobalDefinitions.Driver, By.XPath("//strong[text()='Availability']/../..//*[@class='right floated outline small write icon']"), 5);
            AvailabilityEditButton.Click();
            AvailabilityType.Click();
            foreach (IWebElement AvailabilityTypeOption in AvailabilityTypeOptions)
            {
                if (AvailabilityTypeOption.Text.ToLower() == ExcelLib.ReadData(2, "AvailabilityType").ToLower())
                {
                    AvailabilityTypeOption.Click();
                    Base.Image = SaveScreenShotClass.SaveScreenshot(Driver, "Report");
                    break;
                }
            }

            //Validate message
            Extension.MessageValidation("Availability updated");
        }
Exemple #11
0
        /// <summary>
        /// Returns true if AvailabilitiesAvailability instances are equal
        /// </summary>
        /// <param name="other">Instance of AvailabilitiesAvailability to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(AvailabilitiesAvailability other)
        {
            if (other is null)
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     Date == other.Date ||
                     Date != null &&
                     Date.Equals(other.Date)
                     ) &&
                 (
                     AvailabilityType == other.AvailabilityType ||
                     AvailabilityType != null &&
                     AvailabilityType.Equals(other.AvailabilityType)
                 ) &&
                 (
                     Start == other.Start ||
                     Start != null &&
                     Start.Equals(other.Start)
                 ) &&
                 (
                     End == other.End ||
                     End != null &&
                     End.Equals(other.End)
                 ) &&
                 (
                     NumberOfOccurrences == other.NumberOfOccurrences ||

                     NumberOfOccurrences.Equals(other.NumberOfOccurrences)
                 ) &&
                 (
                     Notes == other.Notes ||
                     Notes != null &&
                     Notes.Equals(other.Notes)
                 ));
        }
 public FieldDTO(string key, string value, AvailabilityType availability) : this()
 {
     Key          = key;
     Value        = value;
     Availability = availability;
 }
 public FieldDTO(string key, AvailabilityType availability) : this()
 {
     Key          = key;
     Availability = availability;
 }
        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);
        }
Exemple #15
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);
        }
Exemple #16
0
 public FieldDTO(string name, AvailabilityType availability)
     : this(name)
 {
     Availability = availability;
 }
Exemple #17
0
 public IHttpActionResult GetAvailableData(Guid id, CrateDirection direction = CrateDirection.Upstream, AvailabilityType availability = AvailabilityType.RunTime)
 {
     return(Ok(_activity.GetIncomingData(id, direction, availability)));
 }
Exemple #18
0
 public List <CrateDescriptionCM> GetCrateManifestsByDirection(Guid activityId, CrateDirection direction,
                                                               AvailabilityType availability, bool includeCratesFromActivity = true)
 {
     throw new NotImplementedException();
 }
Exemple #19
0
 public static Crate <T> FromContent(string label, T content, AvailabilityType availability)
 {
     return(new Crate <T>(FromContentUnsafe(label, content, availability)));
 }
Exemple #20
0
 /// <remarks/>
 public void ChangeAvailabilityAsync(int connectorId, AvailabilityType type, object userState)
 {
     if ((this.ChangeAvailabilityOperationCompleted == null)) {
         this.ChangeAvailabilityOperationCompleted = new System.Threading.SendOrPostCallback(this.OnChangeAvailabilityOperationCompleted);
     }
     this.InvokeAsync("ChangeAvailability", new object[] {
                 connectorId,
                 type}, this.ChangeAvailabilityOperationCompleted, userState);
 }
Exemple #21
0
 /// <remarks/>
 public void ChangeAvailabilityAsync(int connectorId, AvailabilityType type)
 {
     this.ChangeAvailabilityAsync(connectorId, type, null);
 }
Exemple #22
0
 public AvailabilityStatus ChangeAvailability(int connectorId, AvailabilityType type)
 {
     object[] results = this.Invoke("ChangeAvailability", new object[] {
                 connectorId,
                 type});
     return ((AvailabilityStatus)(results[0]));
 }
Exemple #23
0
 /// <remarks/>
 public System.IAsyncResult BeginChangeAvailability(int connectorId, AvailabilityType type, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("ChangeAvailability", new object[] {
                 connectorId,
                 type}, callback, asyncState);
 }
 public SMUIAvailabilityArgs(ISuperMemo smMgmt,
                             AvailabilityType availability)
     : base(smMgmt)
 {
     Availability = availability;
 }
Exemple #25
0
 public FieldDescriptionsCM GetDesignTimeFieldsByDirection(Guid activityId, CrateDirection direction, AvailabilityType availability)
 {
     throw new NotImplementedException();
 }
Exemple #26
0
            private static void AddDates(string pageText, Dictionary <DateTime, AvailabilityType> availability, string identifier, AvailabilityType availabilityType)
            {
                char[] splitChar    = new[] { ',' };
                int    currentIndex = pageText.IndexOf(identifier);

                while (currentIndex != -1)
                {
                    string dateData = pageText.Substring(currentIndex - CSV_DATE_LENGTH - 2, 10);
                    // Three possible lengths of csv date, depending on whether day or month values are single or double digit
                    if (!dateData.StartsWith(YEAR_STARTER))
                    {
                        dateData = pageText.Substring(currentIndex - CSV_DATE_LENGTH - 1, 9);
                    }
                    if (!dateData.StartsWith(YEAR_STARTER))
                    {
                        dateData = pageText.Substring(currentIndex - CSV_DATE_LENGTH, 8);
                    }
                    if (!dateData.StartsWith(YEAR_STARTER))
                    {
                        currentIndex = pageText.IndexOf(identifier, currentIndex + 1);
                        continue;
                    }
                    string[] date  = dateData.Split(splitChar);
                    int      year  = Int32.Parse(date[0]);
                    int      month = Int32.Parse(date[1]);
                    int      day   = Int32.Parse(date[2]);

                    currentIndex = pageText.IndexOf(identifier, currentIndex + 1);

                    DateTime specificDate = new DateTime(year, month, day);
                    availability.Add(specificDate, availabilityType);
                }
            }
        public FieldConfigurator MarkAvailable(CrateManifestType manifestType, string label, AvailabilityType availabilityType)
        {
            EnsureAvailableDataCrate();

            var fields = new List <FieldDTO>();

            _availableData.AddOrUpdate(new CrateDescriptionDTO
            {
                Availability     = availabilityType,
                Label            = label,
                ManifestId       = manifestType.Id,
                ManifestType     = manifestType.Type,
                ProducedBy       = _owner,
                SourceActivityId = _sourceActivityId.ToString(),
                Fields           = fields
            });

            return(new FieldConfigurator(fields));
        }
 public static IEnumerable <FieldDTO> GetFieldsByTypeId(IUnitOfWork uow, Guid typeId, AvailabilityType availability = AvailabilityType.NotSet)
 {
     return(uow.MultiTenantObjectRepository
            .ListTypePropertyReferences(typeId)
            .OrderBy(x => x.Name)
            .Select(x => new FieldDTO()
     {
         Name = x.Name,
         FieldType = GetFieldType(x),
         Availability = availability
     })
            .ToList());
 }
        public void Append(IEnumerable <string> fieldIds, string upstreamSourceLabel, AvailabilityType availability = AvailabilityType.NotSet)
        {
            var controlsCM = GetOrCreateStandardConfigurationControlsCM();

            foreach (var fieldId in fieldIds)
            {
                var name = string.Concat(BehaviorPrefix, fieldId);

                var textSource = new TextSource(fieldId, upstreamSourceLabel, name);
                if (_reqeustUpstream)
                {
                    textSource.Source = new FieldSourceDTO()
                    {
                        ManifestType     = CrateManifestTypes.StandardDesignTimeFields,
                        RequestUpstream  = true,
                        AvailabilityType = availability
                    };
                }

                controlsCM.Controls.Add(textSource);
            }
        }
Exemple #30
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);
        }
Exemple #31
0
 public IncomingCratesDTO GetIncomingData(Guid activityId, CrateDirection direction, AvailabilityType availability)
 {
     throw new NotImplementedException();
 }
Exemple #32
0
 public Crate <FieldDescriptionsCM> CreateDesignTimeFieldsCrate(string label, List <FieldDTO> fields, AvailabilityType availability)
 {
     return(Crate <FieldDescriptionsCM> .FromContent(label, new FieldDescriptionsCM()
     {
         Fields = fields
     }, availability));
 }
Exemple #33
0
 /// <summary>
 /// Crate new crate with specified manifest type, Id and availability.
 /// </summary>
 /// <param name="manifestType"></param>
 /// <param name="id"></param>
 /// <param name="availability">Crate availability</param>
 public Crate(CrateManifestType manifestType, string id, AvailabilityType availability)
 {
     _manifestType = manifestType;
     Id            = id;
     Availability  = availability;
 }
Exemple #34
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);
        }