// 
// Copyright 2016 Agencia Estatal de Administración Tibutaria
//
// Licencia con arreglo a la EUPL, Versión 1.1 o -en cuanto
// sean aprobadas por la Comisión Europea- versiones
// posteriores de la EUPL (la «Licencia»);
// Solo podrá usarse esta obra si se respeta la Licencia.
// Puede obtenerse una copia de la Licencia en:
//  
// https://joinup.ec.europa.eu/software/page/eupl
//  
// Salvo cuando lo exija la legislación aplicable o se acuerde
// por escrito, el programa distribuido con arreglo a la
// Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
// DE NINGÚN TIPO, ni expresasni implícitas.
//
// Véase la Licencia en el idioma concreto que rige los permisos y 
// limitaciones que establece la Licencia.
// 

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

namespace operador
{
    public partial class DlgEstadoColas : Form
    {
        public DlgEstadoColas() {
            InitializeComponent();
        }

        void ajustar() {
            int ancho = this.ClientRectangle.Width;
            int anchoB = ancho / 5;
            grid.Columns[0].Width = ancho - (2 * anchoB) - 3;
            grid.Columns[1].Width = anchoB;
            grid.Columns[2].Width = anchoB;
            grid.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
        }
        
        public void cargar(string valores) {
            string[] vals = valores.Split('|');
            Object[] data = new Object[3];
            ColeccionColas colas = ColeccionColas.unica();
            foreach(string s in vals) {
                if (s != null && s != "") {
                    string[] par = s.Split('=');
                    ColeccionColas.Registro reg = colas.get(par[0].Trim());
                    if (reg != null) {
                        //data[0] = nombreCola(reg.cola, reg.descripcion);
                        data[0] = reg.ToString();
                        int num;
                        if (Int32.TryParse(par[1].Trim(), out num)) {
                            data[1] = num;
                        } else {
                            data[1] = "?";
                        }
                        data[2] = minutosAsString(par[2].Trim());
                        grid.Rows.Add(data);
                    }
                }
            }
        }

        private string nombreCola(string cola, string descr) {
            return cola.ToUpper() + " - " + Configuracion.instanciaUnica().nombreDeCola(cola, descr);
        }
        
        private string minutosAsString(string sMinutos) {
            if (sMinutos == null || sMinutos == "") {
                return "";
            }
            int minutos = Int32.Parse(sMinutos);
            bool negativo = false;
            if (minutos < 0) {
                negativo = true;
                minutos = -minutos;
            }
            int horas = minutos / 60;
            minutos = minutos % 60;
            return string.Format("{0}{1:00}:{2:00}", negativo ? "-" : "", horas, minutos);
        }

        private void DlgEstadoColas_Shown(object sender, EventArgs e) {
            ajustar();
        }

        private void button1_Click(object sender, EventArgs e) {
            Close();
        }
    }
}