private void buttonCreate_Click(object sender, EventArgs e) { // Get the selected participants number var tolerance = TimeSpan.Parse((string)comboTolerance.SelectedItem); HintConference.Participants = (int)comboParticipants.SelectedItem; HintConference.StartsOn = HintConference.StartsOn.Subtract(tolerance); HintConference.Duration = HintConference.Duration.Add(tolerance); // Call the Telmex service var api = new TelmexService(); api.Login(); CreatedRoom = api.CreateConference(HintConference); // Close the dialog afterwards this.Close(); }
public ConferenceRibbon() : base(Globals.Factory.GetRibbonFactory()) { InitializeComponent(); // Set here the position of the ribbon because a known issue // of the Visual Studio 2010 Ribbon Designer this.groupConference.Position = this.Factory.RibbonPosition.BeforeOfficeId("GroupAppointmentMoreOptions"); // Set-up the configuration entry-points this.buttonConfigure.Click += (s, e) => { ShowOptions(); }; this.groupConference.DialogLauncherClick += (s, e) => { ShowOptions(); }; // The conference magic this.buttonSetupConference.Click += (s, e) => { // This should take into account when the user doesn't complete // all the required data; is not elegant, but for now is ok. // mcastagnasso: two years later, "for now" meant "for ever". if (!TelmexConfigurationSection.IsConfigured()) new ConfigureWindow().ShowDialog(); if (!TelmexConfigurationSection.IsConfigured()) return; // For now, we only handle appointments (no emails). var inspector = this.Context as Inspector; var meeting = inspector.CurrentItem as AppointmentItem; // Set up the conference info var conf = new Conference(); conf.StartsOn = meeting.Start; // Now set the participants number to a very high one (prev. conf.Participants = meeting.Recipients.Count;) conf.Participants = 20; // If there is no subject, use the organizer name conf.Name = !String.IsNullOrWhiteSpace(meeting.Subject) ? meeting.Subject : meeting.Recipients[1].Name; conf.Duration = new TimeSpan(0, meeting.Duration, 0); // Set the tolerance, before and after the schedule var tolerance = new TimeSpan(0, 30, 0); conf.StartsOn = conf.StartsOn.Subtract(tolerance); conf.Duration = conf.Duration.Add(tolerance + tolerance); // Create the conference! var api = new TelmexService(); api.Login(); var createdConference = api.CreateConference(conf); var roomInfo = String.Format( "Starts on: {0}.\nDuration: {1}.\nRoom number: {2}.\nPin: {3}.\nFrom USA, call {4} option 9.\nFrom Argentina, call {5}.\n\nNote that you can enter the conference 30 minutes before and after the scheduled.\n", createdConference.StartsOn.Add(tolerance).ToString("yyyy/MM/dd HH:mm"), createdConference.Duration.Subtract(tolerance + tolerance).ToString(@"hh\:mm"), createdConference.Room, createdConference.Pin, createdConference.RemoteCallPhone, createdConference.LocalCallPhone); var document = inspector.WordEditor as Document; document.Range().InsertBefore(roomInfo); }; }