Compare commits

..

No commits in common. "a29e410332f41c6493e58ae19eab110005b2cc8f" and "151a2be1c470e51e503f165087338be6d712ca44" have entirely different histories.

11 changed files with 120 additions and 196 deletions

View File

@ -13,5 +13,4 @@ public class CertController {
public String index(Model model) { public String index(Model model) {
return "certs"; return "certs";
} }
} }

View File

@ -0,0 +1,34 @@
package dev.araozu.eeg_java.controller;
import dev.araozu.eeg_java.model.Person;
import dev.araozu.eeg_java.model.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(path = "/demo")
public class MainController {
@Autowired
private PersonRepository personRepository;
@PostMapping(path = "/add")
public @ResponseBody String addNewPerson(@RequestParam String name, @RequestParam String dni) {
Person person = new Person();
person.setPerson_dni(dni);
person.setPerson_names(name);
person.setPerson_paternal_surname("Doe");
person.setPerson_maternal_surname("Smith");
person.setPerson_classroom_id(1);
person.setPerson_classroom_username("JohnDoe");
personRepository.save(person);
return "Saved :D";
}
@GetMapping(path = "/all")
public @ResponseBody Iterable<Person> getAllPersons() {
return personRepository.findAll();
}
}

View File

@ -0,0 +1,76 @@
package dev.araozu.eeg_java.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer person_id;
private String person_dni;
private String person_names;
private String person_paternal_surname;
private String person_maternal_surname;
private Integer person_classroom_id;
private String person_classroom_username;
public Integer getPerson_id() {
return person_id;
}
public void setPerson_id(Integer person_id) {
this.person_id = person_id;
}
public String getPerson_dni() {
return person_dni;
}
public void setPerson_dni(String person_dni) {
this.person_dni = person_dni;
}
public String getPerson_names() {
return person_names;
}
public void setPerson_names(String person_names) {
this.person_names = person_names;
}
public String getPerson_paternal_surname() {
return person_paternal_surname;
}
public void setPerson_paternal_surname(String person_paternal_surname) {
this.person_paternal_surname = person_paternal_surname;
}
public String getPerson_maternal_surname() {
return person_maternal_surname;
}
public void setPerson_maternal_surname(String person_maternal_surname) {
this.person_maternal_surname = person_maternal_surname;
}
public Integer getPerson_classroom_id() {
return person_classroom_id;
}
public void setPerson_classroom_id(Integer person_classroom_id) {
this.person_classroom_id = person_classroom_id;
}
public String getPerson_classroom_username() {
return person_classroom_username;
}
public void setPerson_classroom_username(String person_classroom_username) {
this.person_classroom_username = person_classroom_username;
}
}

View File

@ -1,9 +1,6 @@
package dev.araozu.eeg_java.person; package dev.araozu.eeg_java.model;
import java.util.Optional;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
public interface PersonRepository extends CrudRepository<Person, Integer> { public interface PersonRepository extends CrudRepository<Person, Integer> {
Optional<Person> findByPersonDni(String personDni);
} }

View File

@ -1,87 +0,0 @@
package dev.araozu.eeg_java.person;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer person_id;
@Column(name = "person_dni")
private String personDni;
@Column(name = "person_names")
private String personNames;
@Column(name = "person_paternal_surname")
private String personPaternalSurname;
@Column(name = "person_maternal_surname")
private String personMaternalSurname;
@Column(name = "person_classroom_id")
private Integer personClassroomId;
@Column(name = "person_classroom_username")
private String personClassroomUsername;
public String getPersonClassroomUsername() {
return personClassroomUsername;
}
public void setPersonClassroomUsername(String personClassroomUsername) {
this.personClassroomUsername = personClassroomUsername;
}
public Integer getPersonId() {
return person_id;
}
public void setPersonId(Integer person_id) {
this.person_id = person_id;
}
public String getPersonDni() {
return personDni;
}
public void setPersonDni(String person_dni) {
this.personDni = person_dni;
}
public String getPersonNames() {
return personNames;
}
public void setPersonNames(String personNames) {
this.personNames = personNames;
}
public String getPersonPaternalSurname() {
return personPaternalSurname;
}
public void setPersonPaternalSurname(String personPaternalSurname) {
this.personPaternalSurname = personPaternalSurname;
}
public String getPersonMaternalSurname() {
return personMaternalSurname;
}
public void setPersonMaternalSurname(String personMaternalSurname) {
this.personMaternalSurname = personMaternalSurname;
}
public Integer getPersonClassroomId() {
return personClassroomId;
}
public void setPersonClassroomId(Integer personClassroomId) {
this.personClassroomId = personClassroomId;
}
}

View File

@ -1,39 +0,0 @@
package dev.araozu.eeg_java.person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
@RequestMapping(path = "/person")
public class PersonController {
@Autowired
private PersonRepository personRepository;
@GetMapping("/")
public String searchPersonByDniString(
@RequestParam(required = true, value="person_dni") String personDni,
HttpServletResponse response
) {
var maybePerson = personRepository.findByPersonDni(personDni);
if (maybePerson.isPresent()) {
Person person = maybePerson.get();
System.out.println(person.getPersonDni());
return "fragments/person/display.html";
} else {
// send http 404
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return "fragments/person/create.html";
}
}
}

View File

