public FileStreamResult GetConstanciaGeneral(int id)
        {
            int idValido = 0;
            Vacacion_Contrato vacacion_contrato = db.Vacacion_Contrato.SingleOrDefault(v => v.id_vacacion_contrato == id && v.activo);

            if (vacacion_contrato != null)
            {
                idValido = vacacion_contrato.id_vacacion_contrato;
            }
            string     parametros      = "&id_vacacion_contrato=" + idValido.ToString();
            string     reporte         = "rpt_Constancia_Vacaciones";
            PDF_Protal archivo_reporte = new PDF_Protal(reporte, parametros);

            byte[] fileBytes = archivo_reporte.obtener_reporte();
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.AddHeader(
                "content-disposition",
                "attachment; filename=\"Constancia de Vacaciones " + idValido.ToString() +
                ".pdf\"");
            Response.BinaryWrite(fileBytes);
            Response.Flush();
            Response.End();
            return(new FileStreamResult(Response.OutputStream, "application/pdf"));
        }
예제 #2
0
        public Vacacion_Contrato NuevoVacacion_Contrato()
        {
            Vacacion_Contrato vacacion_contrato = new Vacacion_Contrato();

            vacacion_contrato.fecha_creacion      = DateTime.Now;
            vacacion_contrato.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
            vacacion_contrato.activo    = true;
            vacacion_contrato.eliminado = false;
            return(vacacion_contrato);
        }
예제 #3
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"));
                }
            }
        }
예제 #4
0
        public ActionResult Create(Contratacion contrato)
        {
            ModelState.Clear();
            if (db.Contratacion.Where(c => c.activo && !c.eliminado && c.id_empleado == contrato.id_empleado).Count() > 0)
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Error, "El empleado ya tiene un contrato activo en una empresa.");
                msg.ReturnUrl = Url.Action("Details", "Empleado", new { id = contrato.id_empleado });
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            if (ModelState.IsValid)
            {
                using (DbContextTransaction tran = db.Database.BeginTransaction())
                {
                    try
                    {
                        Puesto puesto = db.Puesto.SingleOrDefault(p => p.id_puesto == contrato.id_puesto);
                        contrato.id_ubicacion = (int)Catalogos.Ubicacion.Central;
                        Salario salario = new Salario();
                        salario.bono_decreto        = puesto.bono_decreto;
                        salario.bono_extra          = puesto.bono_extra;
                        salario.sueldo_base         = puesto.sueldo_base;
                        salario.prestaciones        = puesto.prestaciones;
                        salario.activo              = contrato.activo = true;
                        salario.id_empleado         = contrato.id_empleado;
                        salario.eliminado           = contrato.eliminado = false;
                        salario.fecha_creacion      = contrato.fecha_creacion = DateTime.Now;
                        salario.id_usuario_creacion = contrato.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;

                        contrato.id_estado_empleado = (int)Catalogos.Estado_Empleado.Alta;
                        db.Salario.Add(salario);
                        db.SaveChanges();

                        contrato.id_salario = salario.id_salario;
                        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 = contrato.id_empleado, error = "" }));
                    }
                    catch
                    {
                        tran.Rollback();
                        ModelState.AddModelError("", "Fallo en la creación del contrato. Datos no guardados.");
                    }
                }
            }
            Empleado empleado = db.Empleado.SingleOrDefault(e => e.id_empleado == contrato.id_empleado && e.activo);

            if (empleado == null)
            {
                return(HttpNotFound());
            }
            ViewBag.empresa = new SelectList(db.Empresa.Where(p => !p.eliminado), "id_empresa", "nombre", contrato.id_empresa);
            ViewBag.fecha_inicio_contrato = contrato.fecha_inicio.ToString("dd/MM/yyyy");
            ViewBag.nombre_empleado       =
                empleado.primer_nombre + " " +
                (!String.IsNullOrEmpty(empleado.segundo_nombre) ? empleado.segundo_nombre + " " : "") +
                empleado.primer_apellido + " " +
                (!String.IsNullOrEmpty(empleado.segundo_apellido) ? empleado.segundo_apellido : "");
            contrato             = new Contratacion();
            contrato.id_empleado = empleado.id_empleado;
            return(View(contrato));
        }