diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c5f3f6b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/curriculumsearch/img/FondoRoshka.jpg b/curriculumsearch/img/FondoRoshka.jpg new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/curriculumsearch/img/FondoRoshka.jpg diff --git a/curriculumsearch/pom.xml b/curriculumsearch/pom.xml index dc1b603..4575652 100644 --- a/curriculumsearch/pom.xml +++ b/curriculumsearch/pom.xml @@ -75,12 +75,23 @@ 1.18.22 provided + + org.springframework.boot + spring-boot-starter-mail + + + kr.pe.kwonnam.jsp + jsp-template-inheritance + 0.3.RELEASE + compile + + diff --git a/curriculumsearch/src/main/java/com/roshka/configuration/CustomUserDetails.java b/curriculumsearch/src/main/java/com/roshka/configuration/CustomUserDetails.java index d8ad7b4..4e92c55 100644 --- a/curriculumsearch/src/main/java/com/roshka/configuration/CustomUserDetails.java +++ b/curriculumsearch/src/main/java/com/roshka/configuration/CustomUserDetails.java @@ -53,4 +53,8 @@ public class CustomUserDetails implements UserDetails { return user.getFirstName() + " " + user.getLastName(); } + @Override + public String toString(){ + return user.getEmail(); + } } \ No newline at end of file diff --git a/curriculumsearch/src/main/java/com/roshka/configuration/WebSecurityConfig.java b/curriculumsearch/src/main/java/com/roshka/configuration/WebSecurityConfig.java index d1279b2..40d1a40 100644 --- a/curriculumsearch/src/main/java/com/roshka/configuration/WebSecurityConfig.java +++ b/curriculumsearch/src/main/java/com/roshka/configuration/WebSecurityConfig.java @@ -55,6 +55,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/convocatoria*").authenticated() .antMatchers("/tecnologia*").authenticated() .antMatchers("/postulantes").authenticated() + .antMatchers("/edit-user-data").authenticated() .anyRequest().permitAll() .and() .formLogin() diff --git a/curriculumsearch/src/main/java/com/roshka/controller/CargoController.java b/curriculumsearch/src/main/java/com/roshka/controller/CargoController.java index 342dfaf..d1f6a84 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/CargoController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/CargoController.java @@ -1,6 +1,8 @@ package com.roshka.controller; +import javax.validation.Valid; + import com.roshka.modelo.Cargo; import com.roshka.repositorio.CargoRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -42,8 +44,11 @@ public class CargoController { } @PostMapping(path = {"/cargo","/cargo/{id}"}) - public String guardarCargo(@ModelAttribute Cargo cargo, BindingResult result, @PathVariable(required = false) Long id) { - if(result.hasErrors()); + public String guardarCargo(@Valid @ModelAttribute Cargo cargo, BindingResult result, @PathVariable(required = false) Long id, Model model) { + if(result.hasErrors() || (id==null && cargoRepo.existsByNombreIgnoreCase(cargo.getNombre()) )){ + model.addAttribute("mismoNombre", true); + return "cargo-form"; + }; if(id != null ) cargo.setId(id); cargoRepo.save(cargo); System.out.println(cargo.getNombre()); diff --git a/curriculumsearch/src/main/java/com/roshka/controller/HomeController.java b/curriculumsearch/src/main/java/com/roshka/controller/HomeController.java new file mode 100644 index 0000000..360d3af --- /dev/null +++ b/curriculumsearch/src/main/java/com/roshka/controller/HomeController.java @@ -0,0 +1,13 @@ +package com.roshka.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +@Controller +@RequestMapping("/home") +public class HomeController { + @RequestMapping() + public String home(Model model) { + return "index"; + } +} diff --git a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java index 283ab2a..318c157 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java @@ -81,13 +81,6 @@ public class PostulanteController { this.carRepo=carRepo; } - @RequestMapping("home") - public String index() { - - - return "index"; - } - @RequestMapping("/postulantes") public String postulantes(Model model, @RequestParam(required = false)Long tecId, @@ -184,8 +177,8 @@ public class PostulanteController { return "redirect:/postulacion-correcta"; } - @GetMapping("/postulacion-correcta") - public String successPostulation(Model model){ + @GetMapping("/postulacion-correcta") + public String successPostulation(Model model){ model.addAttribute("mensaje1", "Tu informacion se ha recibido correctamente!"); model.addAttribute("mensaje2", " espera por que nos pongamos en contacto!"); return "exitoRegistro"; @@ -197,35 +190,35 @@ public class PostulanteController { MethodArgumentNotValidException ex) { return ResponseEntity.status(HttpStatus.BAD_REQUEST) .body(ex.getMessage()); - } + } - @ResponseStatus(HttpStatus.BAD_REQUEST) - @ExceptionHandler({ConstraintViolationException.class}) - public ResponseEntity handleValidationExceptions2( - ConstraintViolationException ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST) - .body(ex.getMessage()); - } - - - - @GetMapping({"/postulante/{postulanteId}"}) - public String getPostulanteDetalle(Model model, @PathVariable("postulanteId") Long postulanteId) { - Postulante p = post.findById(postulanteId).orElse(null); - model.addAttribute("postulante",p); - model.addAttribute("estadoP", EstadoPostulante.values()); - return "detallepostulante"; - - } - @PostMapping({"/postulante/{postulanteId}"}) - public String setPostulanteEstado(@ModelAttribute Postulante postulante, BindingResult result, @PathVariable("postulanteId") Long postulanteId) { - //post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(),postulante.getComentarioRRHH(), postulante.getId()); - Postulante postulanteVd = post.getById(postulanteId); - postulanteVd.setEstadoPostulante(postulante.getEstadoPostulante()); - postulanteVd.setComentarioRRHH(postulante.getComentarioRRHH()); - post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(), postulante.getComentarioRRHH(), postulanteId); - //post.save(postulanteVd); - return "redirect:/postulante/"+postulanteId; - } - } + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler({ConstraintViolationException.class}) + public ResponseEntity handleValidationExceptions2( + ConstraintViolationException ex) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST) + .body(ex.getMessage()); + } + + + + @GetMapping({"/postulante/{postulanteId}"}) + public String getPostulanteDetalle(Model model, @PathVariable("postulanteId") Long postulanteId) { + Postulante p = post.findById(postulanteId).orElse(null); + model.addAttribute("postulante",p); + model.addAttribute("estadoP", EstadoPostulante.values()); + return "detallepostulante"; + + } + @PostMapping({"/postulante/{postulanteId}"}) + public String setPostulanteEstado(@ModelAttribute Postulante postulante, BindingResult result, @PathVariable("postulanteId") Long postulanteId) { + //post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(),postulante.getComentarioRRHH(), postulante.getId()); + Postulante postulanteVd = post.getById(postulanteId); + postulanteVd.setEstadoPostulante(postulante.getEstadoPostulante()); + postulanteVd.setComentarioRRHH(postulante.getComentarioRRHH()); + post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(), postulante.getComentarioRRHH(), postulanteId); + //post.save(postulanteVd); + return "redirect:/postulante/"+postulanteId; + } +} \ No newline at end of file diff --git a/curriculumsearch/src/main/java/com/roshka/controller/RRHHUserController.java b/curriculumsearch/src/main/java/com/roshka/controller/RRHHUserController.java index 262fbfd..0ad17b3 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/RRHHUserController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/RRHHUserController.java @@ -2,14 +2,39 @@ package com.roshka.controller; import com.roshka.modelo.RRHHUser; import com.roshka.repositorio.RRHHUserRepository; +import com.roshka.service.EmailAsyncService; +import com.roshka.service.RRHHUserService; +import net.bytebuddy.utility.RandomString; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.repository.query.Param; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.springframework.web.servlet.view.RedirectView; +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; @Controller public class RRHHUserController { @@ -54,4 +79,120 @@ public class RRHHUserController { return "register_success"; } + + @GetMapping("/edit-user-data") + public String editUserData(HttpServletRequest request, Model model){ + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + System.out.println(auth.getPrincipal().toString()); + System.out.println(rrhhUserRepository.findByEmail(auth.getPrincipal().toString())); + model.addAttribute("user", rrhhUserRepository.findByEmail(auth.getPrincipal().toString())); + return "edit-user-data"; + } + + @PostMapping("/edit-user-data") + public RedirectView processEditUser(HttpServletRequest request, RRHHUser user, + RedirectAttributes redirectAttributes){ + RRHHUser editUser = rrhhUserRepository.findByEmail(SecurityContextHolder.getContext().getAuthentication() + .getPrincipal().toString()); + if(user.getEmail()!=null){ + editUser.setEmail(user.getEmail()); + } + if(user.getFirstName()!=null){ + editUser.setFirstName(user.getFirstName()); + } + if(user.getLastName()!=null){ + editUser.setLastName(user.getLastName()); + } + rrhhUserRepository.save(editUser); + RedirectView redirectView = new RedirectView("/home",true); + redirectAttributes.addFlashAttribute("success", "Datos actualizados"); + return redirectView; + } + + @Autowired + private RRHHUserService userService; + + @Autowired + private EmailAsyncService emailAsyncService; + + @GetMapping("/forgot-password") + public String showForgotPasswordForm(HttpServletRequest request, Model model) { + model.addAttribute("error", request.getParameter("error")); +// if(request.getParameter("error")!=null){ +// +// } + return "forgot_password_form"; + } + + @PostMapping("/forgot-password") + public String processForgotPassword(HttpServletRequest request, Model model) { + String email = request.getParameter("email"); + String token = RandomString.make(30); + + try { + userService.updateResetPasswordToken(token, email); + }catch (UsernameNotFoundException e){ + model.addAttribute("error", "Error al enviar el mail. Checkee sus credenciales " + + "y intentelo de nuevo."); + return "forgot_password_form"; + } + String resetPasswordLink = Utility.getSiteURL(request) + "/reset-password?token=" + token; + ExecutorService emailExecutor = Executors.newSingleThreadExecutor(); + emailExecutor.execute(new Runnable() { + @Override + public void run() { + try { + emailAsyncService.sendEmail(email, resetPasswordLink); + } catch (IOException | MessagingException e) { + e.printStackTrace(); + } + } + }); + emailExecutor.shutdown(); + + return "forgot_password_form"; + } + + + + @GetMapping("/reset-password") + public String showResetPasswordForm(@Param(value = "token") String token, Model model) { + RRHHUser user = userService.getByResetPasswordToken(token); + model.addAttribute("token", token); + + if (user == null) { + model.addAttribute("error", "Invalid Token"); + return "error"; + } + + return "reset_password_form"; + } + + @PostMapping("/reset-password") + public String processResetPassword(HttpServletRequest request, Model model) { + String token = request.getParameter("token"); + String password = request.getParameter("password"); + + RRHHUser user = userService.getByResetPasswordToken(token); + model.addAttribute("title", "Reset your password"); + + if (user == null) { + model.addAttribute("error", "Invalid Token"); + return "message"; + } else { + userService.updatePassword(user, password); + + model.addAttribute("success", "You have successfully changed your password."); + } + + return "redirect:/"; + } + } + +class Utility { + public static String getSiteURL(HttpServletRequest request) { + String siteURL = request.getRequestURL().toString(); + return siteURL.replace(request.getServletPath(), ""); + } +} \ No newline at end of file diff --git a/curriculumsearch/src/main/java/com/roshka/controller/TecnologiaController.java b/curriculumsearch/src/main/java/com/roshka/controller/TecnologiaController.java index e7a5333..b8649b2 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/TecnologiaController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/TecnologiaController.java @@ -1,5 +1,7 @@ package com.roshka.controller; +import javax.validation.Valid; + import com.roshka.modelo.Tecnologia; import com.roshka.repositorio.TecnologiaRepository; @@ -45,8 +47,11 @@ public String addtecnologiaView(Model model,@PathVariable(required = false) Long } @PostMapping(path = {"/tecnologia","/tecnologia/{id}"}) - public String addtecnologia(@ModelAttribute Tecnologia tecnologia, BindingResult result, @PathVariable(required = false) Long id) { - if(result.hasErrors()); + public String addtecnologia(@Valid @ModelAttribute Tecnologia tecnologia, BindingResult result, @PathVariable(required = false) Long id, Model model) { + if(result.hasErrors() || (id==null && tecRepo.existsByNombreIgnoreCase(tecnologia.getNombre()))){ + model.addAttribute("mismoNombre", true); + return "tecnologia-form"; + } if(id != null ) tecnologia.setId(id); tecRepo.save(tecnologia); System.out.println(tecnologia.getNombre()); diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/RRHHUser.java b/curriculumsearch/src/main/java/com/roshka/modelo/RRHHUser.java index b97c124..c5907be 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/RRHHUser.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/RRHHUser.java @@ -23,5 +23,8 @@ public class RRHHUser { @Column(name = "last_name", nullable = false, length = 20) private String lastName; + @Column(name = "reset_password_token") + private String resetPasswordToken; + } diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Tecnologia.java b/curriculumsearch/src/main/java/com/roshka/modelo/Tecnologia.java index bc2f662..6932288 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Tecnologia.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Tecnologia.java @@ -17,7 +17,7 @@ public class Tecnologia { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id @Column(name="id") - private long id; + private Long id; @Column(name="nombre") @NotBlank(message = "Este campo no puede estar vacio") diff --git a/curriculumsearch/src/main/java/com/roshka/repositorio/CargoRepository.java b/curriculumsearch/src/main/java/com/roshka/repositorio/CargoRepository.java index 556bc1c..c78b922 100644 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/CargoRepository.java +++ b/curriculumsearch/src/main/java/com/roshka/repositorio/CargoRepository.java @@ -8,4 +8,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface CargoRepository extends JpaRepository{ public List findByNombreContainingIgnoreCase(String nombre); + public boolean existsByNombreIgnoreCase(String nombre); } diff --git a/curriculumsearch/src/main/java/com/roshka/repositorio/RRHHUserRepository.java b/curriculumsearch/src/main/java/com/roshka/repositorio/RRHHUserRepository.java index d13c336..c92633b 100644 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/RRHHUserRepository.java +++ b/curriculumsearch/src/main/java/com/roshka/repositorio/RRHHUserRepository.java @@ -5,4 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface RRHHUserRepository extends JpaRepository { RRHHUser findByEmail(String username); + + RRHHUser findByResetPasswordToken(String resetPasswordToken); } diff --git a/curriculumsearch/src/main/java/com/roshka/repositorio/TecnologiaRepository.java b/curriculumsearch/src/main/java/com/roshka/repositorio/TecnologiaRepository.java index fed1587..b1cbba7 100644 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/TecnologiaRepository.java +++ b/curriculumsearch/src/main/java/com/roshka/repositorio/TecnologiaRepository.java @@ -9,4 +9,6 @@ import com.roshka.modelo.Tecnologia; public interface TecnologiaRepository extends JpaRepository { public List findByNombreContainingIgnoreCase(String nombre); + + public boolean existsByNombreIgnoreCase(String nombre); } diff --git a/curriculumsearch/src/main/java/com/roshka/service/EmailAsyncService.java b/curriculumsearch/src/main/java/com/roshka/service/EmailAsyncService.java new file mode 100644 index 0000000..03f5632 --- /dev/null +++ b/curriculumsearch/src/main/java/com/roshka/service/EmailAsyncService.java @@ -0,0 +1,44 @@ +package com.roshka.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.UnsupportedEncodingException; + +@Service +public class EmailAsyncService { + + @Autowired + private JavaMailSender mailSender; + + @Async + public void sendEmail(String recipientEmail, String link) + throws MessagingException, UnsupportedEncodingException { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message); + + helper.setFrom("test@test.com", "Sistema de Postulacion"); + helper.setTo(recipientEmail); + + String subject = "Aqui tienes el link para volver a definir tu password"; + + String content = "

