Example #1
0
 public MeetingFolderBuilder(LmsCompany lmsCompany, IAdobeConnectProxy provider, bool useLmsUserEmailForSearch, LmsMeetingType lmsMeetingType = LmsMeetingType.Meeting)
 {
     _lmsCompany = lmsCompany ?? throw new ArgumentNullException(nameof(lmsCompany));
     _provider   = provider ?? throw new ArgumentNullException(nameof(provider));
     _useLmsUserEmailForSearch = useLmsUserEmailForSearch;
     _lmsMeetingType           = lmsMeetingType;
 }
Example #2
0
        private void ProcessAc(LmsCompany lmsCompany)
        {
            IAdobeConnectProxy provider = IoC.Resolve <IAdobeConnectAccountService>().GetProvider(lmsCompany);

            var stopwatch = Stopwatch.StartNew();

            var result = provider.GetAllPrincipals();

            stopwatch.Stop();
            var acTime = stopwatch.Elapsed;

            if (!result.Success)
            {
                _log.WriteLine("    GetAllPrincipals Issue:" + result.Status.Code);
                return;
            }

            stopwatch = Stopwatch.StartNew();

            var table = new AcCacheDataSet.AcCachePrincipalDataTable();

            foreach (Principal p in result.Values)
            {
                AddToTable(table, p, lmsCompany.Id);
            }
            BatchBulkCopy(table, "AcCachePrincipal", 500);

            stopwatch.Stop();
            var dbTime = stopwatch.Elapsed;

            _log.WriteLine("    PrincipalCount: " + result.Values.Count() + ". AC fetch time: " + acTime.ToString() + ". DB save time: " + dbTime.ToString());
        }
Example #3
0
        public ScoInfo SaveSeminar(SeminarUpdateItem seminar, IAdobeConnectProxy provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (seminar == null)
            {
                throw new ArgumentNullException(nameof(seminar));
            }

            if (string.IsNullOrWhiteSpace(seminar.ScoId))
            {
                throw new ArgumentException("sco-id can't be empty.", nameof(seminar));
            }

            if (!string.IsNullOrWhiteSpace(seminar.UrlPath))
            {
                throw new InvalidOperationException("UrlPath can't be updated.");
            }
            else
            {
                seminar.UrlPath = null;
            }

            ScoInfoResult result = provider.UpdateSco(seminar);

            return(ProcessResult(result));
        }
Example #4
0
        private static void CreateUserFoldersStructure(string folderScoId, IAdobeConnectProxy provider,
                                                       string userFolderName,
                                                       string userMeetingsFolderName,
                                                       out string innerFolderScoId)
        {
            var folderContent = provider.GetContentsByScoId(folderScoId);
            var userFolder    = folderContent.Values.FirstOrDefault(x => x.Name == userFolderName);

            if (userFolder == null)
            {
                var userFolderScoId         = CreateFolder(folderScoId, userFolderName, provider);
                var userMeetingsFolderScoId = CreateFolder(userFolderScoId, userMeetingsFolderName, provider);
                innerFolderScoId = userMeetingsFolderScoId;
                return;
            }

            var userFolderContent  = provider.GetContentsByScoId(userFolder.ScoId);
            var userMeetingsFolder = userFolderContent.Values.FirstOrDefault(x => x.Name == userMeetingsFolderName);

            if (userMeetingsFolder == null)
            {
                innerFolderScoId = CreateFolder(userFolder.ScoId, userMeetingsFolderName, provider);
                return;
            }

            innerFolderScoId = userMeetingsFolder.ScoId;
        }
Example #5
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());
        }
Example #6
0
        public Principal GetPrincipalByLoginOrEmail(
            IAdobeConnectProxy provider,
            string login,
            string email,
            bool searchByEmail)
        {
            if (searchByEmail && string.IsNullOrWhiteSpace(email))
            {
                return(null);
            }
            if (!searchByEmail && string.IsNullOrWhiteSpace(login))
            {
                return(null);
            }

            PrincipalCollectionResult result = searchByEmail
                ? provider.GetAllByEmail(email)
                : provider.GetAllByLogin(login);

            if (!result.Success)
            {
                return(null);
            }

            return(result.Return(x => x.Values, Enumerable.Empty <Principal>()).FirstOrDefault());
        }
