public OperationResult SaveSeminarSession([FromBody] SeminarSessionInputDto seminarSessionDto) { try { // TRICK: change record meeting id to meeting sco-id LmsCourseMeeting meeting = this.LmsCourseMeetingModel.GetOneByCourseAndId(LmsCompany.Id, CourseId, long.Parse(seminarSessionDto.SeminarRoomId)); if (meeting == null) { return(OperationResult.Error(Messages.MeetingNotFound)); } //NOTE: save under admin account doesn't work for user license var ac = GetUserProvider(); ProcessQuota(ac, meeting.ScoId, seminarSessionDto); //var timeZone = AcAccountService.GetAccountDetails(ac, IoC.Resolve<ICache>()).TimeZoneInfo; var meetingUpdateResult = _seminarService.SaveSeminarSession(seminarSessionDto, meeting.ScoId, ac /*, timeZone*/); return(meetingUpdateResult); } catch (Exception ex) { string errorMessage = GetOutputErrorMessage("SaveSeminarSession", ex); return(OperationResult.Error(errorMessage)); } }
private static void FixDateTimeFields(SeminarSessionInputDto seminarSessionDto) { if (seminarSessionDto.StartTime != null) { seminarSessionDto.StartTime = seminarSessionDto.StartTime.PadLeft(8, '0'); } if (seminarSessionDto.StartDate != null) { seminarSessionDto.StartDate = seminarSessionDto.StartDate.Substring(6, 4) + "-" + seminarSessionDto.StartDate.Substring(0, 5); } }
private void ProcessQuota(IAdobeConnectProxy ac, string meetingScoId, SeminarSessionInputDto seminarSessionDto) { var seminar = ac.GetScoInfo(meetingScoId).ScoInfo; var license = _seminarService.GetSharedSeminarLicenses(ac).FirstOrDefault(x => x.ScoId == seminar.FolderId); if (license != null && !license.IsExpired) { seminarSessionDto.ExpectedLoad = license.Quota.Value; return; } var userLicense = _seminarService.GetUserSeminarLicenses(ac).FirstOrDefault(x => x.ScoId == seminar.FolderId); if (userLicense == null) { throw new InvalidOperationException($"Not found seminar license for seminar '{seminar.Name}'({seminar.ScoId})."); } seminarSessionDto.ExpectedLoad = userLicense.LicenseQuota; }
//public bool CheckEditPermissions(string licenseId, LtiParamDTO param, IAdobeConnectProxy acProxy, LmsUser lmsUser) //{ // if (!UsersSetup.IsTeacher(param)) // { // return false; // } // return GetSharedSeminarLicenses(acProxy).Any(x => !x.IsExpired && x.ScoId == licenseId) // || // GetUserSeminarLicenses(acProxy) // .Any(x => x.PrincipalId == lmsUser.PrincipalId && x.ScoId == licenseId && x.LicenseQuota > 0); //} public OperationResultWithData <Esynctraining.AdobeConnect.Api.Seminar.Dto.SeminarSessionDto> SaveSeminarSession(SeminarSessionInputDto seminarSessionDto, string seminarScoId, IAdobeConnectProxy provider //,TimeZoneInfo timeZone ) { FixDateTimeFields(seminarSessionDto); var updateItem = new Esynctraining.AdobeConnect.SeminarSessionDto { Name = seminarSessionDto.Name, Summary = seminarSessionDto.Summary, SeminarScoId = seminarScoId, ExpectedLoad = seminarSessionDto.ExpectedLoad, }; if (string.IsNullOrEmpty(seminarSessionDto.StartDate) || string.IsNullOrEmpty(seminarSessionDto.StartTime)) { updateItem.DateBegin = DateTime.Now; updateItem.DateEnd = DateTime.Now.AddDays(1); } bool isNewSeminar = string.IsNullOrEmpty(seminarSessionDto.Id); if (!isNewSeminar) { updateItem.SeminarSessionScoId = seminarSessionDto.Id; } DateTime dateBegin; if (DateTime.TryParse(seminarSessionDto.StartDate + " " + seminarSessionDto.StartTime, out dateBegin)) { updateItem.DateBegin = dateBegin; TimeSpan duration; if (TimeSpan.TryParse(seminarSessionDto.Duration, out duration)) { updateItem.DateEnd = dateBegin.AddMinutes((int)duration.TotalMinutes); } } var scoInfo = SaveSession(updateItem, provider); var newSessionDto = new Esynctraining.AdobeConnect.Api.Seminar.Dto.SeminarSessionDto { Id = scoInfo.ScoId, Name = scoInfo.Name, StartTimeStamp = (long)scoInfo.BeginDate.ConvertToUnixTimestamp(), // + (long)GetTimezoneShift(timeZone, scoInfo.BeginDate), Duration = (scoInfo.EndDate - scoInfo.BeginDate).ToString(@"h\:mm"), Summary = scoInfo.Description, AcRoomUrl = scoInfo.UrlPath.Trim('/'), IsEditable = scoInfo.BeginDate.ToUniversalTime() > DateTime.UtcNow, SeminarRoomId = seminarSessionDto.SeminarRoomId, }; return(newSessionDto.ToSuccessResult()); }