private async Task <Tuple <bool, List <MeetingRoom> > > BookRoom(MeetingRoomSuggestionConstrain room) { var rmService = MeetingRoomApiFactory.GetService(); var rooms = await rmService.FindAvailableMeetingRooms(room); try { MetricTelemetry msgMt = new MetricTelemetry("Booked", 1); var tc = new TelemetryClient(); msgMt.Name = "Booked"; if (rooms.Item1) { msgMt.Properties.Add("UPN", room.MeetingOrganizer); msgMt.Properties.Add("Room", room.MeetingRoomIds?.ToArray().FirstOrDefault()); tc.TrackMetric(msgMt); } EventTelemetry et = new EventTelemetry(); et.Name = "Booked"; et.Properties.Add("UPN", room.MeetingOrganizer); et.Properties.Add("Room", room.MeetingRoomIds?.ToArray().FirstOrDefault()); tc.TrackEvent(et); } catch (Exception exp) { Trace.TraceError($"[Exception]{exp}"); Trace.TraceError($"{exp.StackTrace}"); } return(rooms); }
private async Task AfterConfirmReceivedAsync(IDialogContext context, IAwaitable <string> result) { var id = (await result); var bookRoom = new MeetingRoomSuggestionConstrain { Attendees = detail.Attendees, End = detail.End, Location = detail.Location, LocationDisplayNames = detail.LocationDisplayNames, MeetingOrganizer = detail.MeetingOrganizer, MeetingRoomIds = new string[] { id }, Size = detail.Size, Start = detail.Start, TimezoneOffset = detail.TimezoneOffset }; var rooms = await BookRoom(bookRoom); if (rooms.Item1) { Trace.TraceInformation($"[AfterConfirmReceivedAsync][Booked]room.Result={rooms.Item1} for {id}"); detail = bookRoom; var reply = ReplySuccessful(context); await context.PostAsync(reply); context.Done <object>(bookRoom); } else { Trace.TraceInformation($"[AfterConfirmReceivedAsync]room.Result={rooms.Item1} for {id}"); EnsureSuggestions(context, rooms.Item2); } }
public BookingConfirmDialog(MeetingRoomSuggestionConstrain room) { detail = room; }