Continuando Los cambios a las listas, encontrando un erro de creacion raro, habia que comental la linea del id en los create htmls. Acabado los contactos y tabla de sucursales esta casi acabado, falta borar por id
parent
19f3bc0f7f
commit
dffe0bdbf0
@ -0,0 +1,89 @@
|
|||||||
|
package com.example.proyectofinal.controllers.modelControllers;
|
||||||
|
|
||||||
|
import com.example.proyectofinal.models.empresas.Empresa;
|
||||||
|
import com.example.proyectofinal.models.empresas.Sucursal;
|
||||||
|
import com.example.proyectofinal.servicios.EmpresaService;
|
||||||
|
import com.example.proyectofinal.servicios.SucursalService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class SucursalController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SucursalService sucursalService;
|
||||||
|
@Autowired
|
||||||
|
private EmpresaService empresaService;
|
||||||
|
|
||||||
|
@GetMapping("/admin/sucursal/create")
|
||||||
|
public String showCreateForm(Model model) {
|
||||||
|
Sucursal sucursal = new Sucursal();
|
||||||
|
Empresa empresa = new Empresa();
|
||||||
|
List<Empresa> empresas = empresaService.findAll();
|
||||||
|
model.addAttribute("sucursal", sucursal);
|
||||||
|
model.addAttribute("empresa", empresa);
|
||||||
|
model.addAttribute("empresas", empresas);
|
||||||
|
return "admin/sucursal/create";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/sucursal/save")
|
||||||
|
public ResponseEntity<String> saveSucursal(Sucursal sucursal, @RequestParam("empresa.id") Long empresaId){
|
||||||
|
try{
|
||||||
|
Empresa existingEmpresa = empresaService.findById(empresaId);
|
||||||
|
sucursal.setEmpresa(existingEmpresa);
|
||||||
|
if(sucursalService.exists(sucursal) != null){
|
||||||
|
return new ResponseEntity<>("Este sucursal ya existe en la base de datos", HttpStatus.BAD_REQUEST);
|
||||||
|
}else {
|
||||||
|
sucursalService.save(sucursal);
|
||||||
|
return new ResponseEntity<>("La sucursal fue guardado con exito", HttpStatus.OK);
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@GetMapping("/admin/sucursal/update/{id}")
|
||||||
|
public String showUpdateForm(Model model, @PathVariable Long id) {
|
||||||
|
Sucursal sucursal = sucursalService.findById(id);
|
||||||
|
Empresa empresa = new Empresa();
|
||||||
|
List<Empresa> empresas = empresaService.findAll();
|
||||||
|
model.addAttribute("sucursal", sucursal);
|
||||||
|
model.addAttribute("empresa", empresa);
|
||||||
|
model.addAttribute("empresas", empresas);
|
||||||
|
model.addAttribute("sedeCentral", sucursal.getSedeCentral());
|
||||||
|
return "admin/sucursal/update";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/sucursal/update")
|
||||||
|
public ResponseEntity<String> updateSucursal(Sucursal sucursal, @RequestParam("empresa.id") Long sectorId){
|
||||||
|
try{
|
||||||
|
Empresa existingEmpresa = empresaService.findById(sectorId);
|
||||||
|
sucursal.setEmpresa(existingEmpresa);
|
||||||
|
sucursalService.save(sucursal);
|
||||||
|
return new ResponseEntity<>("Los datos del sucursal fue renovados con exito", HttpStatus.OK);
|
||||||
|
}catch (Exception e) {
|
||||||
|
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/sucursal/delete/{id}")
|
||||||
|
public ResponseEntity<String> deleteSucursal(@PathVariable Long id){
|
||||||
|
System.out.println("Attempting to delete Sucursal with ID: " + id);
|
||||||
|
try{
|
||||||
|
sucursalService.deleteById(id);
|
||||||
|
return new ResponseEntity<>("La empresa ha sido eliminado", HttpStatus.OK);
|
||||||
|
}catch (Exception e){
|
||||||
|
System.out.println("Error deleting Sucursal: " + e.getMessage());
|
||||||
|
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,139 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Creacion: Empresa</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>Añadir Empresa<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a></h1>
|
||||||
|
|
||||||
|
<form th:action="@{/sucursal/save}" method="post" enctype="multipart/form-data" th:object="${sucursal}">
|
||||||
|
<!--<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="128" class="form-control" id="nombre">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="localidad">Localidad</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<input type="text" th:field="*{localidad}" required minlength="2" maxlength="75" title="Entra una localidad valida" class="form-control" id="localidad">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="direccion">Direccion</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<input type="text" th:field="*{direccion}" required minlength="2" maxlength="75" title="Entra una dirreccion valida." class="form-control" id="direccion">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="sedeCentral">Sede Central</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<input type="number" th:field="*{sedeCentral}" required min="0" max="1" title="Entra 0 o 1" class="form-control" id="sedeCentral">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="empresa">Empresas</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<select th:field="*{empresa.id}" class="form-control" id="empresa">
|
||||||
|
<option th:each="empresa : ${empresas}" th:value="${empresa.id}" th:text="${empresa.nombre}"></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
|
function goBack() {
|
||||||
|
console.log("goBack function called");
|
||||||
|
window.history.back();
|
||||||
|
}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("form").on("submit", function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
var formData = $(this).serialize();
|
||||||
|
var empresaId = $('#empresa').val();
|
||||||
|
formData += '&sucursal=' + encodeURIComponent(empresaId);
|
||||||
|
$.ajax({
|
||||||
|
url: '/sucursal/save',
|
||||||
|
type: 'post',
|
||||||
|
data: formData,
|
||||||
|
success: function (message) {
|
||||||
|
if(message === "La sucursal fue guardado con exito") {
|
||||||
|
alert("La sucursal fue guardado con exito")
|
||||||
|
window.history.go(-1); // Go back two pages
|
||||||
|
} else if(message === "Este sucursal ya existe en la base de datos"){
|
||||||
|
alert("Este sucursal ya existe en la base de datos");
|
||||||
|
window.history.go(-1);
|
||||||
|
}else{
|
||||||
|
alert("Error, consulata a los informaticos")
|
||||||
|
window.history.go(-1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (jqXHR) {
|
||||||
|
alert(jqXHR.responseText);
|
||||||
|
window.history.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,137 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Update: Empresa</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>Editar datos de Empresa<a href="/logout" class="logout-button"><i class="fas fa-door-open"></i></a></h1>
|
||||||
|
|
||||||
|
<form th:action="@{/sucursal/update}" method="post" enctype="multipart/form-data" th:object="${sucursal}">
|
||||||
|
<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="128" class="form-control" id="nombre">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="localidad">Localidad</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<input type="text" th:field="*{localidad}" required minlength="2" maxlength="75" title="Entra una localidad valida" class="form-control" id="localidad">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="direccion">Direccion</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<input type="text" th:field="*{direccion}" required minlength="2" maxlength="75" title="Entra una dirreccion valida." class="form-control" id="direccion">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="sedeCentral">Sede Central</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<input type="text" th:field="*{sedeCentral}" pattern="[0-1]" title="Enter either 0 or 1" class="form-control" id="sedeCentral" th:value="${sedeCentral}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class ="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label" for="empresa">Empresas</label>
|
||||||
|
<div class = "col-sm-9">
|
||||||
|
<select th:field="*{empresa.id}" class="form-control" id="empresa">
|
||||||
|
<option th:each="empresa : ${empresas}" th:value="${empresa.id}" th:text="${empresa.nombre}"></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
|
function goBack() {
|
||||||
|
console.log("goBack function called");
|
||||||
|
window.history.back();
|
||||||
|
}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("form").on("submit", function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
var formData = $(this).serialize();
|
||||||
|
var empresaId = $('#empresa').val();
|
||||||
|
formData += '&sucursal=' + encodeURIComponent(empresaId);
|
||||||
|
$.ajax({
|
||||||
|
url: '/sucursal/update',
|
||||||
|
type: 'post',
|
||||||
|
data: formData,
|
||||||
|
success: function (message) {
|
||||||
|
if(message === "Los datos del sucursal fue renovados con exito") {
|
||||||
|
alert("Los datos del sucursal fue renovada con exito")
|
||||||
|
window.history.go(-1); // Go back two pages
|
||||||
|
}else{
|
||||||
|
alert("Error, consulata a los informaticos")
|
||||||
|
window.history.go(-1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (jqXHR) {
|
||||||
|
alert(jqXHR.responseText);
|
||||||
|
window.history.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in new issue