Example #1
0
        protected virtual void EmitPropertyMethod(PropertyDeclaration propertyDeclaration, Accessor accessor, bool setter)
        {
            var memberResult = this.Emitter.Resolver.ResolveNode(propertyDeclaration, this.Emitter) as MemberResolveResult;

            if (memberResult != null &&
                (memberResult.Member.Attributes.Any(a => a.AttributeType.FullName == "Bridge.FieldPropertyAttribute") ||
                (propertyDeclaration.Getter.IsNull && propertyDeclaration.Setter.IsNull)))
            {
                return;
            }

            if (!accessor.IsNull && this.Emitter.GetInline(accessor) == null)
            {
                this.EnsureComma();

                this.ResetLocals();

                var prevMap = this.BuildLocalsMap();
                var prevNamesMap = this.BuildLocalsNamesMap();

                if (setter)
                {
                    this.AddLocals(new ParameterDeclaration[] { new ParameterDeclaration { Name = "value" } }, accessor.Body);
                }

                XmlToJsDoc.EmitComment(this, this.PropertyDeclaration);
                var overloads = OverloadsCollection.Create(this.Emitter, propertyDeclaration, setter);
                string name = overloads.GetOverloadName();
                this.Write((setter ? "set" : "get") + name);
                this.WriteColon();
                this.WriteFunction();
                this.WriteOpenParentheses();
                this.Write(setter ? "value" : "");
                this.WriteCloseParentheses();
                this.WriteSpace();

                var script = this.Emitter.GetScript(accessor);

                if (script == null)
                {
                    accessor.Body.AcceptVisitor(this.Emitter);
                }
                else
                {
                    this.BeginBlock();

                    foreach (var line in script)
                    {
                        this.Write(line);
                        this.WriteNewLine();
                    }

                    this.EndBlock();
                }

                this.ClearLocalsMap(prevMap);
                this.ClearLocalsNamesMap(prevNamesMap);
                this.Emitter.Comma = true;
            }
        }
        private static void fillFields(ValidationOptions options, IValidationNode node, IServiceLocator services, Accessor accessor)
        {
            var mode = node.DetermineMode(services, accessor);
            var field = new FieldOptions
            {
                field = accessor.Name,
                mode = mode.Mode
            };

            var graph = services.GetInstance<ValidationGraph>();
            var rules = graph.FieldRulesFor(accessor);
            var ruleOptions = new List<FieldRuleOptions>();

            rules.Each(rule =>
            {
                var ruleMode = rule.Mode ?? mode;
                ruleOptions.Add(new FieldRuleOptions
                {
                    rule = RuleAliases.AliasFor(rule),
                    mode = ruleMode.Mode
                });
            });

            field.rules = ruleOptions.ToArray();

            options._fields.Add(field);
        }
        /// <summary>
        /// Formats the provided value using the accessor accessor metadata and a custom format
        /// </summary>
        /// <param name="formatter">The formatter</param>
        /// <param name="modelType">The type of the model to which the accessor belongs (i.e. Case where the accessor might be on its base class WorkflowItem)</param>
        /// <param name="accessor">The property that holds the given value</param>
        /// <param name="value">The data to format</param>
        /// <param name="format">The custom format specifier</param>
        public static string FormatValue(this IDisplayFormatter formatter, Type modelType, Accessor accessor,
            object value, string format)
        {
            var request = new GetStringRequest(accessor, value, null, format, null);

            return formatter.GetDisplay(request);
        }
            public override void establish_context()
            {
                property = ReflectionHelper.GetAccessor((Expression<Func<ListEntity, IEnumerable<string>>>)(x => x.GetterAndSetter));
                target = new ListEntity();

                sut = new ReferenceBag<ListEntity, string>(property, new[] { "foo", "bar", "baz" });
            }
        public RemoteFieldRule RegisterRule(Accessor accessor, IFieldValidationRule rule)
        {
            var remote = RemoteFieldRule.For(accessor, rule);
            _rules[accessor].Fill(remote);

            return remote;
        }
		public IEnumerable<CodeAction> GetActions(RefactoringContext context)
		{
			var pdecl = GetPropertyDeclaration(context);
			if (pdecl == null) { 
				yield break;
			}

			var type = pdecl.Parent as TypeDeclaration;
			if (type != null && type.ClassType == ClassType.Interface) {
				yield break;
			}
			yield return new CodeAction (pdecl.Setter.IsNull ? context.TranslateString("Add getter") : context.TranslateString("Add setter"), script => {
				var accessorStatement = BuildAccessorStatement(context, pdecl);
			
				Accessor accessor = new Accessor () {
					Body = new BlockStatement { accessorStatement }
				};
				accessor.Role = pdecl.Setter.IsNull ? PropertyDeclaration.SetterRole : PropertyDeclaration.GetterRole;

				if (pdecl.Setter.IsNull && !pdecl.Getter.IsNull) {
					script.InsertBefore(pdecl.RBraceToken, accessor);
				} else if (pdecl.Getter.IsNull && !pdecl.Setter.IsNull) {
					script.InsertBefore(pdecl.Setter, accessor);
				} else {
					script.InsertBefore(pdecl.Getter, accessor);
				}
				script.Select(accessorStatement);
				script.FormatText(pdecl);
			});
		}
 /// <summary>
 /// Formats the provided value using the property accessor metadata
 /// </summary>
 /// <param name="modelType">The type of the model to which the property belongs (i.e. Case where the property might be on its base class WorkflowItem)</param>
 /// <param name="formatter">The formatter</param>
 /// <param name="property">The property that holds the given value</param>
 /// <param name="value">The data to format</param>
 public static string FormatValue(this IDisplayFormatter formatter, Type modelType, Accessor property, object value)
 {
     return formatter.GetDisplay(new GetStringRequest(property, value, null)
     {
         OwnerType = modelType
     });
 }
		public override IEnumerable<CodeAction> GetActions(RefactoringContext context)
		{
			var pdecl = context.GetNode<PropertyDeclaration> ();
			if (pdecl == null || !pdecl.Getter.IsNull && !pdecl.Setter.IsNull || !pdecl.NameToken.Contains(context.Location)) { 
				yield break;
			}

			var type = pdecl.Parent as TypeDeclaration;
			if (type != null && type.ClassType == ClassType.Interface) {
				yield break;
			}
			yield return new CodeAction (pdecl.Setter.IsNull ? context.TranslateString("Add setter") : context.TranslateString("Add getter"), script => {
				Statement accessorStatement = null;
			
				var accessor = new Accessor ();
				if (!pdecl.Getter.IsNull && !pdecl.Getter.Body.IsNull || !pdecl.Setter.IsNull && !pdecl.Setter.Body.IsNull) {
					accessorStatement = BuildAccessorStatement(context, pdecl);
					accessor.Body = new BlockStatement { accessorStatement };
				}

				accessor.Role = pdecl.Setter.IsNull ? PropertyDeclaration.SetterRole : PropertyDeclaration.GetterRole;

				if (pdecl.Setter.IsNull && !pdecl.Getter.IsNull) {
					script.InsertAfter(pdecl.Getter, accessor);
				} else if (pdecl.Getter.IsNull && !pdecl.Setter.IsNull) {
					script.InsertBefore(pdecl.Setter, accessor);
				} else {
					script.InsertBefore(pdecl.Getter, accessor);
				}
				script.FormatText(pdecl);
				if (accessorStatement != null)
					script.Select(accessorStatement);
			}, pdecl.NameToken);
		}
 public IEnumerable<KeyValuePair<string, string>> GetMessageSubstitutions(Accessor accessor)
 {
     return new List<KeyValuePair<string, string>>
                 {
                     new KeyValuePair<string, string>(LENGTH, Length.ToString())
                 };
 }
