示例#1
0
        public async Task <MeetingSessionDTO> CreateSessionAsync(int meetingId, LtiParamDTO param)
        {
            //LmsCourseMeeting meeting = _lmsCourseMeetingModel.GetOneById(meetingId).Value;
            //MeetingNameInfo nameInfo = string.IsNullOrWhiteSpace(meeting.MeetingNameJson)
            //    ? new MeetingNameInfo()
            //    : JsonConvert.DeserializeObject<MeetingNameInfo>(meeting.MeetingNameJson);
            //var lastEvent = meeting.MeetingSessions.OrderByDescending(x => x.StartDate).FirstOrDefault();
            DateTime startDate = DateTime.UtcNow.AddHours(1);
            DateTime endDate   = startDate.AddHours(1);
            //if (lastEvent != null)
            //{
            //    startDate = lastEvent.StartDate.AddDays(1);
            //    endDate = lastEvent.EndDate.AddDays(1);
            //}
            var ev = new MeetingSessionDTO
            {
                //Name = nameInfo.meetingName + " #",
                Summary   = string.Empty,
                StartDate = startDate,
                EndDate   = endDate,
            };

            if (_calendarExportService != null)
            {
                var session = await _calendarExportService.SaveEventsAsync(meetingId, new MeetingSessionDTO[] { ev }, param, _license);

                return(session.Single());
            }

            return(ev);
        }
示例#2
0
 private static void UpdateMeetingSession(MeetingSessionDTO dto, LmsMeetingSession dbEvent)
 {
     dbEvent.Name      = dto.Name;
     dbEvent.Summary   = dto.Summary;
     dbEvent.StartDate = dto.StartDate;
     dbEvent.EndDate   = dto.EndDate;
 }
示例#3
0
        public async Task <MeetingSessionDTO> SaveSessionAsync(int meetingId, MeetingSessionDTO dto, LtiParamDTO param)
        {
            //LmsCourseMeeting meeting = _lmsCourseMeetingModel.GetOneById(meetingId).Value;
            //var dbEvent = meeting.MeetingSessions.SingleOrDefault(x => x.Id == dto.Id)
            //       ?? new LmsMeetingSession { LmsCourseMeeting = meeting };

            //if (dbEvent.Id == 0)
            //{
            //    meeting.MeetingSessions.Add(dbEvent);
            //}

            if (_calendarExportService != null)
            {
                //dto.EventId = dto.Id.ToString();
                var session = await _api.UpdateSession(param.course_id.ToString(), int.Parse(dto.EventId),
                                                       new LiveSessionRequest { start_at = dto.StartDate, end_at = dto.EndDate, notes = dto.Summary },
                                                       _license.GetLMSSettings(null)); //todo: settings parameter

                return(ConvertToDto(session));
                //_calendarExportService.SaveEventsAsync(meetingId, new MeetingSessionDTO[] { dto }, param, _license);
                //dto = sakaiEventResult.Single();
            }
            //dbEvent.Name = dto.Name;
            //dbEvent.Summary = dto.Summary;
            //dbEvent.StartDate = dto.StartDate;
            //dbEvent.EndDate = dto.EndDate;

            //_lmsCourseMeetingModel.RegisterSave(meeting, true);
            //return ConvertFromEntity(dbEvent);
            return(null);
        }
