public ConSeguridadFisica getContrato(int NumeroContrato)
        {
            ConSeguridadFisica aux = null;
            try
            {
                ContraToS con = datos.obtenerContrato(NumeroContrato);

                string[] HsExtXDia = null;
                if (con.HorasComunesDeterminadas == 1)
                {
                    HoRaSComUnescoNtRatOs hec = datos.obtenerHorasExtrasContrato(con.IDContratos);
                    HsExtXDia = new string[7];
                    HsExtXDia[0] = hec.Lunes;
                    HsExtXDia[1] = hec.Martes;
                    HsExtXDia[2] = hec.Miercoles;
                    HsExtXDia[3] = hec.Jueves;
                    HsExtXDia[4] = hec.Viernes;
                    HsExtXDia[5] = hec.Sabado;
                    HsExtXDia[6] = hec.Domingo;
                }

                aux = new ConSeguridadFisica((con.PagaDescanso == (sbyte)1) ? true : false, (con.HorasExtras == (sbyte)1) ? true : false, 0, 0, 0, con.FechaIni.Value, con.FechaFin, con.Ajuste, con.Observaciones, (con.CostoFijo == (sbyte)1) ? true : false, con.Costo.Value, con.PagarExtrasDespuesDeHs, (con.HorasComunesDeterminadas == 1) ? true : false, HsExtXDia);

                LineaDeHoras lhs = null;
                HorarioXDia hor = null;

                foreach (LineAshOrAs lh in con.LineAshOrAs)
                {
                    lhs = new LineaDeHoras(lh.Puesto, (lh.Armado == (sbyte)1) ? true : false, lh.PrecioXhOra.Value, (int)(lh.Cantidad), 0, 0);

                    foreach (HoRaRioDiA h in lh.HoRaRioDiA)
                    {
                        if (h.IDContrato == lh.IDContrato && h.NroLinea == lh.NroLinea)
                        {
                            hor = new HorarioXDia(h.Dia, h.HoraIni, h.HoraFin);
                            lhs.addDia(hor);
                        }
                    }
                    aux.addLinea(lhs);
                }
            }
            catch (Exception ex)
            {
                
                throw ex;
            }

            return aux;
        }
        private void GuardarBTN_Click(object sender, EventArgs e)
        {
            try
            {
                bcUC.Focus();
                if (checkDatosObligatorios())
                {
                    int numCli = int.Parse(bcUC.ClienteNRO);
                    int numSer = int.Parse(NroMTB.Text);
                    DateTime dti = DateTime.ParseExact(FIniMTB.Text, @"dd/MM/yyyy", DateTimeFormatInfo.InvariantInfo);
                    DateTime? dtf = null;
                    if (FinCKB.Checked)
                        dtf = DateTime.ParseExact(FFinMTB.Text, @"dd/MM/yyyy", DateTimeFormatInfo.InvariantInfo);
                    bool costo = (CostoCB.SelectedItem.ToString() == "Fijo");
                    bool hx = HorasExtrasCHK.Checked;
                    bool pd = PagaDescansoCKBX.Checked;
                    float monto = 0;
                    if (MontoTB.Text != "")
                        monto = int.Parse(MontoTB.Text);
                    int nroCon = CalcNroContrato(numCli, numSer);
                    int? PagarExtrasLuegoDeHs;                    
                    if (hx)
                        PagarExtrasLuegoDeHs = int.Parse(cmbDespuesDeHs.SelectedItem.ToString());
                    else
                        PagarExtrasLuegoDeHs = null;
                    bool HsExtrasDet = DetHorasComunesCB.Checked;
                    string[] HsExtXDia = null;
                    if (HsExtrasDet)
                    {
                        ValidarHorasComunesDGV();
                        HsExtXDia = new string[7];
                        for (int i = 0; i < 7; i++)
                        {
                            HsExtXDia[i] = HorasComunesDGV.Rows[0].Cells[i].Value.ToString();
                        }
                    }

                    ConSeguridadFisica con = new ConSeguridadFisica(pd, hx, 0, 0, 0, dti, dtf, AjusteTB.Text, ObsTB.Text, costo, monto, PagarExtrasLuegoDeHs, HsExtrasDet, HsExtXDia);

                    // ACA GUARDO TODOS LOS DATOS DEL DATAGRIDVIEW

                    LineaDeHoras linea = null;
                    HorarioXDia hor = null;
                    DataGridViewCell cel = null;
                    string precio;
                    foreach (DataGridViewRow fila in CargaHorariaDGV.Rows)
                    {
                        if (fila.Cells[0].RowIndex + 1 < CargaHorariaDGV.RowCount)
                        {
                            if (fila.Cells["Armado"].Value == null)
                                fila.Cells["Armado"].Value = "0";
                            precio = fila.Cells["PrecioXHora"].Value.ToString().Split(' ')[1];
                            linea = new LineaDeHoras(fila.Cells["Puesto"].Value.ToString(), (fila.Cells["Armado"].Value.ToString() == "1") ? true : false, float.Parse(precio), int.Parse(fila.Cells["Cantidad"].Value.ToString()), 0, 0);
                            for (int i = 0; i < 7; i++)
                            {
                                cel = fila.Cells[dias[i]];
                                if (cel.Value.ToString() != @"N/T")
                                {
                                    hor = new HorarioXDia(dias[i], obtHIni(cel.Value.ToString()), obtHFin(cel.Value.ToString()));
                                    linea.addDia(hor);
                                }
                            }
                            con.addLinea(linea);
                        }
                    }

                    if (datos.existeContrato(nroCon))
                        sistema.modificarContrato(nroCon, con);                       
                    else
                        sistema.altaContrato(nroCon, con);

                    MessageBox.Show("Datos guardados correctamente.", "Guardado de Datos", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    /*
                    if (datos.existeContrato(nroCon))
                        datos.modificarContrato(nroCon, dti, dtf, costo, hx, AjusteTB.Text, ObsTB.Text, monto);
                    else
                        sistema.altaContratoServicioCliente(numCli, numSer, CalcNroContrato(numCli,numSer), dti, dtf, costo,  hx, AjusteTB.Text, ObsTB.Text, monto);
                    */
                    //CancelarBTN.PerformClick();

                }
                else                
                    MessageBox.Show(this, msgError, "Contrato no válido", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }        
        }