Пример #1
0
        public Empleado_Direcciones CopiarDireccion(Empleado_Direcciones direccion)
        {
            Empleado_Direcciones nuevaDireccion = new Empleado_Direcciones();

            nuevaDireccion.activo              = true;
            nuevaDireccion.eliminado           = false;
            nuevaDireccion.avenida             = direccion.avenida;
            nuevaDireccion.calle               = direccion.calle;
            nuevaDireccion.colonia_cc_edificio = direccion.colonia_cc_edificio;
            nuevaDireccion.comentario          = direccion.comentario;
            nuevaDireccion.id_municipio        = direccion.id_municipio;
            nuevaDireccion.id_tipo_direccion   = direccion.id_tipo_direccion;
            nuevaDireccion.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
            nuevaDireccion.fecha_creacion      = DateTime.Now;
            nuevaDireccion.kilometro           = direccion.kilometro;
            nuevaDireccion.local               = direccion.local;
            nuevaDireccion.no_casa             = direccion.no_casa;
            nuevaDireccion.zona      = direccion.zona;
            nuevaDireccion.direccion = direccion.direccion;
            return(nuevaDireccion);
        }
Пример #2
0
        public ActionResult NuevoCodigoEmpleado(Contratacion contrato)
        {
            Empleado empleado = db.Empleado.SingleOrDefault(e => e.id_empleado == contrato.id_empleado && !e.eliminado);

            if (empleado == null)
            {
                return(HttpNotFound());
            }
            if (empleado.Contratacion.Where(c => c.activo).Count() > 0)
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Info, "No se pudo crear el empleado a partir de la información existente. El empleado seleccionado todavía esta de Alta..");
                msg.ReturnUrl = null;
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            int id_usuario = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;

            using (DbContextTransaction tran = db.Database.BeginTransaction())
            {
                try
                {
                    Empleado nuevoEmpleado = CopiarEmpleado(empleado);
                    db.Empleado.Add(nuevoEmpleado);
                    db.SaveChanges();
                    //Copiar Telefonos
                    foreach (var telefono in empleado.Empleado_Telefono.Where(e => e.activo && !e.eliminado))
                    {
                        Empleado_Telefono nuevoTelefono = new Empleado_Telefono();
                        nuevoTelefono.telefono            = telefono.telefono;
                        nuevoTelefono.extension           = telefono.extension;
                        nuevoTelefono.id_tipo_telefono    = telefono.id_tipo_telefono;
                        nuevoTelefono.comentario          = telefono.comentario;
                        nuevoTelefono.activo              = true;
                        nuevoTelefono.eliminado           = false;
                        nuevoTelefono.fecha_creacion      = DateTime.Now;
                        nuevoTelefono.id_usuario_creacion = id_usuario;
                        nuevoTelefono.id_empleado         = nuevoEmpleado.id_empleado;
                        db.Empleado_Telefono.Add(nuevoTelefono);
                    }
                    //Copiar direcciones
                    foreach (var direccion in empleado.Empleado_Direcciones.Where(d => d.activo && !d.eliminado))
                    {
                        Empleado_Direcciones nuevaDireccion = CopiarDireccion(direccion);
                        nuevaDireccion.id_empleado = nuevoEmpleado.id_empleado;
                        db.Empleado_Direcciones.Add(nuevaDireccion);
                    }
                    //Copiar Archivos
                    foreach (var archivo in empleado.Archivo_Empleado.Where(e => e.activo && !e.eliminado && e.Archivo.id_tipo_archivo == (int)Catalogos.Tipo_Archivo.Foto_Perfil))
                    {
                        Archivo imagen     = new Archivo();
                        string  name       = "foto_" + nuevoEmpleado.id_empleado;
                        string  extension  = ".jpg";
                        string  ruta_vieja = archivo.Archivo.ubicacion;
                        imagen.id_tipo_archivo     = (int)Catalogos.Tipo_Archivo.Foto_Perfil;
                        imagen.id_usuario_creacion = id_usuario;
                        imagen.fecha_creacion      = DateTime.Now;
                        imagen.activo    = true; imagen.eliminado = false;
                        imagen.nombre    = name + extension;
                        imagen.ubicacion = "~/Archivos/Foto Perfil/" + name + extension;

                        db.Archivo.Add(imagen);
                        db.SaveChanges();

                        System.IO.File.Copy(Server.MapPath(ruta_vieja), Server.MapPath(imagen.ubicacion), true);

                        //Relacionar la imagen con el usuario
                        Archivo_Empleado nuevo_archivo_empleado = new Archivo_Empleado();
                        nuevo_archivo_empleado.id_archivo          = imagen.id_archivo;
                        nuevo_archivo_empleado.id_empleado         = nuevoEmpleado.id_empleado;
                        nuevo_archivo_empleado.id_usuario_creacion = id_usuario;
                        nuevo_archivo_empleado.fecha_creacion      = DateTime.Now;
                        nuevo_archivo_empleado.activo    = true;
                        nuevo_archivo_empleado.eliminado = false;
                        db.Archivo_Empleado.Add(nuevo_archivo_empleado);
                    }
                    //Asignar Salario
                    Salario salario = new Salario();
                    Puesto  puesto  = db.Puesto.SingleOrDefault(p => p.id_puesto == contrato.id_puesto);
                    salario.bono_decreto        = puesto.bono_decreto;
                    salario.bono_extra          = puesto.bono_extra;
                    salario.sueldo_base         = puesto.sueldo_base;
                    salario.prestaciones        = puesto.prestaciones;
                    salario.activo              = true;
                    salario.id_empleado         = contrato.id_empleado;
                    salario.eliminado           = false;
                    salario.fecha_creacion      = contrato.fecha_creacion = DateTime.Now;
                    salario.id_usuario_creacion = id_usuario;

                    db.Salario.Add(salario);
                    db.SaveChanges();

                    //Crear nuevo contrato
                    contrato.id_salario          = salario.id_salario;
                    contrato.id_empleado         = nuevoEmpleado.id_empleado;
                    contrato.id_ubicacion        = contrato.id_ubicacion == 0 ? (int)Catalogos.Ubicacion.Central : contrato.id_ubicacion;
                    contrato.fecha_creacion      = DateTime.Now;
                    contrato.id_usuario_creacion = id_usuario;
                    contrato.id_estado_empleado  = (int)Catalogos.Estado_Empleado.Alta;
                    contrato.activo    = true;
                    contrato.eliminado = false;
                    db.Contratacion.Add(contrato);
                    db.SaveChanges();

                    //Crear periodo de vacaciones para el nuevo contrato
                    Vacacion_Contrato vacacion_contrato = NuevoVacacion_Contrato();
                    vacacion_contrato.id_contratacion = contrato.id_contratacion;
                    vacacion_contrato.dias_total      = 15;
                    vacacion_contrato.id_empleado     = contrato.id_empleado;
                    vacacion_contrato.id_periodo      = db.Periodo.Where(p => p.activo && !p.eliminado).FirstOrDefault().id_periodo;
                    db.Vacacion_Contrato.Add(vacacion_contrato);
                    db.SaveChanges();

                    tran.Commit();
                    return(RedirectToAction("Details", "Empleado", new { id = nuevoEmpleado.id_empleado }));
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    ContextMessage msg = new ContextMessage(ContextMessage.Error, "Ocurrio un error innesperado. " + ex.Message);
                    msg.ReturnUrl = null;
                    TempData[User.Identity.Name] = msg;
                    return(RedirectToAction("Mensaje"));
                }
            }
        }