public virtual async Task <OperationResult> UpdateMeetingAndReturnLmsUsers([FromBody] MeetingDTOInput meeting) { try { var param = Session.LtiSession.LtiParam; var trace = new StringBuilder(); var ac = this.GetAdminProvider(); var useLmsUserEmailForSearch = !string.IsNullOrEmpty(param.lis_person_contact_email_primary); var fb = new MeetingFolderBuilder(Session.LmsCompany, ac, useLmsUserEmailForSearch, meeting.GetMeetingType()); var ret = await _meetingSetup.SaveMeeting( LmsCompany, ac, param, meeting, trace, fb, true); return(ret); } catch (Exception ex) { string errorMessage = GetOutputErrorMessage("UpdateMeetingAndReturnLmsUsers", ex); return(OperationResult.Error(errorMessage)); } }
public virtual async Task <OperationResult> UpdateMeeting([FromBody] EditMeetingDto input) { try { var trace = new StringBuilder(); var ac = GetAdminProvider(); //bool useLmsUserEmailForSearch = true; var useLmsUserEmailForSearch = !string.IsNullOrEmpty(input.ApiLtiParam.lis_person_contact_email_primary); var fb = new MeetingFolderBuilder((LmsCompany)LmsCompany, ac, useLmsUserEmailForSearch, LmsMeetingType.Meeting); // HACK: we support Meeting only. LmsCourseMeeting existed = _meetingSetup.GetCourseMeeting(LmsCompany, input.ApiLtiParam.course_id, input.Id, LmsMeetingType.Meeting); string meetingSco = existed.GetMeetingScoId(); bool isNewMeeting = string.IsNullOrEmpty(meetingSco); if (isNewMeeting) { return(OperationResult.Error("Meeting not found")); } var acProvider = this.GetAdminProvider(); ScoInfoResult scoResult = acProvider.GetScoInfo(meetingSco); MeetingDTOInput meeting = input.Build(existed, scoResult.ScoInfo); //LmsUser lmsUser = IoC.Resolve<LmsUserModel>() // .GetOneByUserIdAndCompanyLms(input.ApiLtiParam.lms_user_id, LmsCompany.Id).Value; //MeetingDTO dto = await _meetingSetup.BuildDto( // lmsUser, // input.ApiLtiParam, // LmsCompany, // meeting, // null, // //timeZone, // trace); OperationResult ret = await _meetingSetup.SaveMeeting( LmsCompany, ac, input.ApiLtiParam, meeting, trace, fb); return(ret); } catch (Exception ex) { string errorMessage = GetOutputErrorMessage("UpdateMeeting", ex); return(OperationResult.Error(errorMessage)); } }
private async Task CreateAnnouncement( LmsMeetingType meetingType, ILmsLicense lmsCompany, ILtiParam param, MeetingDTOInput meetingDto) { if (!lmsCompany.ShowAnnouncements.GetValueOrDefault() || string.IsNullOrEmpty(param.context_title)) { return; } var announcementTitle = string.Format( "A new {0} room was created for course {1}", meetingNames[meetingType], param.context_title); string announcementMessage = GetAnnouncementMessage(meetingType, meetingDto, param.referer); switch (lmsCompany.LmsProviderId) { case (int)LmsProviderEnum.Canvas: var lmsUser = LmsUserModel.GetOneByUserIdAndCompanyLms(param.lms_user_id, lmsCompany.Id).Value; var token = UsersSetup.IsTeacher(param, lmsCompany) && !string.IsNullOrEmpty(lmsUser.Token) ? lmsUser.Token : lmsCompany.AdminUser.Return(a => a.Token, string.Empty); await CanvasApi.CreateAnnouncement( lmsCompany.LmsDomain, token, param.course_id, announcementTitle, announcementMessage); break; case (int)LmsProviderEnum.Blackboard: BlackboardApi.CreateAnnouncement(param.course_id.ToString(), param.lms_user_id, lmsCompany.GetLMSSettings(Settings), announcementTitle, announcementMessage); break; case (int)LmsProviderEnum.AgilixBuzz: // string error; // this.dlapApi.CreateAnnouncement( // credentials, // param.course_id, // announcementTitle, // announcementMessage, // out error); break; } }
private string GetAnnouncementMessage(LmsMeetingType meetingType, MeetingDTOInput meetingDto, string referrer) { //string startDate; //string startTime; //// TRICK: !! //var input = meetingDto as MeetingDTOInput; //if (input != null) //{ // startDate = input.StartDate; // startTime = input.StartTime; //} //else //{ // DateTime begin = ((double)meetingDto.StartTimeStamp).ConvertFromUnixTimeStamp(); // //start_date = meeting.Sco.BeginDate.ToString("yyyy-MM-dd"), // //start_time = meeting.Sco.BeginDate.ToString("h:mm tt", CultureInfo.InvariantCulture), //} switch (meetingType) { case LmsMeetingType.Meeting: case LmsMeetingType.VirtualClassroom: string pattern = "Meeting \"{0}\" will start {1} at {2}. Its duration will be {3}. You can join it in your <a href='{4}'>Adobe Connect Conference section</a>."; return(string.Format( pattern, meetingDto.Name, meetingDto.StartDate, meetingDto.StartTime, meetingDto.Duration, referrer ?? string.Empty)); case LmsMeetingType.OfficeHours: string message = string.Format("You can join the meeting \"{0}\" in your <a href='{1}'>Adobe Connect Conference section</a>.", meetingDto.Name.Trim(), referrer ?? string.Empty); if (!string.IsNullOrEmpty(meetingDto.OfficeHours)) { message = string.Format("Meeting time: {0}. ", meetingDto.OfficeHours) + message; } return(message); case LmsMeetingType.StudyGroup: return(string.Format("You can join the meeting \"{0}\" in your <a href='{1}'>Adobe Connect Conference section</a>.", meetingDto.Name.Trim(), referrer ?? string.Empty)); case LmsMeetingType.Seminar: return(string.Format("You can join the seminar \"{0}\" in your <a href='{1}'>Adobe Connect Conference section</a>.", meetingDto.Name.Trim(), referrer ?? string.Empty)); } return(string.Empty); }
public virtual async Task <OperationResult> CreateNewMeeting([FromBody] CreateMeetingDto input) { try { MeetingDTOInput meeting = input.Build(); var trace = new StringBuilder(); var ac = this.GetAdminProvider(); //// TRICK: new don't care about this settings - cause there is a check UseUserFolder==false //bool useLmsUserEmailForSearch = true; var useLmsUserEmailForSearch = !string.IsNullOrEmpty(input.ApiLtiParam.lis_person_contact_email_primary); var fb = new MeetingFolderBuilder((LmsCompany)LmsCompany, ac, useLmsUserEmailForSearch, LmsMeetingType.Meeting); /* * // tool_consumer_info_product_family_code : canvas * // https://esynctraining.instructure.com/courses/231/external_tools/84 * var apiTest = input.ApiLtiParam; * apiTest.tool_consumer_info_product_family_code = "canvas"; * apiTest.course = "231"; * apiTest.course_name= "Regression"; * //apiTest.context_label = "Regression"; * //apiTest.context_title = "Regression"; * * apiTest.lms_user_login = "******"; // custom_canvas_user_login_id * apiTest.lis_person_contact_email_primary = "*****@*****.**"; * * apiTest.referer = "https://esynctraining.instructure.com/courses/231/external_tools/84"; * apiTest.lms_user_id = "1"; // custom_canvas_user_id * * apiTest.lis_person_name_given = "Mike"; * apiTest.lis_person_name_family = "Kollen"; */ // tool_consumer_info_product_family_code: sakai // SAKAI: 091887fe-a54e-47d6-8e2a-f386f1d24426 // course id = test_lti /*var apiTest = input.ApiLtiParam; * apiTest.course = "test_lti"; * apiTest.tool_consumer_info_product_family_code = "sakai"; * apiTest.course_name = "Test LTI site"; * //apiTest.context_label = "Test LTI site"; * //apiTest.context_title = "Test LTI site"; * apiTest.lis_person_contact_email_primary = "*****@*****.**"; * // ??? HEADER?? * apiTest.referer = "http://sakai11.esynctraining.com/access/basiclti/site/test_lti/e8efacd7-f9eb-4cd5-9993-07d992666617"; * * apiTest.lms_user_login = "******"; // sakai: lis_person_sourcedid * apiTest.lms_user_id = "admin"; // sakai: user_id * * apiTest.lis_person_name_given = "Sakai"; * apiTest.lis_person_name_family = "Administrator"; * * apiTest.ext_ims_lis_memberships_url = "http://sakai11.esynctraining.com/imsblis/service/"; * //apiTest.ext_ims_lti_tool_setting_url = "http://sakai11.esynctraining.com/imsblis/service/"; * apiTest.ext_ims_lis_memberships_id = "e4edb1c55e145b06d1390111d5d5590689834fe2a1882f301b10f397a89627bb:::admin:::e8efacd7-f9eb-4cd5-9993-07d992666617"; */ OperationResult ret = await _meetingSetup.SaveMeeting( LmsCompany, ac, input.ApiLtiParam, meeting, trace, fb); return(ret); } catch (Exception ex) { string errorMessage = GetOutputErrorMessage("UpdateMeeting", ex); return(OperationResult.Error(errorMessage)); } }