Example #10
0
        protected virtual void EmitIndexerMethod(IndexerDeclaration indexerDeclaration, Accessor accessor, bool setter)
        {
            if (!accessor.IsNull && this.Emitter.GetInline(accessor) == null)
            {
                XmlToJsDoc.EmitComment(this, this.IndexerDeclaration);
                var overloads = OverloadsCollection.Create(this.Emitter, indexerDeclaration, setter);

                string name = overloads.GetOverloadName();
                this.Write((setter ? "set" : "get") + name);

                this.EmitMethodParameters(indexerDeclaration.Parameters, indexerDeclaration, setter);

                if (setter)
                {
                    this.Write(", value");
                    this.WriteColon();
                    name = BridgeTypes.ToTypeScriptName(indexerDeclaration.ReturnType, this.Emitter);
                    this.Write(name);
                    this.WriteCloseParentheses();
                    this.WriteColon();
                    this.Write("void");
                }
                else
                {
                    this.WriteColon();
                    name = BridgeTypes.ToTypeScriptName(indexerDeclaration.ReturnType, this.Emitter);
                    this.Write(name);
                }

                this.WriteSemiColon();
                this.WriteNewLine();
            }
        }
 public virtual void VisitAccessor(Accessor accessor)
 {
     if (this.ThrowException)
     {
         throw (Exception)this.CreateException(accessor);
     }
 }
Example #12
0
        public RouteParameter(Accessor accessor)
        {
            _accessor = accessor;
            accessor.ForAttribute<RouteInputAttribute>(x => DefaultValue = x.DefaultValue);

            _regex = new Regex(@"{\*?" + Name + @"(?:\:.*?)?}", RegexOptions.Compiled);
        }
        public override void establish_context()
        {
            property = ReflectionHelper.GetAccessor(GetPropertyExpression());
            target = new PropertyEntity();

            sut = new Property<PropertyEntity, string>(property, "expected");
        }
 public IEnumerable<KeyValuePair<string, string>> GetMessageSubstitutions(Accessor accessor)
 {
     return new List<KeyValuePair<string, string>>
                 {
                     new KeyValuePair<string, string>(FIELD, accessor.Name)
                 };
 }
        public NotificationMessage Prepend(Accessor accessor)
        {
            var prependedAccessors = _accessors.Select(x => x.Prepend(accessor)).ToList();
            var message = new NotificationMessage(StringToken, _template.Values.ToArray());
            message._accessors.AddRange(prependedAccessors);

            return message;
        }
Example #16
0
        public override void establish_context()
        {
            property = ReflectionHelper.GetAccessor (GetPropertyExpression ());
            target = new ListEntity();

            listItems = new[] {"foo", "bar", "baz"};
            sut = new List<ListEntity, string>(property, listItems);
        }
 public NameValueCollection GetMessageSubstitutions(Accessor accessor)
 {
     return new NameValueCollection
                {
                    {FIELD, accessor.Name},
                    {LENGTH, Length.GetValueOrDefault(-1).ToString()}
                };
 }
Example #18
0
 public void Validate(Accessor accessor, ValidationContext context)
 {
     var enumerable = accessor.GetValue(context.Target) as System.Collections.IEnumerable;
     if (enumerable == null || enumerable.Count() != _length)
     {
         context.Notification.RegisterMessage(accessor, ValidationKeys.COLLECTION_LENGTH).AddSubstitution(LENGTH, _length.ToString());
     }
 }
 public void Validate(Accessor accessor, ValidationContext context)
 {
     var enumerable = accessor.GetValue(context.Target) as System.Collections.IEnumerable;
     if (enumerable == null || enumerable.Count() != _length)
     {
         context.Notification.RegisterMessage(accessor, ValidationKeys.CollectionLength, TemplateValue.For(LENGTH, _length));
     }
 }
Example #20
0
 public static EditPropertyResult Failure(Accessor accessor, Type entityType, string failureMessage)
 {
     return new EditPropertyResult(accessor, entityType)
     {
         WasNotApplied = true,
         FailureMessage = failureMessage
     };
 }
 public void Validate(Accessor accessor, ValidationContext context)
 {
     var email = context.GetFieldValue<string>(accessor);
     if(!EmailExpression.IsMatch(email))
     {
         context.Notification.RegisterMessage(accessor, ValidationKeys.Email);
     }
 }
 public string GetName(Type modelType, Accessor accessor)
 {
     if (accessor.PropertyNames != null)
     {
         return string.Join(".", accessor.PropertyNames);
     }
     return accessor.Name;
 }
Example #23
0
 public void Validate(Accessor accessor, ValidationContext context)
 {
     var value = accessor.GetValue(context.Target);
     if(_bounds.CompareTo(value) < 0)
     {
         context.Notification.RegisterMessage(accessor, Token, TemplateValue.For("bounds", _bounds));
     }
 }
Example #24
0
 public void Validate(Accessor accessor, ValidationContext context)
 {
     var value = context.GetFieldValue<string>(accessor);
     if (value != null && value.Length < Length)
     {
         context.Notification.RegisterMessage(accessor, Token, TemplateValue.For(LENGTH, _length));
     }
 }
 public void BeforeEach()
 {
     _notification = new Notification();
     _model = new AddressModel();
     _strategy = new MaximumStringLengthFieldStrategy() { Length = 10 };
     _accessor = AccessorFactory.Create<AddressModel>(m => m.Address1);
     _rule = new FieldRule(_accessor, new TypeResolver(), _strategy);
 }
