Skip to content
This repository was archived by the owner on Jun 30, 2022. It is now read-only.

Commit 36448b4

Browse files
committed
calendar merge fix
1 parent cf1a54d commit 36448b4

File tree

1 file changed

+40
-32
lines changed

1 file changed

+40
-32
lines changed

skills/src/csharp/calendarskill/calendarskill/Dialogs/CalendarSkillDialogBase.cs

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)