Esempio n. 1
0
        public static async Task <IList <CalificacionEvaluacion> > getCalificacionesForEvaluacion(string asignaturaUid, string evaluacionUid, IList <CalificacionEvaluacion> calificacionCollection = null)
        {
            if (calificacionCollection == null)
            {
                calificacionCollection = new ObservableCollection <CalificacionEvaluacion> {
                }
            }
            ;

            var list = (await FIREBASE
                        .Child(Utils.FireBase_Entity.ASIGNATURAS)
                        .Child(asignaturaUid)
                        .Child(Utils.FireBase_Entity.EVALUACIONES)
                        .Child(evaluacionUid)
                        .Child(Utils.FireBase_Entity.CALIFICACION)
                        .OnceAsync <CalificacionEvaluacion>());

            calificacionCollection.Clear();

            foreach (var item in list)
            {
                CalificacionEvaluacion calificacion = item.Object as CalificacionEvaluacion;
                calificacion.Uid = item.Key;

                Estudiante estudiante = await FirebaseDB.getEstudianteForId(asignaturaUid, calificacion.EstudianteUid);

                calificacion.EstudianteNombre   = estudiante.Name;
                calificacion.EstudianteApellido = estudiante.Apellido;
                calificacionCollection.Add(calificacion);
            }
            return(calificacionCollection);
        }
Esempio n. 2
0
        async void onSelection(object sender, SelectedItemChangedEventArgs e)
        {
            if (e.SelectedItem == null)
            {
                return;                 //ItemSelected is called on deselection, which results in SelectedItem being set to null
            }

            CalificacionEvaluacion calificacionEvaluacion = e.SelectedItem as CalificacionEvaluacion;
            await Navigation.PushAsync(new EvaluacionUIPage(asignaturaUid, evaluacion, calificacionEvaluacion.Uid));

            ((ListView)sender).SelectedItem = null;             // unselect item
        }
Esempio n. 3
0
        async private void populateCalificacionCollection(string rubricaUid, string evaluacionUid)
        {
            IList <Estudiante> estudiantes = await FirebaseDB.getEstudiantesForAsignatura(asignaturaUid);

            Rubrica rubrica = await FirebaseDB.getRubricaForId(rubricaUid);

            List <Categoria> categorias = await FirebaseDB.getCategoriasForRubrica(rubricaUid);

            foreach (var estudiante in estudiantes)
            {
                System.Diagnostics.Debug.WriteLine(estudiante.Name);
                CalificacionEvaluacion calificacionEvaluacion = new CalificacionEvaluacion(estudiante);
                var calificacionItem = await firebase
                                       .Child(Utils.FireBase_Entity.ASIGNATURAS)
                                       .Child(asignaturaUid)
                                       .Child(Utils.FireBase_Entity.EVALUACIONES)
                                       .Child(evaluacionUid)
                                       .Child(Utils.FireBase_Entity.CALIFICACION)
                                       .PostAsync(calificacionEvaluacion);

                foreach (var categoria in categorias)
                {
                    CalificacionCategoria calificacionCategoria = new CalificacionCategoria(categoria);
                    var categoriaItem = await firebase
                                        .Child(Utils.FireBase_Entity.ASIGNATURAS)
                                        .Child(asignaturaUid)
                                        .Child(Utils.FireBase_Entity.EVALUACIONES)
                                        .Child(evaluacionUid)
                                        .Child(Utils.FireBase_Entity.CALIFICACION)
                                        .Child(calificacionItem.Key)
                                        .Child(Utils.FireBase_Entity.CATEGORIAS)
                                        .PostAsync(calificacionCategoria);

                    List <Elemento> elementos = await FirebaseDB.getElementosForCategoria(rubricaUid, categoria.Uid);

                    foreach (var elemento in elementos)
                    {
                        CalificacionElemento calificacionElemento = new CalificacionElemento(0, elemento);
                        var elementoItem = await firebase
                                           .Child(Utils.FireBase_Entity.ASIGNATURAS)
                                           .Child(asignaturaUid)
                                           .Child(Utils.FireBase_Entity.EVALUACIONES)
                                           .Child(evaluacionUid)
                                           .Child(Utils.FireBase_Entity.CALIFICACION)
                                           .Child(calificacionItem.Key)
                                           .Child(Utils.FireBase_Entity.CATEGORIAS)
                                           .Child(categoriaItem.Key)
                                           .Child(Utils.FireBase_Entity.ELEMENTOS)
                                           .PostAsync(calificacionElemento);
                    }
                }
            }
        }