Example #26
0
 public void Validate(Accessor accessor, ValidationContext context)
 {
     var rawValue = accessor.GetValue(context.Target);
     if (rawValue != null && rawValue.ToString().Length > Length)
     {
         context.Notification.RegisterMessage(accessor, Token, TemplateValue.For(LENGTH, _length));
     }
 }
 public void BeforeEach()
 {
     _notification = new Notification();
     _model = new SimpleModel();
     _strategy = new GreaterThanZeroFieldStrategy();
     _accessor = AccessorFactory.Create<SimpleModel>(m => m.GreaterThanZero);
     _rule = new FieldRule(_accessor, new TypeResolver(), _strategy);
 }
        public void Validate(Accessor accessor, ValidationContext context)
        {
            var rawValue = accessor.GetValue(context.Target);

            if (rawValue == null || string.Empty.Equals(rawValue))
            {
                context.Notification.RegisterMessage(accessor, ValidationKeys.Required);
            }
        }
 public void SetUp()
 {
     _page = MockRepository.GenerateStub<IFubuPage<ViewModel>>();
     _convention = MockRepository.GenerateStub<IElementNamingConvention>();
     _expression = (x=>x.Property);
     _accessor = _expression.ToAccessor();
     _convention.Stub(c => c.GetName(Arg<Type>.Is.Equal(typeof (ViewModel)), Arg<Accessor>.Is.Equal(_accessor))).Return("name");
     _page.Stub(p => p.Get<IElementNamingConvention>()).Return(_convention);
 }
 public override void VisitAccessor(Accessor accessor)
 {
     var prop = accessor.GetParent<PropertyDeclaration>();
     if (prop != null && prop.HasModifier(Modifiers.Static))
     {
         this.CheckDependency(prop.ReturnType);
         base.VisitAccessor(accessor);
     }
 }
Example #31
0
        public SlickGridEditor EditorFor(Accessor accessor)
        {
            var selection = _editorSelections.FirstOrDefault(x => x.Matches(accessor));

            return(selection == null ? SlickGridEditor.Text : selection.EditorFor(accessor));
        }
Example #32
0
 public IEnumerable <IColumnRule> RulesFor(Accessor accessor)
 {
     return(_rules.Where(x => x.Matches(accessor)));
 }
Example #33
0
        public SlickGridFormatter FormatterFor(Accessor accessor)
        {
            var selection = _formatterSelections.FirstOrDefault(x => x.Matches(accessor));

            return(selection == null ? null : selection.FormatterFor(accessor));
        }
Example #34
0
 public static void Decompress(string path)
 {
     Accessor.Decompress(path);
 }
 public void AddRule(Accessor accessor, IFieldValidationRule rule)
 {
     _rules[accessor].Add(rule);
 }
Example #36
0
 public SlickGridEditor EditorFor(Accessor accessor)
 {
     return(_editor);
 }
Example #37
0
            static Meta()
            {
                Sizes.Add(_str_name, 2000);
                Actions.Add(new ActionMetaItem(
                                "Create",
                                ActionTypes.Create,
                                false,
                                String.Empty,
                                String.Empty,
                                (manager, c, pars) => new ActResult(true, Accessor.Instance(null).CreateWithParams(manager, c, pars)),
                                null,
                                new ActionMetaItem.VisualItem(
                                    /*from BvMessages*/ "strCreate_Id",
                                    "add",
                                    /*from BvMessages*/ "tooltipCreate_Id",
                                    /*from BvMessages*/ "",
                                    "",
                                    /*from BvMessages*/ "tooltipCreate_Id",
                                    ActionsAlignment.Right,
                                    ActionsPanelType.Main,
                                    ActionsAppType.All
                                    ),
                                false,
                                null,
                                null,
                                null,
                                null,
                                null,
                                false
                                ));

                Actions.Add(new ActionMetaItem(
                                "Save",
                                ActionTypes.Save,
                                false,
                                String.Empty,
                                String.Empty,
                                (manager, c, pars) => new ActResult(ObjectAccessor.PostInterface <DepartmentLookup>().Post(manager, (DepartmentLookup)c), c),
                                null,
                                new ActionMetaItem.VisualItem(
                                    /*from BvMessages*/ "strSave_Id",
                                    "Save",
                                    /*from BvMessages*/ "tooltipSave_Id",
                                    /*from BvMessages*/ "",
                                    "",
                                    /*from BvMessages*/ "tooltipSave_Id",
                                    ActionsAlignment.Right,
                                    ActionsPanelType.Main,
                                    ActionsAppType.All
                                    ),
                                false,
                                null,
                                null,
                                null,
                                null,
                                null,
                                false
                                ));

                Actions.Add(new ActionMetaItem(
                                "Ok",
                                ActionTypes.Ok,
                                false,
                                String.Empty,
                                String.Empty,
                                (manager, c, pars) => new ActResult(ObjectAccessor.PostInterface <DepartmentLookup>().Post(manager, (DepartmentLookup)c), c),
                                null,
                                new ActionMetaItem.VisualItem(
                                    /*from BvMessages*/ "strOK_Id",
                                    "",
                                    /*from BvMessages*/ "tooltipOK_Id",
                                    /*from BvMessages*/ "",
                                    "",
                                    /*from BvMessages*/ "tooltipOK_Id",
                                    ActionsAlignment.Right,
                                    ActionsPanelType.Main,
                                    ActionsAppType.All
                                    ),
                                false,
                                null,
                                null,
                                null,
                                null,
                                null,
                                false
                                ));

                Actions.Add(new ActionMetaItem(
                                "Cancel",
                                ActionTypes.Cancel,
                                false,
                                String.Empty,
                                String.Empty,
                                (manager, c, pars) => new ActResult(true, c),
                                null,
                                new ActionMetaItem.VisualItem(
                                    /*from BvMessages*/ "strCancel_Id",
                                    "",
                                    /*from BvMessages*/ "tooltipCancel_Id",
                                    /*from BvMessages*/ "strOK_Id",
                                    "",
                                    /*from BvMessages*/ "tooltipCancel_Id",
                                    ActionsAlignment.Right,
                                    ActionsPanelType.Main,
                                    ActionsAppType.All
                                    ),
                                false,
                                null,
                                null,
                                null,
                                null,
                                null,
                                false
                                ));

                Actions.Add(new ActionMetaItem(
                                "Delete",
                                ActionTypes.Delete,
                                false,
                                String.Empty,
                                String.Empty,
                                (manager, c, pars) => new ActResult(((DepartmentLookup)c).MarkToDelete() && ObjectAccessor.PostInterface <DepartmentLookup>().Post(manager, (DepartmentLookup)c), c),
                                null,
                                new ActionMetaItem.VisualItem(
                                    /*from BvMessages*/ "strDelete_Id",
                                    "Delete_Remove",
                                    /*from BvMessages*/ "tooltipDelete_Id",
                                    /*from BvMessages*/ "",
                                    "",
                                    /*from BvMessages*/ "tooltipDelete_Id",
                                    ActionsAlignment.Right,
                                    ActionsPanelType.Main,
                                    ActionsAppType.All
                                    ),
                                false,
                                null,
                                null,
                                (o, p, r) => r && !o.IsNew && !o.HasChanges,
                                null,
                                null,
                                false
                                ));


                _SetupPersonalDataRestrictions();
            }
