private void GuardarBTN_Click(object sender, EventArgs e)
         {
             bool solapa;
             bool hubosolapa = false;
             dgEscalafon.EndEdit();
           
             try
             {
                 
                 if (ValidarEscalafon())
                 {                     
                     int numCli = nroClienteCargado.Value;
                     //int numSer = int.Parse(mtServicio.Text);
                     int numSer = nroServicioCargado.Value;
                     int nroCon = CalcNroContrato(numCli, numSer);
                     Escalafon es = new Escalafon();
                     es.Cubierto = ContCubierto;
                     es.ListaEscalafonEmpleados = new List<EscalafonEmpleado>();

                     // ACA GUARDO TODOS LOS DATOS DEL DATAGRIDVIEW
                     
                     EscalafonEmpleado linea;
                     HorarioEscalafon hor = null;
                     DataGridViewCell cel = null;

                     foreach (DataGridViewRow fila in dgEscalafon.Rows)
                     {
                         linea = new EscalafonEmpleado();
                         linea.NroEmpleado = int.Parse(fila.Cells[0].Value.ToString());
                         linea.CodigoPuesto = fila.Cells[2].Value.ToString();
                         linea.CantidadHsLlamadaAntesHoraInicio = int.Parse(fila.Cells[3].Value.ToString().Substring(0, 1));
                         linea.AcargoDe = fila.Cells[11].Value.ToString();
                         linea.Horario = new List<HorarioEscalafon>();
                         solapa = false;
                         for (int i = 0; i < 7; i++)
                         {
                             cel = fila.Cells[dias[i]];
                             if (cel.Value.ToString().IndexOfAny(new Char[] { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' }) == -1) //cel.Value.ToString() == "Descanso" || cel.Value.ToString() == "Licencia")
                             {
                                 hor = new HorarioEscalafon(dias[i], cel.Value.ToString());
                                 cel.Style.BackColor = Color.FromArgb(255, 255, 192);//Amarillito
                             }
                             else
                             {
                                 solapa = sistema.EsHorarioSolapado(nroCon, linea.NroEmpleado, dias[i], obtHIni(cel.Value.ToString()), obtHFin(cel.Value.ToString()));
                                 hor = new HorarioEscalafon(dias[i], obtHIni(cel.Value.ToString()), obtHFin(cel.Value.ToString()), solapa);
                                 if (solapa)
                                 {
                                     hubosolapa = true;
                                     cel.Style.BackColor = Color.Red;//Rojo
                                 }
                                 else
                                 {
                                     cel.Style.BackColor = Color.FromArgb(255, 255, 192);//Amarillito
                                 }
                             }
                             linea.Horario.Add(hor);
                         }
                         es.ListaEscalafonEmpleados.Add(linea);
                     }

                     if (datos.existeEscalafon(nroCon))
                         sistema.modificarEscalafon(nroCon, es);
                     else
                         sistema.altaEscalafon(numCli, numSer, nroCon, es);

                     sistema.marcarSolapados(nroCon, es);

                     if (hubosolapa)
                     {
                         MessageBox.Show("Datos guardados correctamente.\nEn los horarios en rojo el empleado ya trabaja.", "Guardado de Datos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                     }
                     else
                         MessageBox.Show("Datos guardados correctamente.", "Guardado de Datos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 else
                 {
                     Utilidades.ControladorUtilidades.writeToLog(new Exception("ValidacionEscalafon ERROR"));
                     MessageBox.Show(this, "Error en la celda seleccionada", "Línea no valida", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }

             }
             catch (Exception ex)
             {
                 Utilidades.ControladorUtilidades.writeToLog(ex);
                 MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
        public Escalafon getEscalafon(int nroEsc)
        {
            EScalaFOn esc = datos.obtenerEscalafon(nroEsc);
            
            Escalafon aux = new Escalafon();
            aux.Cubierto = esc.Cubierto == 1;
            aux.ListaEscalafonEmpleados = new List<EscalafonEmpleado>();
            
            EscalafonEmpleado lhs = null;
            HorarioEscalafon hor = null;

            foreach (EScalaFOneMpLeadO lh in esc.EScalaFOneMpLeadO)
            {
                lhs = new EscalafonEmpleado();
                lhs.NroEmpleado = (int)lh.NroEmpleado;
                lhs.CodigoPuesto = lh.CodigoPuesto;
                lhs.CantidadHsLlamadaAntesHoraInicio = lh.HsLlamadaAntesHoraInicio;
                lhs.AcargoDe = lh.AcArgoDe;
                lhs.Horario = new List<HorarioEscalafon>();
                
                foreach (HoRaRioEScalaFOn h in lh.HoRaRioEScalaFOn)
                {
                    if (h.IDEscalafon == lh.IDEscalafon && h.IDEscalafonEmpleado == lh.IDEscalafonEmpleado)
                    {
                        if (h.TipoDia == 0)
                            hor = new HorarioEscalafon(h.DiA, h.HoRaInI, h.HoRaFIn, (h.Solapa == 1)? true:false);
                        else
                            hor = new HorarioEscalafon(h.DiA, (int)h.TipoDia);
                        
                        lhs.Horario.Add(hor);
                    }
                }
                aux.ListaEscalafonEmpleados.Add(lhs);
            }

            return aux;
        }