@ -1,18 +1,16 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="es" xmlns:th="http://www.thymeleaf.org"> <html lang="es" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/head :: head}"></head> <head th:replace="fragments/head"></head>
<body hx-ext="response-targets, class-tools, loading-states"> <body hx-ext="response-targets, class-tools, loading-states">
<div class="grid grid-cols-[5rem_auto]"> <div class="grid grid-cols-[5rem_auto]">
<!-- Navigation Rail --> <!-- Navigation Rail -->
<div th:replace="~{fragments/navigation_rail :: div}"></div> <div th:replace="fragments/navigation_rail :: div"></div>
<!-- Certs --> <!-- Certs -->
<div> <div>
<div class="grid grid-cols-[16rem_25rem_1fr]" <div class="grid grid-cols-[16rem_25rem_1fr]">
x-data="{user_dni: ''}"
>
<!-- Search --> <!-- Search -->
<div> <div>
<div class="text-center"> <div class="text-center">
@ -21,9 +19,9 @@
<img class="inline-block w-[10rem] h-[10rem]" src="" /> <img class="inline-block w-[10rem] h-[10rem]" src="" />
</div> </div>
</div> </div>
<div> <div x-data="{user_dni: ''}">
<form <form
hx-get="/person/" hx-target="#person-search-result" hx-get="/certs/person" hx-target="#person-search-result"
hx-target-4*="#person-search-result" hx-target-4*="#person-search-result"
hx-swap="outerHTML" hx-swap="outerHTML"
> >
@ -32,11 +30,9 @@
invalid:border-c-error invalid:text-c-error invalid:border-c-error invalid:text-c-error
focus:border-c-primary outline-none font-mono focus:border-c-primary outline-none font-mono
disabled:opacity-50 disabled:cursor-not-allowed" type="text" minLength="8" disabled:opacity-50 disabled:cursor-not-allowed" type="text" minLength="8"
name="person_dni"
maxLength="15" pattern="[0-9]{8,15}" placeholder="Número de DNI" x-model="user_dni" maxLength="15" pattern="[0-9]{8,15}" placeholder="Número de DNI" x-model="user_dni"
required /> required />
<label for="search-dni" <label for="search-dni"
class="absolute -top-2 left-2 text-xs bg-c-surface px-1 select-none">DNI</label> class="absolute -top-2 left-2 text-xs bg-c-surface px-1 select-none">DNI</label>
@ -58,7 +54,7 @@
</button> </button>
</form> </form>
<p class="relative max-w-[14rem] mx-auto my-2 p-1 text-c-error text-sm select-none opacity-0"> <p class="relative max-w-[14rem] mx-auto p-1 text-c-error text-sm select-none opacity-0">
Error: {error()} Error: {error()}
</p> </p>

View File

@ -19,5 +19,5 @@
<!-- Phosphor icons --> <!-- Phosphor icons -->
<link rel="stylesheet" type="text/css" href="https://unpkg.com/@phosphor-icons/web@2.0.3/src/regular/style.css" /> <link rel="stylesheet" type="text/css" href="https://unpkg.com/@phosphor-icons/web@2.0.3/src/regular/style.css" />
<!-- Alpinejs --> <!-- Alpinejs -->
<script src="https://unpkg.com/alpinejs@3.13.7" defer></script> <script src="https://unpkg.com/alpinejs" defer></script>
</head> </head>

View File

@ -1,3 +0,0 @@
<div id="person-search-result">
<p>Create a new person here:</p>
</div>

View File

@ -1,49 +0,0 @@
<div id="person-search-result" x-show="user_dni.length >= 8">
<div class="relative max-w-[14rem] mx-auto my-6">
<label class="absolute -top-2 left-2 text-xs bg-c-surface px-1 select-none">
Apellido Paterno
</label>
<span class="bg-c-background text-c-on-background border-c-outline
border-2 rounded px-2 py-1 w-full inline-block font-mono
disabled:opacity-50 disabled:cursor-not-allowed">
AAAAAAA
</span>
<button type="button" class="absolute top-1 right-1 rounded hover:bg-c-surface-variant"
onclick={copyToClipboard}>
<i class="ph ph-copy inline-block w-6 text-2xl"></i>
</button>
</div>
<div class="relative max-w-[14rem] mx-auto my-6">
<label class="absolute -top-2 left-2 text-xs bg-c-surface px-1 select-none">
Apellido Materno
</label>
<span class="bg-c-background text-c-on-background border-c-outline
border-2 rounded px-2 py-1 w-full inline-block font-mono
disabled:opacity-50 disabled:cursor-not-allowed">
BBBBBB
</span>
<button type="button" class="absolute top-1 right-1 rounded hover:bg-c-surface-variant"
onclick={copyToClipboard}>
<i class="ph ph-copy inline-block w-6 text-2xl"></i>
</button>
</div>
<div class="relative max-w-[14rem] mx-auto my-6">
<label class="absolute -top-2 left-2 text-xs bg-c-surface px-1 select-none">
Nombres
</label>
<span class="bg-c-background text-c-on-background border-c-outline
border-2 rounded px-2 py-1 w-full inline-block font-mono
disabled:opacity-50 disabled:cursor-not-allowed">
CCCCCCCC
</span>
<button type="button" class="absolute top-1 right-1 rounded hover:bg-c-surface-variant"
onclick={copyToClipboard}>
<i class="ph ph-copy inline-block w-6 text-2xl"></i>
</button>
</div>
</div>

View File

@ -1,7 +1,7 @@
<!doctype html> <!doctype html>
<html lang="es" xmlns:th="http://www.thymeleaf.org"> <html lang="es" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/head :: head}"></head> <head th:replace="fragments/head"></head>
<body> <body>