Exemple #1
0
        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));
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        //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());
        }