Exemple #1
0
        private MeetingDTO SaveMeeting(CanvasConnectCredentials credentials, int courseId, AdobeConnectProvider provider, MeetingDTO meetingDTO)
        {
            var meeting = this.CanvasCourseMeetingModel.GetOneByCourseId(credentials.Id, courseId).Value
                          ?? new CanvasCourseMeeting()
            {
                CanvasConnectCredentialsId = credentials.Id, CourseId = courseId
            };

            var meetingItem = new MeetingUpdateItem()
            {
                ScoId = meeting.ScoId
            };

            //meetingItem.DateBegin = DateTime.Now.ToString();
            //meetingItem.DateEnd = DateTime.Now.AddDays(1).ToString();
            meetingItem.Name        = String.Format("{0} [{1}] {2}", DateTime.Now.ToString("MM.dd.yy "), Model.context_label, meetingDTO.name);
            meetingItem.Description = meetingDTO.summary;
            meetingItem.UrlPath     = meetingDTO.ac_room_url;

            DateTime startDate, startTime, dateBegin;

            /*
             * if (DateTime.TryParse(meetingDTO.start_date, out startDate)
             *  && DateTime.TryParse(meetingDTO.start_time, out startTime))
             */
            if (meetingDTO.start_time.IndexOf(":") == 1)
            {
                meetingDTO.start_time = "0" + meetingDTO.start_time;
            }
            var oldStartDate = meetingDTO.start_date;

            if (meetingDTO.start_date != null)
            {
                meetingDTO.start_date = meetingDTO.start_date.Substring(6, 4) + "-"
                                        + meetingDTO.start_date.Substring(0, 5);
            }
            if (DateTime.TryParse(meetingDTO.start_date + " " + meetingDTO.start_time, out dateBegin))
            {
                /*
                 * var dateBegin = new DateTime(
                 *  startDate.Year,
                 *  startDate.Month,
                 *  startDate.Day,
                 *  startTime.Hour,
                 *  startTime.Minute,
                 *  startTime.Second);
                 */
                meetingItem.DateBegin = dateBegin.ToString("yyyy-MM-ddTHH:mm:ssZ");
                TimeSpan duration;
                if (TimeSpan.TryParse(meetingDTO.duration, out duration))
                {
                    meetingItem.DateEnd = dateBegin.AddMinutes((int)duration.TotalMinutes).ToString("yyyy-MM-ddTHH:mm:ssZ");
                }
            }

            meetingItem.FolderId    = credentials.ACScoId;
            meetingItem.Language    = "en";
            meetingItem.Type        = ScoType.meeting;
            meetingItem.SourceScoId = meetingDTO.template;

            var result = meeting.ScoId != null?
                         provider.UpdateSco(meetingItem) :
                             provider.CreateSco(meetingItem);

            if (result.ScoInfo != null)
            {
                meetingDTO.id = result.ScoInfo.ScoId;
            }

            if (meetingItem.ScoId == null && result.ScoInfo != null)
            {
                meeting.ScoId = result.ScoInfo.ScoId;
                this.CanvasCourseMeetingModel.RegisterSave(meeting);

                var users = CourseAPI.GetUsersForCourse(Credentials.CanvasDomain, credentials.CanvasToken, courseId);
                this.SetDefaultUsers(users, provider, result.ScoInfo.ScoId);

                if (Credentials.CanvasDomain.IndexOf("canvas") > -1 && !String.IsNullOrEmpty(Model.context_title))
                {
                    var rets = CourseAPI.CreateAnnouncement(
                        Credentials.CanvasDomain,
                        Credentials.CanvasToken,
                        Model.custom_canvas_course_id,
                        String.Format("A new Adobe Connect room was created for course {0}", Model.context_title),
                        String.Format("Meeting \"{0}\" will start {1} at {2}. It's duration will be {3}. You can join it in your Adobe Connect Conference section.",
                                      meetingDTO.name, oldStartDate, meetingDTO.start_time, meetingDTO.duration));
                }
            }

            if (result.ScoInfo != null)
            {
                var specialPermissionId = meetingDTO.access_level == "denied"
                    ? SpecialPermissionId.denied
                    : (meetingDTO.access_level == "view_hidden"
                        ? SpecialPermissionId.view_hidden
                        : SpecialPermissionId.remove);

                provider.UpdatePublicAccessPermissions(result.ScoInfo.ScoId, specialPermissionId);
                var permission = provider.GetScoPublicAccessPermissions(result.ScoInfo.ScoId).Values;

                return(this.GetMeetingDTOByScoInfo(result.ScoInfo, permission));
            }
            else
            {
                return(new MeetingDTO()
                {
                    id = "0", connect_server = Credentials.ACDomain
                });
            }
        }
