/// <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 }); }
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, }); }
/// <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; }
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); }
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); }