Example #1
0
        async void OnPickerSelectedIndexChanged(object sender, EventArgs e)
        {
            var    picker                   = (Picker)sender;
            int    selectedIndex            = picker.SelectedIndex;
            string calificacionCategoriaUid = picker.StyleClass[0];
            string calificacionElementoUid  = picker.StyleClass[1];
            bool   initialPickerChanged     = Convert.ToBoolean(picker.StyleClass[2]);

            // update limits for corresponding slider
            CalificacionElemento calificacionElemento = calificacionElementoDict[calificacionElementoUid];

            setSliderLimits(selectedIndex, calificacionElemento, initialPickerChanged);

            if (!initialPickerChanged)
            {
                // persist Elemento nivel change
                calificacionElemento.Nivel = selectedIndex;
                await FirebaseDB.updateCalificacionElemento(asignaturaUid, evaluacionUid, calificacionUid, calificacionCategoriaUid, calificacionElementoUid, calificacionElemento);

                // update dictionary to reflect the changes
                calificacionElementoDict[calificacionElementoUid] = calificacionElemento;
            }
            // set boolean to false to persist successive onPickerChanged events
            picker.StyleClass = new ObservableCollection <string>()
            {
                calificacionCategoriaUid, calificacionElementoUid, "false"
            };
        }
Example #2
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);
        }
        async public void OnDelete(object sender, EventArgs e)
        {
            var     menuItem = ((MenuItem)sender);
            Rubrica rubrica  = menuItem.CommandParameter as Rubrica;

            await firebase
            .Child(Utils.FireBase_Entity.RUBRICAS)
            .Child(rubrica.Uid)
            .DeleteAsync();

            await FirebaseDB.getRubricas(rubricasCollection);
        }
Example #4
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);
                    }
                }
            }
        }
Example #5
0
        async public void OnDelete(object sender, EventArgs e)
        {
            var        menuItem   = ((MenuItem)sender);
            Estudiante estudiante = menuItem.CommandParameter as Estudiante;

            await firebase
            .Child(Utils.FireBase_Entity.ASIGNATURAS)
            .Child(asignaturaUid)
            .Child(Utils.FireBase_Entity.ESTUDIANTES)
            .Child(estudiante.Uid)
            .DeleteAsync();

            await FirebaseDB.getEstudiantesForAsignatura(this.asignaturaUid, estudiantesCollection);
        }
Example #6
0
        async Task <double> calculateNewAverage()
        {
            double notaAverage = 0.0f;

            calificacionCategorias = await FirebaseDB.getCategoriasForCalificacion(asignaturaUid, evaluacionUid, calificacionUid);

            foreach (CalificacionCategoria calificacionCategoria in calificacionCategorias)
            {
                List <CalificacionElemento> calificacionElementos = await FirebaseDB.getElementsForCalificacion(asignaturaUid, evaluacionUid, calificacionUid, calificacionCategoria.Uid);

                double categoriaAverage = 0.0f;
                foreach (CalificacionElemento calificacionElemento in calificacionElementos)
                {
                    int    elementoPeso = calificacionElemento.Peso;
                    double elementoNota = calificacionElemento.Nota;
                    categoriaAverage += elementoPeso * elementoNota / 100.0f;
                }
                int categoriaPeso = calificacionCategoria.Peso;
                notaAverage += categoriaPeso * categoriaAverage / 100.0f;
            }
            return(notaAverage);
        }
Example #7
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;
        }
Example #8
0
 protected async override void OnAppearing()
 {
     base.OnAppearing();
     await FirebaseDB.getEstudiantesForAsignatura(this.asignaturaUid, estudiantesCollection);
 }
Example #9
0
 protected async override void OnAppearing()
 {
     base.OnAppearing();
     await FirebaseDB.getCalificacionesForEvaluacion(asignaturaUid, evaluacion.Uid, calificacionCollection);
 }
 protected async override void OnAppearing()
 {
     base.OnAppearing();
     await FirebaseDB.getRubricas(rubricasCollection);
 }