Example #38
0
        private async Task <DialogTurnResult> CheckAvailableAsync(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken))
        {
            try
            {
                var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken);

                var userNow   = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone());
                var startDate = state.MeetingInfo.StartDate.Any() ? state.MeetingInfo.StartDate.Last() : userNow.Date;

                List <DateTime> startTimes = new List <DateTime>();
                List <DateTime> endTimes   = new List <DateTime>();
                foreach (var time in state.MeetingInfo.StartTime)
                {
                    startTimes.Add(startDate.AddSeconds(time.TimeOfDay.TotalSeconds));
                }

                var      isStartTimeRestricted = Settings.RestrictedValue?.MeetingTime?.First(item => item.Name == "WorkTimeStart")?.IsRestricted;
                var      isEndTimeRestricted   = Settings.RestrictedValue?.MeetingTime?.First(item => item.Name == "WorkTimeEnd")?.IsRestricted;
                DateTime baseTime            = new DateTime(startDate.Year, startDate.Month, startDate.Day);
                DateTime startTimeRestricted = isStartTimeRestricted.GetValueOrDefault() ? baseTime.AddSeconds(DateTime.Parse(Settings.RestrictedValue?.MeetingTime?.First(item => item.Name == "WorkTimeStart")?.Value).TimeOfDay.TotalSeconds) : baseTime;
                DateTime endTimeRestricted   = isEndTimeRestricted.GetValueOrDefault() ? baseTime.AddSeconds(DateTime.Parse(Settings.RestrictedValue?.MeetingTime?.First(item => item.Name == "WorkTimeEnd")?.Value).TimeOfDay.TotalSeconds) : baseTime.AddDays(1);

                state.MeetingInfo.StartDateTime = DateTimeHelper.ChooseStartTime(startTimes, endTimes, startTimeRestricted, endTimeRestricted, userNow);
                state.MeetingInfo.StartDateTime = TimeZoneInfo.ConvertTimeToUtc(state.MeetingInfo.StartDateTime.Value, state.GetUserTimeZone());

                sc.Context.TurnState.TryGetValue(StateProperties.APITokenKey, out var token);
                var calendarService = ServiceManager.InitCalendarService(token as string, state.EventSource);

                var dateTime = state.MeetingInfo.StartDateTime;

                var me = await GetMeAsync(sc.Context, cancellationToken);

                // the last one in result is the current user
                var availabilityResult = await calendarService.GetUserAvailabilityAsync(me.Emails[0], new List <string>() { state.MeetingInfo.ContactInfor.Contacts[0].Address }, dateTime.Value, CalendarCommonUtil.AvailabilityViewInterval);

                var timeString      = TimeConverter.ConvertUtcToUserTime(state.MeetingInfo.StartDateTime.Value, state.GetUserTimeZone()).ToString(CommonStrings.DisplayTime);
                var startDateString = string.Empty;
                if (string.IsNullOrEmpty(state.MeetingInfo.StartDateString) ||
                    state.MeetingInfo.StartDateString.Equals(CalendarCommonStrings.TodayLower, StringComparison.InvariantCultureIgnoreCase) ||
                    state.MeetingInfo.StartDateString.Equals(CalendarCommonStrings.TomorrowLower, StringComparison.InvariantCultureIgnoreCase))
                {
                    startDateString = (state.MeetingInfo.StartDateString ?? CalendarCommonStrings.TodayLower).ToLower();
                }
                else
                {
                    startDateString = string.Format(CalendarCommonStrings.ShowEventDateCondition, state.MeetingInfo.StartDateString);
                }

                if (!availabilityResult.AvailabilityViewList.First().StartsWith("0"))
                {
                    // the attendee is not available
                    var activity = TemplateManager.GenerateActivityForLocale(CheckPersonAvailableResponses.NotAvailable, new
                    {
                        UserName = state.MeetingInfo.ContactInfor.Contacts[0].DisplayName ?? state.MeetingInfo.ContactInfor.Contacts[0].Address,
                        Time     = timeString,
                        Date     = startDateString
                    });
                    await sc.Context.SendActivityAsync(activity, cancellationToken);

                    state.MeetingInfo.AvailabilityResult = availabilityResult;

                    return(await sc.BeginDialogAsync(Actions.FindNextAvailableTime, sc.Options, cancellationToken));
                }
                else
                {
                    // find the attendee's available time
                    var availableTime    = 1;
                    var availabilityView = availabilityResult.AvailabilityViewList.First();
                    for (int i = 1; i < availabilityView.Length; i++)
                    {
                        if (availabilityView[i] == '0')
                        {
                            availableTime = i + 1;
                        }
                        else
                        {
                            break;
                        }
                    }

                    availableTime *= CalendarCommonUtil.AvailabilityViewInterval;
                    var startAvailableTime = TimeConverter.ConvertUtcToUserTime(state.MeetingInfo.StartDateTime.Value, state.GetUserTimeZone());
                    var endAvailableTime   = startAvailableTime.AddMinutes(availableTime);

                    // the current user may in non-working time
                    if (availabilityResult.AvailabilityViewList.Last().StartsWith("0") || availabilityResult.AvailabilityViewList.Last().StartsWith("3"))
                    {
                        // both attendee and current user is available
                        state.MeetingInfo.IsOrgnizerAvailable = true;

                        var activity = TemplateManager.GenerateActivityForLocale(CheckPersonAvailableResponses.AttendeeIsAvailable, new
                        {
                            StartTime = startAvailableTime.ToString(CommonStrings.DisplayTime),
                            EndTime   = endAvailableTime.ToString(CommonStrings.DisplayTime),
                            Date      = DisplayHelper.ToDisplayDate(endAvailableTime, state.GetUserTimeZone()),
                            UserName  = state.MeetingInfo.ContactInfor.Contacts[0].DisplayName ?? state.MeetingInfo.ContactInfor.Contacts[0].Address
                        });
                        await sc.Context.SendActivityAsync(activity, cancellationToken);
                    }
                    else
                    {
                        // attendee is available but current user is not available
                        var conflictMeetingTitleList = new List <EventModel>();
                        foreach (var meeting in availabilityResult.MySchedule)
                        {
                            if (state.MeetingInfo.StartDateTime.Value >= meeting.StartTime && state.MeetingInfo.StartDateTime.Value < meeting.EndTime)
                            {
                                conflictMeetingTitleList.Add(meeting);
                            }
                        }

                        if (conflictMeetingTitleList.Count == 1)
                        {
                            var responseParams = new
                            {
                                StartTime      = startAvailableTime.ToString(CommonStrings.DisplayTime),
                                EndTime        = endAvailableTime.ToString(CommonStrings.DisplayTime),
                                Date           = DisplayHelper.ToDisplayDate(endAvailableTime, state.GetUserTimeZone()),
                                UserName       = state.MeetingInfo.ContactInfor.Contacts[0].DisplayName ?? state.MeetingInfo.ContactInfor.Contacts[0].Address,
                                Title          = conflictMeetingTitleList.First().Title,
                                EventStartTime = TimeConverter.ConvertUtcToUserTime(conflictMeetingTitleList.First().StartTime, state.GetUserTimeZone()).ToString(CommonStrings.DisplayTime),
                                EventEndTime   = TimeConverter.ConvertUtcToUserTime(conflictMeetingTitleList.First().EndTime, state.GetUserTimeZone()).ToString(CommonStrings.DisplayTime)
                            };
                            var activity = TemplateManager.GenerateActivityForLocale(CheckPersonAvailableResponses.AttendeeIsAvailableOrgnizerIsUnavailableWithOneConflict, responseParams);
                            await sc.Context.SendActivityAsync(activity, cancellationToken);
                        }
                        else
                        {
                            var responseParams = new
                            {
                                StartTime           = startAvailableTime.ToString(CommonStrings.DisplayTime),
                                EndTime             = endAvailableTime.ToString(CommonStrings.DisplayTime),
                                Date                = DisplayHelper.ToDisplayDate(endAvailableTime, state.GetUserTimeZone()),
                                UserName            = state.MeetingInfo.ContactInfor.Contacts[0].DisplayName ?? state.MeetingInfo.ContactInfor.Contacts[0].Address,
                                ConflictEventsCount = conflictMeetingTitleList.Count.ToString()
                            };
                            var activity = TemplateManager.GenerateActivityForLocale(CheckPersonAvailableResponses.AttendeeIsAvailableOrgnizerIsUnavailableWithMutipleConflicts, responseParams);
                            await sc.Context.SendActivityAsync(activity, cancellationToken);
                        }
                    }

                    return(await sc.BeginDialogAsync(Actions.CreateMeetingWithAvailableTime, sc.Options, cancellationToken));
                }
            }
            catch (Exception ex)
            {
                await HandleDialogExceptionsAsync(sc, ex, cancellationToken);

                return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs));
            }
        }
Example #39
0
    public override void GenerateForCopy(
        StructuredStringBuilder sb,
        Accessor accessor,
        Accessor rhs,
        Accessor copyMaskAccessor,
        bool protectedMembers,
        bool deepCopy)
    {
        void GenerateSet()
        {
            if (isLoquiSingle)
            {
                if (deepCopy)
                {
                    LoquiType loqui = SubTypeGeneration as LoquiType;
                    WrapSet(sb, accessor, (f) =>
                    {
                        f.AppendLine(rhs.ToString());
                        f.AppendLine(".Select(r =>");
                        using (new CurlyBrace(f)
                        {
                            AppendParenthesis = true
                        })
                        {
                            loqui.GenerateTypicalMakeCopy(
                                f,
                                retAccessor: $"return ",
                                rhsAccessor: Accessor.FromType(loqui, "r"),
                                copyMaskAccessor: copyMaskAccessor,
                                deepCopy: deepCopy,
                                doTranslationMask: false);
                        }
                    });
                }
                else
                {
                    LoquiType loqui = SubTypeGeneration as LoquiType;
                    using (var args = sb.Call(
                               $"{accessor}.SetTo<{SubTypeGeneration.TypeName(getter: false)}, {SubTypeGeneration.TypeName(getter: false)}>"))
                    {
                        args.Add($"items: {rhs}");
                        args.Add((gen) =>
                        {
                            gen.AppendLine("converter: (r) =>");
                            using (new CurlyBrace(gen))
                            {
                                var supportsCopy = loqui.SupportsMask(MaskType.Copy);
                                var accessorStr  = $"copyMask?.{Name}{(supportsCopy ? ".Overall" : string.Empty)}";
                                gen.AppendLine($"switch ({accessorStr} ?? {nameof(CopyOption)}.{nameof(CopyOption.Reference)})");
                                using (new CurlyBrace(gen))
                                {
                                    gen.AppendLine($"case {nameof(CopyOption)}.{nameof(CopyOption.Reference)}:");
                                    using (gen.IncreaseDepth())
                                    {
                                        gen.AppendLine($"return ({loqui.TypeName()})r;");
                                    }
                                    gen.AppendLine($"case {nameof(CopyOption)}.{nameof(CopyOption.MakeCopy)}:");
                                    using (gen.IncreaseDepth())
                                    {
                                        loqui.GenerateTypicalMakeCopy(
                                            gen,
                                            retAccessor: $"return ",
                                            rhsAccessor: new Accessor("r"),
                                            copyMaskAccessor: copyMaskAccessor,
                                            deepCopy: deepCopy,
                                            doTranslationMask: false);
                                    }
                                    gen.AppendLine($"default:");
                                    using (gen.IncreaseDepth())
                                    {
                                        gen.AppendLine($"throw new NotImplementedException($\"Unknown {nameof(CopyOption)} {{{accessorStr}}}. Cannot execute copy.\");");
                                    }
                                }
                            }
                        });
                    }
                }
            }
            else
            {
                WrapSet(sb, accessor, (f) =>
                {
                    f.AppendLine($"rhs.{Name}");
                    SubTypeGeneration.GenerateCopySetToConverter(f);
                });
            }
        }

        if (!AlwaysCopy)
        {
            sb.AppendLine($"if ({(deepCopy ? GetTranslationIfAccessor(copyMaskAccessor) : SkipCheck(copyMaskAccessor, deepCopy))})");
        }
        using (sb.CurlyBrace(doIt: !AlwaysCopy))
        {
            MaskGenerationUtility.WrapErrorFieldIndexPush(
                sb,
                () =>
            {
                if (Nullable)
                {
                    sb.AppendLine($"if ({NullableAccessor(getter: false, rhs)})");
                    using (sb.CurlyBrace())
                    {
                        GenerateSet();
                    }
                    sb.AppendLine("else");
                    using (sb.CurlyBrace())
                    {
                        GenerateClear(sb, accessor);
                    }
                }
                else
                {
                    GenerateSet();
                }
            },
                errorMaskAccessor: "errorMask",
                indexAccessor: HasIndex?IndexEnumInt: default(Accessor),
                doIt: CopyNeedsTryCatch);
        }
    }
