public static void Main(string[] args) { int totalSecs; System.Console.Write("Enter the number of seconds to be converted: "); totalSecs = int.Parse(System.Console.ReadLine()); TimeConverter time1 = new TimeConverter(); time1.convertSecsToTime(totalSecs); }
public async Task <DialogTurnResult> ReadEvent(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context); var luisResult = state.LuisResult; var topIntent = luisResult?.TopIntent().intent; if (topIntent == null) { return(await sc.EndDialogAsync(true)); } var eventItem = state.ReadOutEvents.FirstOrDefault(); sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); var userInput = content != null?content.ToString() : sc.Context.Activity.Text; var generalLuisResult = state.GeneralLuisResult; var generalTopIntent = generalLuisResult?.TopIntent().intent; var promptRecognizerResult = ConfirmRecognizerHelper.ConfirmYesOrNo(userInput, sc.Context.Activity.Locale); if (promptRecognizerResult.Succeeded && promptRecognizerResult.Value == false) { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(CalendarSharedResponses.CancellingMessage)); return(await sc.EndDialogAsync(true)); } else if ((promptRecognizerResult.Succeeded && promptRecognizerResult.Value == true) || (topIntent == Luis.Calendar.Intent.ReadAloud && eventItem == null)) { return(await sc.PromptAsync(Actions.Prompt, new PromptOptions { Prompt = sc.Context.Activity.CreateReply(SummaryResponses.ReadOutPrompt), })); } else if (eventItem != null) { string speakString = string.Empty; if (eventItem.IsAllDay == true) { speakString = $"{eventItem.Title} at {TimeConverter.ConvertUtcToUserTime(eventItem.StartTime, state.GetUserTimeZone()).ToString("MMMM dd all day")}"; } else { speakString = $"{eventItem.Title} at {TimeConverter.ConvertUtcToUserTime(eventItem.StartTime, state.GetUserTimeZone()).ToString("h:mm tt")}"; } var replyMessage = sc.Context.Activity.CreateAdaptiveCardReply(SummaryResponses.ReadOutMessage, eventItem.OnlineMeetingUrl == null ? "Dialogs/Shared/Resources/Cards/CalendarCardNoJoinButton.json" : "Dialogs/Shared/Resources/Cards/CalendarCard.json", eventItem.ToAdaptiveCardData(state.GetUserTimeZone()), null, new StringDictionary() { { "MeetingDetails", speakString } }); await sc.Context.SendActivityAsync(replyMessage); return(await sc.PromptAsync(Actions.Prompt, new PromptOptions { Prompt = sc.Context.Activity.CreateReply(SummaryResponses.ReadOutMorePrompt) })); } else { return(await sc.NextAsync()); } } catch (Exception) { await HandleDialogExceptions(sc); throw; } }
public async Task <DialogTurnResult> ShowNextEvent(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context); var askParameter = new AskParameterModel(state.AskParameterContent); if (string.IsNullOrEmpty(state.APIToken)) { return(await sc.EndDialogAsync(true)); } var calendarService = ServiceManager.InitCalendarService(state.APIToken, state.EventSource); var eventList = await calendarService.GetUpcomingEvents(); var nextEventList = new List <EventModel>(); foreach (var item in eventList) { if (item.IsCancelled != true && (nextEventList.Count == 0 || nextEventList[0].StartTime == item.StartTime)) { nextEventList.Add(item); } } if (nextEventList.Count == 0) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowNoMeetingMessage)); } else { if (nextEventList.Count == 1) { // if user asked for specific details if (askParameter.NeedDetail) { var tokens = new StringDictionary() { { "EventName", nextEventList[0].Title }, { "EventStartTime", TimeConverter.ConvertUtcToUserTime(nextEventList[0].StartTime, state.GetUserTimeZone()).ToString("h:mm tt") }, { "EventEndTime", TimeConverter.ConvertUtcToUserTime(nextEventList[0].EndTime, state.GetUserTimeZone()).ToString("h:mm tt") }, { "EventDuration", nextEventList[0].ToSpeechDurationString() }, { "EventLocation", nextEventList[0].Location }, }; await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.BeforeShowEventDetails, tokens)); if (askParameter.NeedTime) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ReadTime, tokens)); } if (askParameter.NeedDuration) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ReadDuration, tokens)); } if (askParameter.NeedLocation) { // for some event there might be no localtion. if (string.IsNullOrEmpty(tokens["EventLocation"])) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ReadNoLocation)); } else { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ReadLocation, tokens)); } } } var speakParams = new StringDictionary() { { "EventName", nextEventList[0].Title }, { "PeopleCount", nextEventList[0].Attendees.Count.ToString() }, }; speakParams.Add("EventTime", SpeakHelper.ToSpeechMeetingDateTime(TimeConverter.ConvertUtcToUserTime(nextEventList[0].StartTime, state.GetUserTimeZone()), nextEventList[0].IsAllDay == true)); if (string.IsNullOrEmpty(nextEventList[0].Location)) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowNextMeetingNoLocationMessage, speakParams)); } else { speakParams.Add("Location", nextEventList[0].Location); await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowNextMeetingMessage, speakParams)); } } else { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowMultipleNextMeetingMessage)); } var reply = await GetGeneralMeetingListResponseAsync(sc, CalendarCommonStrings.UpcommingMeeting, nextEventList, null, null); await sc.Context.SendActivityAsync(reply); } state.Clear(); return(await sc.EndDialogAsync(true)); } 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)); } }
public async Task <DialogTurnResult> ShowEventsList(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var tokenResponse = sc.Result as TokenResponse; var state = await Accessor.GetAsync(sc.Context); var options = sc.Options as ShowMeetingsDialogOptions; if (state.SummaryEvents == null) { // this will lead to error when test if (string.IsNullOrEmpty(state.APIToken)) { state.Clear(); return(await sc.EndDialogAsync(true)); } var calendarService = ServiceManager.InitCalendarService(state.APIToken, state.EventSource); var searchDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, state.GetUserTimeZone()); if (state.StartDate.Any()) { searchDate = state.StartDate.Last(); } var results = await GetEventsByTime(new List <DateTime>() { searchDate }, state.StartTime, state.EndDate, state.EndTime, state.GetUserTimeZone(), calendarService); var searchedEvents = new List <EventModel>(); var searchTodayMeeting = SearchesTodayMeeting(state); foreach (var item in results) { if (!searchTodayMeeting || item.StartTime >= DateTime.UtcNow) { searchedEvents.Add(item); } } if (searchedEvents.Count == 0) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowNoMeetingMessage)); state.Clear(); return(await sc.EndDialogAsync(true)); } else { if (options != null && options.Reason == ShowMeetingReason.ShowOverviewAgain) { var responseParams = new StringDictionary() { { "Count", searchedEvents.Count.ToString() }, { "DateTime", state.StartDateString ?? CalendarCommonStrings.TodayLower } }; if (searchedEvents.Count == 1) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowOneMeetingSummaryAgainMessage, responseParams)); } else { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowMeetingSummaryAgainMessage, responseParams)); } } else { var responseParams = new StringDictionary() { { "Count", searchedEvents.Count.ToString() }, { "EventName1", searchedEvents[0].Title }, { "DateTime", state.StartDateString ?? CalendarCommonStrings.TodayLower }, { "EventTime1", SpeakHelper.ToSpeechMeetingTime(TimeConverter.ConvertUtcToUserTime(searchedEvents[0].StartTime, state.GetUserTimeZone()), searchedEvents[0].IsAllDay == true) }, { "Participants1", DisplayHelper.ToDisplayParticipantsStringSummary(searchedEvents[0].Attendees, 1) } }; if (searchedEvents.Count == 1) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowOneMeetingSummaryMessage, responseParams)); } else { responseParams.Add("EventName2", searchedEvents[searchedEvents.Count - 1].Title); responseParams.Add("EventTime2", SpeakHelper.ToSpeechMeetingTime(TimeConverter.ConvertUtcToUserTime(searchedEvents[searchedEvents.Count - 1].StartTime, state.GetUserTimeZone()), searchedEvents[searchedEvents.Count - 1].IsAllDay == true)); responseParams.Add("Participants2", DisplayHelper.ToDisplayParticipantsStringSummary(searchedEvents[searchedEvents.Count - 1].Attendees, 1)); await sc.Context.SendActivityAsync(ResponseManager.GetResponse(SummaryResponses.ShowMultipleMeetingSummaryMessage, responseParams)); } } } // add conflict flag for (var i = 0; i < searchedEvents.Count - 1; i++) { for (var j = i + 1; j < searchedEvents.Count; j++) { if (searchedEvents[i].StartTime <= searchedEvents[j].StartTime && searchedEvents[i].EndTime > searchedEvents[j].StartTime) { searchedEvents[i].IsConflict = true; searchedEvents[j].IsConflict = true; } else { break; } } } // count the conflict meetings var totalConflictCount = 0; foreach (var eventItem in searchedEvents) { if (eventItem.IsConflict) { totalConflictCount++; } } state.TotalConflictCount = totalConflictCount; await sc.Context.SendActivityAsync(await GetOverviewMeetingListResponseAsync( sc, GetCurrentPageMeetings(searchedEvents, state, out var firstIndex, out var lastIndex), firstIndex, lastIndex, searchedEvents.Count, totalConflictCount, null, null)); state.SummaryEvents = searchedEvents; if (state.SummaryEvents.Count == 1) { return(await sc.PromptAsync(Actions.Prompt, new PromptOptions())); } } else { var currentPageMeetings = GetCurrentPageMeetings(state.SummaryEvents, state); if (options != null && ( options.Reason == ShowMeetingReason.ShowFilteredByTitleMeetings || options.Reason == ShowMeetingReason.ShowFilteredByTimeMeetings || options.Reason == ShowMeetingReason.ShowFilteredByParticipantNameMeetings)) { string meetingListTitle = null; if (options.Reason == ShowMeetingReason.ShowFilteredByTitleMeetings) { meetingListTitle = string.Format(CalendarCommonStrings.MeetingsAbout, state.FilterMeetingKeyWord); } else if (options.Reason == ShowMeetingReason.ShowFilteredByTimeMeetings) { meetingListTitle = string.Format(CalendarCommonStrings.MeetingsAt, state.FilterMeetingKeyWord); } else if (options.Reason == ShowMeetingReason.ShowFilteredByParticipantNameMeetings) { meetingListTitle = string.Format(CalendarCommonStrings.MeetingsWith, state.FilterMeetingKeyWord); } var reply = await GetGeneralMeetingListResponseAsync( sc, meetingListTitle, state.SummaryEvents, SummaryResponses.ShowMultipleFilteredMeetings, new StringDictionary() { { "Count", state.SummaryEvents.Count.ToString() } }); await sc.Context.SendActivityAsync(reply); } else { var responseParams = new StringDictionary() { { "Count", state.SummaryEvents.Count.ToString() }, { "EventName1", currentPageMeetings[0].Title }, { "DateTime", state.StartDateString ?? CalendarCommonStrings.TodayLower }, { "EventTime1", SpeakHelper.ToSpeechMeetingTime(TimeConverter.ConvertUtcToUserTime(currentPageMeetings[0].StartTime, state.GetUserTimeZone()), currentPageMeetings[0].IsAllDay == true) }, { "Participants1", DisplayHelper.ToDisplayParticipantsStringSummary(currentPageMeetings[0].Attendees, 1) } }; var reply = await GetOverviewMeetingListResponseAsync( sc, GetCurrentPageMeetings(state.SummaryEvents, state, out var firstIndex, out var lastIndex), firstIndex, lastIndex, state.SummaryEvents.Count, state.TotalConflictCount, SummaryResponses.ShowMeetingSummaryNotFirstPageMessage, responseParams); await sc.Context.SendActivityAsync(reply); } } return(await sc.PromptAsync(Actions.Prompt, new PromptOptions { Prompt = ResponseManager.GetResponse(SummaryResponses.ReadOutMorePrompt) })); } 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)); } }
protected async Task <List <EventModel> > GetEventsByTime(List <DateTime> startDateList, List <DateTime> startTimeList, List <DateTime> endDateList, List <DateTime> endTimeList, TimeZoneInfo userTimeZone, ICalendar calendarService) { // todo: check input datetime is utc var rawEvents = new List <EventModel>(); var resultEvents = new List <EventModel>(); DateTime?startDate = null; if (startDateList.Any()) { startDate = startDateList.Last(); } DateTime?endDate = null; if (endDateList.Any()) { endDate = endDateList.Last(); } bool searchByStartTime = startTimeList.Any() && endDate == null && !endTimeList.Any(); startDate = startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); endDate = endDate ?? startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); var searchStartTimeList = new List <DateTime>(); var searchEndTimeList = new List <DateTime>(); if (startTimeList.Any()) { foreach (var time in startTimeList) { searchStartTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day, time.Hour, time.Minute, time.Second), userTimeZone)); } } else { searchStartTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day), userTimeZone)); } if (endTimeList.Any()) { foreach (var time in endTimeList) { searchEndTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, time.Hour, time.Minute, time.Second), userTimeZone)); } } else { searchEndTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, 23, 59, 59), userTimeZone)); } DateTime?searchStartTime = null; if (searchByStartTime) { foreach (var startTime in searchStartTimeList) { rawEvents = await calendarService.GetEventsByStartTime(startTime); if (rawEvents.Any()) { searchStartTime = startTime; break; } } } else { for (var i = 0; i < searchStartTimeList.Count(); i++) { rawEvents = await calendarService.GetEventsByTime( searchStartTimeList[i], searchEndTimeList.Count() > i?searchEndTimeList[i] : searchEndTimeList[0]); if (rawEvents.Any()) { searchStartTime = searchStartTimeList[i]; break; } } } foreach (var item in rawEvents) { if (item.StartTime >= searchStartTime && item.IsCancelled != true) { resultEvents.Add(item); } } return(resultEvents); }
public async Task <DialogTurnResult> AfterUpdateStartTimeForCreate(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken); if (sc.Result != null && !state.StartTime.Any()) { IList <DateTimeResolution> dateTimeResolutions = sc.Result as List <DateTimeResolution>; foreach (var resolution in dateTimeResolutions) { var dateTimeConvertType = resolution?.Timex; var dateTimeValue = resolution?.Value; if (dateTimeValue != null) { try { var dateTime = DateTime.Parse(dateTimeValue); if (dateTime != null) { var isRelativeTime = IsRelativeTime(sc.Context.Activity.Text, dateTimeValue, dateTimeConvertType); state.StartTime.Add(isRelativeTime ? TimeZoneInfo.ConvertTime(dateTime, TimeZoneInfo.Local, state.GetUserTimeZone()) : dateTime); } } catch (FormatException ex) { await HandleExpectedDialogExceptions(sc, ex); } } } } var userNow = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone()); var startDate = state.StartDate.Last(); foreach (var startTime in state.StartTime) { var startDateTime = new DateTime( startDate.Year, startDate.Month, startDate.Day, startTime.Hour, startTime.Minute, startTime.Second); if (state.StartDateTime == null) { state.StartDateTime = startDateTime; } if (startDateTime >= userNow) { state.StartDateTime = startDateTime; break; } } state.StartDateTime = TimeZoneInfo.ConvertTimeToUtc(state.StartDateTime.Value, state.GetUserTimeZone()); return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
public async Task <DialogTurnResult> AfterGetNewEventTime(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context); if (state.NewStartDate.Any() || state.NewStartTime.Any() || state.MoveTimeSpan != 0) { var originalEvent = state.Events[0]; var originalStartDateTime = TimeConverter.ConvertUtcToUserTime(originalEvent.StartTime, state.GetUserTimeZone()); var userNow = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone()); if (state.NewStartDate.Any() || state.NewStartTime.Any()) { var newStartDate = state.NewStartDate.Any() ? state.NewStartDate.Last() : originalStartDateTime; var newStartTime = new List <DateTime>(); if (state.NewStartTime.Any()) { foreach (var time in state.NewStartTime) { var newStartDateTime = new DateTime( newStartDate.Year, newStartDate.Month, newStartDate.Day, time.Hour, time.Minute, time.Second); if (state.NewStartDateTime == null) { state.NewStartDateTime = newStartDateTime; } if (newStartDateTime >= userNow) { state.NewStartDateTime = newStartDateTime; break; } } } } else if (state.MoveTimeSpan != 0) { state.NewStartDateTime = originalStartDateTime.AddSeconds(state.MoveTimeSpan); } else { return(await sc.BeginDialogAsync(Actions.UpdateNewStartTime, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NotFound))); } state.NewStartDateTime = TimeZoneInfo.ConvertTimeToUtc(state.NewStartDateTime.Value, state.GetUserTimeZone()); return(await sc.ContinueDialogAsync()); } else if (sc.Result != null) { IList <DateTimeResolution> dateTimeResolutions = sc.Result as List <DateTimeResolution>; DateTime?newStartTime = null; foreach (var resolution in dateTimeResolutions) { var utcNow = DateTime.UtcNow; var dateTimeConvertTypeString = resolution.Timex; var dateTimeConvertType = new TimexProperty(dateTimeConvertTypeString); var dateTimeValue = DateTime.Parse(resolution.Value); if (dateTimeValue == null) { continue; } var isRelativeTime = IsRelativeTime(sc.Context.Activity.Text, resolution.Value, dateTimeConvertTypeString); if (isRelativeTime) { dateTimeValue = DateTime.SpecifyKind(dateTimeValue, DateTimeKind.Local); } dateTimeValue = isRelativeTime ? TimeZoneInfo.ConvertTime(dateTimeValue, TimeZoneInfo.Local, state.GetUserTimeZone()) : dateTimeValue; var originalStartDateTime = TimeConverter.ConvertUtcToUserTime(state.Events[0].StartTime, state.GetUserTimeZone()); if (dateTimeConvertType.Types.Contains(Constants.TimexTypes.Date) && !dateTimeConvertType.Types.Contains(Constants.TimexTypes.DateTime)) { dateTimeValue = new DateTime( dateTimeValue.Year, dateTimeValue.Month, dateTimeValue.Day, originalStartDateTime.Hour, originalStartDateTime.Minute, originalStartDateTime.Second); } else if (dateTimeConvertType.Types.Contains(Constants.TimexTypes.Time) && !dateTimeConvertType.Types.Contains(Constants.TimexTypes.DateTime)) { dateTimeValue = new DateTime( originalStartDateTime.Year, originalStartDateTime.Month, originalStartDateTime.Day, dateTimeValue.Hour, dateTimeValue.Minute, dateTimeValue.Second); } dateTimeValue = TimeZoneInfo.ConvertTimeToUtc(dateTimeValue, state.GetUserTimeZone()); if (newStartTime == null) { newStartTime = dateTimeValue; } if (dateTimeValue >= utcNow) { newStartTime = dateTimeValue; break; } } if (newStartTime != null) { state.NewStartDateTime = newStartTime; return(await sc.ContinueDialogAsync()); } else { return(await sc.BeginDialogAsync(Actions.UpdateNewStartTime, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NotADateTime))); } } else { return(await sc.BeginDialogAsync(Actions.UpdateNewStartTime, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NotADateTime))); } } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
/// <summary> /// Initializes a new instance of the FatFileSystem class. /// </summary> /// <param name="data">The stream containing the file system.</param> /// <param name="ownsData">Indicates if the new instance should take ownership /// of <paramref name="data"/>.</param> /// <param name="parameters">The parameters for the file system.</param> public FatFileSystem(Stream data, Ownership ownsData, FileSystemParameters parameters) : base(new FatFileSystemOptions(parameters)) { _dirCache = new Dictionary<uint, Directory>(); if (parameters != null && parameters.TimeConverter != null) { _timeConverter = parameters.TimeConverter; } else { _timeConverter = DefaultTimeConverter; } Initialize(data); _ownsData = ownsData; }
public static MidiFile ConvertToMidiFile(Stream stream, MidiFileCsvConversionSettings settings) { var midiFile = new MidiFile(); var events = new Dictionary <int, List <TimedMidiEvent> >(); using (var csvReader = new CsvReader(stream, settings.CsvDelimiter)) { var lineNumber = 0; Record record; while ((record = ReadRecord(csvReader, lineNumber, settings)) != null) { var recordType = GetRecordType(record.RecordType, settings); if (recordType == null) { CsvError.ThrowBadFormat(lineNumber, "Unknown record."); } switch (recordType) { case RecordType.Header: { var headerChunk = ParseHeader(record, settings); midiFile.TimeDivision = headerChunk.TimeDivision; midiFile.OriginalFormat = (MidiFileFormat)headerChunk.FileFormat; } break; case RecordType.TrackChunkStart: case RecordType.TrackChunkEnd: case RecordType.FileEnd: break; case RecordType.Event: { var midiEvent = ParseEvent(record, settings); var trackChunkNumber = record.TrackNumber.Value; AddTimedEvents(events, trackChunkNumber, new TimedMidiEvent(record.Time, midiEvent)); } break; case RecordType.Note: { var noteEvents = ParseNote(record, settings); var trackChunkNumber = record.TrackNumber.Value; AddTimedEvents(events, trackChunkNumber, noteEvents); } break; } lineNumber = record.LineNumber + 1; } } if (!events.Keys.Any()) { return(midiFile); } var tempoMap = GetTempoMap(events.Values.SelectMany(e => e), midiFile.TimeDivision); var trackChunks = new TrackChunk[events.Keys.Max() + 1]; for (int i = 0; i < trackChunks.Length; i++) { List <TimedMidiEvent> timedMidiEvents; trackChunks[i] = events.TryGetValue(i, out timedMidiEvents) ? timedMidiEvents.Select(e => new TimedEvent(e.Event, TimeConverter.ConvertFrom(e.Time, tempoMap))).ToTrackChunk() : new TrackChunk(); } midiFile.Chunks.AddRange(trackChunks); return(midiFile); }
private void SetPassTime() { int curUsedTime = InstanceManager.CurUsedTime; this.battleTimeText.set_text(GameDataUtils.GetChineseContent(501004, false) + " " + TimeConverter.GetTime(curUsedTime, TimeFormat.HHMMSS)); }
private async Task <DialogTurnResult> AfterGetNewEventTimePromptAsync(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken); if (state.UpdateMeetingInfo.NewStartDate.Any() || state.UpdateMeetingInfo.NewStartTime.Any() || state.UpdateMeetingInfo.MoveTimeSpan != 0) { var originalEvent = state.ShowMeetingInfo.FocusedEvents[0]; var originalStartDateTime = TimeConverter.ConvertUtcToUserTime(originalEvent.StartTime, state.GetUserTimeZone()); var userNow = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone()); if (state.UpdateMeetingInfo.NewStartDate.Any() || state.UpdateMeetingInfo.NewStartTime.Any()) { var newStartDate = state.UpdateMeetingInfo.NewStartDate.Any() ? state.UpdateMeetingInfo.NewStartDate.Last() : originalStartDateTime; var newStartTime = new List <DateTime>(); if (state.UpdateMeetingInfo.NewStartTime.Any()) { newStartTime.AddRange(state.UpdateMeetingInfo.NewStartTime); } else { newStartTime.Add(originalStartDateTime); } foreach (var time in newStartTime) { var newStartDateTime = new DateTime( newStartDate.Year, newStartDate.Month, newStartDate.Day, time.Hour, time.Minute, time.Second); if (state.UpdateMeetingInfo.NewStartDateTime == null) { state.UpdateMeetingInfo.NewStartDateTime = newStartDateTime; } if (newStartDateTime >= userNow) { state.UpdateMeetingInfo.NewStartDateTime = newStartDateTime; break; } } } else if (state.UpdateMeetingInfo.MoveTimeSpan != 0) { state.UpdateMeetingInfo.NewStartDateTime = originalStartDateTime.AddSeconds(state.UpdateMeetingInfo.MoveTimeSpan); } else { return(await sc.BeginDialogAsync(Actions.GetNewStartTime, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NotFound), cancellationToken)); } state.UpdateMeetingInfo.NewStartDateTime = TimeZoneInfo.ConvertTimeToUtc(state.UpdateMeetingInfo.NewStartDateTime.Value, state.GetUserTimeZone()); return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } else if (sc.Result != null) { IList <DateTimeResolution> dateTimeResolutions = sc.Result as List <DateTimeResolution>; DateTime?newStartTime = null; foreach (var resolution in dateTimeResolutions) { var utcNow = DateTime.UtcNow; var dateTimeConvertTypeString = resolution.Timex; var dateTimeConvertType = new TimexProperty(dateTimeConvertTypeString); var dateTimeValue = DateTime.Parse(resolution.Value); if (dateTimeValue == null) { continue; } var originalStartDateTime = TimeConverter.ConvertUtcToUserTime(state.ShowMeetingInfo.FocusedEvents[0].StartTime, state.GetUserTimeZone()); if (dateTimeConvertType.Types.Contains(Constants.TimexTypes.Date) && !dateTimeConvertType.Types.Contains(Constants.TimexTypes.DateTime)) { dateTimeValue = new DateTime( dateTimeValue.Year, dateTimeValue.Month, dateTimeValue.Day, originalStartDateTime.Hour, originalStartDateTime.Minute, originalStartDateTime.Second); } else if (dateTimeConvertType.Types.Contains(Constants.TimexTypes.Time) && !dateTimeConvertType.Types.Contains(Constants.TimexTypes.DateTime)) { dateTimeValue = new DateTime( originalStartDateTime.Year, originalStartDateTime.Month, originalStartDateTime.Day, dateTimeValue.Hour, dateTimeValue.Minute, dateTimeValue.Second); } dateTimeValue = TimeZoneInfo.ConvertTimeToUtc(dateTimeValue, state.GetUserTimeZone()); if (newStartTime == null) { newStartTime = dateTimeValue; } if (dateTimeValue >= utcNow) { newStartTime = dateTimeValue; break; } } if (newStartTime != null) { state.UpdateMeetingInfo.NewStartDateTime = newStartTime; return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } else { return(await sc.BeginDialogAsync(Actions.GetNewStartTime, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NotADateTime), cancellationToken)); } } else { // user has tried 5 times but can't get result var activity = TemplateManager.GenerateActivityForLocale(CalendarSharedResponses.RetryTooManyResponse); await sc.Context.SendActivityAsync(activity, cancellationToken); return(await sc.CancelAllDialogsAsync(cancellationToken)); } } catch (Exception ex) { await HandleDialogExceptionsAsync(sc, ex, cancellationToken); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
/// <summary> /// 为各个属性加权重 选出权重最高的返回 /// </summary> /// <param name="musics"></param> /// <param name="music"></param> /// <returns></returns> public IMusicInfo GetMatchMusic(List <IMusicInfo> musics, IMusicInfo music) { Dictionary <IMusicInfo, double> weighdic = new Dictionary <IMusicInfo, double>(); musics.ForEach(item => { double w = 0; //歌名 权重5 w += GetCompareResult(music.name, item.name) * 5; //专辑 权重2 w += GetCompareResult(music.album, item.album) * 5; //时长权重 5 w -= (Math.Abs(TimeConverter.ToSecondDouble(item.time) - TimeConverter.ToSecondDouble(music.time)) / TimeConverter.ToSecondDouble(item.time)) * 5; var singer_a = String.Join(",", from a in item.singers select a.name); var singer_b = String.Join(",", from a in music.singers select a.name); //歌手 权重10 w += GetCompareResult(singer_b, singer_a) * 10; weighdic.Add(item, w); }); return(weighdic.OrderByDescending(w => w.Value).Where(a => a.Value > 0).FirstOrDefault().Key); }
public string Get(string time) { ITimeConverter timeConverter = new TimeConverter(); return timeConverter.ConvertTime(time); }
/// <summary> /// Retrieves the duration of the recording in the specified format. /// </summary> /// <typeparam name="TTimeSpan">Type that will represent the duration.</typeparam> /// <returns>The duration of the recording as an instance of /// <typeparamref name="TTimeSpan"/>.</returns> public TTimeSpan GetDuration <TTimeSpan>() where TTimeSpan : ITimeSpan { return(TimeConverter.ConvertTo <TTimeSpan>((MetricTimeSpan)_events.LastOrDefault()?.Time ?? new MetricTimeSpan(), TempoMap)); }
private async Task <DialogTurnResult> ShowEventsSummary(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var tokenResponse = sc.Result as TokenResponse; var state = await Accessor.GetAsync(sc.Context); var options = sc.Options as ShowMeetingsDialogOptions; if (state.SummaryEvents == null) { // this will lead to error when test if (string.IsNullOrEmpty(state.APIToken)) { state.Clear(); return(await sc.EndDialogAsync(true)); } var calendarService = ServiceManager.InitCalendarService(state.APIToken, state.EventSource); state.SummaryEvents = await GetMeetingToJoin(sc); } if (state.SummaryEvents.Count == 0) { await sc.Context.SendActivityAsync(ResponseManager.GetResponse(JoinEventResponses.MeetingNotFound)); state.Clear(); return(await sc.EndDialogAsync(true)); } else if (state.SummaryEvents.Count == 1) { state.ConfirmedMeeting.Add(state.SummaryEvents.First()); return(await sc.ReplaceDialogAsync(Actions.ConfirmNumber, sc.Options)); } // Multiple events var firstEvent = GetCurrentPageMeetings(state.SummaryEvents, state).First(); var responseParams = new StringDictionary() { { "EventName1", firstEvent.Title }, { "EventTime1", SpeakHelper.ToSpeechMeetingTime(TimeConverter.ConvertUtcToUserTime(firstEvent.StartTime, state.GetUserTimeZone()), firstEvent.IsAllDay == true) }, { "Participants1", DisplayHelper.ToDisplayParticipantsStringSummary(firstEvent.Attendees) } }; await sc.Context.SendActivityAsync(ResponseManager.GetResponse(JoinEventResponses.SelectMeeting, responseParams)); await ShowMeetingList(sc, GetCurrentPageMeetings(state.SummaryEvents, state), false); return(await sc.PromptAsync(Actions.Prompt, new PromptOptions())); } 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)); } }
/// <summary> /// Retrieves the duration of the recording in the specified format. /// </summary> /// <param name="durationType">Type that will represent the duration.</param> /// <returns>The duration of the recording as an instance of time span defined by /// <paramref name="durationType"/>.</returns> /// <exception cref="InvalidEnumArgumentException"><paramref name="durationType"/> /// specified an invalid value.</exception> public ITimeSpan GetDuration(TimeSpanType durationType) { ThrowIfArgument.IsInvalidEnumValue(nameof(durationType), durationType); return(TimeConverter.ConvertTo((MetricTimeSpan)_events.LastOrDefault()?.Time ?? new MetricTimeSpan(), durationType, TempoMap)); }
/// <summary> /// Handle update progress event. /// </summary> /// <param name="task">Task.</param> /// <param name="secondLeft">Second left.</param> void OnUpdateProgress(TimeTask task, int secondLeft) { timelabel.text = TimeConverter.SecondToTimeString(secondLeft); progressBar.value = 1.0f - ((float)task.CurrentTaskDuration / (float)task.TaskDuration); }
/// <summary> /// Creates a new instance, with a specific timezone /// </summary> /// <param name="data">The stream containing the file system.</param> /// <param name="timeConverter">A delegate to convert to/from the file system's timezone.</param> public FatFileSystem(Stream data, TimeConverter timeConverter) { _dirCache = new Dictionary<uint, Directory>(); _timeConverter = timeConverter; Initialize(data); }
public async Task <DialogTurnResult> AfterUpdateStartTime(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context); var events = new List <EventModel>(); var calendarService = ServiceManager.InitCalendarService(state.APIToken, state.EventSource); var searchByEntities = state.OriginalStartDate.Any() || state.OriginalStartTime.Any() || state.Title != null; if (state.Events.Count < 1) { if (state.OriginalStartDate.Any() || state.OriginalStartTime.Any()) { events = await GetEventsByTime(state.OriginalStartDate, state.OriginalStartTime, state.OriginalEndDate, state.OriginalEndTime, state.GetUserTimeZone(), calendarService); state.OriginalStartDate = new List <DateTime>(); state.OriginalStartTime = new List <DateTime>(); state.OriginalEndDate = new List <DateTime>(); state.OriginalStartTime = new List <DateTime>(); } else if (state.Title != null) { events = await calendarService.GetEventsByTitle(state.Title); state.Title = null; } else { sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); var userInput = content != null?content.ToString() : sc.Context.Activity.Text; try { IList <DateTimeResolution> dateTimeResolutions = sc.Result as List <DateTimeResolution>; if (dateTimeResolutions.Count > 0) { foreach (var resolution in dateTimeResolutions) { if (resolution.Value == null) { continue; } var startTimeValue = DateTime.Parse(resolution.Value); if (startTimeValue == null) { continue; } var dateTimeConvertType = resolution.Timex; bool isRelativeTime = IsRelativeTime(sc.Context.Activity.Text, dateTimeResolutions.First().Value, dateTimeResolutions.First().Timex); startTimeValue = isRelativeTime ? TimeZoneInfo.ConvertTime(startTimeValue, TimeZoneInfo.Local, state.GetUserTimeZone()) : startTimeValue; startTimeValue = TimeConverter.ConvertLuisLocalToUtc(startTimeValue, state.GetUserTimeZone()); events = await calendarService.GetEventsByStartTime(startTimeValue); if (events != null && events.Count > 0) { break; } } } } catch { } if (events == null || events.Count <= 0) { state.Title = userInput; events = await calendarService.GetEventsByTitle(userInput); } } state.Events = events; } if (state.Events.Count <= 0) { if (searchByEntities) { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(UpdateEventResponses.EventWithStartTimeNotFound)); state.Clear(); return(await sc.CancelAllDialogsAsync()); } else { return(await sc.BeginDialogAsync(Actions.UpdateStartTime, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NoEvent))); } } else if (state.Events.Count > 1) { var options = new PromptOptions() { Choices = new List <Choice>(), }; for (var i = 0; i < state.Events.Count; i++) { var item = state.Events[i]; var choice = new Choice() { Value = string.Empty, Synonyms = new List <string> { (i + 1).ToString(), item.Title }, }; options.Choices.Add(choice); } var replyToConversation = sc.Context.Activity.CreateReply(UpdateEventResponses.MultipleEventsStartAtSameTime); replyToConversation.AttachmentLayout = AttachmentLayoutTypes.Carousel; replyToConversation.Attachments = new List <Microsoft.Bot.Schema.Attachment>(); var cardsData = new List <CalendarCardData>(); foreach (var item in state.Events) { var meetingCard = item.ToAdaptiveCardData(state.GetUserTimeZone()); var replyTemp = sc.Context.Activity.CreateAdaptiveCardReply(CalendarMainResponses.GreetingMessage, item.OnlineMeetingUrl == null ? "Dialogs/Shared/Resources/Cards/CalendarCardNoJoinButton.json" : "Dialogs/Shared/Resources/Cards/CalendarCard.json", meetingCard); replyToConversation.Attachments.Add(replyTemp.Attachments[0]); } options.Prompt = replyToConversation; return(await sc.PromptAsync(Actions.EventChoice, options)); } else { return(await sc.EndDialogAsync(true)); } } 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)); } }
public async Task <DialogTurnResult> ConfirmBeforeCreate(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken); if (state.Location == null && sc.Result != null && (!state.CreateHasDetail || state.RecreateState == RecreateEventState.Location)) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); var luisResult = state.LuisResult; var userInput = content != null?content.ToString() : sc.Context.Activity.Text; var topIntent = luisResult?.TopIntent().intent.ToString(); var promptRecognizerResult = ConfirmRecognizerHelper.ConfirmYesOrNo(userInput, sc.Context.Activity.Locale); // Enable the user to skip providing the location if they say something matching the Cancel intent, say something matching the ConfirmNo recognizer or something matching the NoLocation intent if (CreateEventWhiteList.IsSkip(userInput)) { state.Location = string.Empty; } else { state.Location = userInput; } } var source = state.EventSource; var newEvent = new EventModel(source) { Title = state.Title, Content = state.Content, Attendees = state.Attendees, StartTime = state.StartDateTime.Value, EndTime = state.EndDateTime.Value, TimeZone = TimeZoneInfo.Utc, Location = state.Location, ContentPreview = state.Content }; var attendeeConfirmString = string.Empty; if (state.Attendees.Count > 0) { var attendeeConfirmResponse = ResponseManager.GetResponse(CreateEventResponses.ConfirmCreateAttendees, new StringDictionary() { { "Attendees", state.Attendees.ToSpeechString(CommonStrings.And, li => li.DisplayName ?? li.Address) } }); attendeeConfirmString = attendeeConfirmResponse.Text; } var subjectConfirmString = string.Empty; if (!string.IsNullOrEmpty(state.Title)) { var subjectConfirmResponse = ResponseManager.GetResponse(CreateEventResponses.ConfirmCreateSubject, new StringDictionary() { { "Subject", string.IsNullOrEmpty(state.Title) ? CalendarCommonStrings.Empty : state.Title } }); subjectConfirmString = subjectConfirmResponse.Text; } var locationConfirmString = string.Empty; if (!string.IsNullOrEmpty(state.Location)) { var subjectConfirmResponse = ResponseManager.GetResponse(CreateEventResponses.ConfirmCreateLocation, new StringDictionary() { { "Location", string.IsNullOrEmpty(state.Location) ? CalendarCommonStrings.Empty : state.Location }, }); locationConfirmString = subjectConfirmResponse.Text; } var contentConfirmString = string.Empty; if (!string.IsNullOrEmpty(state.Content)) { var contentConfirmResponse = ResponseManager.GetResponse(CreateEventResponses.ConfirmCreateContent, new StringDictionary() { { "Content", string.IsNullOrEmpty(state.Content) ? CalendarCommonStrings.Empty : state.Content }, }); contentConfirmString = contentConfirmResponse.Text; } var startDateTimeInUserTimeZone = TimeConverter.ConvertUtcToUserTime(state.StartDateTime.Value, state.GetUserTimeZone()); var endDateTimeInUserTimeZone = TimeConverter.ConvertUtcToUserTime(state.EndDateTime.Value, state.GetUserTimeZone()); var tokens = new StringDictionary { { "AttendeesConfirm", attendeeConfirmString }, { "Date", startDateTimeInUserTimeZone.ToSpeechDateString(false) }, { "Time", startDateTimeInUserTimeZone.ToSpeechTimeString(false) }, { "EndTime", endDateTimeInUserTimeZone.ToSpeechTimeString(false) }, { "SubjectConfirm", subjectConfirmString }, { "LocationConfirm", locationConfirmString }, { "ContentConfirm", contentConfirmString }, }; var card = new Card() { Name = newEvent.OnlineMeetingUrl == null ? "CalendarCardNoJoinButton" : "CalendarCard", Data = newEvent.ToAdaptiveCardData(state.GetUserTimeZone(), showContent: true) }; var prompt = ResponseManager.GetCardResponse(CreateEventResponses.ConfirmCreate, card, tokens); var retryPrompt = ResponseManager.GetResponse(CreateEventResponses.ConfirmCreateFailed, tokens); return(await sc.PromptAsync(Actions.TakeFurtherAction, new PromptOptions { Prompt = prompt, RetryPrompt = retryPrompt }, cancellationToken)); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
internal void AddMessage(object Sender, string Message, logSeverity Severity) { if (LoggingEnabled && (!OnlyLogErrors || (OnlyLogErrors == true && Severity > logSeverity.Failure))) { string FormattedMessage = string.Format("[{0}] - [{1}][{2}]: {3}", Severity.ToString(), TimeConverter.GetDateTime().ToString("d-M-yyyy hh:mm"), Sender.ToString(), Message); Debug.WriteLine(FormattedMessage); LogEntries.Add(FormattedMessage); if (LogToConsoleEnabled) { Console.WriteLine(FormattedMessage); } if (LogOutputAction != null) { LogOutputAction.Invoke(FormattedMessage); } } }
public async Task <DialogTurnResult> AfterUpdateDurationForCreate(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken); if (state.EndDate.Any() || state.EndTime.Any()) { var startDate = !state.StartDate.Any() ? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone()) : state.StartDate.Last(); var endDate = startDate; if (state.EndDate.Any()) { endDate = state.EndDate.Last(); } if (state.EndTime.Any()) { foreach (var endtime in state.EndTime) { var endDateTime = new DateTime( endDate.Year, endDate.Month, endDate.Day, endtime.Hour, endtime.Minute, endtime.Second); endDateTime = TimeZoneInfo.ConvertTimeToUtc(endDateTime, state.GetUserTimeZone()); if (state.EndDateTime == null || endDateTime >= state.StartDateTime) { state.EndDateTime = endDateTime; } } } else { state.EndDateTime = new DateTime(endDate.Year, endDate.Month, endDate.Day, 23, 59, 59); state.EndDateTime = TimeZoneInfo.ConvertTimeToUtc(state.EndDateTime.Value, state.GetUserTimeZone()); } var ts = state.StartDateTime.Value.Subtract(state.EndDateTime.Value).Duration(); state.Duration = (int)ts.TotalSeconds; } if (state.Duration <= 0 && state.CreateHasDetail && state.RecreateState != RecreateEventState.Time && state.RecreateState != RecreateEventState.Duration) { state.Duration = 1800; } if (state.Duration <= 0 && sc.Result != null) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); IList <DateTimeResolution> dateTimeResolutions = sc.Result as List <DateTimeResolution>; if (dateTimeResolutions.First().Value != null) { int.TryParse(dateTimeResolutions.First().Value, out var duration); state.Duration = duration; } } if (state.Duration > 0) { state.EndDateTime = state.StartDateTime.Value.AddSeconds(state.Duration); } else { // should not go to this part in current logic. // place an error handling for save. await HandleDialogExceptions(sc, new Exception("Unexpect Error On get duration")); } return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } catch (Exception ex) { await HandleDialogExceptions(sc, ex); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }
/// <summary> /// Retrieves the duration of the playback in the specified format. /// </summary> /// <param name="durationType">Type that will represent the duration.</param> /// <returns>The duration of the playback as an instance of time span defined by /// <paramref name="durationType"/>.</returns> /// <exception cref="InvalidEnumArgumentException"><paramref name="durationType"/> /// specified an invalid value.</exception> public ITimeSpan GetDuration(TimeSpanType durationType) { ThrowIfArgument.IsInvalidEnumValue(nameof(durationType), durationType); return(TimeConverter.ConvertTo((MetricTimeSpan)_duration, durationType, TempoMap)); }
/// <summary> /// Gets points in time of the current grid. /// </summary> /// <param name="tempoMap">Tempo map used to get grid's times.</param> /// <returns>Collection of points in time of the current grid.</returns> /// <exception cref="ArgumentNullException"><paramref name="tempoMap"/> is null.</exception> public IEnumerable <long> GetTimes(TempoMap tempoMap) { ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); return(Times.Select(t => TimeConverter.ConvertFrom(t, tempoMap))); }
/// <summary> /// Retrieves the duration of the playback in the specified format. /// </summary> /// <typeparam name="TTimeSpan">Type that will represent the duration.</typeparam> /// <returns>The duration of the playback as an instance of /// <typeparamref name="TTimeSpan"/>.</returns> public TTimeSpan GetDuration <TTimeSpan>() where TTimeSpan : ITimeSpan { return(TimeConverter.ConvertTo <TTimeSpan>((MetricTimeSpan)_duration, TempoMap)); }
public async Task <DialogTurnResult> ReadEvent(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context); var luisResult = state.LuisResult; var topIntent = luisResult?.TopIntent().intent; var eventItem = state.ReadOutEvents.FirstOrDefault(); if (eventItem != null && topIntent != Luis.CalendarLuis.Intent.ChangeCalendarEntry && topIntent != Luis.CalendarLuis.Intent.DeleteCalendarEntry) { var tokens = new StringDictionary() { { "Date", eventItem.StartTime.ToString(CommonStrings.DisplayDateFormat_CurrentYear) }, { "Time", SpeakHelper.ToSpeechMeetingTime(TimeConverter.ConvertUtcToUserTime(eventItem.StartTime, state.GetUserTimeZone()), eventItem.IsAllDay == true) }, { "Participants", DisplayHelper.ToDisplayParticipantsStringSummary(eventItem.Attendees, 1) }, { "Subject", eventItem.Title } }; var replyMessage = await GetDetailMeetingResponseAsync(sc, eventItem, SummaryResponses.ReadOutMessage, tokens); await sc.Context.SendActivityAsync(replyMessage); if (eventItem.IsOrganizer) { return(await sc.PromptAsync(Actions.Prompt, new PromptOptions { Prompt = ResponseManager.GetResponse(SummaryResponses.AskForOrgnizerAction, new StringDictionary() { { "DateTime", state.StartDateString ?? CalendarCommonStrings.TodayLower } }) })); } else if (eventItem.IsAccepted) { return(await sc.PromptAsync(Actions.Prompt, new PromptOptions { Prompt = ResponseManager.GetResponse(SummaryResponses.AskForAction, new StringDictionary() { { "DateTime", state.StartDateString ?? CalendarCommonStrings.TodayLower } }) })); } else { return(await sc.PromptAsync(Actions.Prompt, new PromptOptions { Prompt = ResponseManager.GetResponse(SummaryResponses.AskForChangeStatus, new StringDictionary() { { "DateTime", state.StartDateString ?? CalendarCommonStrings.TodayLower } }) })); } } else { 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)); } }
/// <summary> /// Retrieves the current time of the playback in the specified format. /// </summary> /// <param name="timeType">Type that will represent the current time.</param> /// <returns>The current time of the playback as an instance of time span defined by /// <paramref name="timeType"/>.</returns> /// <exception cref="InvalidEnumArgumentException"><paramref name="timeType"/> specified an invalid value.</exception> public ITimeSpan GetCurrentTime(TimeSpanType timeType) { ThrowIfArgument.IsInvalidEnumValue(nameof(timeType), timeType); return(TimeConverter.ConvertTo((MetricTimeSpan)_clock.CurrentTime, timeType, TempoMap)); }
public async Task <DialogTurnResult> ShowEventsSummary(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var tokenResponse = sc.Result as TokenResponse; var state = await Accessor.GetAsync(sc.Context); if (state.SummaryEvents == null) { // this will lead to error when test if (string.IsNullOrEmpty(state.APIToken)) { return(await sc.EndDialogAsync(true)); } var calendarAPI = GraphClientHelper.GetCalendarService(state.APIToken, state.EventSource, ServiceManager.GetGoogleClient()); var calendarService = ServiceManager.InitCalendarService(calendarAPI, state.EventSource); var searchDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, state.GetUserTimeZone()); if (state.StartDate != null) { searchDate = state.StartDate.Value; } var results = await GetEventsByTime(searchDate, state.StartTime, state.EndDate, state.EndTime, state.GetUserTimeZone(), calendarService); var searchedEvents = new List <EventModel>(); bool searchTodayMeeting = state.StartDate != null && state.StartTime == null && state.EndDate == null && state.EndTime == null && EventModel.IsSameDate(state.StartDate.Value, TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone())); foreach (var item in results) { if (!searchTodayMeeting || item.StartTime >= DateTime.UtcNow) { searchedEvents.Add(item); } } if (searchedEvents.Count == 0) { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(SummaryResponses.ShowNoMeetingMessage)); return(await sc.EndDialogAsync(true)); } else { var responseParams = new StringDictionary() { { "Count", searchedEvents.Count.ToString() }, { "EventName1", searchedEvents[0].Title }, { "EventDuration", searchedEvents[0].ToDurationString() }, }; if (searchedEvents.Count == 1) { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(SummaryResponses.ShowOneMeetingSummaryMessage, ResponseBuilder, responseParams)); } else { responseParams.Add("EventName2", searchedEvents[searchedEvents.Count - 1].Title); if (searchedEvents[searchedEvents.Count - 1].IsAllDay == true) { responseParams.Add("EventTime", TimeConverter.ConvertUtcToUserTime(searchedEvents[searchedEvents.Count - 1].StartTime, state.GetUserTimeZone()).ToString("MMMM dd all day")); } else { responseParams.Add("EventTime", TimeConverter.ConvertUtcToUserTime(searchedEvents[searchedEvents.Count - 1].StartTime, state.GetUserTimeZone()).ToString("h:mm tt")); } await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(SummaryResponses.ShowMultipleMeetingSummaryMessage, ResponseBuilder, responseParams)); } } await ShowMeetingList(sc, searchedEvents.GetRange(0, Math.Min(CalendarSkillState.PageSize, searchedEvents.Count)), false); state.Clear(); state.SummaryEvents = searchedEvents; } else { await ShowMeetingList(sc, state.SummaryEvents.GetRange(state.ShowEventIndex *CalendarSkillState.PageSize, Math.Min(CalendarSkillState.PageSize, state.SummaryEvents.Count - (state.ShowEventIndex *CalendarSkillState.PageSize))), false); } return(await sc.NextAsync()); } catch { await HandleDialogExceptions(sc); throw; } }
/// <summary> /// Retrieves the current time of the playback in the specified format. /// </summary> /// <typeparam name="TTimeSpan">Type that will represent the current time.</typeparam> /// <returns>The current time of the playback as an instance of /// <typeparamref name="TTimeSpan"/>.</returns> public TTimeSpan GetCurrentTime <TTimeSpan>() where TTimeSpan : ITimeSpan { return(TimeConverter.ConvertTo <TTimeSpan>((MetricTimeSpan)_clock.CurrentTime, TempoMap)); }
public async Task <DialogTurnResult> ShowNextEvent(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await _accessor.GetAsync(sc.Context); if (string.IsNullOrEmpty(state.APIToken)) { return(await sc.EndDialogAsync(true)); } var calendarService = _serviceManager.InitCalendarService(state.APIToken, state.EventSource); var eventList = await calendarService.GetUpcomingEvents(); var nextEventList = new List <EventModel>(); foreach (var item in eventList) { if (item.IsCancelled != true && (nextEventList.Count == 0 || nextEventList[0].StartTime == item.StartTime)) { nextEventList.Add(item); } } if (nextEventList.Count == 0) { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(NextMeetingResponses.ShowNoMeetingMessage)); } else { if (nextEventList.Count == 1) { var speakParams = new StringDictionary() { { "EventName", nextEventList[0].Title }, { "PeopleCount", nextEventList[0].Attendees.Count.ToString() }, }; if (nextEventList[0].IsAllDay == true) { speakParams.Add("EventTime", TimeConverter.ConvertUtcToUserTime(nextEventList[0].StartTime, state.GetUserTimeZone()).ToString("MMMM dd all day")); } else { speakParams.Add("EventTime", TimeConverter.ConvertUtcToUserTime(nextEventList[0].StartTime, state.GetUserTimeZone()).ToString("h:mm tt")); } if (string.IsNullOrEmpty(nextEventList[0].Location)) { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(NextMeetingResponses.ShowNextMeetingNoLocationMessage, _responseBuilder, speakParams)); } else { speakParams.Add("Location", nextEventList[0].Location); await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(NextMeetingResponses.ShowNextMeetingMessage, _responseBuilder, speakParams)); } } else { await sc.Context.SendActivityAsync(sc.Context.Activity.CreateReply(NextMeetingResponses.ShowMultipleNextMeetingMessage)); } await ShowMeetingList(sc, nextEventList, true); } state.Clear(); return(await sc.EndDialogAsync(true)); } catch { await HandleDialogExceptions(sc); throw; } }
public void SetTime(TObject obj, ITimeSpan time, TempoMap tempoMap) { SetTime(obj, TimeConverter.ConvertFrom(time, tempoMap)); }
/// <summary> /// Gets MIDI events recorded by the current <see cref="Recording"/>. /// </summary> /// <returns>MIDI events recorded by the current <see cref="Recording"/>.</returns> public IReadOnlyList <TimedEvent> GetEvents() { return(_events.Select(e => new TimedEvent(e.Event, TimeConverter.ConvertFrom((MetricTimeSpan)e.Time, TempoMap))) .ToList() .AsReadOnly()); }
public async Task <DialogTurnResult> AfterUpdateDurationForCreate(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await Accessor.GetAsync(sc.Context, cancellationToken : cancellationToken); if (state.EndDate != null || state.EndTime != null) { var startDate = state.StartDate == null?TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, state.GetUserTimeZone()) : state.StartDate; var endDate = state.EndDate; var endTime = state.EndTime; state.EndDateTime = endDate == null ? new DateTime( startDate.Value.Year, startDate.Value.Month, startDate.Value.Day, endTime.Value.Hour, endTime.Value.Minute, endTime.Value.Second) : new DateTime( endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, 23, 59, 59); state.EndDateTime = TimeZoneInfo.ConvertTimeToUtc(state.EndDateTime.Value, state.GetUserTimeZone()); var ts = state.StartDateTime.Value.Subtract(state.EndDateTime.Value).Duration(); state.Duration = (int)ts.TotalSeconds; } if (state.Duration <= 0 && sc.Result != null) { sc.Context.Activity.Properties.TryGetValue("OriginText", out var content); IList <DateTimeResolution> dateTimeResolutions = sc.Result as List <DateTimeResolution>; if (dateTimeResolutions.First().Value != null) { int.TryParse(dateTimeResolutions.First().Value, out var duration); state.Duration = duration; } } if (state.Duration > 0) { state.EndDateTime = state.StartDateTime.Value.AddSeconds(state.Duration); return(await sc.EndDialogAsync(cancellationToken : cancellationToken)); } else { // TODO: Handle improper duration } return(await sc.BeginDialogAsync(Actions.UpdateDurationForCreate, new UpdateDateTimeDialogOptions(UpdateDateTimeDialogOptions.UpdateReason.NotADateTime), cancellationToken)); } catch { await HandleDialogExceptions(sc); throw; } }
/// <summary> /// Initializes a new instance of the FatFileSystem class. /// </summary> /// <param name="data">The stream containing the file system.</param> /// <param name="ownsData">Indicates if the new instance should take ownership /// of <paramref name="data"/>.</param> /// <param name="timeConverter">A delegate to convert to/from the file system's timezone.</param> public FatFileSystem(Stream data, Ownership ownsData, TimeConverter timeConverter) : base(new FatFileSystemOptions()) { _dirCache = new Dictionary<uint, Directory>(); _timeConverter = timeConverter; Initialize(data); _ownsData = ownsData; }
/// <summary> /// Represent instance as a string. /// </summary> /// <returns>The current person instance represented as a string.</returns> public override string ToString() { return(DbId + "," + Cpr + "," + FirstName + "," + LastName + ", " + PollingTable + ", " + TimeConverter.ConvertFromUnixTimestamp(VotedTime) + ", " + Voted); }
/// <summary> /// Initializes a new instance of the FatFileSystem class. /// </summary> /// <param name="data">The stream containing the file system.</param> /// <remarks> /// Local time is the effective timezone of the new instance. /// </remarks> public FatFileSystem(Stream data) : base(new FatFileSystemOptions()) { _dirCache = new Dictionary<uint, Directory>(); _timeConverter = DefaultTimeConverter; Initialize(data); }
/// <summary> /// Creates a new instance, with local time as effective timezone /// </summary> /// <param name="data">The stream containing the file system.</param> /// <param name="ownsData">Indicates if the new instance should take ownership /// of <paramref name="data"/>.</param> public FatFileSystem(Stream data, Ownership ownsData) { _dirCache = new Dictionary<uint, Directory>(); _timeConverter = DefaultTimeConverter; Initialize(data); _ownsData = ownsData; }