Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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;
                }
            }
        }