private static async Task <ListStudentsResponse> DescargarClsAPI(CoursesResource.StudentsResource.ListRequest solicitud)
        {
            //respuesta = await solicitud.Execute();
            //return 1;

            Console.WriteLine("Subproceso asíncrono para obtener listado de Estudiantes");
            //ListStudentsResponse r = new ListStudentsResponse();
            ListStudentsResponse r = await solicitud.ExecuteAsync();

            //FrmTarea._lista_respuesta_estudiantes = r;
            //respuesta = r.Students.Count;

            return(r);
        }
Beispiel #2
0
        public async static Task <List <Student> > GetAllStudentsOfCourse(UserCredential credential, string courseid)
        {
            var service = new ClassroomService(new BaseClientService.Initializer
            {
                HttpClientInitializer = credential,
                ApplicationName       = "UbiGrade"
            });

            CoursesResource.StudentsResource.ListRequest request = service.Courses.Students.List(courseid);
            // List courses.
            List <Student> students = new List <Student>();
            var            response = await request.ExecuteAsync();

            students.AddRange(response.Students);
            return(students);
        }
Beispiel #3
0
        public CourseStudents GetCourseStudents(string courseId)
        {
            CourseStudents courseStudents = new CourseStudents();

            using (PoolItem <ClassroomService> poolService = this.classRoomServicePool.Take(NullValueHandling.Ignore))
            {
                string token = null;
                CoursesResource.StudentsResource.ListRequest request = poolService.Item.Courses.Students.List(courseId);
                request.PrettyPrint = false;
                Trace.WriteLine($"Getting students from course {courseId}");

                do
                {
                    request.PageToken = token;
                    ListStudentsResponse students;

                    try
                    {
                        this.WaitForGate();
                        students = request.ExecuteWithRetry(RetryEvents.Backoff | RetryEvents.Timeout, RetryCount);
                    }
                    finally
                    {
                        this.ReleaseGate();
                    }

                    if (students.Students != null)
                    {
                        foreach (Student student in students.Students)
                        {
                            if (!string.IsNullOrWhiteSpace(student.UserId))
                            {
                                courseStudents.AddStudent(student.UserId);
                            }
                        }
                    }

                    token = students.NextPageToken;
                } while (token != null);
            }

            Trace.WriteLine($"Returned {courseStudents.Count} students in course {courseId}");

            return(courseStudents);
        }
        private static async Task <int> DescargarClsAPI(CoursesResource.StudentsResource.ListRequest solicitud)
        {
            //respuesta = await solicitud.Execute();
            //return 1;

            Console.WriteLine("Estudiantes:");
            //ListStudentsResponse r = new ListStudentsResponse();
            ListStudentsResponse r = await solicitud.ExecuteAsync();

            if (r.Students != null && r.Students.Count > 0)
            {
                foreach (var estudiante in r.Students)
                {
                    //Console.WriteLine("{0} / {1}", trabajo.Id, trabajo.Description);
                    Console.WriteLine("{0} / {1} / {2} / {3}", estudiante.UserId, estudiante.Profile.Name.FullName, estudiante.Profile.Name.FamilyName, estudiante.Profile.Name.GivenName);
                    frmppal.DtGVAlumnos.Rows.Add(estudiante.UserId, estudiante.Profile.Name.FamilyName, estudiante.Profile.Name.GivenName);
                }
            }

            return(1);
        }
        public static async Task CargarTareasyAlumnos(object sender, EventArgs e)
        {
            string idcourse = frmppal.DtGVClases.SelectedRows[0].Cells["ClnIdCourse"].Value.ToString();

            //MessageBox.Show(idcourse);

            frmppal.DtGVTareas.Rows.Clear();
            frmppal.DtGVAlumnos.Rows.Clear();

            UserCredential credential;

            using (var stream =
                       new FileStream("credentials-p4.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            //Servicio

            // Create Classroom API service.
            var service = new ClassroomService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            frmppal.toolStripProgressBar2.ProgressBar.Style = ProgressBarStyle.Marquee;
            frmppal.toolStripProgressBar3.ProgressBar.Style = ProgressBarStyle.Marquee;

            CoursesResource.CourseWorkResource.ListRequest request2 = service.Courses.CourseWork.List(idcourse);
            CoursesResource.StudentsResource.ListRequest   request  = service.Courses.Students.List(idcourse);

            var TareaCursoApi = DescargarCursoAPI(request2);
            var TareaClsAPi   = DescargarClsAPI(request);

            var todasTareas = new List <Task> {
                TareaCursoApi, TareaClsAPi
            };

            while (todasTareas.Count > 0)
            {
                Task finishedTask = await Task.WhenAny(todasTareas);

                if (finishedTask == TareaCursoApi)
                {
                    frmppal.toolStripProgressBar2.ProgressBar.Style = ProgressBarStyle.Continuous;
                    frmppal.toolStripProgressBar2.ProgressBar.Value = frmppal.toolStripProgressBar2.ProgressBar.Maximum;
                }
                else if (finishedTask == TareaClsAPi)
                {
                    frmppal.toolStripProgressBar3.ProgressBar.Style = ProgressBarStyle.Continuous;
                    frmppal.toolStripProgressBar3.ProgressBar.Value = frmppal.toolStripProgressBar2.ProgressBar.Maximum;
                }
                todasTareas.Remove(finishedTask);
            }
        }
        public static async Task CargarDatosIniciales(object sender, EventArgs e)
        {
            UserCredential credential;

            using (var stream =
                       new FileStream("credentials-p4.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            //Servicio

            // Create Classroom API service.
            var service = new ClassroomService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            //1. Obtenemos los alumnos y los envíos de manera asíncrona

            CoursesResource.StudentsResource.ListRequest request = service.Courses.Students.List(_idcurso);
            CoursesResource.CourseWorkResource.StudentSubmissionsResource.ListRequest request2 = service.Courses.CourseWork.StudentSubmissions.List(_idcurso, _idtarea);

            var TareaClsAPi    = DescargarClsAPI(request);
            var TareaEnvíosAPI = DescargarClsEnvíosAPI(request2);

            var todasTareas = new List <Task> {
                TareaEnvíosAPI, TareaClsAPi
            };

            while (todasTareas.Count > 0)
            {
                Task finishedTask = await Task.WhenAny(todasTareas);

                if (finishedTask == TareaEnvíosAPI)
                {
                    /*frmppal.toolStripProgressBar2.ProgressBar.Style = ProgressBarStyle.Continuous;
                     * frmppal.toolStripProgressBar2.ProgressBar.Value = frmppal.toolStripProgressBar2.ProgressBar.Maximum;*/
                }
                else if (finishedTask == TareaClsAPi)
                {
                    /*frmppal.toolStripProgressBar3.ProgressBar.Style = ProgressBarStyle.Continuous;
                     * frmppal.toolStripProgressBar3.ProgressBar.Value = frmppal.toolStripProgressBar2.ProgressBar.Maximum;*/
                }
                todasTareas.Remove(finishedTask);
            }

            ListStudentsResponse resp_lista_estudiantes = TareaClsAPi.Result;
            var lista_estudiantes = resp_lista_estudiantes.Students;
            ListStudentSubmissionsResponse resp_lista_envíos = TareaEnvíosAPI.Result;
            var lista_envíos = resp_lista_envíos.StudentSubmissions;

            //MessageBox.Show(r.ToString());

            //2. Por cada envío, sus adjuntos, y almacenamos esa información en un diccionario de envíos
            if (lista_envíos != null && lista_envíos.Count > 0)
            {
                foreach (var envio in lista_envíos)
                {
                    //Console.WriteLine("{0} / {1}", trabajo.Id, trabajo.Description);
                    Console.WriteLine("{0} / {1} / {2}", envio.Id, envio.UpdateTime, envio.UserId);

                    /*this.TxtBoxDatosEnvío.Text = "Id Envío: " + envio.Id + Environment.NewLine;
                     * this.TxtBoxDatosEnvío.Text += "Fecha Envío: " + envio.UpdateTime + Environment.NewLine;
                     * this.TxtBoxDatosEnvío.Text += "Estado: " + envio.State + Environment.NewLine;
                     * this.TxtBoxDatosEnvío.Text += "Borrador: " + envio.DraftGrade + Environment.NewLine;
                     * this.TxtBoxDatosEnvío.Text += "Id Usuario: " + envio.UserId;*/

                    _envíos.Add(envio.UserId, envio);

                    /*if (envio.AssignmentSubmission != null)
                     * {
                     *  if (envio.AssignmentSubmission.Attachments != null && envio.AssignmentSubmission.Attachments.Count > 0)
                     *  {
                     *      Console.WriteLine("- Adjuntos -");
                     *      foreach (var adjunto in envio.AssignmentSubmission.Attachments)
                     *      {
                     *          Console.WriteLine(" - Enlace - {0}", adjunto.DriveFile.AlternateLink);
                     *          Console.WriteLine(" - Fichero - {0}", adjunto.DriveFile.Title);
                     *          Console.WriteLine(" - Id - {0}", adjunto.DriveFile.Id);
                     *          //Console.WriteLine(" - Id - {0}", adjunto.);
                     *
                     *          //this.DtGVAdjuntos.Rows.Add(adjunto.DriveFile.Id, adjunto.DriveFile.Title, adjunto.DriveFile.AlternateLink, "-");
                     *
                     *      }
                     *  }
                     *  else
                     *  {
                     *      //this.TxtBoxDatosEnvío.Text += Environment.NewLine + "No hay adjuntos";
                     *  }
                     * }
                     * else
                     * {
                     *  //this.TxtBoxDatosEnvío.Text += Environment.NewLine + "No hay información";
                     *
                     *
                     * }*/
                }
            }

            //3. Presentamos la información por pantalla
            if (lista_estudiantes != null && lista_estudiantes.Count > 0)
            {
                foreach (var estudiante in lista_estudiantes)
                {
                    string estudiante_id        = estudiante.UserId;
                    string estudiante_nombre    = estudiante.Profile.Name.GivenName;
                    string estudiante_apellidos = estudiante.Profile.Name.FamilyName;
                    string estudiante_email     = estudiante.Profile.EmailAddress;

                    Console.WriteLine("Correo electrónico: {0}", estudiante_email);
                    Console.WriteLine("{0} / {1} / {2} / {3}", estudiante.UserId, estudiante.Profile.Name.FullName, estudiante.Profile.Name.FamilyName, estudiante.Profile.Name.GivenName);
                    //2. Por cada alumno, obtenemos sus envíos
                    StudentSubmission envío = _envíos[estudiante_id];

                    string envío_id         = envío.Id;
                    string envío_fecha      = envío.UpdateTime.ToString();
                    string envío_estado     = envío.State;
                    string envío_retrasado  = envío.Late.ToString();
                    int    envío_n_adjuntos = 0;
                    if (envío.AssignmentSubmission != null)
                    {
                        if (envío.AssignmentSubmission.Attachments != null)
                        {
                            envío_n_adjuntos = envío.AssignmentSubmission.Attachments.Count();
                        }
                    }

                    frmTarea.DtGVEnvíos.Rows.Add(estudiante_id, estudiante_nombre, estudiante_apellidos, envío_id, envío_fecha, envío_estado, envío_retrasado, envío_n_adjuntos, "-");
                }
            }
        }
Beispiel #7
0
        private void FrmTarea2_Load(object sender, EventArgs e)
        {
            this.Text = "Tarea: " + _titulo_tarea;

            UserCredential credential;

            using (var stream =
                       new FileStream("credentials-p4.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            //Servicio

            // Create Classroom API service.
            var service = new ClassroomService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            CoursesResource.StudentsResource.ListRequest request = service.Courses.Students.List(_idcurso);
            CoursesResource.CourseWorkResource.StudentSubmissionsResource.ListRequest request2 = service.Courses.CourseWork.StudentSubmissions.List(_idcurso, _idtarea);

            ListStudentsResponse           resp_lista_estudiantes = request.Execute();
            ListStudentSubmissionsResponse resp_lista_envíos      = request2.Execute();

            var lista_estudiantes = resp_lista_estudiantes.Students;
            var lista_envíos      = resp_lista_envíos.StudentSubmissions;

            if (lista_envíos != null && lista_envíos.Count > 0)
            {
                foreach (var envio in lista_envíos)
                {
                    Console.WriteLine("{0} / {1} / {2}", envio.Id, envio.UpdateTime, envio.UserId);
                    _envíos.Add(envio.UserId, envio);
                }
            }

            if (lista_estudiantes != null && lista_estudiantes.Count > 0)
            {
                foreach (var estudiante in lista_estudiantes)
                {
                    string estudiante_id        = estudiante.UserId;
                    string estudiante_nombre    = estudiante.Profile.Name.GivenName;
                    string estudiante_apellidos = estudiante.Profile.Name.FamilyName;
                    string estudiante_email     = estudiante.Profile.EmailAddress;

                    Console.WriteLine("Correo electrónico: {0}", estudiante_email);
                    Console.WriteLine("{0} / {1} / {2} / {3}", estudiante.UserId, estudiante.Profile.Name.FullName, estudiante.Profile.Name.FamilyName, estudiante.Profile.Name.GivenName);
                    //2. Por cada alumno, obtenemos sus envíos
                    StudentSubmission envío = _envíos[estudiante_id];

                    string envío_id         = envío.Id;
                    string envío_fecha      = envío.UpdateTime.ToString();
                    string envío_estado     = envío.State;
                    string envío_retrasado  = envío.Late.ToString();
                    int    envío_n_adjuntos = 0;
                    if (envío.AssignmentSubmission != null)
                    {
                        if (envío.AssignmentSubmission.Attachments != null)
                        {
                            envío_n_adjuntos = envío.AssignmentSubmission.Attachments.Count();
                        }
                    }

                    frmTarea2.DtGVEnvíos.Rows.Add(estudiante_id, estudiante_nombre, estudiante_apellidos, envío_id, envío_fecha, envío_estado, envío_retrasado, envío_n_adjuntos, "-");
                }
            }
        }