示例#1
0
        public int Create(Empleado_Infonavit model, int idUser)
        {
            if (model.TipoCredito == 4)
            {
                model.UsarUMA     = true;
                model.TipoCredito = 4;
            }
            else
            {
                model.UsarUMA = false;
            }

            model.Status       = true;
            model.FechaReg     = DateTime.Now;
            model.IdUsuarioReg = idUser;

            using (var context = new RHEntities())
            {
                context.Empleado_Infonavit.Add(model);

                var status = context.SaveChanges();
                if (status > 0)
                {
                    Notificaciones.INFONAVIT(model, "Nuevo Crédito");
                    return(model.Id);
                }
                return(0);
            }
        }
示例#2
0
        public bool CrearPermiso(Permisos bn)
        {
            var noti          = new Notificaciones();
            var result        = false;
            var DatosEmpleado = ctx.Empleado.FirstOrDefault(x => x.IdEmpleado == bn.IdEmpleado);

            var DatosContrato = (from empl_contr in ctx.Empleado_Contrato
                                 where empl_contr.IdEmpleado == DatosEmpleado.IdEmpleado
                                 orderby empl_contr.IdContrato descending
                                 select empl_contr).Take(1).FirstOrDefault();
            var DatosPuesto       = ctx.Puesto.FirstOrDefault(x => x.IdPuesto == DatosContrato.IdPuesto);
            var DatosDepartamento = ctx.Departamento.FirstOrDefault(x => x.IdDepartamento == DatosPuesto.IdDepartamento);

            bn.FechaReg = DateTime.Now;
            ctx.Permisos.Add(bn);
            _Inasistencias ina       = new _Inasistencias();
            var            duplicado = ina.RevisarDuplicados(bn.IdEmpleado, bn.FechaInicio, bn.FechaFin);

            if (duplicado == null)
            {
                ctx.SaveChanges();
                noti.Permisos(bn, DatosEmpleado, DatosPuesto, DatosDepartamento);
                return(false);
            }
            else
            {
                return(true);
            }
        }
示例#3
0
        /// <summary>
        /// Crear Incapacidad
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool CrearIncapacidad(Incapacidades inc, int idUser)
        {
            var noti   = new Notificaciones();
            var result = false;

            if (inc.Tipo == "Riesgo de trabajo")
            {
                inc.IdIncapacidadesSat = 1;
            }
            else if (inc.Tipo == "Enfermedad General")
            {
                inc.IdIncapacidadesSat = 2;
            }
            else if (inc.Tipo == "Prematernal" || inc.Tipo == "Maternal de enlace" || inc.Tipo == "Postmaternal")
            {
                inc.IdIncapacidadesSat = 3;
            }

            using (var context = new RHEntities())
            {
                //buscamos el contrato actual
                var itemContrato =
                    context.Empleado_Contrato.Where(x => x.Status == true)
                    .FirstOrDefault(x => x.IdEmpleado == inc.IdEmpleado);

                if (itemContrato != null)
                {
                    inc.IdContrato      = itemContrato.IdContrato;
                    inc.IdSucursal      = itemContrato.IdSucursal;
                    inc.IdEmpresaFiscal = itemContrato.IdEmpresaFiscal ?? 0;
                    inc.FechaReg        = DateTime.Now;
                    inc.IdUsuarioReg    = idUser;
                    inc.Sdi             = itemContrato.SDI;

                    context.Incapacidades.Add(inc);
                    var r = context.SaveChanges();

                    if (r > 0)
                    {
                        result = true;
                        noti.Incapacidad(inc);
                    }
                }
            }



            return(result);
        }
示例#4
0
        public bool CrearVacaciones(Vacaciones collection)
        {
            var periodo = ctx.PeriodoVacaciones.FirstOrDefault(x => x.IdPeridoVacaciones == collection.IdPeridoVacaciones);
            var datos   = from empleado in ctx.Empleado
                          join emp_contr in ctx.Empleado_Contrato
                          on empleado.IdEmpleado equals emp_contr.IdEmpleado
                          join contrato in ctx.Empleado_Contrato
                          on emp_contr.IdContrato equals contrato.IdContrato
                          where emp_contr.IdContrato == periodo.IdEmpleado_Contrato
                          select new DatosEmpleadoVacaciones
            {
                IdEmpleado = empleado.IdEmpleado,
                Nombres    = empleado.Nombres,
                Paterno    = empleado.APaterno,
                Materno    = empleado.AMaterno,
                IdSucursal = empleado.IdSucursal
            };
            var DatosEmpleado = datos.FirstOrDefault();

            collection.Status = true;

            ctx.Vacaciones.Add(collection);
            _Inasistencias ina       = new _Inasistencias();
            var            duplicado = ina.RevisarDuplicados(collection.Id, collection.FechaInicio, collection.FechaFin);

            if (duplicado == null)
            {
                try
                {
                    var noti = new Notificaciones();
                    ctx.SaveChanges();
                    noti.Vacaciones(collection, DatosEmpleado, periodo);
                }
                catch (SqlException e)
                {
                    string r = e.Message;
                }
                return(false);
            }
            else
            {
                return(true);
            }
        }