Hola!,

" + + "

Has solicitado una re-definicion de password.

" + + "

Haz click en el link de abajo para re-definir tu password:

" + + "

Cambiar password

" + + "
" + + "

Ignora y no compartas este mail si no has solicitado un cambio de password."; + + helper.setSubject(subject); + + helper.setText(content, true); + + mailSender.send(message); + + } +} \ No newline at end of file diff --git a/curriculumsearch/src/main/java/com/roshka/service/RRHHUserService.java b/curriculumsearch/src/main/java/com/roshka/service/RRHHUserService.java new file mode 100644 index 0000000..deecb25 --- /dev/null +++ b/curriculumsearch/src/main/java/com/roshka/service/RRHHUserService.java @@ -0,0 +1,42 @@ +package com.roshka.service; + +import com.roshka.modelo.RRHHUser; +import com.roshka.repositorio.RRHHUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class RRHHUserService { + + @Autowired + private RRHHUserRepository userRepo; + + + public void updateResetPasswordToken(String token, String email) throws UsernameNotFoundException { + RRHHUser customer = userRepo.findByEmail(email); + if (customer != null) { + customer.setResetPasswordToken(token); + userRepo.save(customer); + } else { + throw new UsernameNotFoundException("Could not find any customer with the email " + email); + } + } + + public RRHHUser getByResetPasswordToken(String token) { + return userRepo.findByResetPasswordToken(token); + } + + public void updatePassword(RRHHUser user, String newPassword) { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + String encodedPassword = passwordEncoder.encode(newPassword); + user.setPassword(encodedPassword); + + user.setResetPasswordToken(null); + userRepo.save(user); + } +} \ No newline at end of file diff --git a/curriculumsearch/src/main/resources/application.properties b/curriculumsearch/src/main/resources/application.properties index 031335f..e1e0dad 100644 --- a/curriculumsearch/src/main/resources/application.properties +++ b/curriculumsearch/src/main/resources/application.properties @@ -1,10 +1,10 @@ spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect -#spring.jpa.show-sql=true +spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true -#logging.level.org.hibernate.SQL=DEBUG -#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE +logging.level.org.hibernate.SQL=DEBUG +logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE spring.sql.init.mode=always spring.sql.init.platform=postgres @@ -16,3 +16,13 @@ spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true #server.port=8888 spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp + +spring.mail.host=smtp.gmail.com +spring.mail.username=fpunascrumkanban@gmail.com +spring.mail.password=fpunascrumkanban123 +spring.mail.port=587 +spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true + +jsp-inheritance-prefix=/jsp/layouts/ +jsp-inheritance-suffix=.jsp diff --git a/curriculumsearch/src/main/resources/static/main.js b/curriculumsearch/src/main/resources/static/main.js index 808eef0..758a3ec 100644 --- a/curriculumsearch/src/main/resources/static/main.js +++ b/curriculumsearch/src/main/resources/static/main.js @@ -158,8 +158,9 @@ function agregarFieldTecnologia(){ if(tecn==null) continue; content1 += `

  • - ${tecn.tecnologia.nombre} + ${tecn.tecnologia.nombre} +
  • ` @@ -528,4 +529,61 @@ function eliminarReferencia(event) { - +/*--------------------------------------------------------------------------------------------------------- */ +$(function(){ + $("#wizard").steps({ + headerTag: "h4", + bodyTag: "section", + transitionEffect: "fade", + enableAllSteps: true, + transitionEffectSpeed: 500, + onStepChanging: function (event, currentIndex, newIndex) { + if ( newIndex === 1 ) { + $('.steps ul').addClass('step-2'); + } else { + $('.steps ul').removeClass('step-2'); + } + if ( newIndex === 2 ) { + $('.steps ul').addClass('step-3'); + } else { + $('.steps ul').removeClass('step-3'); + } + + if ( newIndex === 3 ) { + $('.steps ul').addClass('step-4'); + $('.actions ul').addClass('step-last'); + } else { + $('.steps ul').removeClass('step-4'); + $('.actions ul').removeClass('step-last'); + } + return true; + }, + labels: { + finish: "Order again", + next: "Next", + previous: "Previous" + } + }); + // Custom Steps Jquery Steps + $('.wizard > .steps li a').click(function(){ + $(this).parent().addClass('checked'); + $(this).parent().prevAll().addClass('checked'); + $(this).parent().nextAll().removeClass('checked'); + }); + // Custom Button Jquery Steps + $('.forward').click(function(){ + $("#wizard").steps('next'); + }) + $('.backward').click(function(){ + $("#wizard").steps('previous'); + }) + // Checkbox + $('.checkbox-circle label').click(function(){ + $('.checkbox-circle label').removeClass('active'); + $(this).addClass('active'); + }) + }) + + + +/*--------------------------------------------------------------------------------------------------------- */ \ No newline at end of file diff --git a/curriculumsearch/src/main/resources/static/valEdad.js b/curriculumsearch/src/main/resources/static/valEdad.js new file mode 100644 index 0000000..25e8bc0 --- /dev/null +++ b/curriculumsearch/src/main/resources/static/valEdad.js @@ -0,0 +1,153 @@ +//Convertir DOB to Age +window.onload= init; + + +function init(){ + contarEdad(); + //fechaFormat(); +} + + +function contarEdad() { + let today = new Date(); + let dob = document.getElementById("dob").value; + let current_datetime = new Date(dob); + let month = current_datetime.getMonth(); + let day = current_datetime.getDate(); + let formatted_date = current_datetime.getDate() + "/" + (current_datetime.getMonth() + 1) + "/" + current_datetime.getFullYear(); + //console.log(formatted_date); ver Fecha del form en formato dd/mm/yyy + let date2=new Date(dob); + let pattern = /^\d{1,2}\/\d{1,2}\/\d{4}$/; //Regex to validate date format (dd/mm/yyyy) + let age = today.getFullYear() - current_datetime.getFullYear(); + + if (pattern.test(formatted_date)) { + if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) + { + age--; + } + // console.log(age); ver edad + let anio = document.getElementById("edad").innerHTML=age+" años"; + } else { + alert("Invalid date format. Please Input in (dd/mm/yyyy) format!"); + } + +/* +function fechaFormat(){ + + //EXPERIENCIA + + let fechaInicioExp = document.getElementById("fechaInicioExp2").value; + let fie =new Date(fechaInicioExp); + // let formatted_fie = fie.getDate() + "/" + (fie.getMonth() + 1) + "/" + fie.getFullYear(); + + let fechaFinExp = document.getElementById("fechaFinExp2").value; + let ffe =new Date(fechaFinExp); + // let formatted_ffe = ffe.getDate() + "/" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear(); + + + // Validacion de ceros Fecha inicio + if(((fie.getMonth() + 1) < 10) && (fie.getDate() < 10) ){ + let formatted_fie = "0"+ fie.getDate() + "/0" + (fie.getMonth() + 1) + "/" + fie.getFullYear(); + let mostrar1 = document.getElementById("fiemostrar").innerHTML = formatted_fie; + console.log(mostrar1); + }else{ + if((fie.getMonth() + 1) < 10){ + let formatted_fie = fie.getDate() + "/0" + (fie.getMonth() + 1) + "/" + fie.getFullYear(); + mostrar1 = document.getElementById("fiemostrar").innerHTML = formatted_fie; + console.log(mostrar1); + }else{ + if(fie.getDate() < 10){ + let formatted_fie ="0"+ fie.getDate() + "/" + (fie.getMonth() + 1) + "/" + fie.getFullYear(); + mostrar1 = document.getElementById("fiemostrar").innerHTML = formatted_fie; + console.log(mostrar1); + }else{ + let formatted_fie = fie.getDate() + "/" + (fie.getMonth() + 1) + "/" + fie.getFullYear(); + mostrar1 = document.getElementById("fiemostrar2").innerHTML = formatted_fie; + console.log(mostrar1); + } + } + } + + + + // Validacion de ceros Fecha fin + if(((ffe.getMonth() + 1) < 10) && (ffe.getDate() < 10) ){ + let formatted_ffe = "0"+ ffe.getDate() + "/0" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear(); + let mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe; + console.log(mostrar2); + }else{ + if((ffe.getMonth() + 1) < 10){ + let formatted_ffe = ffe.getDate() + "/0" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear(); + mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe; + console.log(mostrar2); + }else{ + if(ffe.getDate() < 10){ + let formatted_ffe ="0"+ ffe.getDate() + "/" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear(); + mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe; + console.log(mostrar2); + }else{ + let formatted_ffe = ffe.getDate() + "/" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear(); + mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe; + console.log(mostrar2); + } + } + } + + + + + //ESTUDIOS////////// + + let fechaInicioEst = document.getElementById("fechaInicioEst").value; + let fies =new Date(fechaInicioEst); + let formatted_fies = fies.getDate() + "/" + (fies.getMonth() + 1) + "/" + fies.getFullYear(); + + let fechaFinEst = document.getElementById("fechaFinEst").value; + let ffes =new Date(fechaFinEst); + let formatted_ffes = ffes.getDate() + "/" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear(); + + // Validacion de ceros Fecha fin + if(((ffes.getMonth() + 1) < 10) && (ffes.getDate() < 10) ){ + let formatted_ffes = "0"+ ffes.getDate() + "/0" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear(); + let mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes; + }else{ + if((ffes.getMonth() + 1) < 10){ + let formatted_ffes = ffes.getDate() + "/0" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear(); + mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes; + }else{ + if(ffes.getDate() < 10){ + let formatted_ffes ="0"+ ffes.getDate() + "/" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear(); + mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes; + }else{ + let formatted_ffes = ffes.getDate() + "/" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear(); + mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes; + } + } + } + + + // Validacion de ceros Fecha inicio + if(((fies.getMonth() + 1) < 10) && (fies.getDate() < 10) ){ + let formatted_fies = "0"+ fies.getDate() + "/0" + (fies.getMonth() + 1) + "/" + fies.getFullYear(); + let mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies; + }else{ + if((fies.getMonth() + 1) < 10){ + let formatted_fies = fies.getDate() + "/0" + (fies.getMonth() + 1) + "/" + fies.getFullYear(); + mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies; + }else{ + if(fies.getDate() < 10){ + let formatted_fies ="0"+ fies.getDate() + "/" + (fies.getMonth() + 1) + "/" + fies.getFullYear(); + mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies; + }else{ + let formatted_fies = fies.getDate() + "/" + (fies.getMonth() + 1) + "/" + fies.getFullYear(); + mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies; + } + } + } +}*/ + + + + +} + \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/css/cargoStyle.css b/curriculumsearch/src/main/webapp/css/cargoStyle.css new file mode 100644 index 0000000..02aca46 --- /dev/null +++ b/curriculumsearch/src/main/webapp/css/cargoStyle.css @@ -0,0 +1,10 @@ +body{ + background-image:url(/img/fondoBlanco.jpg); + background-size:cover; + background-repeat:no-repeat; + height:100vh;width:100vw; +} +label { + display: inline-block; + width: 100px; +} \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/css/detallePostulantestyle.css b/curriculumsearch/src/main/webapp/css/detallePostulantestyle.css new file mode 100644 index 0000000..f124595 --- /dev/null +++ b/curriculumsearch/src/main/webapp/css/detallePostulantestyle.css @@ -0,0 +1,44 @@ +:root { + --nord0: #2e3440; + --nord1: #3b4252; + --nord2: #434c5e; + --nord3: #4c566a; + --nord4: #d8dee9; + --nord5: #e5e9f0; + --nord6: #eceff4; + --nord7: #8fbcbb; + --nord8: #88c0d0; + --nord9: #81a1c1; + --nord10: #5e81ac; + --nord11: #bf616a; + --nord12: #d08770; + --nord13: #ebcb8b; + --nord14: #a3be8c; + --nord15: #b48ead; +} +*{outline: 1px #bf616a;} +body{ + color: #3b4252; + margin: auto; +} +header,section{ + width: 960px; + margin: 0 auto; +} +ul{ + list-style-type: none; +} +header{ + background-image:url(/img/fondoHeader.png); + display: flex; + color: #2e3440; +} +section{ + background-image:url(/img/fondoBlanco.jpg); + + display: flex; + +} +article{ + width: 60%; +} \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/css/formPostulanteStyle.css b/curriculumsearch/src/main/webapp/css/formPostulanteStyle.css new file mode 100644 index 0000000..25dad7d --- /dev/null +++ b/curriculumsearch/src/main/webapp/css/formPostulanteStyle.css @@ -0,0 +1,199 @@ +body { + /* background-color: #506BEE; */ + background-image:url(/img/fondo.png); + /*background-size:cover;*/ + background-repeat:repeat; + height:100vh;width:100vw; + align-items:"middle"; + +} +#head{text-align:center} + form{/*max-width:300px; + width:90%;position:relative; + left:50%; + top:10%;padding:40px; + border-radius:4px; + transform:translate(-50%,10%);*/ + + box-shadow:3px 3px 4px rgba(175, 209, 20, 0.2)} +.card { + border: none +} +li { + padding: 0; + display: inline-block; + width: 80px; + text-align: center; + letter-spacing:normal; + vertical-align: middle; + line-height: 1.1; +} +button { + + border: none; + color: white; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; +} + +.image { + position: relative +} + +.image span { + background-color: #506BEE; + color: #fff; + padding: 6px; + height: 30px; + width: 30px; + border-radius: 50%; + font-size: 13px; + position: absolute; + display: flex; + justify-content: center; + align-items: center; + top: -0px; + right: 0px +} + +.user-details h4 { + color: #506BEE +} + +.ratings { + font-size: 30px; + font-weight: 600; + display: flex; + justify-content: left; + align-items: center; + color: #f9b43a +} + +.user-details span { + text-align: left +} + +.inputs label { + display: flex; + margin-left: 3px; + font-weight: 500; + font-size: 13px; + margin-bottom: 4px +} + +.inputs input { + font-size: 14px; + height: 40px; + border: 2px solid #ced4da +} + +.inputs input:focus { + box-shadow: none; + border: 2px solid #506BEE +} + +.about-inputs label { + display: flex; + margin-left: 3px; + font-weight: 500; + font-size: 13px; + margin-bottom: 4px +} + +.about-inputs textarea { + font-size: 14px; + height: 100px; + border: 2px solid #ced4da; + resize: none +} + +.about-inputs textarea:focus { + box-shadow: none +} + +.btn { + font-weight: 600 +} + +.btn:focus { + box-shadow: none +} + +select { + display: block; + width: 100%; + border: 1px solid #ddd; + border-radius: 20px; + height: 40px; + padding: 5px 10px +} + +select:focus { + outline: none +} + +.add-experience:hover { + background: #506BEE; + color: #fff; + cursor: pointer; + border: solid 1px #506BEE +} + +.content-select select{ + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} +.content-select{ + max-width: 250px; + position: relative; +} + +.content-select select{ + display: inline-block; + width: 100%; + cursor: pointer; + padding: 7px 10px; + height: 42px; + outline: 0; + border: 0; + border-radius: 0; + background: #f0f0f0; + color: #7b7b7b; + font-size: 1em; + color: #999; + font-family: + 'Quicksand', sans-serif; + border:2px solid rgba(0,0,0,0.2); + border-radius: 12px; + position: relative; + transition: all 0.25s ease; +} + +.content-select select:hover{ + background: #B1E8CD; +} + +/* +Creamos la fecha que aparece a la izquierda del select. +Realmente este elemento es un cuadrado que sólo tienen +dos bordes con color y que giramos con transform: rotate(-45deg); +*/ +.content-select i{ + position: absolute; + right: 20px; + top: calc(50% - 13px); + width: 16px; + height: 16px; + display: block; + border-left:4px solid #2AC176; + border-bottom:4px solid #2AC176; + transform: rotate(-45deg); /* Giramos el cuadrado */ + transition: all 0.25s ease; +} + +.content-select:hover i{ + margin-top: 3px; +} \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/css/indexStyle.css b/curriculumsearch/src/main/webapp/css/indexStyle.css new file mode 100644 index 0000000..6f1e132 --- /dev/null +++ b/curriculumsearch/src/main/webapp/css/indexStyle.css @@ -0,0 +1,8 @@ +body{ + background-image:url(/img/fondoIndex.jpg); + background-size:cover; + background-repeat:no-repeat; + height:100vh;width:100vw; + position: absolute; + -webkit-text-size-adjust: 100%; +} \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/css/style.css b/curriculumsearch/src/main/webapp/css/style.css new file mode 100644 index 0000000..990bcac --- /dev/null +++ b/curriculumsearch/src/main/webapp/css/style.css @@ -0,0 +1,40 @@ +*{ + margin: 0px; + padding: 0px; +} +body{ + background-image:url(/img/FondoRoshka.jpg); + background-size:cover; + background-repeat:no-repeat; + overflow: hidden; + height:100%;width:100%; + align-items:"middle"; + position: absolute; +} +#form{max-width:333px; + width:90%;position:relative; + left:50%; + top:10%;padding:40px; + border-radius:4px; + transform:translate(-50%,10%); + color:#fff; + box-shadow:3px 3px 4px rgba(0,0,0,.2)} +#head{text-align:center} +#image{margin:auto;width:50%; + padding:10px;max-height:175px; + max-width:175px} +/*#linkas{display:block; + text-align:center; + font-size:12px; + opacity:.9; + text-decoration:none} +#butonas{background:#70b2d0; + outline:0; + text-shadow:initial} +#formum,#formum2{background:0 0; + border:none; + border-bottom:1px solid #434a52; + border-radius:0; + box-shadow:none; + outline:0; + color:inherit} */ \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/img/FondoRoshka.jpg b/curriculumsearch/src/main/webapp/img/FondoRoshka.jpg new file mode 100644 index 0000000..503216a Binary files /dev/null and b/curriculumsearch/src/main/webapp/img/FondoRoshka.jpg differ diff --git a/curriculumsearch/src/main/webapp/img/LogoRoshka.jpg b/curriculumsearch/src/main/webapp/img/LogoRoshka.jpg new file mode 100644 index 0000000..ecd4d8c Binary files /dev/null and b/curriculumsearch/src/main/webapp/img/LogoRoshka.jpg differ diff --git a/curriculumsearch/src/main/webapp/img/fondo.png b/curriculumsearch/src/main/webapp/img/fondo.png new file mode 100644 index 0000000..85953d1 Binary files /dev/null and b/curriculumsearch/src/main/webapp/img/fondo.png differ diff --git a/curriculumsearch/src/main/webapp/img/fondoBlanco.jpg b/curriculumsearch/src/main/webapp/img/fondoBlanco.jpg new file mode 100644 index 0000000..b5f6863 Binary files /dev/null and b/curriculumsearch/src/main/webapp/img/fondoBlanco.jpg differ diff --git a/curriculumsearch/src/main/webapp/img/fondoHeader.png b/curriculumsearch/src/main/webapp/img/fondoHeader.png new file mode 100644 index 0000000..c5f0258 Binary files /dev/null and b/curriculumsearch/src/main/webapp/img/fondoHeader.png differ diff --git a/curriculumsearch/src/main/webapp/img/fondoIndex.jpg b/curriculumsearch/src/main/webapp/img/fondoIndex.jpg new file mode 100644 index 0000000..90327ac Binary files /dev/null and b/curriculumsearch/src/main/webapp/img/fondoIndex.jpg differ diff --git a/curriculumsearch/src/main/webapp/jsp/cargo-form.jsp b/curriculumsearch/src/main/webapp/jsp/cargo-form.jsp index ca2da8d..a6de80a 100644 --- a/curriculumsearch/src/main/webapp/jsp/cargo-form.jsp +++ b/curriculumsearch/src/main/webapp/jsp/cargo-form.jsp @@ -1,54 +1,40 @@ -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib -prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page -contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - Cargo - - - - - - -
    -

    Agregar Cargo

    -
    - -
    - Nombre del cargo - - -
    -
    - -
    -
    -
    -
    - - +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> + + + +
    +
    ${cargo.id == null ? "Agregar" : "Modificar"} Cargo
    + +
    + Nombre del cargo + + +
    + Este nombre ya existe +
    +
    +
    + +
    +
    +
    +
    + + + +
    diff --git a/curriculumsearch/src/main/webapp/jsp/cargos.jsp b/curriculumsearch/src/main/webapp/jsp/cargos.jsp index acda338..a2f9b26 100644 --- a/curriculumsearch/src/main/webapp/jsp/cargos.jsp +++ b/curriculumsearch/src/main/webapp/jsp/cargos.jsp @@ -1,67 +1,52 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - Cargo - - - - - - -
    -

    Lista de cargos

    -
    -
    - - - -
    - Agregar Nuevo Cargo -
    -
    - - - - - - - - - - - - - - - - - -
    #Cargo
    ${sta.index+1}${cargo.getNombre()} - Ver Convocatorias - Editar cargo
    -
    -
    - - +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> + + + +
    +

    Lista de cargos

    +
    +
    + + + +
    + Agregar Nuevo Cargo +
    +
    + + + + + + + + + + + + + + + + + +
    #Cargo
    ${sta.index+1}${cargo.getNombre()} + Ver Convocatorias + Editar cargo
    +
    +
    +
    + + + +
    diff --git a/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp b/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp index 6653ffd..ae3de78 100644 --- a/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp +++ b/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp @@ -1,47 +1,39 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - Convocatoria - - - - - - -
    -

    Agregar Convocatoria

    -
    - -
    - Fecha inicial - - -
    -
    - Fecha Fin - -
    -
    - Cupos: - -
    -
    - Cargo - - - ${cargo.nombre} - - -
    - -
    -
    -
    - - \ No newline at end of file +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> + + + +

    ${convocatoria.id == null ? "Agregar" : "Modificar"} Convocatoria

    +
    + +
    + Fecha inicial + + +
    +
    + Fecha Fin + +
    +
    + Cupos: + +
    +
    + Cargo + + + ${cargo.nombre} + + +
    + +
    +
    +
    + + + +
    diff --git a/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp b/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp index cdec6d8..1dc3a0f 100644 --- a/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp +++ b/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp @@ -1,20 +1,10 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - Cargo - - - - - - -
    +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> + + +

    Lista de convocatorias

    @@ -67,7 +57,8 @@
    -
    - - - \ No newline at end of file + + + + + diff --git a/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp b/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp index 3eeaffc..9bf8541 100644 --- a/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp +++ b/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp @@ -1,119 +1,381 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> - - - - - - - Tecnologia - - - - - - -
    -

    DETALLE POSTULANTE

    -
    - -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - + + + + - \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/jsp/detallepostulante2.jsp b/curriculumsearch/src/main/webapp/jsp/detallepostulante2.jsp new file mode 100644 index 0000000..953a278 --- /dev/null +++ b/curriculumsearch/src/main/webapp/jsp/detallepostulante2.jsp @@ -0,0 +1,164 @@ + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + + + + Curriculum vitae + + + + + +
    +
    +
    +

         ${postulante.nombre} ${postulante.apellido}

    +

         ${postulante.tipoDocumento}: ${postulante.nroDocument}

    +

         Correo: ${postulante.correo}

    +
    +
    +
    +
    +
    +
    +

      Informacion Personal

    +
      +
    • + Direccion: ${postulante.getCiudad().getDepartamento().getNombre()},${postulante.getCiudad().getNombre()} +
    • +
    • + Telefono: ${postulante.telefono} +
    • +
    • + Fecha de nacimiento: ${postulante.fechaNacimiento} +
    • +
    • + Nivel de ingles:   +
    • +
    • + Estado civil: ${postulante.estadoCivil} +
    • +
    • + Nacionalidad: ${postulante.nacionalidad} +
    • +
    • + Disponibilidad: ${postulante.disponibilidad} +
    • +
    • + Resumen: ${postulante.resumen} +
    • +
    +
    +

      TECNOLOGIAS

    +
      + +
      +
      +
    +
    +

      Cargo al que Postula

    +
      + +
    • Nombre: ${convocatoria.getCargo().getNombre()}

    • +
      +
    +
    +

      Estado RRHH

    +
      +
    • Estado del Postulante: ${postulante.estadoPostulante.getEstado()}
    • +
    • Comentario RRHH: ${postulante.getComentarioRRHH()}
    • + + +
    +
    + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/jsp/edit-user-data.jsp b/curriculumsearch/src/main/webapp/jsp/edit-user-data.jsp new file mode 100644 index 0000000..abdb26d --- /dev/null +++ b/curriculumsearch/src/main/webapp/jsp/edit-user-data.jsp @@ -0,0 +1,65 @@ +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + Edit Profile + + + + + + + + + +
    +
    +
    +
    +
    + Sample photo +
    +

    Perfil

    + + +
    + Email + +
    +
    +
    +
    + Nombre + +
    +
    +
    +
    + Apellido + +
    +
    +
    +
    +
    + +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    + + diff --git a/curriculumsearch/src/main/webapp/jsp/forgot_password_form.jsp b/curriculumsearch/src/main/webapp/jsp/forgot_password_form.jsp new file mode 100644 index 0000000..37c267f --- /dev/null +++ b/curriculumsearch/src/main/webapp/jsp/forgot_password_form.jsp @@ -0,0 +1,36 @@ +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + + + + Forgot Password + + + + + + +
    +

    Forgot Password

    +
    + + + +
    +
    +

    We will be sending a reset password link to your email.

    +
    +
    +

    + +

    +

    + +

    +
    +
    +
    + + \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/jsp/header.jsp b/curriculumsearch/src/main/webapp/jsp/header.jsp index 397a029..5a842fb 100644 --- a/curriculumsearch/src/main/webapp/jsp/header.jsp +++ b/curriculumsearch/src/main/webapp/jsp/header.jsp @@ -46,8 +46,12 @@ + +
    diff --git a/curriculumsearch/src/main/webapp/jsp/index.jsp b/curriculumsearch/src/main/webapp/jsp/index.jsp index 6112019..1ec98fe 100644 --- a/curriculumsearch/src/main/webapp/jsp/index.jsp +++ b/curriculumsearch/src/main/webapp/jsp/index.jsp @@ -8,7 +8,9 @@ - Document + RRHH + + diff --git a/curriculumsearch/src/main/webapp/jsp/layouts/base.jsp b/curriculumsearch/src/main/webapp/jsp/layouts/base.jsp new file mode 100644 index 0000000..deaba95 --- /dev/null +++ b/curriculumsearch/src/main/webapp/jsp/layouts/base.jsp @@ -0,0 +1,81 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + + + + + + RRHH + + +
    + + + +
    + +
    + + + +
    + + + + + + + \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/jsp/login.jsp b/curriculumsearch/src/main/webapp/jsp/login.jsp index 11e5c13..0f3f1ca 100644 --- a/curriculumsearch/src/main/webapp/jsp/login.jsp +++ b/curriculumsearch/src/main/webapp/jsp/login.jsp @@ -8,21 +8,22 @@ Login - + -
    +
    -
    +
    - -

    Ingresar

    +
    + +
    @@ -38,7 +39,12 @@
    - + +
    @@ -46,6 +52,7 @@
    + diff --git a/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp b/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp index 649ba5d..1bf5127 100644 --- a/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp +++ b/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp @@ -10,123 +10,8 @@ - Hello, world! - - - - - + Curriculum + @@ -232,8 +117,8 @@ -
    - @@ -242,41 +127,41 @@
    -
    +
    -
    -
    +
    -
    -
    -
     Cargo al que postulas

    +
    +
     Cargo al que postulas

    -
    -
     Agregar Experiencia

    +
    +
     Agregar Experiencia

    -
    -
     Agregar Estudio

    +
    +
     Agregar Estudio

    @@ -284,16 +169,16 @@ -
    -
     Agregar Tecnologia

    +
    +
     Agregar Tecnologia

    -
    -
     Referencias Personales

    +
    +
     Referencias Personales

    diff --git a/curriculumsearch/src/main/webapp/jsp/postulantes.jsp b/curriculumsearch/src/main/webapp/jsp/postulantes.jsp index bbbedb1..4806afa 100644 --- a/curriculumsearch/src/main/webapp/jsp/postulantes.jsp +++ b/curriculumsearch/src/main/webapp/jsp/postulantes.jsp @@ -1,154 +1,144 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - - - Lista de postulantes - - - - -
    -

    Lista de Postulantes

    -
    - - - - -
    - - + +
    + + + + + + + + +
    +
    + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #NombreDisponibilidadNivel de InglesExperienciaTecnologiasEstado
    ${staPost.index + 1}${postulante.nombre} ${postulante.apellido}${postulante.disponibilidad.getDescripcion()}${postulante.nivelIngles}${postulante.experienciaMeses} + + ${detalle_tecnologia.getTecnologia().getNombre()}${not staTec.last ? "," : ""} + + ${postulante.estado.getEstado()}Ver
    +
    + +
    + + + - - - \ No newline at end of file + } + function buscarPagina(nro){ + nro-- + const aBuscar = 'nroPagina='+nro + if(!location.search) location.search = "?"+aBuscar + const inicial = location.search.search(aBuscar); + if(inicial==-1){//si no se encuentra y hay otros queries + location.search = "&"+aBuscar + } + location.search.replace('nroPagina=',aBuscar) + } + const tecId = document.querySelector("#tecId"); + const lvlTec = document.querySelector("#lvlTec"); + tecId.addEventListener('change',habilitarLvlTec); + habilitarLvlTec() + + + diff --git a/curriculumsearch/src/main/webapp/jsp/reset_password_form.jsp b/curriculumsearch/src/main/webapp/jsp/reset_password_form.jsp new file mode 100644 index 0000000..798583c --- /dev/null +++ b/curriculumsearch/src/main/webapp/jsp/reset_password_form.jsp @@ -0,0 +1,36 @@ +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + + + + Forgot Password + + + + + + +
    +

    Reset Your Password

    +
    + + + +
    +
    +

    + +

    +

    + +

    +
    +
    +
    + + + + diff --git a/curriculumsearch/src/main/webapp/jsp/tecnologia-form.jsp b/curriculumsearch/src/main/webapp/jsp/tecnologia-form.jsp index 0470123..ff5e44c 100644 --- a/curriculumsearch/src/main/webapp/jsp/tecnologia-form.jsp +++ b/curriculumsearch/src/main/webapp/jsp/tecnologia-form.jsp @@ -1,45 +1,26 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - - - - - - Agregar Tecnologia - - - - - - -
    -

    Agregar Tecnologia

    +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> + + + + +

    ${tecnologia.id == null ? "Agregar" : "Modificar"} Tecnologia

    - Nombre: + Nombre: + +
    + Este nombre ya existe +
    -
    - - - - - - - - - - \ No newline at end of file + + \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/jsp/tecnologias.jsp b/curriculumsearch/src/main/webapp/jsp/tecnologias.jsp index b0f6899..c12e829 100644 --- a/curriculumsearch/src/main/webapp/jsp/tecnologias.jsp +++ b/curriculumsearch/src/main/webapp/jsp/tecnologias.jsp @@ -1,20 +1,10 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - - - - Tecnologia - - - - - - -
    +<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> + + +

    Lista de Tecnologias

    @@ -49,7 +39,5 @@
    -
    - - - \ No newline at end of file + + diff --git a/curriculumsearch/webapp/css/styles.min.css b/curriculumsearch/webapp/css/styles.min.css new file mode 100644 index 0000000..8e40205 --- /dev/null +++ b/curriculumsearch/webapp/css/styles.min.css @@ -0,0 +1,32 @@ +body{ + background-image:url(/img/FondoRoshka.jpg?h=4dba38685316d6e65f6e24d740c4c6b5); + background-size:cover; + background-repeat:no-repeat; + height:auto;width:auto} +/* #form{max-width:333px; + width:90%;position:relative; + left:50%; + top:10%;padding:40px; + border-radius:4px; + transform:translate(-50%,10%); + color:#fff; + box-shadow:3px 3px 4px rgba(0,0,0,.2)} +#head{text-align:center} +#image{margin:auto;width:50%; + padding:10px;max-height:175px; + max-width:175px} +#linkas{display:block; + text-align:center; + font-size:12px; + opacity:.9; + text-decoration:none} +#butonas{background:#70b2d0; + outline:0; + text-shadow:initial} +#formum,#formum2{background:0 0; + border:none; + border-bottom:1px solid #434a52; + border-radius:0; + box-shadow:none; + outline:0; + color:inherit} */ \ No newline at end of file