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); }
private static void UpdateMeetingSession(MeetingSessionDTO dto, LmsMeetingSession dbEvent) { dbEvent.Name = dto.Name; dbEvent.Summary = dto.Summary; dbEvent.StartDate = dto.StartDate; dbEvent.EndDate = dto.EndDate; }
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); }
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)); }
private static LmsMeetingSession GetMeetingSession(MeetingSessionDTO dto, LmsCourseMeeting meeting) { var meetingSession = meeting.MeetingSessions.SingleOrDefault(x => x.Id == dto.Id) ?? new LmsMeetingSession { LmsCourseMeeting = meeting }; return(meetingSession); }
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 }); }
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); }
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)); }
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()); }
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); } } }
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()); }