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