示例#5
0
        public int Create(Empleado_Infonavit model)
        {
            if (model.TipoCredito == 4)
            {
                model.UsarUMA     = true;
                model.TipoCredito = 4;
            }
            else
            {
                model.UsarUMA = false;
            }
            model.Status = true;
            ctx.Empleado_Infonavit.Add(model);
            var status = ctx.SaveChanges();

            if (status > 0)
            {
                Notificaciones.INFONAVIT(model, "Nuevo Crédito");
                return(model.Id);
            }
            return(0);
        }
示例#6
0
        public int Update(Empleado_Infonavit newModel, int idUser)
        {
            using (var context = new RHEntities())
            {
                var title = "Actualización de Crédito";
                if (newModel.FechaSuspension != null)
                {
                    newModel.Status = false;
                    title           = "Suspensión de Crédito";
                }

                var old = context.Empleado_Infonavit.FirstOrDefault(x => x.Id == newModel.Id);

                if (old == null)
                {
                    return(0);
                }

                old.NumCredito      = newModel.NumCredito;
                old.TipoCredito     = newModel.TipoCredito;
                old.FactorDescuento = newModel.FactorDescuento;
                //old.Salario = newModel.Salario;
                old.FechaInicio     = newModel.FechaInicio;
                old.FechaSuspension = newModel.FechaSuspension;
                old.UsarUMA         = newModel.TipoCredito == 4;//VSM UMA
                old.Status          = newModel.Status;
                old.FechaMod        = DateTime.Now;
                old.IdUsuarioMod    = idUser;
                var status = context.SaveChanges();

                if (status > 0)
                {
                    Notificaciones.INFONAVIT(newModel, title);
                    return(newModel.Id);
                }
                return(0);
            }
        }
        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);
                    }
                }
            }
        }
示例#8
0
        public List <respuesta> registrarCumpleIMSS(List <CumpleIMSS> cumple, int iduser)
        {
            var result           = false;
            List <respuesta> res = new List <respuesta>();

            foreach (var c in cumple)
            {
                respuesta itemr = new respuesta();
                Empleado  emp   = new Empleado();
                emp = (from ec in ctx.Empleado_Contrato
                       join e in ctx.Empleado
                       on ec.IdEmpleado equals e.IdEmpleado
                       where ec.IdContrato == c.IdContrato
                       select e).FirstOrDefault();

                var busqueda = ctx.CumpleIMSS.Where(x => x.IdContrato == c.IdContrato && x.FechaIMSS == c.FechaIMSS && x.Anio == c.Anio).FirstOrDefault();

                if (busqueda == null)
                {
                    c.Usuario       = iduser;
                    c.FechaRegistro = DateTime.Now;
                    ctx.CumpleIMSS.Add(c);

                    var r = ctx.SaveChanges();

                    if (r > 0)
                    {
                        result = true;
                    }

                    if (result == true)
                    {
                        //Guarda los cambios al contrato
                        var item = ctx.Empleado_Contrato.FirstOrDefault(x => x.IdContrato == c.IdContrato);

                        if (item != null)
                        {
                            var sdiAnterior = item.SDI;

                            item.SDI = c.SDINuevo;
                            item.SBC = c.SDINuevo;
                            ctx.SaveChanges();

                            //Agregar un registro al Kardex
                            KardexEmpleado kardex = new KardexEmpleado();
                            kardex.Salarios(item.IdEmpleado, sdiAnterior, c.SDINuevo, (int)TipoKardex.Cumple_Imss, iduser);
                        }
                    }
                    var noti = new Notificaciones();
                    Notificaciones.CumpleIMSS(c.IdContrato, c);
                    noti.SalarioDiarioIntegrado(emp.IdEmpleado, c.SDINuevo, c.SDIViejo);
                    itemr.Nombre  = emp.Nombres;
                    itemr.Paterno = emp.APaterno;
                    itemr.Materno = emp.AMaterno;
                    itemr.Estatus = true;
                    res.Add(itemr);
                }
                else
                {
                    itemr.Nombre  = emp.Nombres;
                    itemr.Paterno = emp.APaterno;
                    itemr.Materno = emp.AMaterno;
                    itemr.Estatus = false;
                    res.Add(itemr);
                }
            }

            return(res);
        }