示例#4
0
        public async Task <MeetingSessionDTO> CreateSessionAsync(int meetingId, LtiParamDTO param)
        {
            LmsCourseMeeting meeting = _lmsCourseMeetingModel.GetOneById(meetingId).Value;

            MeetingNameInfo nameInfo = string.IsNullOrWhiteSpace(meeting.MeetingNameJson)
                ? new MeetingNameInfo()
                : JsonConvert.DeserializeObject <MeetingNameInfo>(meeting.MeetingNameJson);

            var      lastEvent = meeting.MeetingSessions.OrderByDescending(x => x.StartDate).FirstOrDefault();
            DateTime startDate = DateTime.UtcNow.AddHours(1);
            DateTime endDate   = startDate.AddHours(1);

            if (lastEvent != null)
            {
                startDate = lastEvent.StartDate.AddDays(1);
                endDate   = lastEvent.EndDate.AddDays(1);
            }

            var ev = new MeetingSessionDTO
            {
                Name      = nameInfo.meetingName + " #",
                Summary   = string.Empty,
                StartDate = startDate,
                EndDate   = endDate,
            };

            if (_calendarExportService != null)
            {
                var sakaiEventResult = await _calendarExportService.SaveEventsAsync(meetingId, new MeetingSessionDTO[] { ev }, param, _license);

                ev = sakaiEventResult.Single();
            }
            var dbEvent = new LmsMeetingSession
            {
                LmsCalendarEventId = ev.EventId,
                Name             = ev.Name,
                StartDate        = ev.StartDate,
                EndDate          = ev.EndDate,
                LmsCourseMeeting = meeting,
            };

            if (_calendarEventService != null)
            {
                var lmsSettings = _license.GetLMSSettings(Settings);
                LmsCalendarEventDTO calendarEventDto = new LmsCalendarEventDTO()
                {
                    Title   = dbEvent.Name,
                    StartAt = dbEvent.StartDate,
                    EndAt   = dbEvent.EndDate
                };
                LmsCalendarEventDTO newClaendarEventDto = await _calendarEventService.CreateEvent(param.course_id.ToString(), lmsSettings, calendarEventDto);

                dbEvent.LmsCalendarEventId = newClaendarEventDto?.Id;
            }

            meeting.MeetingSessions.Add(dbEvent);
            _lmsCourseMeetingModel.RegisterSave(meeting, true);
            return(ConvertFromEntity(dbEvent));
        }
示例#5
0
        private static LmsMeetingSession GetMeetingSession(MeetingSessionDTO dto, LmsCourseMeeting meeting)
        {
            var meetingSession = meeting.MeetingSessions.SingleOrDefault(x => x.Id == dto.Id)
                                 ?? new LmsMeetingSession {
                LmsCourseMeeting = meeting
            };

            return(meetingSession);
        }
示例#6
0
 private ExternalEventDto ConvertSessionDtoToApiDto(MeetingSessionDTO dto)
 {
     return(new ExternalEventDto
     {
         ExternalId = dto.EventId,
         EgcId = dto.Id > 0 ? dto.Id.ToString() : dto.EventId,
         Name = dto.Name,
         Description = dto.Summary ?? string.Empty,
         StartDate = dto.StartDate,
         EndDate = dto.EndDate
     });
 }
示例#7
0
        private MeetingSessionDTO ConvertFromEntity(LmsMeetingSession entity)
        {
            var result = new MeetingSessionDTO
            {
                Id        = entity.Id,
                Name      = entity.Name,
                StartDate = entity.StartDate,
                EndDate   = entity.EndDate,
                Summary   = entity.Summary,
            };

            return(result);
        }
示例#8
0
        public async Task <MeetingSessionDTO> SaveSessionAsync(int meetingId, MeetingSessionDTO dto, LtiParamDTO param)
        {
            LmsCourseMeeting meeting = _lmsCourseMeetingModel.GetOneById(meetingId).Value;
            var meetingSession       = GetMeetingSession(dto, meeting);

            if (meetingSession.Id == 0)
            {
                meeting.MeetingSessions.Add(meetingSession);
            }

            await UpdateCalendarEvent(dto, param, meetingSession);

            UpdateMeetingSession(dto, meetingSession);
            _lmsCourseMeetingModel.RegisterSave(meeting, true);
            return(ConvertFromEntity(meetingSession));
        }
示例#9
0
        public async Task <IEnumerable <MeetingSessionDTO> > CreateBatchAsync(CreateMeetingSessionsBatchDto dto, LtiParamDTO param)
        {
            LmsCourseMeeting meeting   = _lmsCourseMeetingModel.GetOneById(dto.MeetingId).Value;
            DateTime         startDate = dto.StartTimestamp;

            var endDate = TimeSpan.TryParse(dto.Duration, out var duration)
                ? startDate.AddMinutes((int)duration.TotalMinutes)
                : startDate.AddHours(1);

            //MeetingNameInfo nameInfo = string.IsNullOrWhiteSpace(meeting.MeetingNameJson)
            //    ? new MeetingNameInfo()
            //    : JsonConvert.DeserializeObject<MeetingNameInfo>(meeting.MeetingNameJson);
            //var meetingName = nameInfo.meetingName ?? nameInfo.reusedMeetingName;
            //int i = 1;
            var latestDateToCheck = startDate.AddDays(dto.Weeks * 7);

            var listOfEvents = new List <MeetingSessionDTO>();

            while (startDate < latestDateToCheck)
            {
                if (dto.DaysOfWeek.Contains((int)startDate.DayOfWeek))
                {
                    var ev = new MeetingSessionDTO
                    {
                        //Name = meetingName + " #" + i.ToString(),
                        Summary   = string.Empty,
                        StartDate = startDate, //.ToString("yyyy-MM-dd HH:mm"),
                        EndDate   = endDate,   //.ToString("yyyy-MM-dd HH:mm"),
                    };
                    listOfEvents.Add(ev);
                    //i++;
                }

                startDate = startDate.AddDays(1);
                endDate   = endDate.AddDays(1);
            }

            if (_calendarExportService != null)
            {
                listOfEvents = (await _calendarExportService.SaveEventsAsync(meeting.Id, listOfEvents, param, _license))
                               .ToList();
            }

            return(listOfEvents.ToArray());
        }
