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