public override void OnSaving(object sender, EntityBeforeEventArgs e) { base.OnSaving(sender, e); Entity activity = (Entity)sender; UserConnection = activity.UserConnection; bool IsZoom = activity.GetTypedColumnValue <bool>("CreateZoomMeeting"); string M = activity.GetTypedColumnValue <String>("MeetingId"); if (IsZoom && String.IsNullOrEmpty(M)) { ZoomMeetingApi zm = new ZoomMeetingApi(UserConnection); DateTime startDate = activity.GetTypedColumnValue <DateTime>("StartDate"); TimeSpan offset = UserConnection.CurrentUser.TimeZone.GetUtcOffset(startDate); /* * DateTime Return in Users LocalTime this need to convert to UTC */ string zoomStart = startDate.Add(-offset).ToString("yyyy-MM-ddTHH:mm:ssZ"); DateTime Due = activity.GetTypedColumnValue <DateTime>("DueDate"); int Duration = (int)Due.Subtract(startDate).TotalMinutes; Guid TimeZoneId = activity.GetTypedColumnValue <Guid>("TimeZoneId"); if (TimeZoneId == Guid.Empty) { // _userConnection.CurrentUser.TimeZoneId = "Eastern" Guid g = IdValue("TimeZone", "Code", UserConnection.CurrentUser.TimeZoneId); TimeZoneId = g; } string ZoomTimeZone = FindZoomTimeZone(TimeZoneId); string topic = activity.GetTypedColumnValue <String>("Title"); string agenda = activity.GetTypedColumnValue <String>("Notes"); MeetingRequest mr = new MeetingRequest(PredifinedMeetings.Certification, topic, agenda, zoomStart, Duration, ZoomTimeZone); zm.CreateZoomMeeting(mr); /* * Update activity after creating a meeting */ activity.SetColumnValue("MeetingId", zm.mResponse.Id); activity.SetColumnValue("MeetingUUID", zm.mResponse.Uuid); activity.SetColumnValue("StartUrl", zm.mResponse.StartUrl); activity.SetColumnValue("JoinUrl", zm.mResponse.JoinUrl); activity.SetColumnValue("RegistrationUrl", zm.mResponse.RegistrationUrl); activity.SetColumnValue("HostId", zm.mResponse.HostId); activity.SetColumnValue("AlternativeHosts", zm.mResponse.Settings.AlternativeHosts); SendMessageToUi(activity.GetTypedColumnValue <Guid>("Id"), "Meeting Created"); } }
public void CreateZoomMeeting(MeetingRequest mRequest) { try { //Create new Request string BaseUrl = String.Format("https://api.zoom.us/v2/users/{0}/meetings", HostId); HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(BaseUrl); myHttpWebRequest.Method = "POST"; myHttpWebRequest.ContentType = "application/json;"; myHttpWebRequest.Accept = "application/json;"; myHttpWebRequest.Headers.Add("Authorization", String.Format("Bearer {0}", MyToken)); using (StreamWriter sw = new StreamWriter(myHttpWebRequest.GetRequestStream())) { JsonSerializerSettings jss = new JsonSerializerSettings(); jss.Formatting = Formatting.Indented; jss.MissingMemberHandling = MissingMemberHandling.Ignore; string json = JsonConvert.SerializeObject(mRequest, jss); sw.Write(json); sw.Flush(); sw.Close(); } //Get the associated response for the above request HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); using (StreamReader MyStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(), true)) { mResponse = JsonConvert.DeserializeObject <MeetingResponse>(MyStreamReader.ReadToEnd()); } myHttpWebResponse.Close(); myHttpWebResponse.Dispose(); } catch (WebException ex) { int errorCode = (int)((HttpWebResponse)ex.Response).StatusCode; if (errorCode != 0) { ErrorCode = errorCode; Stream MyStream = ex.Response.GetResponseStream(); StreamReader MyStreamReader = new StreamReader(MyStream, true); ZoomErrorResponse zm = JsonConvert.DeserializeObject <ZoomErrorResponse>(MyStreamReader.ReadToEnd()); this.ZoomException = zm; } } }