Пример #1
0
 public void SubirNota(HttpPostedFileBase file, int id_curso_empleado)
 {
     if (file != null && file.ContentLength > 0)
     {
         using (DbContextTransaction tran = db.Database.BeginTransaction())
         {
             try
             {
                 string name      = file.FileName;
                 string extension = name.Substring(name.LastIndexOf('.'));
                 string ruta      = "~/Archivos/Notas/" + id_curso_empleado.ToString() + extension;
                 file.SaveAs(Server.MapPath(ruta));
                 Curso_Empleado curso_empleado = db.Curso_Empleado.Find(id_curso_empleado);
                 Archivo        archivo        = db.Archivo.Find(curso_empleado.id_archivo);
                 if (archivo == null)
                 {
                     archivo        = new Archivo();
                     archivo.activo = true; archivo.eliminado = false;
                     archivo.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                     archivo.ubicacion           = ruta;
                     archivo.nombre          = file.FileName;
                     archivo.fecha_creacion  = DateTime.Now;
                     archivo.id_tipo_archivo = (int)Catalogos.Tipo_Archivo.Notas;
                     db.Archivo.Add(archivo);
                     db.SaveChanges();
                     curso_empleado.id_archivo      = archivo.id_archivo;
                     db.Entry(curso_empleado).State = EntityState.Modified;
                     db.SaveChanges();
                     Archivo_Empleado archivo_empleado = new Archivo_Empleado();
                     archivo_empleado.id_empleado         = curso_empleado.id_empleado;
                     archivo_empleado.id_archivo          = archivo.id_archivo;
                     archivo_empleado.fecha_creacion      = DateTime.Now;
                     archivo_empleado.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                 }
                 else
                 {
                     archivo.nombre    = file.FileName;
                     archivo.ubicacion = ruta;
                     archivo.id_usuario_modificacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                     archivo.fecha_modificacion      = DateTime.Now;
                     db.Entry(archivo).State         = EntityState.Modified;
                     db.SaveChanges();
                 }
                 tran.Commit();
             }
             catch
             {
                 tran.Rollback();
             }
         }
     }
 }
Пример #2
0
        public ActionResult GuardarImagen(int id_empleado)
        {
            Empleado empleado = db.Empleado.SingleOrDefault(e => e.id_empleado == id_empleado && e.activo);

            if (empleado == null)
            {
                ContextMessage msg = new ContextMessage(ContextMessage.Error, "Empleado no encontrado. Imagen no fue guardada.");
                msg.ReturnUrl = Url.Action("TomarImagen");
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            var    imagenes           = empleado.Archivo_Empleado.Where(a => a.activo && a.Archivo.id_tipo_archivo == (int)Catalogos.Tipo_Archivo.Foto_Perfil);
            string error              = "";
            string ruta_imagen_webcam = "~/Archivos/Temp/webcam_picture_" + Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario + ".jpg";

            if (imagenes.Count() > 0) //Hay foto de perfil
            {
                var imagen = imagenes.First();
                error += "1";
                System.IO.File.Copy(Server.MapPath(ruta_imagen_webcam), Server.MapPath(imagen.Archivo.ubicacion), true);
                ContextMessage msg = new ContextMessage(ContextMessage.Success, "Imagen guardada con éxito.");
                msg.ReturnUrl = Url.Action("TomarImagen");
                TempData[User.Identity.Name] = msg;
                return(RedirectToAction("Mensaje"));
            }
            else //No hay foto de perfil
            {
                using (DbContextTransaction tran = db.Database.BeginTransaction())
                {
                    try
                    {
                        Archivo imagenPerfil = new Archivo();
                        string  name         = "foto_" + empleado.id_empleado;
                        string  extension    = ".jpg";
                        imagenPerfil.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.id_usuario;
                        imagenPerfil.fecha_creacion      = DateTime.Now;
                        imagenPerfil.activo          = true;
                        imagenPerfil.eliminado       = false;
                        imagenPerfil.nombre          = name + extension;
                        imagenPerfil.id_tipo_archivo = (int)Catalogos.Tipo_Archivo.Foto_Perfil;
                        imagenPerfil.ubicacion       = "~/Archivos/Foto Perfil/" + name + extension;
                        error += "2";
                        db.Archivo.Add(imagenPerfil);
                        db.SaveChanges();
                        if (System.IO.File.Exists(Server.MapPath(imagenPerfil.ubicacion)))
                        {
                            System.IO.File.Delete(Server.MapPath(imagenPerfil.ubicacion));
                        }
                        System.IO.File.Move(Server.MapPath(ruta_imagen_webcam), Server.MapPath(imagenPerfil.ubicacion));
                        error += "3";
                        //Relacionar la imagen con el usuario
                        Archivo_Empleado nuevo_archivo_empleado = new Archivo_Empleado();
                        nuevo_archivo_empleado.id_archivo          = imagenPerfil.id_archivo;
                        nuevo_archivo_empleado.id_empleado         = empleado.id_empleado;
                        nuevo_archivo_empleado.id_usuario_creacion = Cache.DiccionarioUsuariosLogueados[User.Identity.Name].usuario.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);
                        db.SaveChanges();
                        tran.Commit();
                        ContextMessage msg = new ContextMessage(ContextMessage.Success, "Imagen guardada con éxito.");
                        msg.ReturnUrl = Url.Action("TomarImagen");
                        TempData[User.Identity.Name] = msg;
                        return(RedirectToAction("Mensaje"));
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        ContextMessage msg = new ContextMessage(ContextMessage.Error, "Ocurrió un errror innesperado. Imagen no guardada." + error + ex.Message);
                        msg.ReturnUrl = Url.Action("TomarImagen");
                        TempData[User.Identity.Name] = msg;
                        return(RedirectToAction("Mensaje"));
                    }
                }
            }
        }
Пример #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"));
                }
            }
        }