//bancos
        private IXLRange getBancos(IXLWorksheet ws)
        {
            Bancos ctx_bancos = new Bancos();
            var    bancos     = ctx_bancos.ObtenerBancosDescripcion();

            if (bancos.Count > 0)
            {
                ws.Cell(1, 3).Value = "Bancos";
                var range = ws.Cell(2, 3).InsertData(bancos);
                return(range);
            }
            else
            {
                return(null);
            }
        }
        public void UploadRecords(DataTable data, int idSucursal, int idCliente, int idUsuario)
        {
            int       columnas = data.Columns.Count;
            Empleados ctx      = new Empleados();

            DataView dv = data.DefaultView;

            dv.Sort = "Paterno asc";//desc
            DataTable sortedDT = dv.ToTable();

            foreach (DataRow row in sortedDT.Rows)
            {
                if (validateRow(row))
                {
                    //Datos Personales
                    Empleado empleado = new Empleado();
                    empleado.Nombres         = row["Nombres"].ToString();
                    empleado.APaterno        = row["Paterno"].ToString();
                    empleado.AMaterno        = row["Materno"].ToString();
                    empleado.FechaNacimiento = Convert.ToDateTime(row["Fecha de Nacimiento"].ToString());
                    empleado.Sexo            = row["Sexo"].ToString().Equals("Hombre") ? "H" : "M";
                    empleado.RFC             = row["RFC"].ToString().Trim();
                    empleado.CURP            = row["CURP"].ToString().Trim();
                    empleado.NSS             = row["NSS"].ToString();
                    empleado.Nacionalidad    = row["Nacionalidad"].ToString();
                    empleado.Estado          = row["Estado de Origen"].ToString();
                    empleado.Telefono        = row["Teléfono"].ToString();
                    empleado.Celular         = row["Celular"].ToString();
                    empleado.Email           = row["Email"].ToString();
                    //Se guarda la dirección del empleado
                    empleado.Direccion = row["Dirección"].ToString();
                    //si la direccion es null se coloca en la celda de dirección "No proporcionada"
                    if (row["Dirección"] == DBNull.Value)
                    {
                        empleado.Direccion = "Dirección no proporcionada";
                    }
                    else
                    {
                        empleado.Direccion = row["Dirección"].ToString();
                    }
                    empleado.IdSucursal     = idSucursal;
                    empleado.EstadoCivil    = row["Edo Civil"].ToString();
                    empleado.Status         = true;
                    empleado.RFCValidadoSAT = 2;

                    var idEmpleado = ctx.CrearEmpleado(empleado, idUsuario);

                    if (idEmpleado > 0)
                    {
                        //Datos de Contratación
                        Empleado_Contrato contrato = new Empleado_Contrato();
                        contrato.IdEmpleado = idEmpleado;
                        contrato.FechaAlta  = Convert.ToDateTime(row["Fecha Alta"].ToString());
                        contrato.FechaReal  = Convert.ToDateTime(row["Fecha Real"].ToString());
                        if (row["Fecha IMSS"] != DBNull.Value)
                        {
                            contrato.FechaIMSS = Convert.ToDateTime(row["Fecha IMSS"].ToString());
                        }
                        if (row["UMF"] != DBNull.Value)
                        {
                            contrato.UMF = row["UMF"].ToString();
                        }
                        contrato.TipoContrato = row["Tipo Contrato"].ToString().Equals("Temporal") ? 2 : 1;
                        if (contrato.TipoContrato == 2)
                        {
                            contrato.Vigencia     = Convert.ToDateTime(row["Vigencia"].ToString());
                            contrato.DiasContrato = Convert.ToInt32(row["Días Contrato"]);
                        }
                        Puestos ctxPuestos = new Puestos();
                        contrato.IdPuesto           = ctxPuestos.ObtenerPuestoPorDescripcion(row["Puesto"].ToString());
                        contrato.Turno              = UtilsEmpleados.SeleccionarTurno(row["Turno"].ToString());
                        contrato.DiaDescanso        = UtilsEmpleados.selectDay(row["Descanso"].ToString());
                        contrato.IdPeriodicidadPago = UtilsEmpleados.SeleccionarPeriodicidadDePago(row["Periodicidad de pago"].ToString());
                        contrato.FormaPago          = UtilsEmpleados.SeleccionarFormaPago(row["Método Pago"].ToString());
                        contrato.PagoElectronico    = (contrato.FormaPago == 3 || contrato.FormaPago == 4 || contrato.FormaPago == 5 || contrato.FormaPago == 6 || contrato.FormaPago == 7) ? true : false;
                        contrato.SD                = Convert.ToDecimal(row["SD"].ToString());
                        contrato.SDI               = Convert.ToDecimal(row["SDI"].ToString());
                        contrato.SBC               = Convert.ToDecimal(row["SBC"].ToString());
                        contrato.SalarioReal       = Convert.ToDecimal(row["Salario Real"].ToString());
                        contrato.IdTipoJornada     = UtilsEmpleados.SeleccionarTipoNomina(row["Tipo de Jornada"].ToString());
                        contrato.TipoSalario       = UtilsEmpleados.SeleccionarTipoSalario(row["Tipo Salario"].ToString());
                        contrato.EntidadDeServicio = (row["Entidad de Servicio"].ToString());
                        contrato.Sindicalizado     = (row["Sindicalizado"].ToString().ToUpper().Equals("SI")) ? true : false;
                        contrato.Status            = true;
                        contrato.IdSucursal        = idSucursal;



                        Empresas ctxRP              = new Empresas();
                        int      idEmpresaFiscal    = 0;
                        int      idEmpresaAsimilado = 0;

                        if (row["Empresa Fiscal"] != DBNull.Value)
                        {
                            idEmpresaFiscal = ctxRP.GetIdByRazonSocial(row["Empresa Fiscal"].ToString(), idCliente);

                            contrato.IdEmpresaFiscal = idEmpresaFiscal;
                        }

                        if (row["Empresa Complemento"] != DBNull.Value)
                        {
                            contrato.IdEmpresaComplemento = ctxRP.GetIdByRazonSocial(row["Empresa Complemento"].ToString(), idCliente);
                        }

                        if (row["Empresa Sindicato"] != DBNull.Value)
                        {
                            contrato.IdEmpresaSindicato = ctxRP.GetIdByRazonSocial(row["Empresa Sindicato"].ToString(), idCliente);
                        }

                        if (row["Empresa Asimilado"] != DBNull.Value)
                        {
                            idEmpresaAsimilado          = ctxRP.GetIdByRazonSocial(row["Empresa Asimilado"].ToString(), idCliente);
                            contrato.IdEmpresaAsimilado = idEmpresaAsimilado;
                        }

                        //Tipo Regimen
                        contrato.IdTipoRegimen = idEmpresaAsimilado > 0 ? 8 : 1;//Asimilado Honorarios sino Sueldo

                        //Tipo Jornada
                        contrato.IdTipoJornada = 3;

                        //Crea el contrato en la base de datos
                        //factorfx
                        ctx.CrearContrato(contrato, idUsuario);

                        DatosBancarios bancarios = new DatosBancarios();
                        bancarios.IdEmpleado = idEmpleado;
                        Bancos bllBancos = new Bancos();

                        if (row["Banco"].ToString().Trim() != "")
                        {
                            bancarios.IdBanco = bllBancos.ObtenerIdBancoPorDescripcion(row["Banco"].ToString());
                        }

                        int numDatosBancarios = 0;
                        if (row["No Siga Fiscal"] != DBNull.Value)
                        {
                            if (row["No Siga Fiscal"].ToString().Trim() != "")
                            {
                                bancarios.NoSigaF = Convert.ToInt32(row["No Siga Fiscal"]);
                                numDatosBancarios++;
                            }
                        }
                        if (row["No Siga Complemento"] != DBNull.Value)
                        {
                            if (row["No Siga Complemento"].ToString().Trim() != "")
                            {
                                bancarios.NoSigaC = Convert.ToInt32(row["No Siga Complemento"]);
                                numDatosBancarios++;
                            }
                        }


                        if (row["Cuenta Bancaria"] != DBNull.Value)
                        {
                            bancarios.CuentaBancaria = row["Cuenta Bancaria"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["# Tarjeta"] != DBNull.Value)
                        {
                            bancarios.NumeroTarjeta = row["# Tarjeta"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["Clabe"] != DBNull.Value)
                        {
                            bancarios.Clabe = row["Clabe"].ToString();
                            numDatosBancarios++;
                        }


                        #region BENEFICIARIOS

                        if (row["Nombre Beneficiario"] != DBNull.Value)
                        {
                            bancarios.NombreBeneficiario = row["Nombre Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["RFC Beneficiario"] != DBNull.Value)
                        {
                            bancarios.RFCBeneficiario = row["RFC Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["CURP Beneficiario"] != DBNull.Value)
                        {
                            bancarios.CURPBeneficiario = row["CURP Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["Parentezco Beneficiario"] != DBNull.Value)
                        {
                            bancarios.ParentezcoBeneficiario = row["Parentezco Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["Domicilio Beneficiario"] != DBNull.Value)
                        {
                            bancarios.DomicilioBeneficiario = row["Domicilio Beneficiario"].ToString();
                            numDatosBancarios++;
                        }
                        #endregion



                        bancarios.Status = true;

                        if (numDatosBancarios > 0)
                        {
                            ctx.NewDatosBancarios(bancarios, idUsuario, false);
                        }

                        var noti = new Notificaciones();
                        noti.Alta(idEmpleado);

                        //Asignar conceptos Default
                        ConceptosNomina.AsignarConceptosDefaultByEmpleado(idSucursal, idEmpleado);
                    }
                }
            }
        }