using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace Gestor_de_Contenidos
{
    /*
     * Clase para visualizar los resultados de un minijuego de ordenacion
     */
    public partial class frm_visualizar_mjo : Form
    {
        private RegistroMJO juego;
        private int aciertos = 0;
        private int fallos = 0;
        private int mano_derecha = 0;
        private int mano_izquierda = 0;
        private double duracion_total = 0;
        private int total_registros = 0;

        public frm_visualizar_mjo(RegistroMJO juego)
        {
            InitializeComponent();
            this.juego = juego;
            total_registros = juego.registros.Count;

        }

        private void frm_visualizar_mjs_Load(object sender, EventArgs e)
        {
            cargarListView();
            label1.Text = label1.Text + " " + juego.nombre_nivel + " jugado el " + juego.fecha_juego + " a las " +juego.hora_juego;
            cargarDatos();
            cargarCharts();
        }

        /*
         Método que carga las gráficas con los valores calculados anteriormente
         */
        private void cargarCharts()
        {
            string[] seriesArray = { "Aciertos", "Fallos"};
            int[] pointsArray = { aciertos,  fallos };
            for (int i = 0; i < seriesArray.Length; i++)
                {
                 // Aqui se agregan las series o Categorias.
                  Series series = this.chart1.Series.Add(seriesArray[i]);
                 // Aqui se agregan los Valores.
                  series.Points.Add(pointsArray[i]);
                   
                }

            chart1.BeginInit();

            string[] seriesArray2 = { "Mano Derecha", "Mano Izquierda" };
            int[] pointsArray2 = { mano_derecha, mano_izquierda };
            for (int i = 0; i < seriesArray2.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.chart2.Series.Add(seriesArray2[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray2[i]);

            }

            chart2.BeginInit();
        }

        /*
        Método que carga los datos que serán presentados, tanto en las gráficas como en texto
        */
        private void cargarDatos()
        {
            foreach (RegistroItemOrden reg in juego.registros) {

                if (reg.mano.Equals("Mano Derecha"))
                    mano_derecha++;
                else
                    mano_izquierda++;

                if (reg.tipo.Equals("acierto"))
                    aciertos++;
                else
                    fallos++;

                duracion_total = reg.tiempo;
                
            
            }
            label2.Text = label2.Text + " " + duracion_total / 1000 + " segundos"; 
        }

        private void cargarListView()
        {
            foreach (RegistroItemOrden reg in juego.registros)
            {
                ListViewItem lvi = new ListViewItem(reg.tiempo.ToString());
                if (reg.tipo.Equals("acierto"))
                {
                    lvi.SubItems.Add(reg.tipo);
                    lvi.BackColor = Color.Green;

                }
                else
                {
                    lvi.SubItems.Add(reg.tipo);
                    lvi.BackColor = Color.Red;
                }
                lvi.SubItems.Add(reg.mano);
                lvi.SubItems.Add(reg.item);

                lv_registros.Items.Add(lvi);
                

            }
        }
    }
}
