@@ -816,25 +816,26 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
816816 if ( entity . FromDate != null )
817817 {
818818 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromDate [ 0 ] ) ;
819- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
819+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
820820 if ( date != null )
821821 {
822822 state . MeetingInfor . CreateHasDetail = true ;
823823 state . MeetingInfor . StartDate = date ;
824824 }
825825
826- date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
826+ // get end date from time range
827+ date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
827828 if ( date != null )
828829 {
829830 state . MeetingInfor . CreateHasDetail = true ;
830831 state . MeetingInfor . EndDate = date ;
831832 }
832833 }
833834
834- if ( entity . ToDate != null && ! state . MeetingInfor . EndDate . Any ( ) )
835+ if ( entity . ToDate != null )
835836 {
836837 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . ToDate [ 0 ] ) ;
837- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) ) ;
838+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , false ) ;
838839 if ( date != null )
839840 {
840841 state . MeetingInfor . CreateHasDetail = true ;
@@ -845,25 +846,25 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
845846 if ( entity . FromTime != null )
846847 {
847848 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromTime [ 0 ] ) ;
848- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
849+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
849850 if ( time != null )
850851 {
851852 state . MeetingInfor . CreateHasDetail = true ;
852853 state . MeetingInfor . StartTime = time ;
853854 }
854855
855- time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
856+ time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
856857 if ( time != null )
857858 {
858859 state . MeetingInfor . CreateHasDetail = true ;
859860 state . MeetingInfor . EndTime = time ;
860861 }
861862 }
862863
863- if ( entity . ToTime != null && ! state . MeetingInfor . EndTime . Any ( ) )
864+ if ( entity . ToTime != null )
864865 {
865866 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . ToTime [ 0 ] ) ;
866- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) ) ;
867+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , false ) ;
867868 if ( time != null )
868869 {
869870 state . MeetingInfor . CreateHasDetail = true ;
@@ -914,13 +915,13 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
914915 if ( entity . FromDate != null )
915916 {
916917 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromDate [ 0 ] ) ;
917- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
918+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
918919 if ( date != null )
919920 {
920921 state . MeetingInfor . StartDate = date ;
921922 }
922923
923- date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
924+ date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
924925 if ( date != null )
925926 {
926927 state . MeetingInfor . EndDate = date ;
@@ -930,13 +931,13 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
930931 if ( entity . FromTime != null )
931932 {
932933 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromTime [ 0 ] ) ;
933- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
934+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
934935 if ( time != null )
935936 {
936937 state . MeetingInfor . StartTime = time ;
937938 }
938939
939- time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
940+ time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
940941 if ( time != null )
941942 {
942943 state . MeetingInfor . EndTime = time ;
@@ -956,13 +957,13 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
956957 if ( entity . FromDate != null )
957958 {
958959 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromDate [ 0 ] ) ;
959- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
960+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
960961 if ( date != null )
961962 {
962963 state . MeetingInfor . StartDate = date ;
963964 }
964965
965- date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
966+ date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
966967 if ( date != null )
967968 {
968969 state . MeetingInfor . EndDate = date ;
@@ -972,23 +973,29 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
972973 if ( entity . ToDate != null )
973974 {
974975 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . ToDate [ 0 ] ) ;
975- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) ) ;
976+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
976977 if ( date != null )
977978 {
978979 state . UpdateMeetingInfor . NewStartDate = date ;
979980 }
981+
982+ date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
983+ if ( date != null )
984+ {
985+ state . UpdateMeetingInfor . NewEndDate = date ;
986+ }
980987 }
981988
982989 if ( entity . FromTime != null )
983990 {
984991 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromTime [ 0 ] ) ;
985- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
992+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
986993 if ( time != null )
987994 {
988995 state . MeetingInfor . StartTime = time ;
989996 }
990997
991- time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
998+ time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
992999 if ( time != null )
9931000 {
9941001 state . MeetingInfor . EndTime = time ;
@@ -998,13 +1005,13 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
9981005 if ( entity . ToTime != null )
9991006 {
10001007 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . ToTime [ 0 ] ) ;
1001- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
1008+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
10021009 if ( time != null )
10031010 {
10041011 state . UpdateMeetingInfor . NewStartTime = time ;
10051012 }
10061013
1007- time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
1014+ time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
10081015 if ( time != null )
10091016 {
10101017 state . UpdateMeetingInfor . NewEndTime = time ;
@@ -1050,24 +1057,24 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
10501057 if ( entity . FromDate != null )
10511058 {
10521059 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromDate [ 0 ] ) ;
1053- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
1060+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
10541061 if ( date != null )
10551062 {
10561063 state . MeetingInfor . StartDate = date ;
10571064 state . MeetingInfor . StartDateString = dateString ;
10581065 }
10591066
1060- date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
1067+ date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
10611068 if ( date != null )
10621069 {
10631070 state . MeetingInfor . EndDate = date ;
10641071 }
10651072 }
10661073
1067- if ( entity . ToDate != null && ! state . MeetingInfor . EndDate . Any ( ) )
1074+ if ( entity . ToDate != null )
10681075 {
10691076 var dateString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . ToDate [ 0 ] ) ;
1070- var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) ) ;
1077+ var date = GetDateFromDateTimeString ( dateString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , false ) ;
10711078 if ( date != null )
10721079 {
10731080 state . MeetingInfor . EndDate = date ;
@@ -1077,23 +1084,23 @@ protected async Task DigestCalendarLuisResult(DialogContext dc, CalendarLuis lui
10771084 if ( entity . FromTime != null )
10781085 {
10791086 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . FromTime [ 0 ] ) ;
1080- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true ) ;
1087+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , true , false ) ;
10811088 if ( time != null )
10821089 {
10831090 state . MeetingInfor . StartTime = time ;
10841091 }
10851092
1086- time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false ) ;
1093+ time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , true ) ;
10871094 if ( time != null )
10881095 {
10891096 state . MeetingInfor . EndTime = time ;
10901097 }
10911098 }
10921099
1093- if ( entity . ToTime != null && ! state . MeetingInfor . EndTime . Any ( ) )
1100+ if ( entity . ToTime != null )
10941101 {
10951102 var timeString = GetDateTimeStringFromInstanceData ( luisResult . Text , entity . _instance . ToTime [ 0 ] ) ;
1096- var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) ) ;
1103+ var time = GetTimeFromDateTimeString ( timeString , dc . Context . Activity . Locale , state . GetUserTimeZone ( ) , false , false ) ;
10971104 if ( time != null )
10981105 {
10991106 state . MeetingInfor . EndTime = time ;
@@ -1548,8 +1555,9 @@ private string GetDateTimeStringFromInstanceData(string inputString, InstanceDat
15481555 return inputString . Substring ( data . StartIndex , data . EndIndex - data . StartIndex ) ;
15491556 }
15501557
1551- private List < DateTime > GetDateFromDateTimeString ( string date , string local , TimeZoneInfo userTimeZone , bool isStart = true )
1558+ private List < DateTime > GetDateFromDateTimeString ( string date , string local , TimeZoneInfo userTimeZone , bool isStart , bool isTargetTimeRange )
15521559 {
1560+ // if isTargetTimeRange is true, will only parse the time range
15531561 var culture = local ?? English ;
15541562 var results = RecognizeDateTime ( date , culture , userTimeZone , true ) ;
15551563 var dateTimeResults = new List < DateTime > ( ) ;
@@ -1559,7 +1567,7 @@ private List<DateTime> GetDateFromDateTimeString(string date, string local, Time
15591567 {
15601568 if ( result . Value != null )
15611569 {
1562- if ( ! isStart )
1570+ if ( isTargetTimeRange )
15631571 {
15641572 break ;
15651573 }
@@ -1591,9 +1599,9 @@ private List<DateTime> GetDateFromDateTimeString(string date, string local, Time
15911599 return dateTimeResults ;
15921600 }
15931601
1594- private List < DateTime > GetTimeFromDateTimeString ( string time , string local , TimeZoneInfo userTimeZone , bool isStart = true )
1602+ private List < DateTime > GetTimeFromDateTimeString ( string time , string local , TimeZoneInfo userTimeZone , bool isStart , bool isTargetTimeRange )
15951603 {
1596- // if isStart is false , will only get the end time of a timerange
1604+ // if isTargetTimeRange is true , will only parse the time range
15971605 var culture = local ?? English ;
15981606 var results = RecognizeDateTime ( time , culture , userTimeZone , false ) ;
15991607 var dateTimeResults = new List < DateTime > ( ) ;
@@ -1603,7 +1611,7 @@ private List<DateTime> GetTimeFromDateTimeString(string time, string local, Time
16031611 {
16041612 if ( result . Value != null )
16051613 {
1606- if ( ! isStart )
1614+ if ( isTargetTimeRange )
16071615 {
16081616 break ;
16091617 }
0 commit comments