Modales para buscadores, en alumno aun faltan varias cosas y de administrador esta completo. Creacion de controladores. Ediciones a buscador de alumno para que no era posible mirar la lista. Control en borar usuarios como adminsitrador para cuando borran y es un usuario normal tambien borra el alumno correspondiente de tabla de alumnos.
parent
9d8830a10e
commit
94183d4ab9
@ -0,0 +1,191 @@
|
||||
package com.example.proyectofinal.controllers;
|
||||
|
||||
import com.example.proyectofinal.models.empresas.Alumno;
|
||||
import com.example.proyectofinal.models.empresas.Ciclo;
|
||||
import com.example.proyectofinal.models.empresas.Skill;
|
||||
import com.example.proyectofinal.models.login.Usuario;
|
||||
import com.example.proyectofinal.servicios.empresa.AlumnoService;
|
||||
import com.example.proyectofinal.servicios.empresa.CicloService;
|
||||
import com.example.proyectofinal.servicios.empresa.SkillService;
|
||||
import com.example.proyectofinal.servicios.user.UsuarioService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Controller
|
||||
public class UserController {
|
||||
|
||||
@Autowired
|
||||
private UsuarioService usuarioService;
|
||||
|
||||
@Autowired
|
||||
private PasswordEncoder passwordEncoder;
|
||||
|
||||
@Autowired
|
||||
private AlumnoService alumnoService;
|
||||
|
||||
@Autowired
|
||||
private CicloService cicloService;
|
||||
@Autowired
|
||||
private SkillService skillService;
|
||||
|
||||
@GetMapping("/admin/alta_admin_nuevo")
|
||||
public String showCreateFormAdmin(Model model, Authentication authentication) {
|
||||
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
||||
boolean isAdmin = authorities.stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN"));
|
||||
if (!isAdmin) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página");
|
||||
}
|
||||
|
||||
model.addAttribute("usuario", new Usuario()); // Add this line
|
||||
|
||||
return "admin/usuario/create";
|
||||
}
|
||||
|
||||
@PostMapping("/admin/alta_admin_nuevo")
|
||||
public String saveNewAdmin(@ModelAttribute Usuario usuario, Authentication authentication) {
|
||||
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
||||
boolean isAdmin = authorities.stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN"));
|
||||
if (!isAdmin) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página");
|
||||
}
|
||||
usuario.setRol(usuarioService.getRolById(1));
|
||||
|
||||
if(usuarioService.getUserByLogInName(usuario.getNombreLogIn()) == null){
|
||||
usuarioService.createUsuario(usuario.getNombreUsuario(), usuario.getNombreLogIn(), usuario.getEmail(), usuario.getPassword(), usuario.isLogedIn(), usuario.getRol().getId());
|
||||
return "redirect:/buscador?userCreated=true";
|
||||
}else {
|
||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Este usuario ya existe");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("/api/currentUser")
|
||||
public ResponseEntity<Usuario> getCurrentUser(Authentication authentication) {
|
||||
String username = authentication.getName();
|
||||
Usuario usuario = usuarioService.findByLogInName(username);
|
||||
return ResponseEntity.ok(usuario);
|
||||
}
|
||||
|
||||
@GetMapping("/admin/editar_usuario")
|
||||
public String showUpdateFormAdmin(Model model, Authentication authentication) {
|
||||
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
||||
boolean isAdmin = authorities.stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN"));
|
||||
if (!isAdmin) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página");
|
||||
}
|
||||
List<Usuario> users = usuarioService.findAll();
|
||||
model.addAttribute("users", users);
|
||||
model.addAttribute("usuario", new Usuario());
|
||||
return "admin/usuario/update";
|
||||
}
|
||||
|
||||
@PostMapping("/admin/update_usuario")
|
||||
public String updateUser(@ModelAttribute Usuario usuario, Authentication authentication) {
|
||||
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
||||
boolean isAdmin = authorities.stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN"));
|
||||
if (!isAdmin) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página");
|
||||
}
|
||||
Usuario existingUser = usuarioService.findUserById(usuario.getId());
|
||||
if (existingUser == null) {
|
||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Este usuario no existe");
|
||||
}
|
||||
String password = existingUser.getPassword();
|
||||
existingUser.setPassword(passwordEncoder.encode(password));
|
||||
usuarioService.saveUser(usuario);
|
||||
return "redirect:/buscador?userUpdated=true";
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/admin/user/{id}")
|
||||
public ResponseEntity<Usuario> getUser(@PathVariable Long id) {
|
||||
Usuario usuario = usuarioService.findUserById(id);
|
||||
return ResponseEntity.ok(usuario);
|
||||
}
|
||||
|
||||
@GetMapping("/admin/delete_usuario")
|
||||
public String showDeleteFormAdmin(Model model, Authentication authentication) {
|
||||
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
||||
boolean isAdmin = authorities.stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN"));
|
||||
if (!isAdmin) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página");
|
||||
}
|
||||
List<Usuario> users = usuarioService.findAll();
|
||||
model.addAttribute("users", users);
|
||||
model.addAttribute("usuario", new Usuario());
|
||||
return "admin/usuario/delete";
|
||||
}
|
||||
|
||||
@GetMapping("/admin/delete_usuario/{id}")
|
||||
public String deleteUser(@PathVariable Long id, Authentication authentication) {
|
||||
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
|
||||
boolean isAdmin = authorities.stream()
|
||||
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN"));
|
||||
if (!isAdmin) {
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página");
|
||||
}
|
||||
Usuario existingUser = usuarioService.findUserById(id);
|
||||
if (existingUser == null) {
|
||||
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Este usuario no existe");
|
||||
}
|
||||
Usuario user = usuarioService.findUserById(id);
|
||||
if(user.getRol().getId() == 2){
|
||||
Alumno alumno = alumnoService.findByEmail(user.getEmail());
|
||||
System.out.println("TEST DELETING ALUMNO WITH ID: " + alumno.getId()+" AND EMAIL: "+alumno.getCorreo()+" AND NAME: "+alumno.getNombre());
|
||||
alumnoService.deleteById(alumno.getId());
|
||||
}
|
||||
usuarioService.deleteUser(id);
|
||||
return "redirect:/buscador?userDeleted=true";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/usuario/usuario_update_form")
|
||||
public String showUpdateForm(Model model, Authentication authentication) {
|
||||
String username = authentication.getName();
|
||||
Usuario usuario = usuarioService.findByLogInName(username);
|
||||
Alumno alumno = alumnoService.findByEmail(usuario.getEmail());
|
||||
List<Ciclo> ciclos = cicloService.findAll();
|
||||
List<Skill> skills = skillService.findAll();
|
||||
model.addAttribute("skills", skills);
|
||||
model.addAttribute("alumno", alumno);
|
||||
model.addAttribute("ciclos", ciclos);
|
||||
return "admin/alumno/update";
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/usuario/update")
|
||||
public ResponseEntity<String> updateAlumno(Alumno alumno, @RequestParam("ciclo") Long ciclo, @RequestParam("skills") List<Long> skills){
|
||||
try{
|
||||
Ciclo cicloEntity = cicloService.findById(ciclo);
|
||||
Set<Skill> skillEntities = skillService.findAllByIds(skills);
|
||||
alumno.setCiclo(cicloEntity);
|
||||
alumno.setSkills(skillEntities);
|
||||
alumnoService.save(alumno);
|
||||
return new ResponseEntity<>("El alumno fue actualizado con exito", HttpStatus.OK);
|
||||
}catch (Exception e) {
|
||||
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Ciclo;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Contacto;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Empresa;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Familia;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Oferta;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Sector;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Skill;
|
@ -1,4 +1,4 @@
|
||||
package com.example.proyectofinal.servicios.implemetations;
|
||||
package com.example.proyectofinal.servicios.implemetations.empresas;
|
||||
|
||||
import com.example.proyectofinal.interfaces.IPagination;
|
||||
import com.example.proyectofinal.models.empresas.Empresa;
|
@ -0,0 +1,14 @@
|
||||
package com.example.proyectofinal.servicios.implemetations.login;
|
||||
|
||||
import com.example.proyectofinal.models.login.Autoridad;
|
||||
import com.example.proyectofinal.models.login.Rol;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IAutoridad {
|
||||
List<Autoridad> findAll();
|
||||
|
||||
Autoridad findById(Long id);
|
||||
|
||||
Autoridad findByName(String name);
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.example.proyectofinal.servicios.implemetations.login;
|
||||
|
||||
import com.example.proyectofinal.models.empresas.Alumno;
|
||||
import com.example.proyectofinal.models.login.Rol;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IRol {
|
||||
List<Rol> findAll();
|
||||
|
||||
Rol findById(Long id);
|
||||
|
||||
Rol findByName(String name);
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.example.proyectofinal.servicios.implemetations.login;
|
||||
|
||||
import com.example.proyectofinal.models.login.Rol;
|
||||
import com.example.proyectofinal.models.login.Usuario;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface IUsuario {
|
||||
|
||||
Usuario createUsuario(String nombreUsuario, String nombreLogIn, String email, String password, boolean loged, Long rolId);
|
||||
|
||||
Long findRolByName(String user);
|
||||
|
||||
Usuario findByLogInName(String logIn);
|
||||
|
||||
void deleteById(Long id);
|
||||
|
||||
List<Usuario> findAll();
|
||||
|
||||
Usuario findUserById(Long id);
|
||||
|
||||
Optional<Usuario> findByNombreUsuario(String admin);
|
||||
|
||||
Rol getRolById(int i);
|
||||
|
||||
Usuario getUserByLogInName(String nombreLogIn);
|
||||
|
||||
void saveUser(Usuario usuario);
|
||||
|
||||
void deleteUser(Long id);
|
||||
}
|
||||
|
@ -0,0 +1,32 @@
|
||||
package com.example.proyectofinal.servicios.user;
|
||||
|
||||
import com.example.proyectofinal.models.login.Autoridad;
|
||||
import com.example.proyectofinal.repositories.login.AutoridadesRepository;
|
||||
import com.example.proyectofinal.servicios.implemetations.login.IAutoridad;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class AutoridadService implements IAutoridad {
|
||||
|
||||
@Autowired
|
||||
private AutoridadesRepository autoridadRepository;
|
||||
|
||||
|
||||
@Override
|
||||
public List<Autoridad> findAll() {
|
||||
return autoridadRepository.findAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Autoridad findById(Long id) {
|
||||
return autoridadRepository.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Autoridad findByName(String name) {
|
||||
return autoridadRepository.findByName(name);
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
package com.example.proyectofinal.servicios.user;
|
||||
|
||||
import com.example.proyectofinal.models.login.Autoridad;
|
||||
import com.example.proyectofinal.models.login.Rol;
|
||||
import com.example.proyectofinal.repositories.login.AutoridadesRepository;
|
||||
import com.example.proyectofinal.repositories.login.RolRepository;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@Service
|
||||
public class RolAutoService {
|
||||
|
||||
@Autowired
|
||||
private RolRepository rolRepository;
|
||||
|
||||
@Autowired
|
||||
private AutoridadesRepository autoridadRepository;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.example.proyectofinal.servicios.user;
|
||||
|
||||
import com.example.proyectofinal.models.login.Rol;
|
||||
import com.example.proyectofinal.repositories.login.RolRepository;
|
||||
import com.example.proyectofinal.servicios.implemetations.login.IRol;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class RolService implements IRol {
|
||||
|
||||
@Autowired
|
||||
private RolRepository rolRepository;
|
||||
|
||||
@Override
|
||||
public List<Rol> findAll() {
|
||||
return rolRepository.findAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rol findById(Long id) {
|
||||
return rolRepository.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rol findByName(String name) {
|
||||
return rolRepository.findByName(name);
|
||||
}
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>Borrar Usuario</title>
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/top.css}">
|
||||
|
||||
<style>
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
margin: auto;
|
||||
padding: 25px;
|
||||
margin-top: 100px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-top: 25px;
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
font-family: Verdana;
|
||||
}
|
||||
form input[type="submit"], form input[type="button"] {
|
||||
width: 100px;
|
||||
}
|
||||
form input[type="text"]{
|
||||
width: 75%;
|
||||
}
|
||||
form label{
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
font-family: Verdana, Geneva, Tahoma, sans-serif;
|
||||
}
|
||||
|
||||
body, h1 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Borrar Usuario</h1>
|
||||
<form th:action="@{/admin/delete_usuario}" th:object="${usuario}" method="get">
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="nombreUsuario">Username:</label>
|
||||
<div class="col-sm-9">
|
||||
<select id="userSelect">
|
||||
<option th:each="user : ${users}" th:value="${user.id}" th:text="${user.nombreUsuario}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" th:field="*{id}" id="userId">
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-9 offset-sm-3">
|
||||
<input type="submit" value="Borrar" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
$('form').submit(function(event) {
|
||||
event.preventDefault(); // Prevent the form from submitting normally
|
||||
|
||||
var userId = $('#userSelect').val();
|
||||
|
||||
$.ajax({
|
||||
url: '/admin/delete_usuario/' + userId,
|
||||
type: 'get',
|
||||
success: function() {
|
||||
window.location.href = "/buscador?userDeleted=true";
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
console.error(textStatus, errorThrown);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,203 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Update: Alumno</title>
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/top.css}">
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" />
|
||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>
|
||||
<style>
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
margin: auto;
|
||||
padding: 25px;
|
||||
margin-top: 100px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-top: 25px;
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
font-family: Verdana;
|
||||
}
|
||||
form input[type="submit"], form input[type="button"] {
|
||||
width: 100px;
|
||||
}
|
||||
form input[type="text"]{
|
||||
width: 75%;
|
||||
}
|
||||
form label{
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
font-family: Verdana, Geneva, Tahoma, sans-serif;
|
||||
}
|
||||
|
||||
body, h1 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Editar datos de Alumno<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a></h1>
|
||||
|
||||
<form th:action="@{/alumno/update}" method="post" enctype="multipart/form-data" th:object="${alumno}">
|
||||
<input type="hidden" th:field="*{id}"/>
|
||||
<div class="p-3">
|
||||
<div class ="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="nombre">Nombre</label>
|
||||
<div class = "col-sm-9">
|
||||
<input type="text" th:field="*{nombre}" required minlength="2" maxlength="75" class="form-control" id="nombre">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class ="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="cif">Apellido</label>
|
||||
<div class = "col-sm-9">
|
||||
<input type="text" th:field="*{apellido}" required minlength="2" maxlength="75" title="Entra un nombre" class="form-control" id="cif">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class ="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="apellido2">Apellido2</label>
|
||||
<div class = "col-sm-9">
|
||||
<input type="text" th:field="*{apellido2}" minlength="2" maxlength="75" class="form-control" id="apellido2">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class ="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="fechaNacimiento">Fecha de Nacimiento</label>
|
||||
<div class = "col-sm-9">
|
||||
<input type="date" th:field="*{fechaNacimiento}" required class="form-control" id="fechaNacimiento" title="Introduce fecha">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="genero">Genero</label>
|
||||
<div class="col-sm-9">
|
||||
<select th:field="*{genero}" class="form-control" id="genero" required>
|
||||
<option value="">Selecciona un genero</option>
|
||||
<option value="Mujer">Mujer</option>
|
||||
<option value="Varon">Varon</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class ="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="nia">Nia</label>
|
||||
<div class = "col-sm-9">
|
||||
<!--TODO: Añadir validacion de nia-->
|
||||
<input type="text" th:field="*{nia}" title="Entra un nia correcto" class="form-control" id="nia">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="dni">DNI/NIE</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" th:field="*{dni}" required class="form-control" id="dni" title="Introduce DNI/NIE">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="correo">Correo</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" th:field="*{correo}" required class="form-control" id="correo" title="Introduce correo">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="correo2">Correo2</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" th:field="*{correo2}" class="form-control" id="correo2" title="Introduce correo alternativo">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="nacionalidad">Nacionalidad</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" th:field="*{nacionalidad}" class="form-control" id="nacionalidad" title="Introduce nacionalidad">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="keywords">Keywords</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" th:field="*{keywords}" class="form-control" id="keywords" title="Introduce keywords">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Ciclos -->
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label" for="ciclo">Ciclo</label>
|
||||
<div class="col-sm-9">
|
||||
<select th:field="*{ciclo.id}" class="form-control" id="ciclo">
|
||||
<option th:each="ciclo : ${ciclos}" th:value="${ciclo.id}" th:text="${ciclo.nombre}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="skills-container">
|
||||
<h2>Select Skills</h2>
|
||||
<select id="skills" multiple>
|
||||
<option th:each="skill : ${skills}" th:value="${skill.id}" th:text="${skill.nombre}" th:selected="${alumno.skills.contains(skill)}"></option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<input type="submit" value="Guardar" class="btn"/>
|
||||
<input type="button" value="Cancelar" id="btnCancelar" class="btn" onclick="goBack()"/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#skills').select2();
|
||||
});
|
||||
|
||||
function goBack() {
|
||||
window.history.back();
|
||||
}
|
||||
$(document).ready(function () {
|
||||
$("form").on("submit", function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
var formDataArray = $(this).serializeArray();
|
||||
formDataArray.push({name: 'ciclo', value: $('#ciclo').val()});
|
||||
formDataArray.push({name: 'skills', value: $('#skills').val()});
|
||||
|
||||
$.ajax({
|
||||
url: '/alumno/update',
|
||||
type: 'post',
|
||||
data: $.param(formDataArray),
|
||||
success: function (message) {
|
||||
if(message === "El alumno fue actualizado con exito") {
|
||||
alert("El alumno fue actualizado con exito")
|
||||
window.history.go(-1);
|
||||
} else {
|
||||
alert("Error, consulte a los informaticos")
|
||||
window.history.go(-1)
|
||||
}
|
||||
},
|
||||
error: function (jqXHR) {
|
||||
alert(jqXHR.responseText);
|
||||
window.history.back();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue