Commit dd0c3e6b authored by efernov's avatar efernov
Browse files

sacar en descripcion un string close #19

parent 1f50b595
......@@ -8,8 +8,8 @@
# You can see what browsers were selected by your queries by running:
# npx browserslist
last 1 Chrome version
last 1 Firefox version
last 1 Chrome version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
......
......@@ -23,7 +23,7 @@
</article>
<article class="col-2">
<select class="form-select"
<input type="number"
[(ngModel)]="_alambre.precio"
name="precio"
required
......@@ -33,15 +33,6 @@
[ngClass]="{
'is-invalid': precio.invalid && (precio.dirty || precio.touched),
'is-valid': !precio.invalid && precio.dirty && precio.value !=0}">
<option value="0">Seleccione un valor</option>
<option value="0.5">0.5</option>
<option value="1">1</option>
<option value="1.5">1.5</option>
<option value="2">2</option>
<option value="2.5">2.5</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div class="text-danger"
*ngIf="precio.invalid && (precio.dirty || precio.touched) || (precio.value ==0 && precio.dirty)">
......@@ -101,7 +92,7 @@
</article>
<article class="col-2">
<select class="form-select"
<input type="number"
[(ngModel)]="_alambre.cantidad"
name="cantidad"
required="required"
......@@ -111,12 +102,6 @@
[ngClass]="{
'is-invalid': cantidad.invalid && (cantidad.dirty || cantidad.touched),
'is-valid': !cantidad.invalid && cantidad.dirty}">
<option value="0">Seleccione un valor</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div class="text-danger"
*ngIf="cantidad.invalid && (cantidad.dirty || cantidad.touched) || (cantidad.value ==0 && cantidad.dirty)">
......
import { InstantiateExpr } from "@angular/compiler";
export interface Ortodoncia {
id: number;
......
......@@ -111,11 +111,11 @@
<td>{{material.cantidad}}</td>
<td>{{material.precio}}</td>
<td>
<button (click)="editarMaterial(material)" *ngIf="material.urlAlambre" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#alambre">Editar <fa-icon [icon] = "faPencil"></fa-icon></button>
<button (click)="editarMaterial(material)" *ngIf="material.urlTornillo" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#tornillo">Editar <fa-icon [icon] = "faPencil"></fa-icon></button>
<button (click)="editarMaterial(material)" *ngIf="material.urlAlambre" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#alambre"><fa-icon [icon] = "faPencil"></fa-icon></button>
<button (click)="editarMaterial(material)" *ngIf="material.urlTornillo" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#tornillo"><fa-icon [icon] = "faPencil"></fa-icon></button>
</td>
<td>
<button class="btn btn-danger" (click)="eliminarMaterial(material.id)">Borrar<fa-icon [icon] = "faBasura"></fa-icon></button>
<button class="btn btn-danger" (click)="eliminarMaterial(material.id)"><fa-icon [icon] = "faBasura"></fa-icon></button>
</td>
</tr>
</tbody>
......
......@@ -23,7 +23,7 @@
</article>
<article class="col-2">
<select class="form-select"
<input type="number"
[(ngModel)]="_tornillo.precio"
name="precio"
required
......@@ -33,14 +33,7 @@
[ngClass]="{
'is-invalid': precio.invalid && (precio.dirty || precio.touched),
'is-valid': !precio.invalid && precio.dirty && precio.value !=0}">
<option value="0">Seleccione un valor</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
</select>
<div class="text-danger"
*ngIf="precio.invalid && (precio.dirty || precio.touched) || (precio.value ==0 && precio.dirty)">
......@@ -105,7 +98,7 @@
</article>
<article class="col-2">
<select class="form-select" aria-label=""
<input type="number" aria-label=""
[(ngModel)]="_tornillo.cantidad"
name="cantidad"
required
......@@ -115,12 +108,6 @@
[ngClass]="{
'is-invalid': cantidad.invalid && (cantidad.dirty || cantidad.touched),
'is-valid': !cantidad.invalid && cantidad.dirty}">
<option value="0">Seleccione un valor</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div class="text-danger"
*ngIf="cantidad.invalid && (cantidad.dirty || cantidad.touched) || (cantidad.value ==0 && cantidad.dirty)">
......
......@@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import novodental.entidades.OrtodonciaConId;
//import rest.OrtodonciaController;
......
......@@ -5,13 +5,17 @@ import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import novodental.ortodoncia.Alambre;
import novodental.repositorios.AlambreConIdListener;
@Entity
@EntityListeners(AlambreConIdListener.class)
@Access(value = AccessType.FIELD)
@DiscriminatorValue("Alambre")
public class AlambreConId extends MaterialConId implements Alambre {
......
......@@ -5,6 +5,7 @@ import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
......@@ -17,15 +18,17 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import novodental.ortodoncia.Material;
import novodental.ortodoncia.Ortodoncia;
import novodental.repositorios.OrtodonciaConIdListener;
@Entity
@EntityListeners(OrtodonciaConIdListener.class)
@Table(name = "ORTODONCIAS")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class OrtodonciaConId extends Ortodoncia {
public static final String FECHA_SALIDA = "fechaSalida";
public static final String MATERIALES = "materiales";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
......@@ -37,11 +40,11 @@ public class OrtodonciaConId extends Ortodoncia {
@JsonIgnore
@OneToMany(cascade = CascadeType.ALL, targetEntity = MaterialConId.class, mappedBy = "ortodoncia")
private List<Material> materiales;
public OrtodonciaConId() {
super();
}
public int getId() {
return id;
}
......@@ -49,7 +52,7 @@ public class OrtodonciaConId extends Ortodoncia {
public void setId(int id) {
this.id = id;
}
@Override
public String getTipoTrabajo() {
// TODO Auto-generated method stub
......@@ -61,7 +64,7 @@ public class OrtodonciaConId extends Ortodoncia {
// TODO Auto-generated method stub
this.tipoTrabajo = tipoTrabajo;
}
public Instant getFechaEntrada() {
return fechaEntrada;
}
......@@ -78,7 +81,6 @@ public class OrtodonciaConId extends Ortodoncia {
this.fechaSalida = fechaSalida;
}
public float getImporteOrtodoncia() {
return importeOrtodoncia;
}
......@@ -101,19 +103,19 @@ public class OrtodonciaConId extends Ortodoncia {
+ ", fechaSalida=" + fechaSalida + ", importeOrtodoncia=" + importeOrtodoncia + ", materiales="
+ materiales + "]";
}
/*public void addMaterialConId(MaterialConId material) {
getMateriales().add(material);
material.setOrtodoncia(this);
}*/
// public float getImporte() {
// float resultado = 0;
// for (Material material : materiales) {
// resultado += material.getPrecio();
// }
// return resultado;
// }
/*
* public void addMaterialConId(MaterialConId material) {
* getMateriales().add(material); material.setOrtodoncia(this); }
*/
public float getImporte() {
float resultado = 0;
if (materiales != null) {
for (Material material : materiales) {
resultado += material.getPrecio() * ((MaterialConId) material).getCantidad();
}
}
return resultado;
}
}
......@@ -5,17 +5,16 @@ import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.EntityListeners;
import com.fasterxml.jackson.annotation.JsonIgnore;
import novodental.ortodoncia.Tornillo;
import novodental.repositorios.TornilloConIdListener;
@Entity
@EntityListeners(TornilloConIdListener.class)
@Access(value = AccessType.FIELD)
@DiscriminatorValue("Tornillo")
public class TornilloConId extends MaterialConId implements Tornillo {
......
package novodental;
package novodental.novodental;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;
import novodental.ConfiguracionPorJava;
@SpringBootApplication
@Import({ConfiguracionPorJava.class})
@ImportResource({ "classpath:config/jpa-config.xml" })
......
package novodental.repositorios;
import javax.persistence.PrePersist;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import novodental.entidades.AlambreConId;
public class AlambreConIdListener {
private Logger log = LoggerFactory.getLogger(AlambreConIdListener.class);
@PrePersist
public void preGuardarAlambre(AlambreConId alambre) {
log.warn("Se va a guardar el alambre con id " + alambre.getId());
}
}
package novodental.repositorios;
import java.time.Instant;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ResponseStatusException;
import novodental.entidades.OrtodonciaConId;
public class OrtodonciaConIdListener {
private Logger log = LoggerFactory.getLogger(OrtodonciaConIdListener.class);
@PrePersist
@PreUpdate
public void preGuardarOrtodoncia(OrtodonciaConId ortodoncia) {
Instant fe = ortodoncia.getFechaEntrada();
Instant fs = ortodoncia.getFechaSalida();
if (fe.getEpochSecond() > fs.getEpochSecond()) {
log.warn("Se ha intentado crear una ortodoncia con una fecha e entrada superior a la fecha de salida.");
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
"La fecha de salida debe ser mayor que la fecha de entrada.");
}
float importe = ortodoncia.getImporte();
ortodoncia.setImporteOrtodoncia(importe);
log.warn("Se va a guardar la Ortodoncia con id " + ortodoncia.getId() + " con un importe de " + importe);
}
}
\ No newline at end of file
package novodental.repositorios;
import javax.persistence.PrePersist;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import novodental.entidades.TornilloConId;
public class TornilloConIdListener {
private Logger log = LoggerFactory.getLogger(TornilloConIdListener.class);
@PrePersist
public void preGuardarTornillo(TornilloConId tornillo) {
log.warn("Se va a guardar el tornillo con id " + tornillo.getId());
}
}
\ No newline at end of file
package novodental.rest;
import java.time.Instant;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
......@@ -19,6 +18,7 @@ import novodental.entidades.AlambreConId;
import novodental.entidades.OrtodonciaConId;
import novodental.entidades.TornilloConId;
import novodental.repositorios.AlambreDAO;
import novodental.repositorios.OrtodonciaDAO;
import novodental.repositorios.TornilloDAO;
import novodental.repositorios.specification.AlambreConIdSpecs;
import novodental.repositorios.specification.TornilloConIdSpecs;
......@@ -31,7 +31,23 @@ public class OrtodonciaController {
@Autowired
private AlambreDAO alambreDAO;
@Autowired
private OrtodonciaDAO ortodonciaDAO;
@GetMapping("/ortodoncia/importe")
public float calcularImporteOrtodoncia(@RequestParam("id") int id) {
OrtodonciaConId ortodonciaConId = ortodonciaDAO.findById(id).get();
float importe = 0;
if(ortodonciaConId != null) {
importe = ortodonciaConId.getImporte();
ortodonciaConId.setImporteOrtodoncia(importe);
ortodonciaDAO.save(ortodonciaConId);
}
return importe;
}
@GetMapping("/ortodoncias/search/con-fecha-salida-posterior-a/tornillo")
public ResponseEntity<Set<OrtodonciaDTO>> getOrtodociasConFechaSalidaPosteriorTornillo(
......
#spring.datasource.url=jdbc:h2:tcp://localhost/~/test
#spring.datasource.username=sa
#spring.datasource.password=
#spring.datasource.driver-class-name=org.h2.Driver
#
#hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://tyke.db.elephantsql.com/ozilemqx
#spring.datasource.driver-class-name=org.postgresql.Driver
#spring.datasource.url=jdbc:postgresql://tyke.db.elephantsql.com/ozilemqx
#
#spring.datasource.username= ozilemqx
#spring.datasource.password=rvYv_EDIZt7U5uRlaOdUoWc4hHSRCLk1
#hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.username= ozilemqx
spring.datasource.password=rvYv_EDIZt7U5uRlaOdUoWc4hHSRCLk1
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
es.lanyu.entities-package=novodental.entidades
es.lanyu.jpa-package=novodental.repositorios
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment