Example #1
0
        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));
            }
        }
Example #2
0
        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));
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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));
            }
        }