private static void FixDateTimeFields(CreateMeetingSessionsBatchDto dto) { if (dto.StartTime != null) { dto.StartTime = dto.StartTime.PadLeft(8, '0'); } if (dto.StartDate != null) { dto.StartDate = dto.StartDate.Substring(6, 4) + "-" + dto.StartDate.Substring(0, 5); } }
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()); }
public async Task <OperationResultWithData <IEnumerable <MeetingSessionDTO> > > CreateBatch([FromBody] CreateMeetingSessionsBatchDto dto) { try { if (!CheckStartTimeMoreCurrentTime(dto.StartTimestamp)) { return(OperationResultWithData <IEnumerable <MeetingSessionDTO> > .Error("Start time should be more then current time")); } LtiParamDTO param = Session.LtiSession.LtiParam; var meetingSessionService = _lmsFactory.GetMeetingSessionService(LmsCompany, param); var result = await meetingSessionService.CreateBatchAsync(dto, param); return(result.ToSuccessResult()); } catch (Exception ex) { string errorMessage = GetOutputErrorMessage("CreateBatchEvents", ex); return(OperationResultWithData <IEnumerable <MeetingSessionDTO> > .Error(errorMessage)); } }
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()); }