public async Task <string> SendInvite(short schoolYear, int schoolId, string classToSync, CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            if (string.IsNullOrWhiteSpace(gcEmail))
            {
                return("Google Classroom setup not completed");
            }

            var gcCourse = _provisioningRuleBusiness.GetClassToSync(lea, schoolYear, schoolId, classToSync);
            var school   = _orgBusiness.GetEducationOrganization(schoolYear, schoolId);

            var syncMessage = new SyncCourseMessage {
                Courses = new List <GcCourse> {
                    gcCourse
                }, LeaId = lea, UserEmail = gcEmail, School = school
            };
            var task = await Task.Run(async() => await GcSync.InviteToOwn(this, _setupBusiness, syncMessage, cancellationToken).ConfigureAwait(true));

            _provisioningRuleBusiness.SaveSyncProgress(lea, schoolYear, schoolId, task.Courses);
            _provisioningRuleBusiness.SaveLog(task.Logs);

            return(task.Courses.First().GcMessage);
        }
        public async Task <JsonResult> SendOwnerInvitations(short schoolYear, int schoolId, CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            if (string.IsNullOrWhiteSpace(gcEmail))
            {
                return(Json(new SyncCourseMessage {
                    Message = "Google Classroom setup not completed"
                }));
            }

            var syncList = _provisioningRuleBusiness.GetClassesToTransfer(lea, schoolYear, schoolId);
            var school   = _orgBusiness.GetEducationOrganization(schoolYear, schoolId);

            var syncMessage = new SyncCourseMessage {
                Courses = syncList, LeaId = lea, UserEmail = gcEmail, School = school
            };
            var task = await Task.Run(async() => await GcSync.InviteToOwn(this, _setupBusiness, syncMessage, cancellationToken).ConfigureAwait(true));

            _provisioningRuleBusiness.SaveSyncProgress(lea, schoolYear, schoolId, task.Courses);
            _provisioningRuleBusiness.SaveLog(task.Logs);

            return(Json(task));
        }
        public async Task <JsonResult> SendCourses(short schoolYear, int schoolId, bool allCourses, CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            if (string.IsNullOrWhiteSpace(gcEmail))
            {
                return(Json(new SyncCourseMessage {
                    Message = "Google Classroom setup not completed"
                }));
            }

            var syncList = _provisioningRuleBusiness.GetSyncList(lea, schoolYear, schoolId).Where(g => allCourses || !g.Saved.GetValueOrDefault()).ToList();
            var school   = _orgBusiness.GetEducationOrganization(schoolYear, schoolId);

            foreach (var gcCourse in syncList)
            {
                gcCourse.AliasId = gcCourse.GcName.NameToId();
                gcCourse.Owner   = "me";
            }

            var syncMessage = new SyncCourseMessage {
                Courses = syncList, LeaId = lea, UserEmail = gcEmail, School = school
            };
            var task = await Task.Run(async() => await GcSync.SendCourses(this, _setupBusiness, syncMessage, cancellationToken).ConfigureAwait(true));

            _provisioningRuleBusiness.SaveSyncProgress(lea, schoolYear, schoolId, task.Courses);
            _provisioningRuleBusiness.SaveLog(task.Logs);

            return(Json(task));
        }
        public async Task <string> ActivateCourse(short schoolYear, int schoolId, string id, CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            if (string.IsNullOrWhiteSpace(gcEmail))
            {
                return("Google Classroom setup not completed");
            }
            var syncMessage = new SyncCourseMessage {
                Courses = new List <GcCourse> {
                    new GcCourse {
                        AliasId = id.NameToId()
                    }
                }, LeaId = lea, UserEmail = gcEmail
            };

            var task = await Task.Run(async() => await GcSync.SendCourseActivations(this, _setupBusiness, syncMessage, cancellationToken).ConfigureAwait(true));

            if (task.Message == "Active")
            {
                var gc = _provisioningRuleBusiness.GetClassToSync(lea, schoolYear, schoolId, id);
                gc.Activated = true;
                gc.GcMessage = $"Activated {DateTime.Now}, {gc.GcMessage}";
                _provisioningRuleBusiness.SaveSyncProgress(lea, schoolYear, schoolId, new List <GcCourse> {
                    gc
                });
            }
            _provisioningRuleBusiness.SaveLog(task.Logs);

            return(task.Message);
        }
        public async Task <JsonResult> GcList(CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            var task = await Task.Run(async() => await GcSync.GetCourses(this, lea, gcEmail, _setupBusiness, cancellationToken).ConfigureAwait(true));

            return(Json(task));
        }
        public async Task <ActionResult> Existing(CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);
            var task    = await Task.Run(async() => await GcSync.TestAsync(this, lea, gcEmail, _setupBusiness, cancellationToken).ConfigureAwait(true));

            var model = new DeleteCourseMessage();

            model.Message = task.Message;
            model.Success = task.Connected;
            return(View(model));
        }
        public async Task <JsonResult> TestConnection(CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            if (string.IsNullOrWhiteSpace(gcEmail))
            {
                return(Json(new TestConnectionMessage {
                    Connected = false, Message = "Google Classroom setup not completed"
                }, JsonRequestBehavior.AllowGet));
            }

            var task = await Task.Run(async() => await GcSync.TestAsync(this, lea, gcEmail, _setupBusiness, cancellationToken).ConfigureAwait(true));

            return(Json(task, JsonRequestBehavior.AllowGet));
        }
        public async Task <JsonResult> DeleteAll(List <string> ids, CancellationToken cancellationToken)
        {
            var lea     = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var gcEmail = _setupBusiness.GetClientEmail(lea);

            if (string.IsNullOrWhiteSpace(gcEmail))
            {
                return(Json("Google Classroom setup not completed"));
            }
            var syncMessage = new SyncCourseMessage {
                Courses = ids.Select(i => new GcCourse {
                    CourseId = i
                }).ToList(), LeaId = lea, UserEmail = gcEmail
            };

            var task = await Task.Run(async() => await GcSync.DeleteCourses(this, _setupBusiness, syncMessage, cancellationToken).ConfigureAwait(true));

            _provisioningRuleBusiness.SaveLog(task.Logs);

            return(Json(task));
        }
예제 #9
0
        public async Task <ActionResult> GcPreferences(CancellationToken cancellationToken)
        {
            var edOrgId = _sessionInfo.CurrentAgencyId.GetValueOrDefault();
            var pref    = _setupBusiness.GetGcPreference(edOrgId);
            var model   = new GcPreferenceViewModel();

            if (pref != null)
            {
                model.GcUserEmail          = pref.GcUserEmail;
                model.AllowExternalDomains = pref.AllowExternalDomains;

                var cred = _setupBusiness.GetClientCredentials(edOrgId);
                if (cred != null)
                {
                    model.ClientId     = cred.ClientId;
                    model.ClientSecret = cred.ClientSecret;
                    var task = await Task.Run(async() => await GcSync.TestAsync(this, edOrgId, model.GcUserEmail, _setupBusiness, cancellationToken).ConfigureAwait(true));

                    model.CredentialMessage = task.Message;
                }
            }

            return(View(model));
        }