示例#10
0
 private async Task UpdateCalendarEvent(MeetingSessionDTO dto, LtiParamDTO param, LmsMeetingSession dbEvent)
 {
     if (_calendarEventService != null)
     {
         if (!string.IsNullOrEmpty(dbEvent.LmsCalendarEventId))
         {
             var lmsSettings = _license.GetLMSSettings(Settings);
             LmsCalendarEventDTO calendarEventDto = new LmsCalendarEventDTO
             {
                 Id      = dbEvent.LmsCalendarEventId,
                 Title   = dto.Name,
                 StartAt = dto.StartDate,
                 EndAt   = dto.EndDate
             };
             await _calendarEventService.UpdateEvent(param.course_id.ToString(), lmsSettings, calendarEventDto);
         }
     }
 }
示例#11
0
        public async Task <IEnumerable <MeetingSessionDTO> > CreateBatchAsync(CreateMeetingSessionsBatchDto dto, LtiParamDTO param)
        {
            LmsCourseMeeting meeting   = _lmsCourseMeetingModel.GetOneById(dto.MeetingId).Value;
            DateTime         startDate = dto.StartTimestamp;

            if (dto.StartTimestamp < DateTime.UtcNow) //todo: remove these crazy conditions and parsing
            {
                throw new ArgumentException("Start time should be more then current time");
            }

            var endDate = TimeSpan.TryParse(dto.Duration, out var duration)
                ? startDate.AddMinutes((int)duration.TotalMinutes)
                : startDate.AddHours(1);

            MeetingNameInfo nameInfo = string.IsNullOrWhiteSpace(meeting.MeetingNameJson)
                ? new MeetingNameInfo()
                : JsonConvert.DeserializeObject <MeetingNameInfo>(meeting.MeetingNameJson);
            var meetingName       = nameInfo.meetingName ?? nameInfo.reusedMeetingName;
            int i                 = 1;
            var latestDateToCheck = startDate.AddDays(dto.Weeks * 7);

            var listOfEvents = new List <MeetingSessionDTO>();

            while (startDate < latestDateToCheck)
            {
                if (dto.DaysOfWeek.Contains((int)startDate.DayOfWeek))
                {
                    var ev = new MeetingSessionDTO
                    {
                        Name      = meetingName + " #" + i.ToString(),
                        Summary   = string.Empty,
                        StartDate = startDate, //.ToString("yyyy-MM-dd HH:mm"),
                        EndDate   = endDate,   //.ToString("yyyy-MM-dd HH:mm"),
                    };
                    listOfEvents.Add(ev);
                    i++;
                }

                startDate = startDate.AddDays(1);
                endDate   = endDate.AddDays(1);
            }

            if (_calendarExportService != null)
            {
                listOfEvents = (await _calendarExportService.SaveEventsAsync(meeting.Id, listOfEvents, param, _license))
                               .ToList();
            }

            meeting.MeetingSessions.AddRange(listOfEvents.Select(x => new LmsMeetingSession
            {
                LmsCalendarEventId = x.EventId,
                Name             = x.Name,
                StartDate        = x.StartDate,
                EndDate          = x.EndDate,
                LmsCourseMeeting = meeting
            }));

            await CreateCalendarEvents(param, meeting);

            _lmsCourseMeetingModel.RegisterSave(meeting, true);
            return(meeting.MeetingSessions.Select(ConvertFromEntity).ToArray());
        }