Example #7
0
        public OperationResult AddAudioProfileToMeeting(IAdobeConnectProxy provider, string meetingScoId, string audioProfileId)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (string.IsNullOrWhiteSpace(meetingScoId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(meetingScoId));
            }
            if (string.IsNullOrWhiteSpace(audioProfileId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(audioProfileId));
            }

            //todo: telephony-profile-info to AC provider
            var telephonyProfileInfoResult = provider.TelephonyProfileInfo(audioProfileId);

            if (telephonyProfileInfoResult.Success && telephonyProfileInfoResult.TelephonyProfile != null)
            {
                provider.UpdateAclField(meetingScoId, AclFieldId.telephony_profile, audioProfileId);
                return(OperationResult.Success());
            }

            logger.ErrorFormat($"Error occured when tried to AddAudioProfileToMeeting. ProfileId={audioProfileId}.");
            return(OperationResult.Error("Couldn't get audio profile."));
        }
Example #8
0
        public static StatusInfo UpdateScoPermissionForPrincipal(this IAdobeConnectProxy provider, string meetingScoId, string userPrincipalId, MeetingPermissionId permission)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (string.IsNullOrWhiteSpace(meetingScoId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(meetingScoId));
            }
            if (string.IsNullOrWhiteSpace(userPrincipalId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(userPrincipalId));
            }

            return(provider.UpdateScoPermissions(new MeetingPermissionUpdateTrio[]
            {
                new MeetingPermissionUpdateTrio
                {
                    ScoId = meetingScoId,
                    PrincipalId = userPrincipalId,
                    PermissionId = permission,
                }
            }));
        }
Example #9
0
        private ScoInfo DoGetSco(string scoId, IAdobeConnectProxy ac, string principalId)
        {
            // check is user already has read permission!!!
            // TODO: setup only if source recording is accessible??
            //  ac.UpdateScoPermissionForPrincipal(scoId, principalId, MeetingPermissionId.view);
            var sco = ac.GetScoInfo(scoId);

            if (sco.Status.Code == Esynctraining.AC.Provider.Entities.StatusCodes.no_access && sco.Status.SubCode == StatusSubCodes.denied)
            {
                Logger.ErrorFormat("DoGetSco: {0}. sco-id:{1}.", sco.Status.GetErrorInfo(), scoId);
                throw new WarningMessageException("Access denied.");
            }
            if (sco.Status.Code == Esynctraining.AC.Provider.Entities.StatusCodes.no_data && sco.Status.SubCode == StatusSubCodes.not_set)
            {
                Logger.ErrorFormat("DoGetSco: {0}. sco-id:{1}.", sco.Status.GetErrorInfo(), scoId);
                throw new WarningMessageException("File not found in Adobe Connect.");
            }
            else if (!sco.Success)
            {
                Logger.ErrorFormat("DoGetSco: {0}. sco-id:{1}.", sco.Status.GetErrorInfo(), scoId);
                string msg = string.Format("[AdobeConnectProxy Error] {0}. Parameter1:{1}.",
                                           sco.Status.GetErrorInfo(),
                                           scoId);
                throw new InvalidOperationException(msg);
            }

            return(sco.ScoInfo);
        }
Example #10
0
        private string LoginCurrentUser(out IAdobeConnectProxy adminProvider)
        {
            //try
            //{
            var param   = Session.LtiSession.LtiParam;
            var lmsUser = Session.LmsUser;

            if (lmsUser.PrincipalId == null)
            {
                throw new WarningMessageException("User doesn't have account in Adobe Connect.");
            }

            adminProvider = GetAdminProvider();
            string breezeToken = MeetingSetup.ACLogin(LmsCompany, param, lmsUser, adminProvider).BreezeSession;

            if (breezeToken == null)
            {
                throw new WarningMessageException("There is an issue with login to Adobe Connect.");
            }

            return(breezeToken);
            //}
            //catch (Exception ex)
            //{
            //    //string errorMessage = GetOutputErrorMessage("ContentApi-LoginCurrentUser", ex);
            //    throw;
            //}
        }
Example #11
0
        public IEnumerable <UserSeminarLicenseSco> GetUserSeminarLicenses(IAdobeConnectProxy provider)
        {
            var seminarsShortcutId = GetSeminarsShortcutId(provider);
            var result             = provider.GetUserSeminarLicenses(seminarsShortcutId);

            return(result.Values);
        }
Example #12
0
 public IEnumerable <TemplateDto> GetMyMeetingTemplates(IAdobeConnectProxy api)
 {
     if (api == null)
     {
         throw new ArgumentNullException(nameof(api));
     }
     return(GetShortcutContentsFromApi(api, ScoShortcutType.my_meeting_templates.GetACEnum()));
 }
Example #13
0
        private Principal CreatePrincipal(
            IAdobeConnectProxy provider,
            string login,
            string email,
            string firstName,
            string lastName,
            bool acUsesEmailAsLogin)
        {
            if (string.IsNullOrWhiteSpace(firstName))
            {
                throw new Core.WarningMessageException("Adobe Connect User's First Name can't be empty.");
            }
            if (string.IsNullOrWhiteSpace(lastName))
            {
                throw new Core.WarningMessageException("Adobe Connect User's Last Name can't be empty.");
            }

            var setup = new PrincipalSetup
            {
                Email     = string.IsNullOrWhiteSpace(email) ? null : email,
                FirstName = firstName,
                LastName  = lastName,
                Name      = login,
                Login     = login,
                Type      = PrincipalType.user,
            };

            PrincipalResult pu = provider.PrincipalUpdate(setup, false, false);

            if (!pu.Success)
            {
                if (pu.Status.InvalidField == "login" && pu.Status.SubCode == StatusSubCodes.duplicate)
                {
                    if (acUsesEmailAsLogin)
                    {
                        UserCollectionResult guestsByEmail = provider.ReportGuestsByEmail(HttpUtilsInternal.UrlEncode(email));
                        if (guestsByEmail.Success && guestsByEmail.Values.Any())
                        {
                            throw new Core.WarningMessageException(string.Format(Messages.PrincipalEmailUsedForGuest, email));
                        }
                    }
                    else
                    {
                        UserCollectionResult guestsByLogin = provider.ReportGuestsByLogin(login);
                        if (guestsByLogin.Success && guestsByLogin.Values.Any())
                        {
                            throw new Core.WarningMessageException(string.Format(Messages.PrincipalLoginUsedForGuest, login));
                        }
                    }
                }
            }

            if (pu.Principal != null)
            {
                return(pu.Principal);
            }
            return(null);
        }
Example #14
0
        public ScoInfo SaveSession(SeminarSessionDto sessionItem, IAdobeConnectProxy provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (sessionItem == null)
            {
                throw new ArgumentNullException(nameof(sessionItem));
            }
            if (sessionItem.ExpectedLoad <= 0)
            {
                throw new ArgumentException("ExpectedLoad should have positive value", nameof(sessionItem));
            }

            var isNewSession = string.IsNullOrWhiteSpace(sessionItem.SeminarSessionScoId);
            var session      = new SeminarSessionUpdateItem
            {
                ScoId       = sessionItem.SeminarSessionScoId,
                FolderId    = sessionItem.SeminarScoId,
                Type        = ScoType.seminarsession,
                Name        = sessionItem.Name,
                Description = sessionItem.Summary
            };

            ScoInfoResult sessionScoResult = isNewSession ? provider.CreateSco(session) : provider.UpdateSco(session);
            ScoInfo       sessionSco       = ProcessResult(sessionScoResult);

            var sessionSettingsResult = provider.SeminarSessionScoUpdate(new SeminarSessionScoUpdateItem
            {
                ScoId       = sessionSco.ScoId,
                Name        = sessionSco.Name,
                DateBegin   = sessionItem.DateBegin.ToString(AcDateFormat),
                DateEnd     = sessionItem.DateEnd.ToString(AcDateFormat),
                ParentAclId = sessionItem.SeminarScoId,
                SourceScoId = sessionItem.SeminarScoId,
            });

            // if session was not updated correctly, it's sco would appear in the list anyway
            // with wrong parameters(dates) => deleting just created session in case of unsuccessful update
            if (!sessionSettingsResult.Success && isNewSession)
            {
                provider.DeleteSco(sessionSco.ScoId);
            }

            var result = ProcessResult(sessionSettingsResult);

            StatusInfo loadResult = provider.UpdateAclField(result.ScoId, AclFieldId.seminar_expected_load, sessionItem.ExpectedLoad.ToString());

            if ((loadResult.Code != StatusCodes.ok) && isNewSession)
            {
                provider.DeleteSco(sessionSco.ScoId);
            }

            return(result);
        }
Example #15
0
        public string GetPasscode(ILmsLicense lmsCompany, IAdobeConnectProxy provider, string scoId)
        {
            var info = provider.GetScoInfo(scoId);

            if (!info.Success)
            {
                return(string.Empty);
            }

            return(info.ScoInfo.MeetingPasscode);
        }
Example #16
0
        protected IAdobeConnectProxy GetAdobeConnectProvider(ILmsLicense lmsCompany)
        {
            IAdobeConnectProxy provider = null;

            if (lmsCompany != null)
            {
                provider = acAccountService.GetProvider(new AdobeConnectAccess(new Uri(lmsCompany.AcServer), lmsCompany.AcUsername, lmsCompany.AcPassword), true);
            }

            return(provider);
        }
Example #17
0
        public IEnumerable <ScoContent> GetSeminars(string seminarLicenseScoId, IAdobeConnectProxy provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            var sessionResult = provider.GetContentsByScoId(seminarLicenseScoId);

            return(sessionResult.Values.Where(x => x.Type == "meeting" && x.IsSeminar));
        }
Example #18
0
        private bool IsPublicRecording(string recordingScoId, IAdobeConnectProxy acProxy)
        {
            var moreDetails = acProxy.GetScoPublicAccessPermissions(recordingScoId, skipAcError: true);
            var isPublic    = false;

            if (moreDetails.Success && moreDetails.Values.Any())
            {
                isPublic = moreDetails.Values.First().PermissionId == PermissionId.view;
            }

            return(isPublic);
        }
Example #19
0
        public StatusInfo DeleteSeminar(string seminarScoId, IAdobeConnectProxy provider)
        {
            if (string.IsNullOrWhiteSpace(seminarScoId))
            {
                throw new ArgumentException("Empty sco-id value", nameof(seminarScoId));
            }
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            return(provider.DeleteSco(seminarScoId));
        }
Example #20
0
        public ContentEditControllerHelper(ILogger logger, IAdobeConnectProxy acProxy)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (acProxy == null)
            {
                throw new ArgumentNullException(nameof(acProxy));
            }

            _logger  = logger;
            _acProxy = acProxy;
        }
Example #21
0
        public ContentService(ILogger logger, IAdobeConnectProxy provider)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            _logger   = logger;
            _provider = provider;
        }
Example #22
0
        public IEnumerable <PrincipalReportDto> GetMeetingHostReport(IAdobeConnectProxy provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            var group = provider.GetGroupsByType(PrincipalType.live_admins);

            if (group.Status.Code != StatusCodes.ok)
            {
                throw new InvalidOperationException("AC.GetGroupsByType error");
            }

            PrincipalCollectionResult usersResult = provider.GetGroupUsers(group.Values.First().PrincipalId);

            if (usersResult.Status.Code != StatusCodes.ok)
            {
                throw new InvalidOperationException("AC.GetGroupUsers error");
            }

            var result = new List <PrincipalReportDto>();

            foreach (Principal user in usersResult.Values)
            {
                var item = new PrincipalReportDto
                {
                    Principal = PrincipalDto.Build(user),
                };

                TransactionCollectionResult trxResult = provider.ReportMeetingTransactionsForPrincipal(user.PrincipalId, startIndex: 0, limit: 1);

                if (trxResult.Status.Code != StatusCodes.ok)
                {
                    throw new InvalidOperationException("AC.ReportMeetingTransactionsForPrincipal error");
                }

                TransactionInfo trx = trxResult.Values.FirstOrDefault();

                if (trx != null)
                {
                    item.LastTransaction = TransactionInfoDto.Build(trx);
                }

                result.Add(item);
            }

            return(result.AsReadOnly());
        }
Example #23
0
        public TelephonyProfile GetAudioProfileInfo(IAdobeConnectProxy provider, string profileId)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (string.IsNullOrWhiteSpace(profileId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(profileId));
            }

            var profile = provider.TelephonyProfileInfo(profileId);

            return(profile.Success ? profile.TelephonyProfile : null);
        }
Example #24
0
        public OperationResult DeleteAudioProfile(string audioProfileId, IAdobeConnectProxy provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (string.IsNullOrWhiteSpace(audioProfileId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(audioProfileId));
            }

            var deleteProfileStatus = provider.TelephonyProfileDelete(audioProfileId);

            return(OperationResult.Success());
        }
Example #25
0
        public IEnumerable <TelephonyProfile> GetAudioProfiles(IAdobeConnectProxy provider, string principalId)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (string.IsNullOrWhiteSpace(principalId))
            {
                throw new ArgumentException("Non-empty value expected", nameof(principalId));
            }

            var telephonyPrfilesListResult = provider.TelephonyProfileList(principalId);
            var profiles = telephonyPrfilesListResult.Values.ToList();

            return(profiles);
        }
Example #26
0
        public IEnumerable <TemplateDto> GetCachedTemplates(IAdobeConnectProxy api, ICache cache, Func <string> cacheKeyFactory, ScoShortcutType scoShortcut)
        {
            if (api == null)
            {
                throw new ArgumentNullException(nameof(api));
            }
            if (cache == null)
            {
                throw new ArgumentNullException(nameof(cache));
            }

            var item = CacheUtility.GetCachedItem <IEnumerable <TemplateDto> >(cache, cacheKeyFactory(),
                                                                               () => GetShortcutContentsFromApi(api, scoShortcut.GetACEnum()));

            return(item);
        }