Example #40
0
 public Accessor()
 {
     instance = this;
 }
Example #41
0
        private async Task <DialogTurnResult> AfterFindNextAvailableTimePromptAsync(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken))
        {
            try
            {
                var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken);

                var confirmResult = (bool)sc.Result;
                if (confirmResult)
                {
                    state.MeetingInfo.IsOrgnizerAvailable = true;
                    var availabilityResult = state.MeetingInfo.AvailabilityResult;

                    var startAvailableTimeIndex = -1;
                    var endAvailableTimeIndex   = -1;

                    for (int i = 0; i < availabilityResult.AvailabilityViewList.First().Length; i++)
                    {
                        if (availabilityResult.AvailabilityViewList[0][i] == '0' && availabilityResult.AvailabilityViewList[1][i] == '0')
                        {
                            if (startAvailableTimeIndex < 0)
                            {
                                startAvailableTimeIndex = i;
                            }
                        }
                        else
                        {
                            if (startAvailableTimeIndex >= 0)
                            {
                                endAvailableTimeIndex = i - 1;
                                break;
                            }
                        }
                    }

                    if (startAvailableTimeIndex > 0)
                    {
                        endAvailableTimeIndex = endAvailableTimeIndex == -1 ? availabilityResult.AvailabilityViewList.First().Length - 1 : endAvailableTimeIndex;
                        var queryAvailableTime = state.MeetingInfo.StartDateTime.Value;

                        var startAvailableTime = queryAvailableTime.AddMinutes(startAvailableTimeIndex * CalendarCommonUtil.AvailabilityViewInterval);
                        var endAvailableTime   = queryAvailableTime.AddMinutes((endAvailableTimeIndex + 1) * CalendarCommonUtil.AvailabilityViewInterval);

                        state.MeetingInfo.StartDateTime = startAvailableTime;

                        var activity = TemplateManager.GenerateActivityForLocale(CheckPersonAvailableResponses.NextBothAvailableTime, new
                        {
                            UserName  = state.MeetingInfo.ContactInfor.Contacts[0].DisplayName ?? state.MeetingInfo.ContactInfor.Contacts[0].Address,
                            StartTime = TimeConverter.ConvertUtcToUserTime(state.MeetingInfo.StartDateTime.Value, state.GetUserTimeZone()).ToString(CommonStrings.DisplayTime),
                            EndTime   = TimeConverter.ConvertUtcToUserTime(endAvailableTime, state.GetUserTimeZone()).ToString(CommonStrings.DisplayTime),
                            EndDate   = DisplayHelper.ToDisplayDate(TimeConverter.ConvertUtcToUserTime(endAvailableTime, state.GetUserTimeZone()), state.GetUserTimeZone())
                        });
                        await sc.Context.SendActivityAsync(activity, cancellationToken);

                        return(await sc.BeginDialogAsync(Actions.CreateMeetingWithAvailableTime, sc.Options, cancellationToken));
                    }

                    var activityNoNextBothAvailableTime = TemplateManager.GenerateActivityForLocale(CheckPersonAvailableResponses.NoNextBothAvailableTime, new
                    {
                        UserName = state.MeetingInfo.ContactInfor.Contacts[0].DisplayName ?? state.MeetingInfo.ContactInfor.Contacts[0].Address
                    });
                    await sc.Context.SendActivityAsync(activityNoNextBothAvailableTime, cancellationToken);

                    state.Clear();
                    return(await sc.EndDialogAsync(cancellationToken : cancellationToken));
                }
                else
                {
                    state.Clear();
                    return(await sc.EndDialogAsync(cancellationToken : cancellationToken));
                }
            }
            catch (Exception ex)
            {
                await HandleDialogExceptionsAsync(sc, ex, cancellationToken);

                return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs));
            }
        }
