Esempio n. 1
0
 public void Fail()
 {
     GameCtrl.VoteMissionFail();
     if (GameCtrl.GetClient().MySide == StaticValues.Side.Spy)
     {
         SuccessCard.SetActive(false);
     }
     GameCtrl.GetCameraScript().VoteAnimationBack();
 }
        public async Task <IActionResult> SubmitTaskForIOS([FromBody] MeetingViewModel valuesFromTaskModule)
        {
            var conversationReference = _conversationReferences[valuesFromTaskModule.UserAdObjectId];

            await((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, async(turnContext, cancellationToken) =>
            {
                var activity = turnContext.Activity;

                var userConfiguration = await this.userConfigurationStorageProvider.GetAsync(activity.From.AadObjectId).ConfigureAwait(false);
                if (userConfiguration == null)
                {
                    this.telemetryClient.TrackTrace("User configuration is null in task module submit action.");
                    await turnContext.SendActivityAsync(Strings.ExceptionResponse).ConfigureAwait(false);
                    return;
                }

                var message   = valuesFromTaskModule.Text;
                var replyToId = valuesFromTaskModule.ReplyTo;

                if (message.Equals(BotCommands.MeetingFromTaskModule, StringComparison.OrdinalIgnoreCase))
                {
                    var attachment          = SuccessCard.GetSuccessAttachment(valuesFromTaskModule, userConfiguration.WindowsTimezone);
                    var activityFromStorage = await this.activityStorageProvider.GetAsync(activity.From.AadObjectId, replyToId).ConfigureAwait(false);

                    if (!string.IsNullOrEmpty(replyToId))
                    {
                        var updateCardActivity = new Activity(ActivityTypes.Message)
                        {
                            Id           = activityFromStorage.ActivityId,
                            Conversation = activity.Conversation,
                            Attachments  = new List <Attachment> {
                                attachment
                            },
                        };
                        await turnContext.UpdateActivityAsync(updateCardActivity).ConfigureAwait(false);
                    }

                    await turnContext.SendActivityAsync(MessageFactory.Text(string.Format(CultureInfo.CurrentCulture, Strings.RoomBooked, valuesFromTaskModule.RoomName)), cancellationToken).ConfigureAwait(false);
                }
                else
                {
                    if (!string.IsNullOrEmpty(replyToId))
                    {
                        await this.UpdateFavouriteCardAsync(turnContext, replyToId).ConfigureAwait(false);
                    }
                }

                return;
            }, default(CancellationToken));


            // Let the caller know proactive messages have been sent
            return(this.Ok());
        }
Esempio n. 3
0
 public void Vote()
 {
     SuccessCard.GetComponent <MissionVoteCardController>().Clicked = FailCard.GetComponent <MissionVoteCardController>().Clicked = false;
     FailCard.GetComponent <MissionVoteCardController>().Clicked    = FailCard.GetComponent <MissionVoteCardController>().Clicked = false;
     if (GameCtrl.GetClient().MySide == StaticValues.Side.Resistance)
     {
         FailCard.SetActive(false);
         SuccessCard.SetActive(true);
     }
     else
     {
         FailCard.SetActive(true);
         SuccessCard.SetActive(true);
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Create meeting as per room selection by user.
        /// </summary>
        /// <param name="stepContext">Context object passed in to a WaterfallStep.</param>
        /// <param name="tokenResponse">Token response object containing Active Directory access token.</param>
        /// <param name="cancellationToken">Propagates notification that operations should be canceled.</param>
        /// <returns>A task that represents the work queued to execute.</returns>
        private async Task CreateEventAsync(WaterfallStepContext stepContext, TokenResponse tokenResponse, CancellationToken cancellationToken)
        {
            var    activity  = stepContext.Context.Activity;
            string available = "Available";

            var userConfiguration = await this.userConfigurationStorageProvider.GetAsync(activity.From.AadObjectId).ConfigureAwait(false);

            if (userConfiguration == null)
            {
                this.telemetryClient.TrackTrace("User configuration is null in CreateEventAsync.");
                await stepContext.Context.SendActivityAsync(Strings.ExceptionResponse).ConfigureAwait(false);

                return;
            }

            var selectedMeetingValues = JsonConvert.DeserializeObject <MeetingViewModel>(activity.Value.ToString());
            var startUTCDateTime      = DateTime.Parse(selectedMeetingValues.StartDateTime, null, DateTimeStyles.RoundtripKind);
            var endUTCDateTime        = DateTime.Parse(selectedMeetingValues.EndDateTime, null, DateTimeStyles.RoundtripKind);
            var currentDateTime       = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById(userConfiguration.WindowsTimezone));
            var startDateTime         = TimeZoneInfo.ConvertTimeFromUtc(startUTCDateTime, TimeZoneInfo.FindSystemTimeZoneById(userConfiguration.WindowsTimezone));
            var endDateTime           = TimeZoneInfo.ConvertTimeFromUtc(endUTCDateTime, TimeZoneInfo.FindSystemTimeZoneById(userConfiguration.WindowsTimezone));

            if (currentDateTime.Subtract(startDateTime).TotalMinutes > Constants.DurationGapFromNow.Minutes)
            {
                await this.RefreshFavoriteCardAsync(stepContext).ConfigureAwait(false);

                await stepContext.Context.SendActivityAsync(MessageFactory.Text(Strings.Expired), cancellationToken).ConfigureAwait(false);
            }
            else
            {
                if (!selectedMeetingValues.Status.Equals(available, StringComparison.OrdinalIgnoreCase))
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(Strings.RoomUnavailable), cancellationToken).ConfigureAwait(false);
                }
                else
                {
                    var roomsScheduleResponse = await this.GetRoomsScheduleAsync(
                        startDateTime,
                        endDateTime,
                        localTimeZone : userConfiguration.IanaTimezone,
                        rooms : new List <UserFavoriteRoomEntity>
                    {
                        new UserFavoriteRoomEntity {
                            RowKey = selectedMeetingValues.RoomEmail
                        },
                    },
                        tokenResponse.Token).ConfigureAwait(false);

                    if (roomsScheduleResponse.ErrorResponse != null)
                    {
                        // Graph API returned error message.
                        await stepContext.Context.SendActivityAsync(MessageFactory.Text(Strings.ExceptionResponse)).ConfigureAwait(false);

                        return;
                    }

                    if (roomsScheduleResponse?.Schedules?.FirstOrDefault()?.ScheduleItems?.Count != 0)
                    {
                        await this.RefreshFavoriteCardAsync(stepContext).ConfigureAwait(false);

                        await stepContext.Context.SendActivityAsync(MessageFactory.Text(Strings.RoomUnavailable), cancellationToken).ConfigureAwait(false);
                    }
                    else
                    {
                        CreateEventRequest request = new CreateEventRequest()
                        {
                            Attendees = new List <Attendee>(),
                            Body      = new Body {
                                Content = Strings.MeetingBody, ContentType = "HTML"
                            },
                            End = new DateTimeAndTimeZone {
                                DateTime = endDateTime, TimeZone = userConfiguration.IanaTimezone
                            },
                            Start = new DateTimeAndTimeZone {
                                DateTime = startDateTime, TimeZone = userConfiguration.IanaTimezone
                            },
                            Subject  = selectedMeetingValues.Subject,
                            Location = new Location {
                                DisplayName = selectedMeetingValues.RoomName
                            },
                        };

                        request.Attendees.Add(new Attendee {
                            EmailAddress = new EmailAddress {
                                Address = selectedMeetingValues.RoomEmail, Name = selectedMeetingValues.RoomName
                            }, Type = "required"
                        });
                        var meetingResponse = await this.meetingProvider.CreateMeetingAsync(request, tokenResponse.Token).ConfigureAwait(false);

                        if (meetingResponse.ErrorResponse != null)
                        {
                            // Graph API returned error message.
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(Strings.ExceptionResponse), cancellationToken).ConfigureAwait(false);

                            return;
                        }

                        this.telemetryClient.TrackEvent("Meeting created", new Dictionary <string, string>()
                        {
                            { "User", activity.From.AadObjectId }, { "Room", selectedMeetingValues.RoomEmail }
                        });
                        var updateCardActivity = new Activity(ActivityTypes.Message)
                        {
                            Id           = stepContext.Context.Activity.ReplyToId,
                            Conversation = stepContext.Context.Activity.Conversation,
                            Attachments  = new List <Attachment>
                            {
                                SuccessCard.GetSuccessAttachment(
                                    new MeetingViewModel
                                {
                                    MeetingId     = meetingResponse.Id,
                                    RoomName      = selectedMeetingValues.RoomName,
                                    BuildingName  = selectedMeetingValues.BuildingName,
                                    WebLink       = meetingResponse.WebLink,
                                    StartDateTime = selectedMeetingValues.StartDateTime,
                                    EndDateTime   = selectedMeetingValues.EndDateTime,
                                    IsFavourite   = true,
                                },
                                    userConfiguration.WindowsTimezone),
                            },
                        };

                        await stepContext.Context.UpdateActivityAsync(updateCardActivity, cancellationToken).ConfigureAwait(false);

                        await stepContext.Context.SendActivityAsync(MessageFactory.Text(string.Format(CultureInfo.CurrentCulture, Strings.RoomBooked, selectedMeetingValues.RoomName)), cancellationToken).ConfigureAwait(false);
                    }
                }
            }
        }
Esempio n. 5
0
 // Use this for initialization
 void Start()
 {
     FailCard.SetActive(false);
     SuccessCard.SetActive(false);
 }