Exemple #2
0
 public CourseRepository(CourseAPI api, DataProvider dataProvider)
 {
     this.api          = api;
     this.dataProvider = dataProvider;
 }
Exemple #3
0
        public JsonResult GetUsers()
        {
            var users = CourseAPI.GetUsersForCourse(Credentials.CanvasDomain, Credentials.CanvasToken, Model.custom_canvas_course_id);

            users = users.GroupBy(u => u.id).Select(
                ug =>
            {
                var teacher = ug.FirstOrDefault(u => u.canvas_role.ToLower() == "teacher");
                if (teacher != null)
                {
                    return(teacher);
                }
                teacher = ug.FirstOrDefault(u => u.canvas_role.ToLower() == "ta");
                if (teacher != null)
                {
                    return(teacher);
                }
                teacher = ug.FirstOrDefault(u => u.canvas_role.ToLower() == "designer");
                if (teacher != null)
                {
                    return(teacher);
                }
                teacher = ug.FirstOrDefault(u => u.canvas_role.ToLower() == "student");
                if (teacher != null)
                {
                    return(teacher);
                }
                return(ug.First());
            }).ToList();

            var meeting = this.CanvasCourseMeetingModel.GetOneByCourseId(Credentials.Id, Model.custom_canvas_course_id).Value;

            if (meeting == null)
            {
                return(this.Json(users));
            }

            var provider = this.GetProvider();

            PermissionCollectionResult hosts        = provider.GetMeetingHosts(meeting.ScoId),
                                       participants = provider.GetMeetingParticipants(meeting.ScoId),
                                       presenters   = provider.GetMeetingPresenters(meeting.ScoId);

            foreach (var user in users)
            {
                if (user.login_id == null && user.email == null)
                {
                    //user.ac_role = "not_allowed";
                    continue;
                }
                ;

                var acUser = provider.GetAllByEmail(HttpUtility.UrlEncode(user.login_id ?? user.email));
                if (acUser.Values == null || !acUser.Values.Any())
                {
                    //user.ac_role = "not_allowed";
                    continue;
                }

                user.ac_id = acUser.Values.First().PrincipalId;

                if (hosts.Values != null && hosts.Values.Any(v => v.PrincipalId == user.ac_id))
                {
                    user.ac_role = "Host";
                    hosts.Values = hosts.Values.Where(v => v.PrincipalId != user.ac_id).ToList();
                }
                else if (presenters.Values != null && presenters.Values.Any(v => v.PrincipalId == user.ac_id))
                {
                    user.ac_role      = "Presenter";
                    presenters.Values = presenters.Values.Where(v => v.PrincipalId != user.ac_id).ToList();
                }
                else if (participants.Values != null && participants.Values.Any(v => v.PrincipalId == user.ac_id))
                {
                    user.ac_role        = "Participant";
                    participants.Values = participants.Values.Where(v => v.PrincipalId != user.ac_id).ToList();
                }
            }

            foreach (var u in hosts.Values)
            {
                users.Add(new UserDTO()
                {
                    ac_id   = u.PrincipalId,
                    name    = u.Name,
                    ac_role = "Host"
                });
            }

            foreach (var u in presenters.Values)
            {
                users.Add(new UserDTO()
                {
                    ac_id   = u.PrincipalId,
                    name    = u.Name,
                    ac_role = "Presenter"
                });
            }

            foreach (var u in participants.Values)
            {
                users.Add(new UserDTO()
                {
                    ac_id   = u.PrincipalId,
                    name    = u.Name,
                    ac_role = "Participant"
                });
            }


            return(Json(users));
        }