Example #42
0
        protected async Task DigestCalendarLuisResult(DialogContext dc, Calendar luisResult, bool isBeginDialog)
        {
            try
            {
                var state = await Accessor.GetAsync(dc.Context);

                var intent = luisResult.TopIntent().intent;

                var entity = luisResult.Entities;

                if (entity.ordinal != null)
                {
                    try
                    {
                        var eventList = state.SummaryEvents;
                        var value     = entity.ordinal[0];
                        var num       = int.Parse(value.ToString());
                        if (eventList != null && num > 0)
                        {
                            var currentList = eventList.GetRange(0, Math.Min(state.PageSize, eventList.Count));
                            if (num <= currentList.Count)
                            {
                                state.ReadOutEvents.Clear();
                                state.ReadOutEvents.Add(currentList[num - 1]);
                            }
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }

                if (entity.number != null && (entity.ordinal == null || entity.ordinal.Length == 0))
                {
                    try
                    {
                        var eventList = state.SummaryEvents;
                        var value     = entity.ordinal[0];
                        var num       = int.Parse(value.ToString());
                        if (eventList != null && num > 0)
                        {
                            var currentList = eventList.GetRange(0, Math.Min(state.PageSize, eventList.Count));
                            if (num <= currentList.Count)
                            {
                                state.ReadOutEvents.Clear();
                                state.ReadOutEvents.Add(currentList[num - 1]);
                            }
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }

                if (!isBeginDialog)
                {
                    return;
                }

                switch (intent)
                {
                case Calendar.Intent.FindMeetingRoom:
                case Calendar.Intent.CreateCalendarEntry:
                {
                    state.CreateHasDetail = false;
                    if (entity.Subject != null)
                    {
                        state.CreateHasDetail = true;
                        state.Title           = GetSubjectFromEntity(entity);
                    }

                    if (entity.ContactName != null)
                    {
                        state.CreateHasDetail   = true;
                        state.AttendeesNameList = GetAttendeesFromEntity(entity, luisResult.Text, state.AttendeesNameList);
                    }

                    if (entity.FromDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromDate[0]);
                        var date       = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (date != null)
                        {
                            state.CreateHasDetail = true;
                            state.StartDate       = date;
                        }

                        date = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (date != null)
                        {
                            state.CreateHasDetail = true;
                            state.EndDate         = date;
                        }
                    }

                    if (entity.ToDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToDate[0]);
                        var date       = GetDateFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (date != null)
                        {
                            state.CreateHasDetail = true;
                            state.EndDate         = date;
                        }
                    }

                    if (entity.FromTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (time != null)
                        {
                            state.CreateHasDetail = true;
                            state.StartTime       = time;
                        }

                        time = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (time != null)
                        {
                            state.CreateHasDetail = true;
                            state.EndTime         = time;
                        }
                    }

                    if (entity.ToTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (time != null)
                        {
                            state.CreateHasDetail = true;
                            state.EndTime         = time;
                        }
                    }

                    if (entity.Duration != null)
                    {
                        int duration = GetDurationFromEntity(entity, dc.Context.Activity.Locale);
                        if (duration != -1)
                        {
                            state.CreateHasDetail = true;
                            state.Duration        = duration;
                        }
                    }

                    if (entity.MeetingRoom != null)
                    {
                        state.CreateHasDetail = true;
                        state.Location        = GetMeetingRoomFromEntity(entity);
                    }

                    if (entity.Location != null)
                    {
                        state.CreateHasDetail = true;
                        state.Location        = GetLocationFromEntity(entity);
                    }

                    break;
                }

                case Calendar.Intent.DeleteCalendarEntry:
                {
                    if (entity.Subject != null)
                    {
                        state.Title = GetSubjectFromEntity(entity);
                    }

                    if (entity.FromDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromDate[0]);
                        var date       = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (date != null)
                        {
                            state.StartDate = date;
                        }

                        date = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (date != null)
                        {
                            state.EndDate = date;
                        }
                    }

                    if (entity.FromTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (time != null)
                        {
                            state.StartTime = time;
                        }

                        time = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (time != null)
                        {
                            state.EndTime = time;
                        }
                    }

                    break;
                }

                case Calendar.Intent.ChangeCalendarEntry:
                {
                    if (entity.Subject != null)
                    {
                        state.Title = GetSubjectFromEntity(entity);
                    }

                    if (entity.FromDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromDate[0]);
                        var date       = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (date != null)
                        {
                            state.OriginalStartDate = date;
                        }

                        date = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (date != null)
                        {
                            state.OriginalEndDate = date;
                        }
                    }

                    if (entity.ToDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToDate[0]);
                        var date       = GetDateFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (date != null)
                        {
                            state.StartDate = date;
                        }
                    }

                    if (entity.FromTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (time != null)
                        {
                            state.OriginalStartTime = time;
                        }

                        time = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (time != null)
                        {
                            state.OriginalEndTime = time;
                        }
                    }

                    if (entity.ToTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (time != null)
                        {
                            state.StartTime = time;
                        }

                        time = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (time != null)
                        {
                            state.EndTime = time;
                        }
                    }

                    if (entity.MoveEarlierTimeSpan != null)
                    {
                        state.MoveTimeSpan = GetMoveTimeSpanFromEntity(entity.MoveEarlierTimeSpan[0], dc.Context.Activity.Locale, false);
                    }

                    if (entity.MoveLaterTimeSpan != null)
                    {
                        state.MoveTimeSpan = GetMoveTimeSpanFromEntity(entity.MoveLaterTimeSpan[0], dc.Context.Activity.Locale, true);
                    }

                    if (entity.datetime != null)
                    {
                        var match = entity._instance.datetime.ToList().Find(w => w.Text.ToLower() == CalendarCommonStrings.DailyToken ||
                                                                            w.Text.ToLower() == CalendarCommonStrings.WeeklyToken ||
                                                                            w.Text.ToLower() == CalendarCommonStrings.MonthlyToken);
                        if (match != null)
                        {
                            state.RecurrencePattern = match.Text.ToLower();
                        }
                    }

                    break;
                }

                case Calendar.Intent.FindCalendarEntry:
                {
                    if (entity.OrderReference != null)
                    {
                        state.OrderReference = GetOrderReferenceFromEntity(entity);
                    }

                    if (entity.FromDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromDate[0]);
                        var date       = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (date != null)
                        {
                            state.StartDate       = date;
                            state.StartDateString = dateString;
                        }

                        date = GetTimeFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (date != null)
                        {
                            state.EndDate = date;
                        }
                    }

                    if (entity.ToDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToDate[0]);
                        var date       = GetDateFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (date != null)
                        {
                            state.EndDate = date;
                        }
                    }

                    if (entity.FromTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (time != null)
                        {
                            state.StartTime = time;
                        }

                        time = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (time != null)
                        {
                            state.EndTime = time;
                        }
                    }

                    if (entity.ToTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (time != null)
                        {
                            state.EndTime = time;
                        }
                    }

                    if (entity.AskParameter != null)
                    {
                        state.AskParameterContent = GetAskParameterFromEntity(entity);
                    }

                    break;
                }

                case Calendar.Intent.ConnectToMeeting:
                case Calendar.Intent.TimeRemaining:
                {
                    if (entity.FromDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromDate[0]);
                        var date       = GetDateFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (date != null)
                        {
                            state.StartDate = date;
                        }
                    }

                    if (entity.ToDate != null)
                    {
                        var dateString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToDate[0]);
                        var date       = GetDateFromDateTimeString(dateString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (date != null)
                        {
                            state.EndDate = date;
                        }
                    }

                    if (entity.FromTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.FromTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), true);
                        if (time != null)
                        {
                            state.StartTime = time;
                        }

                        time = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone(), false);
                        if (time != null)
                        {
                            state.EndTime = time;
                        }
                    }

                    if (entity.ToTime != null)
                    {
                        var timeString = GetDateTimeStringFromInstanceData(luisResult.Text, entity._instance.ToTime[0]);
                        var time       = GetTimeFromDateTimeString(timeString, dc.Context.Activity.Locale, state.GetUserTimeZone());
                        if (time != null)
                        {
                            state.EndTime = time;
                        }
                    }

                    if (entity.OrderReference != null)
                    {
                        state.OrderReference = GetOrderReferenceFromEntity(entity);
                    }

                    if (entity.Subject != null)
                    {
                        state.Title = entity._instance.Subject[0].Text;
                    }

                    break;
                }

                case Calendar.Intent.None:
                {
                    break;
                }

                default:
                {
                    break;
                }
                }
            }
            catch
            {
                var state = await Accessor.GetAsync(dc.Context);

                state.Clear();
                await dc.CancelAllDialogsAsync();

                throw;
            }
        }