Esempio n. 4
0
        public static async Task <CalificacionEvaluacion> getCalificacionById(string asignaturaUid, string evaluacionUid, string calificacionUid)
        {
            var list = (await FIREBASE
                        .Child(Utils.FireBase_Entity.ASIGNATURAS)
                        .Child(asignaturaUid)
                        .Child(Utils.FireBase_Entity.EVALUACIONES)
                        .Child(evaluacionUid)
                        .Child(Utils.FireBase_Entity.CALIFICACION)
                        .OnceAsync <CalificacionEvaluacion>());


            foreach (var item in list)
            {
                CalificacionEvaluacion calificacion = item.Object as CalificacionEvaluacion;
                if (item.Key == calificacionUid)
                {
                    return(calificacion);
                }
            }
            return(null);
        }
Esempio n. 5
0
        protected async override void OnAppearing()
        {
            base.OnAppearing();
            calificacionCategorias = await FirebaseDB.getCategoriasForCalificacion(asignaturaUid, evaluacionUid, calificacionUid);

            var layout = new StackLayout {
                Margin = new Thickness(20, 20, 20, 20)
            };

            foreach (CalificacionCategoria categoria in calificacionCategorias)
            {
                var categoriaLabel = new Label
                {
                    Text = categoria.CategoriaName
                };
                layout.Children.Add(categoriaLabel);

                List <CalificacionElemento> calificacionElementos = await FirebaseDB.getElementsForCalificacion(asignaturaUid, evaluacionUid, calificacionUid, categoria.Uid);

                foreach (CalificacionElemento elemento in calificacionElementos)
                {
                    // save calificacion elemento to update slider range later
                    elemento.CalificacionCategoriaUid = categoria.Uid;
                    calificacionElementoDict.Add(elemento.Uid, elemento);

                    var elementLayout = new StackLayout
                    {
                        Orientation = StackOrientation.Horizontal,
                        Margin      = new Thickness(20, 0, 0, 0)
                    };

                    var elementoLabel = new Label
                    {
                        Text = elemento.ElementoName
                    };

                    // elementoSlider and sliderValuelabel have to be declard before Picker since they are  accessed during initial Picker-index setting
                    var elementoSlider = new Slider
                    {
                        Minimum         = 0,
                        Maximum         = 1,
                        Value           = 0.5,
                        WidthRequest    = 100,
                        VerticalOptions = LayoutOptions.FillAndExpand,
                        StyleId         = elemento.Uid                 // bind elementoUid to slider for identification in ValueChanged callback
                    };
                    elementoSlider.ValueChanged += OnSliderValueChanged;
                    sliderDict.Add(elemento.Uid, elementoSlider);

                    sliderValuelabel = new Label
                    {
                        Text = elemento.Nota.ToString()
                    };

                    labelDict.Add(elemento.Uid, sliderValuelabel);

                    var elementoPicker = new Picker
                    {
                        HorizontalOptions = LayoutOptions.FillAndExpand,
                        StyleClass        = new ObservableCollection <string>()
                        {
                            categoria.Uid, elemento.Uid, "true"
                        },                                                                                      // misuse StyleClass to set values to each picker
                        ItemsSource = new List <string>()
                        {
                            elemento.Nivel1Name, elemento.Nivel2Name, elemento.Nivel3Name, elemento.Nivel4Name
                        },
                    };
                    elementoPicker.SelectedIndexChanged += OnPickerSelectedIndexChanged;
                    elementoPicker.SelectedIndex         = elemento.Nivel;

                    elementLayout.Children.Add(elementoLabel);
                    elementLayout.Children.Add(elementoPicker);
                    elementLayout.Children.Add(elementoSlider);
                    elementLayout.Children.Add(sliderValuelabel);

                    layout.Children.Add(elementLayout);
                }
            }

            var btn = new Button {
                Text = "Guardar"
            };

            btn.Clicked += async(sender, ea) => {
                foreach (KeyValuePair <string, CalificacionElemento> entry in calificacionElementoDict)
                {
                    CalificacionElemento calificacionElemento = entry.Value;
                    await FirebaseDB.updateCalificacionElemento(asignaturaUid, evaluacionUid, calificacionUid, calificacionElemento.CalificacionCategoriaUid, calificacionElemento.Uid, calificacionElemento);
                }

                CalificacionEvaluacion calificacion = await FirebaseDB.getCalificacionById(asignaturaUid, evaluacionUid, calificacionUid);

                calificacion.Nota = await calculateNewAverage();

                await FirebaseDB.updateCalificacion(asignaturaUid, evaluacionUid, calificacionUid, calificacion);

                await Navigation.PopAsync();
            };

            layout.Children.Add(btn);
            Content = layout;
        }
Esempio n. 6
0
        public static async Task <int> updateCalificacion(string asignaturaUid, string evaluacionUid, string calificacionUid, CalificacionEvaluacion updatedCalificacion)
        {
            await FIREBASE
            .Child(Utils.FireBase_Entity.ASIGNATURAS)
            .Child(asignaturaUid)
            .Child(Utils.FireBase_Entity.EVALUACIONES)
            .Child(evaluacionUid)
            .Child(Utils.FireBase_Entity.CALIFICACION)
            .Child(calificacionUid)
            .PutAsync(updatedCalificacion);

            return(0);
        }