예제 #1
0
        public OperationResult RemoveRecording(
            ILmsLicense lmsCompany,
            IAdobeConnectProxy provider,
            string courseId,
            string recordingId,
            int id)
        {
            LmsCourseMeeting meeting = lmsCourseMeetingModel.GetOneByCourseAndId(lmsCompany.Id, courseId, id);

            if (meeting == null)
            {
                return(OperationResult.Error(Resources.Messages.MeetingNotFound));
            }

            ScoContentCollectionResult result = provider.GetMeetingRecordings(new[] { meeting.GetMeetingScoId() }, lmsCompany.UseMP4);

            var recording = result.Values.FirstOrDefault(x => x.ScoId == recordingId);

            if (recording == null)
            {
                return(OperationResult.Error(Resources.Messages.RecordingNotFound));
            }

            /*if (recording.Icon == "mp4-archive")
             * {
             *  var scheduledRecording = this.GetScheduledRecording(recordingId, scoId, provider);
             *  if (scheduledRecording.JobStatus == "job-pending")
             *  {
             *      return OperationResult.Error("Cannot delete "  + scheduledRecording.Name  + " MP4 recording. Recording converting - in progress");
             *  }
             * }*/

            provider.DeleteSco(recordingId);
            return(OperationResult.Success());
        }
예제 #2
0
        [Obsolete] //??
        public IEnumerable <ScoContent> GetSharedContent()
        {
            var shortcut = _provider.GetShortcutByType("content");

            ScoContentCollectionResult result = _provider.GetContentsByScoId(shortcut.ScoId);

            return(result.Values);
        }
예제 #3
0
        public IEnumerable <ScoContent> GetFolderContent(string folderScoId)
        {
            if (string.IsNullOrWhiteSpace(folderScoId))
            {
                throw new ArgumentException("Folder's sco-id should have value", nameof(folderScoId));
            }

            ScoContentCollectionResult result = _provider.GetContentsByScoId(folderScoId);

            return(result.Values);
        }
예제 #4
0
        public IEnumerable <ScoContent> GetUserContent(string userLogin)
        {
            if (string.IsNullOrWhiteSpace(userLogin))
            {
                throw new ArgumentException("Non-empty value expected", nameof(userLogin));
            }

            var requestedUserFolder           = GetUserContentFolder(userLogin);
            ScoContentCollectionResult result = _provider.GetContentsByScoId(requestedUserFolder.ScoId);

            return(result.Values);
        }
예제 #5
0
        [Obsolete] //??
        public IEnumerable <ScoContent> GetMyContent()
        {
            var shortcut = _provider.GetShortcutByType("my-content");

            if (shortcut == null)
            {
                throw new WarningMessageException("User is not Meeting Host");
            }

            ScoContentCollectionResult result = _provider.GetContentsByScoId(shortcut.ScoId);

            return(result.Values);
        }
예제 #6
0
        public IEnumerable <ScoContent> GetFolderContent(ScoContentsFilter filter)
        {
            if (filter == null)
            {
                throw new ArgumentNullException(nameof(filter));
            }
            if (string.IsNullOrEmpty(filter.ScoId))
            {
                throw new ArgumentException("Folder's sco-id should have value", nameof(filter.ScoId));
            }

            ScoContentCollectionResult result = _provider.GetContents(filter);

            return(result.Values);
        }
예제 #7
0
        public OperationResult EditRecording(
            ILmsLicense lmsCompany,
            IAdobeConnectProxy provider,
            string courseId,
            string recordingId,
            int id,
            string name,
            string summary)
        {
            LmsCourseMeeting meeting = lmsCourseMeetingModel.GetOneByCourseAndId(lmsCompany.Id, courseId, id);

            if (meeting == null)
            {
                return(OperationResult.Error(Resources.Messages.MeetingNotFound));
            }

            ScoContentCollectionResult result = provider.GetMeetingRecordings(new[] { meeting.GetMeetingScoId() }, lmsCompany.UseMP4);

            var recording = result.Values.FirstOrDefault(x => x.ScoId == recordingId);

            if (recording == null)
            {
                return(OperationResult.Error(Resources.Messages.RecordingNotFound));
            }

            ScoInfoResult editResult = provider.UpdateSco <RecordingUpdateItem>(new RecordingUpdateItem
            {
                ScoId       = recordingId,
                Name        = name.Trim(),
                Description = summary,
                Type        = ScoType.content,
            });

            if (!editResult.Success || editResult.ScoInfo == null)
            {
                if ((editResult.Status.SubCode == StatusSubCodes.duplicate) && (editResult.Status.InvalidField == "name"))
                {
                    return(OperationResult.Error(Resources.Messages.NotUniqueName));
                }

                return(OperationResult.Error(editResult.Status.GetErrorInfo()));
            }

            return(OperationResult.Success());
        }