Example #43
0
 public string Name(Accessor accessor)
 {
     return(accessor.Name);
 }
Example #44
0
 protected Accessor _getAccessor()
 {
     return(Accessor.Instance(m_CS));
 }
Example #45
0
 public bool Matches(Accessor accessor)
 {
     return(_filter(accessor));
 }
Example #46
0
        public virtual void EmitPropertyMethod(PropertyDeclaration propertyDeclaration, Accessor accessor, IMethod method, bool setter, bool isObjectLiteral)
        {
            if ((!accessor.IsNull || method != null && Helpers.IsScript(method)) && Emitter.GetInline(accessor) == null)
            {
                EnsureComma();

                ResetLocals();

                var prevMap      = BuildLocalsMap();
                var prevNamesMap = BuildLocalsNamesMap();

                if (setter)
                {
                    AddLocals(new ParameterDeclaration[] { new ParameterDeclaration {
                                                               Name = "value"
                                                           } }, accessor.Body);
                }
                else
                {
                    AddLocals(new ParameterDeclaration[0], accessor.Body);
                }

                //XmlToJsDoc.EmitComment(this, this.PropertyDeclaration);

                Write(setter ? JS.Funcs.Property.SET : JS.Funcs.Property.GET);

                WriteColon();
                WriteFunction();

                var m_rr = (MemberResolveResult)Emitter.Resolver.ResolveNode(propertyDeclaration);

                WriteOpenParentheses();
                Write(setter ? "value" : "");
                WriteCloseParentheses();
                WriteSpace();

                var script = Emitter.GetScript(accessor);

                if (script == null)
                {
                    if (YieldBlock.HasYield(accessor.Body))
                    {
                        new GeneratorBlock(Emitter, accessor).Emit();
                    }
                    else
                    {
                        accessor.Body.AcceptVisitor(Emitter);
                    }
                }
                else
                {
                    BeginBlock();

                    WriteLines(script);

                    EndBlock();
                }

                ClearLocalsMap(prevMap);
                ClearLocalsNamesMap(prevNamesMap);
                Emitter.Comma = true;
            }
        }
Example #47
0
 public SlickGridFormatter FormatterFor(Accessor accessor)
 {
     return(_Formatter);
 }
Example #48
0
 public override void GenerateSetNth(StructuredStringBuilder sb, Accessor accessor, Accessor rhs, bool internalUse)
 {
     sb.AppendLine($"{accessor}.SetTo({rhs});");
     sb.AppendLine($"break;");
 }
 public void AddRules(Accessor accessor, IEnumerable <IFieldValidationRule> rules)
 {
     _rules[accessor].AddRange(rules);
 }
Example #50
0
 public PropertyExpression(SingleLineExpression parent, Accessor accessor)
 {
     _parent   = parent;
     _accessor = accessor;
 }
Example #51
0
 public override string GetDuplicate(Accessor accessor)
 {
     return($"{accessor}{NullChar}.{Name}Select(x => {SubTypeGeneration.GetDuplicate("x")}).ToExtendedList()");
 }
		public void Access(Accessor accessor)
		{
			CustomizersHolder.AddCustomizer(PropertyPath, (ICollectionPropertiesMapper x) => x.Access(accessor));
		}
Example #53
0
        protected async Task <DialogTurnResult> AfterGetAuthToken(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken))
        {
            try
            {
                // When the user authenticates interactively we pass on the tokens/Response event which surfaces as a JObject
                // When the token is cached we get a TokenResponse object.
                var skillOptions = (CalendarSkillDialogOptions)sc.Options;
                ProviderTokenResponse providerTokenResponse;
                if (skillOptions != null && skillOptions.SkillMode)
                {
                    var resultType = sc.Context.Activity.Value.GetType();
                    if (resultType == typeof(ProviderTokenResponse))
                    {
                        providerTokenResponse = sc.Context.Activity.Value as ProviderTokenResponse;
                    }
                    else
                    {
                        var tokenResponseObject = sc.Context.Activity.Value as JObject;
                        providerTokenResponse = tokenResponseObject?.ToObject <ProviderTokenResponse>();
                    }
                }
                else
                {
                    providerTokenResponse = sc.Result as ProviderTokenResponse;
                }

                if (providerTokenResponse != null)
                {
                    var state = await Accessor.GetAsync(sc.Context);

                    state.APIToken = providerTokenResponse.TokenResponse.Token;

                    var provider = providerTokenResponse.AuthenticationProvider;

                    if (provider == OAuthProvider.AzureAD)
                    {
                        state.EventSource = EventSource.Microsoft;
                    }
                    else if (provider == OAuthProvider.Google)
                    {
                        state.EventSource = EventSource.Google;
                    }
                    else
                    {
                        throw new Exception($"The authentication provider \"{provider.ToString()}\" is not support by the Calendar Skill.");
                    }
                }

                return(await sc.NextAsync());
            }
            catch (SkillException ex)
            {
                await HandleDialogExceptions(sc, ex);

                return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs));
            }
            catch (Exception ex)
            {
                await HandleDialogExceptions(sc, ex);

                return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs));
            }
        }
Example #54
0
 public static void Compress(string path)
 {
     Accessor.Compress(path);
 }
Example #55
0
 public void Validate(Accessor accessor, ValidationContext context)
 {
     context.ContinueValidation(accessor);
 }
 public void ForRule <T>(Accessor accessor, Action <T> continuation) where T : IFieldValidationRule
 {
     _rules[accessor].OfType <T>().Each(continuation);
 }
 public IEnumerable <IFieldValidationRule> RulesFor(Accessor accessor)
 {
     return(_rules[accessor]);
 }
 public bool HasRule <T>(Accessor accessor) where T : IFieldValidationRule
 {
     return(_rules[accessor].Any(x => x is T));
 }
Example #59
0
 public void Access(Accessor accessor)
 {
     entityPropertyMapper.Access(accessor);
 }
Example #60
0
 public override void GenerateGetNth(StructuredStringBuilder sb, Accessor identifier)
 {
     sb.AppendLine($"return {identifier.Access};");
 }