示例#9
0
        //public bool UploadRecords(DataTable data, int idSucursal, int idCliente, int idUsuario)
        //{
        //    Empleados ctx = new Empleados();

        //    foreach (DataRow row in data.Rows)
        //    {
        //        //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();
        //        empleado.Direccion = (row["Dirección"] == DBNull.Value) ? "Dirección no proporcionada" : 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
        //            ctx.CrearContrato(contrato);

        //            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, false);

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

        //            //Asignar conceptos Default
        //            ConceptosNomina.AsignarConceptosDefaultByEmpleado(idSucursal, idEmpleado);
        //        }
        //        else
        //        {
        //            return false;
        //        }
        //    }
        //    return true;
        //}

        public bool UploadRecords(DataTable data, int idSucursal, int idCliente, int idUsuario)
        {
            try {
                List <Empleado>          listaEmpleados = new List <Empleado>();
                List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>();
                List <DatosBancarios>    listaBancarios = new List <DatosBancarios>();
                List <Puesto>            puestos        = new List <Puesto>();
                List <Empresa>           empresas       = new List <Empresa>();
                List <C_Banco_SAT>       bancos         = new List <C_Banco_SAT>();

                using (var context = new RHEntities())
                {
                    puestos  = context.Puesto.ToList();
                    empresas = context.Empresa.ToList();
                    bancos   = context.C_Banco_SAT.ToList();
                }

                Empleados ctx = new Empleados();

                #region Regitro de datos personal de empleados
                foreach (DataRow row in data.Rows)
                {
                    //Datos Empleado
                    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();
                    empleado.Direccion       = (row["Dirección"] == DBNull.Value) ? "Dirección no proporcionada" : row["Dirección"].ToString();
                    empleado.IdSucursal      = idSucursal;
                    empleado.EstadoCivil     = row["Edo Civil"].ToString();
                    empleado.Status          = true;
                    empleado.RFCValidadoSAT  = 2;
                    empleado.FechaReg        = DateTime.Now;
                    empleado.IdUsuarioReg    = idUsuario;

                    listaEmpleados.Add(empleado);
                }
                // se registran todos los datos personales del empleado a ecxepcion de los de contrato y bancarios
                ctx.CrearEmpleados(listaEmpleados);
                #endregion

                #region REGISTRO DE CONTRATOS - DATOS BANCARIOS
                foreach (DataRow row in data.Rows)
                {
                    #region DATOS CONTRATO
                    var rfcComparacion = row["RFC"].ToString().Trim();
                    var idEmpleado     = listaEmpleados.Where(x => x.RFC == rfcComparacion).Select(x => x.IdEmpleado).FirstOrDefault();

                    if (idEmpleado == 0)
                    {
                        continue;
                    }

                    //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"]);
                    }

                    var puestoDatatable = row["Puesto"].ToString();
                    contrato.IdPuesto           = puestos.Where(x => x.Descripcion == puestoDatatable).Select(x => x.IdPuesto).FirstOrDefault();
                    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;

                    int idEmpresaAsimilado = 0;

                    if (row["Empresa Fiscal"] != DBNull.Value)
                    {
                        var empresaFiscalDatatable = row["Empresa Fiscal"].ToString();
                        contrato.IdEmpresaFiscal = empresas.Where(x => x.RazonSocial == empresaFiscalDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                    }

                    if (row["Empresa Complemento"] != DBNull.Value)
                    {
                        var empresaComplementoDatatable = row["Empresa Complemento"].ToString();
                        contrato.IdEmpresaComplemento = empresas.Where(x => x.RazonSocial == empresaComplementoDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                    }

                    if (row["Empresa Sindicato"] != DBNull.Value)
                    {
                        var empresaSindicatoDatatable = row["Empresa Sindicato"].ToString();
                        contrato.IdEmpresaSindicato = empresas.Where(x => x.RazonSocial == empresaSindicatoDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                    }

                    if (row["Empresa Asimilado"] != DBNull.Value)
                    {
                        var empresaAsimiladoDatatable = row["Empresa Asimilado"].ToString();
                        idEmpresaAsimilado          = empresas.Where(x => x.RazonSocial == empresaAsimiladoDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                        contrato.IdEmpresaAsimilado = idEmpresaAsimilado;
                    }

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

                    //Tipo Jornada
                    contrato.IdTipoJornada = 3;
                    contrato.FechaReg      = DateTime.Now;
                    contrato.IdUsuarioReg  = idUsuario;

                    #endregion
                    #region DATOS BANCARIOS

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

                    if (row["Banco"].ToString().Trim() != "")
                    {
                        var bancoDatatable = row["Banco"].ToString();
                        bancarios.IdBanco = bancos.Where(x => x.Descripcion == bancoDatatable).Select(x => x.IdBanco).FirstOrDefault();
                    }

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

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

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

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

                    #region BENEFICIARIOS

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

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

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

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

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

                    bancarios.Status = true;

                    //se agregan a las listas
                    listaContratos.Add(contrato);
                    listaBancarios.Add(bancarios);

                    #endregion
                }//fin del segundo for

                //se guardan los datos en DB
                ctx.CrearContratosDatosB(listaContratos, listaBancarios);

                #endregion

                var noti             = new Notificaciones();
                var arrayIdsEmpleado = listaEmpleados.Select(x => x.IdEmpleado).ToArray();
                //noti.Alta(idEmpleado);
                noti.Alta(arrayIdsEmpleado, idUsuario);

                KardexEmpleado kardex = new KardexEmpleado();
                kardex.AltaByArray(arrayIdsEmpleado, idUsuario);

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

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }