Beispiel #1
0
 /// <summary>
 /// The to model.
 /// </summary>
 /// <param name="entity">
 /// The entity.
 /// </param>
 /// <returns>
 /// The <see cref="ScoContentModel"/>.
 /// </returns>
 public static ScoContentModel ToModel(this ScoContent entity)
 {
     return(new ScoContentModel
     {
         ScoId = entity.ScoId,
         SourceScoId = entity.SourceScoId,
         FolderId = entity.FolderId,
         Type = entity.Type,
         Name = entity.Name,
         Description = entity.Description,
         Path = entity.UrlPath,
         BeginDate = entity.BeginDate,
         EndDate = entity.EndDate,
         DateCreated = entity.DateCreated,
         DateModified = entity.DateModified,
         Duration = entity.Duration
     });
 }
Beispiel #2
0
        public ScoContentDto Map(ScoContent sco)
        {
            if (sco == null)
            {
                throw new ArgumentNullException(nameof(sco));
            }

            return(new ScoContentDto
            {
                ScoId = sco.ScoId,
                Name = sco.Name,
                IsFolder = sco.IsFolder,
                Icon = sco.Icon,
                BeginDate = sco.BeginDate,
                EndDate = sco.EndDate,
                DateModified = sco.DateModified,
                ByteCount = sco.ByteCount,
                Description = sco.Description,
            });
        }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ScoContentResult"/> class.
 /// </summary>
 /// <param name="status">
 /// The status.
 /// </param>
 /// <param name="value">
 /// The value.
 /// </param>
 public ScoContentResult(StatusInfo status, ScoContent value)
     : base(status)
 {
     this.ScoContent = value;
 }
Beispiel #4
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);
        }
Beispiel #5
0
        private SeminarDto GetDtoByScoInfo(
            IAdobeConnectProxy provider,
            LmsUser lmsUser,
            LtiParamDTO param,
            LmsCompany lmsCompany,
            ScoContent seminar,
            LmsCourseMeeting seminarMeeting,
            //TimeZoneInfo timeZone,
            bool isEditable,
            StringBuilder trace = null)
        {
            var psw = Stopwatch.StartNew();

            bool meetingExistsInAC;
            IEnumerable <MeetingPermissionInfo> permission = provider.GetMeetingPermissions(seminar.ScoId,
                                                                                            new List <string> {
                "public-access", lmsUser.PrincipalId
            },
                                                                                            out meetingExistsInAC).Values;

            psw.Stop();
            if (trace != null)
            {
                trace.AppendFormat("\t GetMeetings - AC GetMeetingPermissions time: {0}. MeetingId: {1}\r\n", psw.Elapsed.ToString(), seminar.ScoId);
            }

            if (!meetingExistsInAC)
            {
                return(null);
            }

            var canJoin = this.CanJoin(lmsUser, permission) || GetGuestAuditRoleMappings(lmsCompany, param).Any() ||
                          (lmsCompany.UseSynchronizedUsers && seminarMeeting.EnableDynamicProvisioning);

            MeetingPermissionInfo permissionInfo = permission != null
                ? permission.FirstOrDefault(x => x.PrincipalId == "public-access" && x.PermissionId != MeetingPermissionId.none)
                : null;

            var sw = Stopwatch.StartNew();

            sw.Stop();
            if (trace != null)
            {
                trace.AppendFormat("\t GetMeetings - DB GetByCompanyAndScoId time: {0}. MeetingId: {1}\r\n", sw.Elapsed.ToString(), seminar.ScoId);
            }

            var scoInfo = provider.GetScoInfo(seminar.ScoId);

            var ret = new SeminarDto
            {
                Id             = long.Parse(seminar.ScoId),
                AcRoomUrl      = seminar.UrlPath.Trim("/".ToCharArray()),
                Name           = seminar.Name,
                Summary        = seminar.Description,
                Template       = seminar.SourceScoId,
                StartTimeStamp = (long)seminar.BeginDate.ConvertToUnixTimestamp(), // + (long)GetTimezoneShift(timeZone, seminar.BeginDate),
                Duration       = (seminar.EndDate - seminar.BeginDate).ToString(@"h\:mm"),
                // TRICK: .Replace("-", "_") for "view_hidded" on client-side
                AccessLevel = permissionInfo != null?permissionInfo.PermissionId.ToString().Replace("-", "_") : "remove",
                                  CanJoin     = canJoin,
                                  IsEditable  = isEditable,
                                  Type        = (int)LmsMeetingType.Seminar,
                                  OfficeHours = null,
                                  Reused      = false,

                                  AudioProfileId   = scoInfo.ScoInfo.TelephonyProfile, // TODO: ???seminar.AudioProfileId
                                  SeminarLicenseId = seminar.FolderId.ToString(),
            };

            return(ret);
        }