Example #27
0
        private static string CreateFolder(string folderScoId, string folderName, IAdobeConnectProxy provider)
        {
            var newFolder = provider.CreateSco(new FolderUpdateItem
            {
                Name     = folderName.TruncateIfMoreThen(60),
                FolderId = folderScoId,
                Type     = ScoType.folder
            });

            if (!newFolder.Success)
            {
                var msg = string.Format("[AdobeConnectProxy Error] CreateSco " + "Parameters: FolderId:{0}, Name:{1}", folderScoId, folderName);
                throw new InvalidOperationException(msg);
            }
            return(newFolder.ScoInfo.ScoId);
        }
Example #28
0
        private List <ACSessionDto> GetSessionsWithParticipantsBySessionTime(string meetingId, List <MeetingAttendee> meetingAttendees,
                                                                             IAdobeConnectProxy acp, TimeZoneInfo timeZone, int startIndex = 0, int limit = 0)
        {
            List <MeetingSession> sessions = acp.ReportMeetingSessions(meetingId, startIndex: startIndex, limit: limit).Values.ToList();
            var result = sessions.Select(sco => new ACSessionDto(sco, timeZone)).ToList();

            var unprocessedAttendees = new List <MeetingAttendee>();

            foreach (var attendee in meetingAttendees)
            {
                var session = result.FirstOrDefault(x => x.dateStarted <= attendee.DateCreated && (!x.dateEnded.HasValue || attendee.DateEnd <= x.dateEnded));
                if (session != null)
                {
                    session.participants.Add(new ACSessionParticipantDto(attendee, timeZone));
                    //if (string.IsNullOrEmpty(session.meetingName))
                    //{
                    //    session.meetingName = attendee.ScoName;
                    //}
                }
                else
                {
                    unprocessedAttendees.Add(attendee);
                }
            }
            //unlikely possible case, need to check
            if (unprocessedAttendees.Count > 0)
            {
                var maxDate = result.Max(x => x.dateStarted);
                var ua      = unprocessedAttendees.Where(x => x.DateCreated >= maxDate);
                if (ua.Any())
                {
                    var currentSessionNumber = result.Max(x => x.sessionNumber);
                    result.Add(new ACSessionDto
                    {
                        sessionNumber = currentSessionNumber + 1,
                        //sessionName = (currentSessionNumber + 1).ToString(CultureInfo.CurrentCulture),
                        dateStarted  = ua.Min(x => x.DateCreated),
                        participants = ua.Select(attendee => new ACSessionParticipantDto(attendee, timeZone)).ToList(),
                        //meetingName = ua.First().ScoName,
                    });
                }
            }

            GroupSessionParticipants(result);
            return(result.OrderBy(s => s.sessionNumber).ToList());
        }
Example #29
0
        public ACDetailsDTO GetAccountDetails(IAdobeConnectProxy provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            CommonInfoResult commonInfo = provider.GetCommonInfo();

            if (!commonInfo.Success)
            {
                _logger.ErrorFormat("GetAccountDetails.GetCommonInfo. AC error:{0}.", commonInfo.Status.GetErrorInfo());
                return(null);
            }

            if (commonInfo.CommonInfo.AccountId.HasValue)
            {
                FieldCollectionResult fields = provider.GetAclFields(commonInfo.CommonInfo.AccountId.Value);

                if (fields.Status.Code != StatusCodes.ok)
                {
                    _logger.ErrorFormat("GetAccountDetails.GetAclFields. AC error. Code:{0}.SubCode:{1}.", fields.Status.Code, fields.Status.SubCode);
                    return(null);
                }

                var dto = new ACDetailsDTO
                {
                    Version          = commonInfo.CommonInfo.Version,
                    PasswordPolicies = ParsePasswordPolicies(fields),
                    Customization    = ParseCustomization(fields, provider),
                    TimeZoneJavaId   = commonInfo.CommonInfo.TimeZoneJavaId,
                };
                //var timeZone = GetTimeZone(commonInfo.CommonInfo);
                int session;
                int.TryParse(GetField(fields, "web-session-timeout-minutes"), out session);
                dto.SessionTimeout = session;

                //dto.SetTimeZone(timeZone);

                return(dto);
            }

            _logger.Error("GetAccountDetails. Account is NULL");
            return(null);
        }
Example #30
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());
        }