예제 #8
0
        [Obsolete] //??
        public ScoContent GetUserContentFolder(string userLogin)
        {
            if (string.IsNullOrWhiteSpace(userLogin))
            {
                throw new ArgumentException("Non-empty value expected", nameof(userLogin));
            }

            var shortcut = _provider.GetShortcutByType("user-content");

            ScoContentCollectionResult userFolders = _provider.GetContentsByScoId(shortcut.ScoId);
            var requestedUserFolder = userFolders.Values.FirstOrDefault(x => x.Name == userLogin);

            if (requestedUserFolder == null)
            {
                throw new WarningMessageException("Requested user's folder not found. User is not Meeting Host.");
            }

            return(requestedUserFolder);
        }
예제 #9
0
        private IEnumerable <TemplateDto> GetShortcutContentsFromApi(IAdobeConnectProxy api, string shortcut)
        {
            ScoContentCollectionResult templates = api.GetContentsByType(shortcut);

            if (!templates.Success)
            {
                _logger.ErrorFormat("get {0}. AC error. {1}.", shortcut, templates.Status.GetErrorInfo());
                return(Enumerable.Empty <TemplateDto>());
            }
            if (templates.Values == null)
            {
                _logger.ErrorFormat("get {0}. Shortcut does not exist or Values is null", shortcut);
                return(Enumerable.Empty <TemplateDto>());
            }

            return(templates.Values.Where(x => x.Type == ScoType.meeting.GetACEnum()).Select(v => new TemplateDto {
                Id = v.ScoId, Name = v.Name
            }).ToList());
        }
예제 #10
0
        /// <summary>
        /// The get recordings by SCO ids.
        /// </summary>
        /// <param name="scoIds">meeting/folder ids</param>
        /// <returns>
        /// The <see cref="ScoContentCollectionResult"/>. Values item's FolderId is parent folder id or meeting id.
        /// </returns>
        public ScoContentCollectionResult GetMeetingRecordings(IEnumerable <string> scoIds, bool includeMP4recordings = false)
        {
            IEnumerable <ScoContent> values = new List <ScoContent>();

            foreach (var id in scoIds)
            {
                var recordings = this.GetMeetingRecordings(id, includeMP4recordings);
                if (recordings.Success)
                {
                    values = values.Concat(recordings.Values);
                }
            }

            var result = new ScoContentCollectionResult(
                new StatusInfo {
                Code = StatusCodes.ok
            }, values);

            return(result);
        }
예제 #11
0
        private string SetupSharedMeetingsFolder(LmsCompany lmsCompany, LmsProvider lmsProvider, IAdobeConnectProxy provider)
        {
            string ltiFolderSco = null;
            string name         = lmsCompany.UserFolderName ?? lmsProvider.LmsProviderName;

            name = name.TruncateIfMoreThen(60);
            bool useDbFolderId = MeetingTypeFactory.UseDbMeetingFolderId(_lmsMeetingType);

            if (useDbFolderId && !string.IsNullOrWhiteSpace(lmsCompany.ACScoId))
            {
                ScoInfoResult meetingsFolder = provider.GetScoInfo(lmsCompany.ACScoId);
                if (meetingsFolder.Success && meetingsFolder.ScoInfo != null)
                {
                    if (meetingsFolder.ScoInfo.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
                    {
                        ltiFolderSco = meetingsFolder.ScoInfo.ScoId;
                    }
                    else
                    {
                        ScoInfoResult updatedSco =
                            provider.UpdateSco(
                                new FolderUpdateItem
                        {
                            ScoId    = meetingsFolder.ScoInfo.ScoId,
                            Name     = name,
                            FolderId = meetingsFolder.ScoInfo.FolderId,
                            Type     = ScoType.folder
                        });
                        if (updatedSco.Success && updatedSco.ScoInfo != null)
                        {
                            ltiFolderSco = updatedSco.ScoInfo.ScoId;
                        }
                    }
                }
            }

            if (ltiFolderSco == null)
            {
                var shortcutName = MeetingTypeFactory.GetMeetingFolderShortcut(_lmsMeetingType, false).GetACEnum();
                ScoContentCollectionResult sharedMeetings = provider.GetContentsByType(shortcutName);
                if (sharedMeetings.ScoId != null && sharedMeetings.Values != null)
                {
                    ScoContent existingFolder = sharedMeetings.Values.FirstOrDefault(v => v.Name.Equals(name, StringComparison.OrdinalIgnoreCase) && v.IsFolder);
                    if (existingFolder != null)
                    {
                        ltiFolderSco = existingFolder.ScoId;
                    }
                    else
                    {
                        ScoInfoResult newFolder = provider.CreateSco(new FolderUpdateItem {
                            Name = name, FolderId = sharedMeetings.ScoId, Type = ScoType.folder
                        });
                        if (newFolder.Success && newFolder.ScoInfo != null)
                        {
                            provider.UpdatePublicAccessPermissions(newFolder.ScoInfo.ScoId, SpecialPermissionId.denied);
                            ltiFolderSco = newFolder.ScoInfo.ScoId;
                        }
                    }
                }
                if (ltiFolderSco != null && useDbFolderId)
                {
                    lmsCompany.ACScoId = ltiFolderSco;
                }
            }

            return(ltiFolderSco);
        }