diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 5166fe90f..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -mysql: - image: mysql:5.7 - ports: - - "3306:3306" - environment: - - MYSQL_ROOT_PASSWORD= - - MYSQL_ALLOW_EMPTY_PASSWORD=true - - MYSQL_USER=petclinic - - MYSQL_PASSWORD=petclinic - - MYSQL_DATABASE=petclinic - volumes: - - "./conf.d:/etc/mysql/conf.d:ro" diff --git a/pom.xml b/pom.xml index 60be53522..38e0cd40b 100644 --- a/pom.xml +++ b/pom.xml @@ -135,7 +135,10 @@ spring-boot-devtools true + + + diff --git a/src/main/java/org/springframework/cheapy/CheapyApplication.java b/src/main/java/org/springframework/cheapy/CheapyApplication.java index 2912ee3d8..3df17e2bb 100644 --- a/src/main/java/org/springframework/cheapy/CheapyApplication.java +++ b/src/main/java/org/springframework/cheapy/CheapyApplication.java @@ -20,7 +20,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** - * PetClinic Spring Boot Application. + * Cheapy Spring Boot Application. * * @author Dave Syer * diff --git a/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java b/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java index 74b1dd69a..4c119fe2c 100644 --- a/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java +++ b/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java @@ -20,9 +20,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; * and open the template in the editor. */ -/** - * @author japarejo - */ + @Configuration @EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @@ -37,22 +35,32 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { http.authorizeRequests().antMatchers("/resources/**", "/webjars/**", "/h2-console/**").permitAll() .antMatchers(HttpMethod.GET, "/", "/oups").permitAll() .antMatchers("/users/new").permitAll() + .antMatchers("/nuOffers/**").hasAnyAuthority("admin","client") .antMatchers("/timeOffers/**").hasAnyAuthority("admin","client") + + .antMatchers("/login/**").anonymous() + .antMatchers("/logout").permitAll() + .antMatchers("/usuarios/new").permitAll() .antMatchers("/admin/**").hasAnyAuthority("admin") .antMatchers("/speedOffers/**").hasAnyAuthority("admin", "client") .antMatchers("/foodOffers/**").hasAnyAuthority("admin", "client") .antMatchers("/owners/**").hasAnyAuthority("owner", "admin") + + .antMatchers("/clients/new").permitAll() + .antMatchers("/offers/**").hasAnyAuthority("admin") + .and().formLogin() - /* .loginPage("/login") */ - .failureUrl("/login-error").and().logout().logoutSuccessUrl("/"); + .loginPage("/login").permitAll() + .failureUrl("/login?error") + .and().logout().logoutSuccessUrl("/login"); // Configuración para que funcione la consola de administración // de la BD H2 (deshabilitar las cabeceras de protección contra // ataques de tipo csrf y habilitar los framesets si su contenido // se sirve desde esta misma página. - http.csrf().ignoringAntMatchers("/h2-console/**"); + //http.csrf().ignoringAntMatchers("/h2-console/**"); http.headers().frameOptions().sameOrigin(); } @@ -61,7 +69,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { public void configure(final AuthenticationManagerBuilder auth) throws Exception { auth.jdbcAuthentication().dataSource(this.dataSource) //[login de admin,owner y vet] .usersByUsernameQuery("select username,password,enabled " + "from users " + "where username = ?") - .usersByUsernameQuery("select username, password, enabled from users where username=?").authoritiesByUsernameQuery("select username, authority " + "from authorities " + "where username = ?") //[login de tallerespaco] + .usersByUsernameQuery("select username, password, enabled from users where username=?").authoritiesByUsernameQuery("select username, authority " + "from authorities " + "where username = ?") .passwordEncoder(this.passwordEncoder()); } diff --git a/src/main/java/org/springframework/cheapy/model/Administrator.java b/src/main/java/org/springframework/cheapy/model/Administrator.java index 736908254..44a3ffdf6 100644 --- a/src/main/java/org/springframework/cheapy/model/Administrator.java +++ b/src/main/java/org/springframework/cheapy/model/Administrator.java @@ -6,5 +6,10 @@ import javax.persistence.Table; @Entity @Table(name = "administrators") public class Administrator extends User{ + + /** + * + */ + private static final long serialVersionUID = 1L; } diff --git a/src/main/java/org/springframework/cheapy/model/Authorities.java b/src/main/java/org/springframework/cheapy/model/Authorities.java index 7ec1f6666..3bcfbbb35 100644 --- a/src/main/java/org/springframework/cheapy/model/Authorities.java +++ b/src/main/java/org/springframework/cheapy/model/Authorities.java @@ -1,47 +1,58 @@ package org.springframework.cheapy.model; import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; +import javax.persistence.Id; import javax.persistence.Table; -import javax.validation.constraints.Size; @Entity @Table(name = "authorities") -public class Authorities extends BaseEntity{ +public class Authorities{ + @Id + String username; - /** - * - */ - private static final long serialVersionUID = 1L; - - @ManyToOne - @JoinColumn(name = "username") - private Usuario user; - - @Size(min = 3, max = 50) - private String authority; - - public Usuario getUser() { - return user; + String authority; + + public String getUsername() { + return username; } - - public void setUser(Usuario usern) { - this.user = usern; + public void setUsername(String username) { + this.username = username; } - public String getAuthority() { return authority; } - public void setAuthority(String authority) { this.authority = authority; } - - public static long getSerialversionuid() { - return serialVersionUID; - } + + +// @ManyToOne +// @JoinColumn(name = "username") +// private Usuario user; +// +// @Size(min = 3, max = 50) +// private String authority; +// +// public Usuario getUser() { +// return user; +// } +// +// public void setUser(Usuario usern) { +// this.user = usern; +// } +// +// public String getAuthority() { +// return authority; +// } +// +// public void setAuthority(String authority) { +// this.authority = authority; +// } +// +// public static long getSerialversionuid() { +// return serialVersionUID; +// } } diff --git a/src/main/java/org/springframework/cheapy/model/Client.java b/src/main/java/org/springframework/cheapy/model/Client.java index b249311ff..39a398df5 100644 --- a/src/main/java/org/springframework/cheapy/model/Client.java +++ b/src/main/java/org/springframework/cheapy/model/Client.java @@ -1,25 +1,43 @@ package org.springframework.cheapy.model; +import java.time.LocalTime; import java.util.Set; +import javax.persistence.CascadeType; import javax.persistence.Entity; +import javax.persistence.JoinColumn; import javax.persistence.OneToMany; +import javax.persistence.OneToOne; import javax.persistence.Table; import javax.validation.constraints.Digits; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; +import org.springframework.format.annotation.DateTimeFormat; + @Entity @Table(name = "clients") -public class Client extends User { - +public class Client extends BaseEntity{ + /** + * + */ + private static final long serialVersionUID = 1L; + + // (id, email, address, init, finish, telephone, description, code, food, usuar) + @NotEmpty private String email; @NotEmpty private String address; - @NotEmpty - private String timetable; + //@DateTimeFormat(pattern = "HH:mm") + @NotBlank + private String init; + + //@DateTimeFormat(pattern = "HH:mm") + @NotBlank + private String finish; @NotEmpty @Digits(fraction = 0, integer = 10) @@ -34,6 +52,10 @@ public class Client extends User { @NotEmpty private String food; + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "username", referencedColumnName = "username") + private User usuar; + @OneToMany private Set foodOffers; @@ -46,6 +68,8 @@ public class Client extends User { @OneToMany private Set timeOffers; + + public String getEmail() { return email; } @@ -62,12 +86,29 @@ public class Client extends User { this.address = address; } - public String getTimetable() { - return timetable; + + public String getInit() { + return init; } - public void setTimetable(String timetable) { - this.timetable = timetable; + public void setInit(String init) { + this.init = init; + } + + public String getFinish() { + return finish; + } + + public void setFinish(String finish) { + this.finish = finish; + } + + public User getUsername() { + return usuar; + } + + public void setUsername(User username) { + this.usuar = username; } public String getTelephone() { @@ -101,4 +142,37 @@ public class Client extends User { public void setFood(String food) { this.food = food; } + + public Set getFoodOffers() { + return foodOffers; + } + + public void setFoodOffers(Set foodOffers) { + this.foodOffers = foodOffers; + } + + public Set getNuOffers() { + return nuOffers; + } + + public void setNuOffers(Set nuOffers) { + this.nuOffers = nuOffers; + } + + public Set getSpeedOffers() { + return speedOffers; + } + + public void setSpeedOffers(Set speedOffers) { + this.speedOffers = speedOffers; + } + + public Set getTimeOffers() { + return timeOffers; + } + + public void setTimeOffers(Set timeOffers) { + this.timeOffers = timeOffers; + } + } \ No newline at end of file diff --git a/src/main/java/org/springframework/cheapy/model/FoodOffer.java b/src/main/java/org/springframework/cheapy/model/FoodOffer.java index ac3838a8a..d6a7d8e3d 100644 --- a/src/main/java/org/springframework/cheapy/model/FoodOffer.java +++ b/src/main/java/org/springframework/cheapy/model/FoodOffer.java @@ -23,7 +23,7 @@ import javax.validation.constraints.NotNull; @Entity @Table(name = "food_offers") public class FoodOffer extends Offer { - +//Plato específico @NotBlank private String food; diff --git a/src/main/java/org/springframework/cheapy/model/NuOffer.java b/src/main/java/org/springframework/cheapy/model/NuOffer.java index 9593be032..fbb884f5d 100644 --- a/src/main/java/org/springframework/cheapy/model/NuOffer.java +++ b/src/main/java/org/springframework/cheapy/model/NuOffer.java @@ -1,18 +1,3 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.springframework.cheapy.model; import javax.persistence.Column; diff --git a/src/main/java/org/springframework/cheapy/model/Offer.java b/src/main/java/org/springframework/cheapy/model/Offer.java index 2edec7179..b26ea57bf 100644 --- a/src/main/java/org/springframework/cheapy/model/Offer.java +++ b/src/main/java/org/springframework/cheapy/model/Offer.java @@ -29,7 +29,7 @@ import org.springframework.format.annotation.DateTimeFormat; @MappedSuperclass public class Offer extends BaseEntity { - +//Clase padre @DateTimeFormat(pattern = "dd/MM/yyyy HH:mm") @NotNull @Future diff --git a/src/main/java/org/springframework/cheapy/model/SpeedOffer.java b/src/main/java/org/springframework/cheapy/model/SpeedOffer.java index 9d8ee0373..1ef45f6e1 100644 --- a/src/main/java/org/springframework/cheapy/model/SpeedOffer.java +++ b/src/main/java/org/springframework/cheapy/model/SpeedOffer.java @@ -1,18 +1,3 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.springframework.cheapy.model; import javax.persistence.Column; @@ -25,6 +10,7 @@ import javax.validation.constraints.NotNull; @Table(name = "speed_offers") public class SpeedOffer extends Offer { + @NotNull private Integer gold; // x minutos diff --git a/src/main/java/org/springframework/cheapy/model/TimeOffer.java b/src/main/java/org/springframework/cheapy/model/TimeOffer.java index 60eb17820..33da076ab 100644 --- a/src/main/java/org/springframework/cheapy/model/TimeOffer.java +++ b/src/main/java/org/springframework/cheapy/model/TimeOffer.java @@ -27,7 +27,7 @@ import org.springframework.format.annotation.DateTimeFormat; @Entity @Table(name = "time_offers") public class TimeOffer extends Offer { - +//Oferta por franja horaria @DateTimeFormat(pattern = "HH:mm") @NotNull private LocalTime init; diff --git a/src/main/java/org/springframework/cheapy/model/User.java b/src/main/java/org/springframework/cheapy/model/User.java index 36d495444..7cfc346d1 100644 --- a/src/main/java/org/springframework/cheapy/model/User.java +++ b/src/main/java/org/springframework/cheapy/model/User.java @@ -1,23 +1,12 @@ package org.springframework.cheapy.model; -import java.util.List; -import java.util.Set; - -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.MappedSuperclass; -import javax.persistence.OneToMany; import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -//@Entity -//@Table(name = "users") -@MappedSuperclass +@Entity +@Table(name = "users") +//@MappedSuperclass public class User{ @Id @@ -27,7 +16,12 @@ public class User{ private String password; boolean enabled; + + /** + * + */ + private static final long serialVersionUID = 1L; public String getUsername() { @@ -46,11 +40,4 @@ public class User{ this.password = password; } -// public Set getAuthority() { -// return authorities; -// } -// -// public void setAuthorities(Set authorities) { -// this.authorities = authorities; -// } } diff --git a/src/main/java/org/springframework/cheapy/model/Usuario.java b/src/main/java/org/springframework/cheapy/model/Usuario.java index 3556ff16c..f6204abeb 100644 --- a/src/main/java/org/springframework/cheapy/model/Usuario.java +++ b/src/main/java/org/springframework/cheapy/model/Usuario.java @@ -5,22 +5,101 @@ import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.OneToMany; +import javax.persistence.OneToOne; import javax.persistence.Table; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; @Entity -@Table(name = "users") -public class Usuario extends User{ +@Table(name = "usuarios") +public class Usuario extends BaseEntity{ - @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") - private Set authorities; + /** nombre, apellidos, dni, direccion, telefono, email, username + * (id,nombre, apellidos, dni, direccion, telefono, email, usuar) + */ + private static final long serialVersionUID = 1L; - public Set getAuthorities() { - return authorities; + @NotBlank + private String nombre; + + @NotBlank + private String apellidos; + + @NotBlank + private String dni; + + @NotBlank + private String direccion; + + @NotBlank + //@Pattern(regexp = "([+][^0][\\d]{0,2})?[ ]?([(][\\d]{0,4}[)])?[ ]?([\\d]{6,10})$") + private String telefono; + + @Email + @NotBlank + private String email; + + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "username", referencedColumnName = "username") + private User usuar; + + public String getNombre() { + return nombre; } - public void setAuthorities(Set authorities) { - this.authorities = authorities; + public void setNombre(String nombre) { + this.nombre = nombre; } + + public String getApellidos() { + return apellidos; + } + + public void setApellidos(String apellidos) { + this.apellidos = apellidos; + } + + public String getDni() { + return dni; + } + + public void setDni(String dni) { + this.dni = dni; + } + + public String getDireccion() { + return direccion; + } + + public void setDireccion(String direccion) { + this.direccion = direccion; + } + + public String getTelefono() { + return telefono; + } + + public void setTelefono(String telefono) { + this.telefono = telefono; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public User getUser() { + return usuar; + } + + public void setUser(User username) { + this.usuar = username; + } + } diff --git a/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java index b3487f216..752bb718d 100644 --- a/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java @@ -1,28 +1,20 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.springframework.cheapy.repository; + import org.springframework.cheapy.model.FoodOffer; +import java.util.Collection; +import java.util.List; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; + public interface FoodOfferRepository extends Repository { +@Query("SELECT foodOffer FROM FoodOffer foodOffer") + @Transactional(readOnly = true) + List findAllFoodOffer(); @Query("SELECT foodOffer FROM FoodOffer foodOffer WHERE id =:id") @Transactional(readOnly = true) diff --git a/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java index e2c1c127d..39fff01bb 100644 --- a/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java @@ -1,7 +1,12 @@ + package org.springframework.cheapy.repository; +import java.util.Collection; +import java.util.List; import org.springframework.cheapy.model.NuOffer; import org.springframework.data.repository.Repository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; public interface NuOfferRepository extends Repository { @@ -11,6 +16,11 @@ public interface NuOfferRepository extends Repository { NuOffer findNuOfferById(int nuOfferId); + + @Query("SELECT nuOffer FROM NuOffer nuOffer") + @Transactional(readOnly = true) + List findAllNuOffer(); + void save(NuOffer nuOffer); diff --git a/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java index a37405e61..c3840912b 100644 --- a/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java @@ -1,33 +1,28 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ + package org.springframework.cheapy.repository; + +import java.util.Collection; +import java.util.List; import org.springframework.cheapy.model.SpeedOffer; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; + public interface SpeedOfferRepository extends Repository { @Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE id =:id") @Transactional(readOnly = true) SpeedOffer findById(@Param("id") Integer id); + + @Query("SELECT speedOffer FROM SpeedOffer speedOffer") + @Transactional(readOnly = true) + List findAllSpeedOffer(); + void save(SpeedOffer speedOffer); } diff --git a/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java index fe8aa5afe..71717624d 100644 --- a/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java @@ -1,7 +1,12 @@ + package org.springframework.cheapy.repository; +import java.util.Collection; +import java.util.List; import org.springframework.cheapy.model.TimeOffer; import org.springframework.data.repository.Repository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; public interface TimeOfferRepository extends Repository { @@ -11,6 +16,11 @@ public interface TimeOfferRepository extends Repository { TimeOffer findTimeOfferById(int timeOfferId); + + @Query("SELECT timeOffer FROM TimeOffer timeOffer") + @Transactional(readOnly = true) + List findAllTimeOffer(); + void save(TimeOffer timeOffer); diff --git a/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java b/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java index 3b5ffc987..d16d99bf6 100644 --- a/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java @@ -7,6 +7,6 @@ import org.springframework.cheapy.model.Usuario; public interface UsuarioRepository extends CrudRepository { - Usuario findByUsername(String currentPrincipalName); + //Usuario findByUsername(String currentPrincipalName); } diff --git a/src/main/java/org/springframework/cheapy/service/FoodOfferService.java b/src/main/java/org/springframework/cheapy/service/FoodOfferService.java index 952a27f98..edd61b7f5 100644 --- a/src/main/java/org/springframework/cheapy/service/FoodOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/FoodOfferService.java @@ -3,6 +3,8 @@ package org.springframework.cheapy.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cheapy.model.FoodOffer; import org.springframework.cheapy.repository.FoodOfferRepository; +import java.util.Collection; +import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -19,8 +21,14 @@ public class FoodOfferService { public FoodOffer findFoodOfferById(final int id) { return this.foodOfferRepository.findById(id); } + public List findAllFoodOffer() { // + return this.foodOfferRepository.findAllFoodOffer(); + + } + public void saveFoodOffer(final FoodOffer foodOffer) throws DataAccessException { + this.foodOfferRepository.save(foodOffer); } diff --git a/src/main/java/org/springframework/cheapy/service/NuOfferService.java b/src/main/java/org/springframework/cheapy/service/NuOfferService.java index 2e72549ec..475a2e7ab 100644 --- a/src/main/java/org/springframework/cheapy/service/NuOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/NuOfferService.java @@ -1,8 +1,11 @@ package org.springframework.cheapy.service; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cheapy.model.NuOffer; import org.springframework.cheapy.repository.NuOfferRepository; +import java.util.Collection; +import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -17,11 +20,17 @@ public class NuOfferService { } public NuOffer findNuOfferById(final int id) { + return this.nuOfferRepository.findNuOfferById(id); } + public List findAllNuOffer() { // + return this.nuOfferRepository.findAllNuOffer(); + + } public void saveNuOffer(final NuOffer nuOffer) throws DataAccessException { // + this.nuOfferRepository.save(nuOffer); } diff --git a/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java b/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java index 34f7fd1e2..ca2b08036 100644 --- a/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java @@ -1,5 +1,8 @@ package org.springframework.cheapy.service; + +import java.util.Collection; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cheapy.model.SpeedOffer; import org.springframework.cheapy.repository.SpeedOfferRepository; @@ -8,9 +11,10 @@ import org.springframework.stereotype.Service; @Service public class SpeedOfferService { - + private SpeedOfferRepository speedOfferRepository; + @Autowired public SpeedOfferService(final SpeedOfferRepository speedOfferRepository) { this.speedOfferRepository = speedOfferRepository; @@ -19,8 +23,15 @@ public class SpeedOfferService { public SpeedOffer findSpeedOfferById(final int id) { return this.speedOfferRepository.findById(id); } + + public List findAllSpeedOffer() { // + return this.speedOfferRepository.findAllSpeedOffer(); + + } + public void saveSpeedOffer(final SpeedOffer speedOffer) throws DataAccessException { + this.speedOfferRepository.save(speedOffer); } diff --git a/src/main/java/org/springframework/cheapy/service/TimeOfferService.java b/src/main/java/org/springframework/cheapy/service/TimeOfferService.java index be5cafa3e..f544b0515 100644 --- a/src/main/java/org/springframework/cheapy/service/TimeOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/TimeOfferService.java @@ -3,6 +3,7 @@ package org.springframework.cheapy.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cheapy.model.TimeOffer; import org.springframework.cheapy.repository.TimeOfferRepository; + import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -19,10 +20,15 @@ public class TimeOfferService { public TimeOffer findTimeOfferById(final int id) { return this.timeOfferRepository.findTimeOfferById(id); } + + public List findAllTimeOffer() { // + return this.timeOfferRepository.findAllTimeOffer(); + } public void saveTimeOffer(final TimeOffer TimeOffer) throws DataAccessException { // this.timeOfferRepository.save(TimeOffer); + } } diff --git a/src/main/java/org/springframework/cheapy/service/UserService.java b/src/main/java/org/springframework/cheapy/service/UserService.java deleted file mode 100644 index d719f8b47..000000000 --- a/src/main/java/org/springframework/cheapy/service/UserService.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.cheapy.service; - - -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.DataAccessException; -import org.springframework.cheapy.model.User; -import org.springframework.cheapy.repository.UsuarioRepository; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - - -/** - * Mostly used as a facade for all Petclinic controllers Also a placeholder - * for @Transactional and @Cacheable annotations - * - * @author Michael Isvy - */ - -@Service -public class UserService { -/* - private UserRepository userRepository; - - @Autowired - public UserService(UserRepository userRepository) { - this.userRepository = userRepository; - } - - @Transactional - public void saveUser(User user) throws DataAccessException { - userRepository.save(user); - } - - public Optional findUser(String username) { - return userRepository.findById(username); - } - - @Transactional - public User getCurrentUser() throws DataAccessException { - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - String currentPrincipalName = authentication.getName(); //Obtiene el nombre del ususario actual - return this.userRepository.findByUsername(currentPrincipalName); //Obtiene el usuario con ese nombre - } - */ -} diff --git a/src/main/java/org/springframework/cheapy/system/CacheConfiguration.java b/src/main/java/org/springframework/cheapy/system/CacheConfiguration.java index d5df44632..e52087fb7 100755 --- a/src/main/java/org/springframework/cheapy/system/CacheConfiguration.java +++ b/src/main/java/org/springframework/cheapy/system/CacheConfiguration.java @@ -33,7 +33,7 @@ import org.springframework.context.annotation.Configuration; class CacheConfiguration { @Bean - public JCacheManagerCustomizer petclinicCacheConfigurationCustomizer() { + public JCacheManagerCustomizer cheapyCacheConfigurationCustomizer() { return cm -> { cm.createCache("vets", cacheConfiguration()); }; diff --git a/src/main/java/org/springframework/cheapy/system/CrashController.java b/src/main/java/org/springframework/cheapy/system/CrashController.java index 4fb7e15f5..fe9c6d322 100644 --- a/src/main/java/org/springframework/cheapy/system/CrashController.java +++ b/src/main/java/org/springframework/cheapy/system/CrashController.java @@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.GetMapping; @Controller public class CrashController { - @GetMapping("/oups") + @GetMapping(value="/oups") public String triggerException() { throw new RuntimeException( "Expected: controller used to showcase what " + "happens when an exception is thrown"); diff --git a/src/main/java/org/springframework/cheapy/system/LoginController.java b/src/main/java/org/springframework/cheapy/system/LoginController.java new file mode 100644 index 000000000..e26025570 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/system/LoginController.java @@ -0,0 +1,39 @@ +/* + * Copyright 2012-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cheapy.system; + +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +class LoginController { + + @GetMapping("/login") + public String login() { + Authentication authentication= SecurityContextHolder.getContext().getAuthentication(); + if(authentication==null || authentication instanceof AnonymousAuthenticationToken) { + return "login"; + } + return "redirect:/"; + } + + + +} diff --git a/src/main/java/org/springframework/cheapy/system/WelcomeController.java b/src/main/java/org/springframework/cheapy/system/WelcomeController.java index 85782e967..1f3b04637 100644 --- a/src/main/java/org/springframework/cheapy/system/WelcomeController.java +++ b/src/main/java/org/springframework/cheapy/system/WelcomeController.java @@ -27,4 +27,6 @@ class WelcomeController { return "welcome"; } + + } diff --git a/src/main/java/org/springframework/cheapy/web/FoodOfferController.java b/src/main/java/org/springframework/cheapy/web/FoodOfferController.java index de3bdd8ee..d9f53a5e6 100644 --- a/src/main/java/org/springframework/cheapy/web/FoodOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/FoodOfferController.java @@ -1,24 +1,8 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ + package org.springframework.cheapy.web; import java.util.Map; - import javax.validation.Valid; - import org.springframework.cheapy.model.Client; import org.springframework.cheapy.model.FoodOffer; import org.springframework.cheapy.model.StatusOffer; @@ -86,4 +70,14 @@ public class FoodOfferController { } return "redirect:/foodOffers/"; } + @GetMapping("/offers/food/{foodOfferId}") + public String processShowForm(@PathVariable("foodOfferId") int foodOfferId, Map model) { + + FoodOffer foodOffer=this.foodOfferService.findFoodOfferById(foodOfferId); + + model.put("foodOffer", foodOffer); + + return "foodOffers/foodOffersShow"; + + } } diff --git a/src/main/java/org/springframework/cheapy/web/NuOfferController.java b/src/main/java/org/springframework/cheapy/web/NuOfferController.java index 548e7050b..c6ad3c47f 100644 --- a/src/main/java/org/springframework/cheapy/web/NuOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/NuOfferController.java @@ -81,5 +81,18 @@ public class NuOfferController { } + + @GetMapping("/offers/nu/{nuOfferId}") + public String processShowForm(@PathVariable("nuOfferId") int nuOfferId, Map model) { + + NuOffer nuOffer=this.nuOfferService.findNuOfferById(nuOfferId); + + model.put("nuOffer", nuOffer); + + return "nuOffers/nuOffersShow"; + + } + + } diff --git a/src/main/java/org/springframework/cheapy/web/OfertaController.java b/src/main/java/org/springframework/cheapy/web/OfertaController.java new file mode 100644 index 000000000..dcd92f583 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/web/OfertaController.java @@ -0,0 +1,109 @@ +/* + * Copyright 2012-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.cheapy.web; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.NuOffer; +import org.springframework.cheapy.model.SpeedOffer; +import org.springframework.cheapy.model.TimeOffer; +import org.springframework.cheapy.service.FoodOfferService; +import org.springframework.cheapy.service.NuOfferService; +import org.springframework.cheapy.service.SpeedOfferService; +import org.springframework.cheapy.service.TimeOfferService; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; + + +/** + * @author Juergen Hoeller + * @author Ken Krebs + * @author Arjen Poutsma + * @author Michael Isvy + */ +@Controller +public class OfertaController { + + //private static final String VIEWS_OWNER_CREATE_OR_UPDATE_FORM = "owners/createOrUpdateOwnerForm"; + + private final FoodOfferService foodOfferService; + private final NuOfferService nuOfferService; + private final SpeedOfferService speedOfferService; + private final TimeOfferService timeOfferService; + + + + public OfertaController(final FoodOfferService foodOfferService, final NuOfferService nuOfferService, + final SpeedOfferService speedOfferService, final TimeOfferService timeOfferService) { + this.foodOfferService = foodOfferService; + this.nuOfferService = nuOfferService; + this.speedOfferService = speedOfferService; + this.timeOfferService = timeOfferService; + + } + + + @GetMapping("/offers") + public String processFindForm( Map model) { + + List foodOfferLs=this.foodOfferService.findAllFoodOffer(); + List nuOfferLs=this.nuOfferService.findAllNuOffer(); + List speedOfferLs=this.speedOfferService.findAllSpeedOffer(); + List timeOfferLs=this.timeOfferService.findAllTimeOffer(); + + model.put("foodOfferLs", foodOfferLs); + model.put("nuOfferLs", nuOfferLs); + model.put("speedOfferLs", speedOfferLs); + model.put("timeOfferLs", timeOfferLs); + + return "offers/offersList"; + + } + +// @GetMapping("/owners/{ownerId}/edit") +// public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) { +// Owner owner = this.ownerService.findOwnerById(ownerId); +// model.addAttribute(owner); +// return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; +// } +// +// @PostMapping("/owners/{ownerId}/edit") +// public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result, +// @PathVariable("ownerId") int ownerId) { +// if (result.hasErrors()) { +// return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; +// } +// else { +// owner.setId(ownerId); +// this.ownerService.saveOwner(owner); +// return "redirect:/owners/{ownerId}"; +// } +// } +// @GetMapping("/owners/{ownerId}") +// public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) { +// ModelAndView mav = new ModelAndView("owners/ownerDetails"); +// Owner owner = this.ownerService.findOwnerById(ownerId); +// +// mav.addObject(owner); +// return mav; +// } + + +} diff --git a/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java b/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java index 1db36201a..419dc2ad4 100644 --- a/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java @@ -15,6 +15,7 @@ */ package org.springframework.cheapy.web; + import java.util.Map; import javax.validation.Valid; @@ -86,4 +87,16 @@ public class SpeedOfferController { } return "redirect:/speedOffers/"; } + + @GetMapping("/offers/speed/{speedOfferId}") + public String processShowForm(@PathVariable("speedOfferId") int speedOfferId, Map model) { + + SpeedOffer speedOffer=this.speedOfferService.findSpeedOfferById(speedOfferId); + + model.put("speedOffer", speedOffer); + + return "speedOffers/speedOffersShow"; + + } + } diff --git a/src/main/java/org/springframework/cheapy/web/TimeOfferController.java b/src/main/java/org/springframework/cheapy/web/TimeOfferController.java index 9d54616d0..b1bc2e528 100644 --- a/src/main/java/org/springframework/cheapy/web/TimeOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/TimeOfferController.java @@ -1,7 +1,6 @@ package org.springframework.cheapy.web; import java.util.Map; - import javax.validation.Valid; import org.springframework.cheapy.model.Client; @@ -81,5 +80,17 @@ public class TimeOfferController { } + + @GetMapping("/offers/time/{timeOfferId}") + public String processShowForm(@PathVariable("timeOfferId") int timeOfferId, Map model) { + + TimeOffer timeOffer=this.timeOfferService.findTimeOfferById(timeOfferId); + + model.put("timeOffer", timeOffer); + + return "timeOffers/timeOffersShow"; + + } + } diff --git a/src/main/java/org/springframework/cheapy/web/UserController.java b/src/main/java/org/springframework/cheapy/web/UserController.java deleted file mode 100644 index 97e921a75..000000000 --- a/src/main/java/org/springframework/cheapy/web/UserController.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2002-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cheapy.web; - -import javax.persistence.EntityNotFoundException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cheapy.model.Authorities; -import org.springframework.cheapy.model.User; -import org.springframework.cheapy.service.AuthoritiesService; -import org.springframework.cheapy.service.UserService; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.BindingResult; -import org.springframework.validation.FieldError; -import org.springframework.web.bind.WebDataBinder; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.InitBinder; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; - -/** - * @author Juergen Hoeller - * @author Ken Krebs - * @author Arjen Poutsma - * @author Michael Isvy - */ -@Controller -public class UserController { - - private UserService userService; - - private AuthoritiesService authoritiesService; - -// @Autowired -// public UserController (UserService userService, AuthoritiesService authoritiesService, -// ClienteService clienteService, FarmaceuticoService farmaceuticoService, ProveedorService proveedorService) { -// this.userService = userService; -// this.authoritiesService = authoritiesService; -// this.clienteService = clienteService; -// this.farmaceuticoService = farmaceuticoService; -// this.proveedorService = proveedorService; -// } -// -// @InitBinder -// public void setAllowedFields(final WebDataBinder dataBinder) { -// dataBinder.setDisallowedFields("id"); -// } -// -// @GetMapping("users") -// private String showUserDetails(ModelMap model) { -// User user = this.userService.getCurrentUser(); -// Authorities authority = this.authoritiesService.findAuthoritiyByUser(user); -// -// if(authority.getAuthority().equals("cliente")) { -// Cliente cliente = this.clienteService.findClienteUser(user); -// model.addAttribute("cliente", cliente); -// }else if(authority.getAuthority().equals("proveedor")) { -// Proveedor proveedor = this.proveedorService.findProveedorUser(user); -// model.addAttribute("proveedor", proveedor); -// }else if(authority.getAuthority().equals("farmaceutico")) { -// Farmaceutico farmaceutico = this.farmaceuticoService.findFarmaceuticoByUser(user); -// model.addAttribute("farmaceutico", farmaceutico); -// } -// -// log.info("El usuario '" + user.getUsername() + "' ha mostrado su informacion personal"); -// return "users/userDetails"; -// } -// -// @GetMapping("/users/new") -// public String newUser(ModelMap model) { -// Cliente cliente = new Cliente(); -// model.addAttribute("cliente", cliente); -// model.addAttribute("dni", new String()); -// return "users/userRegister"; -// } -// -// @PostMapping("/users/new") -// public String creationUser(@ModelAttribute("cliente") Cliente cliente, final BindingResult result, ModelMap model) { -// if (result.hasErrors()) { -// return "users/userRegister"; -// } else if(cliente.getUser() == null) { -// try { -// cliente = this.clienteService.clienteDni(cliente.getDni()); -// }catch(EntityNotFoundException ex) { -// result.rejectValue("dni", "clienteNotFound"); -// return "users/userRegister"; -// } -// cliente.setUser(new User()); -// model.addAttribute("cliente", cliente); -// return "users/userRegister"; -// }else { -// this.userService.saveUser(cliente.getUser()); -// this.authoritiesService.saveAuthorities(cliente.getUser().getUsername(), "cliente"); -// this.clienteService.saveCliente(cliente); -// log.info("El cliente con dni '" + cliente.getDni() + "' se ha registrado como usuario"); -// return "redirect:../"; -// } -// } -// -// @GetMapping("/users/password") -// public String initChangePassword(ModelMap model) { -// User currentUser = this.userService.getCurrentUser(); -// UserValidate user = new UserValidate(currentUser.getUsername(), ""); -// model.addAttribute("user", user); -// return "users/passwordEdit"; -// } -// -// @PostMapping("/users/password") -// public String changePassword(@ModelAttribute("user") UserValidate user, final BindingResult result, ModelMap model) { -// if(result.hasErrors()) { -// return "users/passwordEdit"; -// }else { -// User CurrentUser = this.userService.getCurrentUser(); -// if(CurrentUser.getPassword().equals(user.getPassword()) && user.getNewPassword().equals(user.getValidPassword())) { -// if(!user.getNewPassword().isEmpty()) { -// CurrentUser.setPassword(user.getNewPassword()); -// this.userService.saveUser(CurrentUser); -// log.info("El usuario '" + CurrentUser.getUsername() + "' ha cambiado satisfactoriamente su contraseña"); -// return "redirect:../"; -// }else { -// FieldError err = new FieldError("PassException", "newPassword", "Introduce una nueva contraseña"); -// result.addError(err); -// log.warn("El usuario '" + CurrentUser.getUsername() + "' ha tenido un error 'PassException'"); -// return "users/passwordEdit"; -// } -// }else if(!CurrentUser.getPassword().equals(user.getPassword())){ -// FieldError err = new FieldError("PassException", "password", "Contraseña incorrecta"); -// result.addError(err); -// log.warn("El usuario '" + CurrentUser.getUsername() + "' ha tenido un error 'PassException'"); -// return "users/passwordEdit"; -// }else { -// FieldError err = new FieldError("PassException", "newPassword", "Las contraseñas no coinciden"); -// result.addError(err); -// log.warn("El usuario '" + CurrentUser.getUsername() + "' ha tenido un error 'PassException'"); -// return "users/passwordEdit"; -// } -// } -// } -} diff --git a/src/main/less/petclinic.less b/src/main/less/cheapy.less similarity index 100% rename from src/main/less/petclinic.less rename to src/main/less/cheapy.less diff --git a/src/main/resources/db/mysql/cheapy_db_setup_mysql.txt b/src/main/resources/db/mysql/cheapy_db_setup_mysql.txt index 29bb601fe..d1ec8149b 100644 --- a/src/main/resources/db/mysql/cheapy_db_setup_mysql.txt +++ b/src/main/resources/db/mysql/cheapy_db_setup_mysql.txt @@ -1,5 +1,5 @@ ================================================================================ -=== Spring PetClinic sample application - MySQL Configuration === +=== Spring Cheapy sample application - MySQL Configuration === ================================================================================ @author Sam Brannen @@ -18,15 +18,15 @@ mysql_1_eedb4818d817 | MySQL init process done. Ready for start up. ... -2) (Once only) create the PetClinic database and user by executing the "db/mysql/user.sql" +2) (Once only) create the Cheapy database and user by executing the "db/mysql/user.sql" scripts. You can connect to the database running in the docker container using `mysql -u root -h localhost --protocol tcp`, but you don't need to run the script there - because the petclinic user is already set up if you use the provided `docker-compose.yaml`. + because the cheapy user is already set up if you use the provided `docker-compose.yaml`. 3) Run the app with `spring.profiles.active=mysql` (e.g. as a System property via the command line, but any way that sets that property in a Spring Boot app should work). -N.B. the "petclinic" database has to exist for the app to work with the JDBC URL value +N.B. the "cheapy" database has to exist for the app to work with the JDBC URL value as it is configured by default. This condition is taken care of automatically by the docker-compose configuration provided, or by the `user.sql` script if you run that as root. diff --git a/src/main/resources/db/mysql/data.sql b/src/main/resources/db/mysql/data.sql index 0375c01c7..4678e73bb 100644 --- a/src/main/resources/db/mysql/data.sql +++ b/src/main/resources/db/mysql/data.sql @@ -14,7 +14,28 @@ INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Wa INSERT INTO food_offers(start, end, code, type, client_id, food, discount, units) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'FO-1', 'active', null, 'macarrones', '15%', 10); INSERT INTO speed_offers(start, end, code, type, client_id, gold, discount_gold, silver, discount_silver, bronze, discount_bronze) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'SP-1', 'active', null, 5, '15%', 10, '10%', 15, '5%'); INSERT INTO time_offers(start, end, code, type, client_id, init, finish, discount) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null, '12:00:00', '13:00:00', '10%'); +INSERT INTO speed_offers(start, end, code, type, client_id, gold, discount_gold, silver, discount_silver, bronze, discount_bronze) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null,5,'25%',10,'15%',15,'10%' ); +INSERT INTO nu_offers(start, end, code, type, client_id, gold, discount_gold, silver, discount_silver, bronze, discount_bronze) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null,15,'25%',10,'15%',5,'10%' ); +INSERT INTO users (dtype,username,password,enabled) VALUES ('user','admin','admin', TRUE ); +INSERT INTO authorities VALUES ('admin','admin'); +INSERT INTO users (dtype,username,password,enabled) VALUES ('user','manoli','manoli', TRUE ); +INSERT INTO authorities VALUES ('manoli','cliente'); +INSERT INTO users (dtype,username,password,enabled) VALUES ('user','david','david', TRUE ); +INSERT INTO authorities VALUES ('david','cliente'); +INSERT INTO users (dtype,username,password,enabled) VALUES ('user','paco','paco', TRUE ); +INSERT INTO authorities VALUES ('paco','usuario'); +INSERT INTO users (dtype,username,password,enabled) VALUES ('user','lolo','lolo', TRUE ); +INSERT INTO authorities VALUES ('lolo','usuario'); +INSERT INTO users (dtype,username,password,enabled) VALUES ('user','pepe','pepe', TRUE ); +INSERT INTO authorities VALUES ('pepe','usuario'); +INSERT INTO usuarios VALUES (1, 'admin', 'admin', 'admin', 'C/admin', '000000000', 'admin@gmail.com','admin'); +INSERT INTO clients VALUES (1,'manoli@gmail.com','C/Betis','10:00','22:00','608726190', 'description 1', 'code1', 'ESPAÑOLA','manoli'); +INSERT INTO clients VALUES (2,'david@gmail.com','C/Sevilla','09:30','22:00','608726190', 'description 2', 'code2', 'americana','david'); + +INSERT INTO usuarios VALUES (2, 'Paco', 'Naranjo', '21154416G', 'C/Esperanza', '666973647', 'Paco@gmail.com','paco'); +INSERT INTO usuarios VALUES (3, 'Lolo', 'Lopez', '25486596L', 'C/Macarena', '690670547' ,'Lolo@gmail.com','lolo'); +INSERT INTO usuarios VALUES (4, 'Pepe', 'Lopez', '12456776V', 'C/Macarena', '690670547', 'Pepe@gmail.com','pepe'); diff --git a/src/main/resources/static/resources/images/bar3.jpg b/src/main/resources/static/resources/images/bar3.jpg new file mode 100644 index 000000000..d1b62b01e Binary files /dev/null and b/src/main/resources/static/resources/images/bar3.jpg differ diff --git a/src/main/webapp/WEB-INF/jsp/error.jsp b/src/main/webapp/WEB-INF/jsp/error.jsp new file mode 100644 index 000000000..3534ac497 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/error.jsp @@ -0,0 +1,15 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + + +

Algo malo ha pasado...

+ + + + +

${exception.message}

+ +
diff --git a/src/main/webapp/WEB-INF/jsp/exception.jsp b/src/main/webapp/WEB-INF/jsp/exception.jsp deleted file mode 100644 index d030d595d..000000000 --- a/src/main/webapp/WEB-INF/jsp/exception.jsp +++ /dev/null @@ -1,14 +0,0 @@ -<%@ page session="false" trimDirectiveWhitespaces="true" %> -<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - - - - - - -

Something happened...

- -

${exception.message}

- -
diff --git a/src/main/webapp/WEB-INF/jsp/foodOffers/foodOffersShow.jsp b/src/main/webapp/WEB-INF/jsp/foodOffers/foodOffersShow.jsp new file mode 100644 index 000000000..0b7c8785a --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/foodOffers/foodOffersShow.jsp @@ -0,0 +1,44 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + +

Oferta por plato específico

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Inicio de la oferta
Fin de la oferta
Plato en oferta
Descuento
Cantidad
Codigo de la oferta
+ + <%-- + + + Edit Owner --%> + +
diff --git a/src/main/webapp/WEB-INF/jsp/login.jsp b/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 000000000..796cdceeb --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,302 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> + + + + + + + + + + +
+
+ + + +
+ +
+
+

Invalid username or password

+
+ +
+
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/nuOffers/nuOffersShow.jsp b/src/main/webapp/WEB-INF/jsp/nuOffers/nuOffersShow.jsp new file mode 100644 index 000000000..431d2a4d6 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nuOffers/nuOffersShow.jsp @@ -0,0 +1,56 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + +

Oferta por número de comensales

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Inicio de la oferta
Fin de la oferta
Meta oro
Descuento oro
Meta plata
Descuento plata
Meta bronce
Descuento bronce
Codigo de la oferta
+ + <%-- + + + Edit Owner --%> + +
diff --git a/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp b/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp new file mode 100644 index 000000000..54efc214d --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp @@ -0,0 +1,141 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + +

Ofertas por plato específico

+ + + + + + + + + + + + + + + + + + + + + + +
PlatoFecha inicioFecha fin
+ + + + + + + + + + Enlace +
+ +

Ofertas por número de comensales

+ + + + + + + + + + + + + + + + + + + + + +
Fecha inicioFecha fin
+ + + + + + + + Enlace +
+

Ofertas rapidez comiendo

+ + + + + + + + + + + + + + + + + + + + + + +
Fecha inicioFecha fin
+ + + + + + + + Enlace +
+

Ofertas por franja horaria

+ + + + + + + + + + + + + + + + + + + + +
Fecha inicioFecha fin
+ + + + + + + + Enlace +
+
diff --git a/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp b/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp index d7e9e1ab9..970f56781 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/createOrUpdateOwnerForm.jsp @@ -2,21 +2,20 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - - +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +

New Owner

- - - - - + + + + +
@@ -31,4 +30,4 @@
-
+ diff --git a/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp b/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp index 4c93fb198..c68c500ab 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/findOwners.jsp @@ -2,13 +2,12 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> - - +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +

Find Owners

@@ -37,4 +36,4 @@ Add Owner -
+ diff --git a/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp b/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp index 375906c45..26c556611 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/ownerDetails.jsp @@ -1,10 +1,9 @@ <%@ page session="false" trimDirectiveWhitespaces="true" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - - +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +

Owner Information

@@ -33,4 +32,4 @@ Edit Owner -
+ diff --git a/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp b/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp index a4b161b9d..78817241e 100644 --- a/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp +++ b/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp @@ -2,10 +2,9 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - - +

Owners

@@ -41,4 +40,4 @@
-
+ diff --git a/src/main/webapp/WEB-INF/jsp/speedOffers/speedOffersShow.jsp b/src/main/webapp/WEB-INF/jsp/speedOffers/speedOffersShow.jsp new file mode 100644 index 000000000..4a85df28b --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/speedOffers/speedOffersShow.jsp @@ -0,0 +1,56 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + +

Oferta por comer veloz

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Inicio de la oferta
Fin de la oferta
Meta oro
Descuento oro
Meta plata
Descuento plata
Meta bronce
Descuento bronce
Codigo de la oferta
+ + <%-- + + + Edit Owner --%> + +
diff --git a/src/main/webapp/WEB-INF/jsp/timeOffers/timeOffersShow.jsp b/src/main/webapp/WEB-INF/jsp/timeOffers/timeOffersShow.jsp new file mode 100644 index 000000000..a344a6221 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/timeOffers/timeOffersShow.jsp @@ -0,0 +1,31 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + +

Oferta por franja horária

+ + + + + + + + + + + + + + + + + + + +
Inicio de la oferta
Fin de la oferta
Descuento
Codigo de la oferta
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/users/createOwnerForm.jsp b/src/main/webapp/WEB-INF/jsp/users/createOwnerForm.jsp index 941156611..e01e1c527 100644 --- a/src/main/webapp/WEB-INF/jsp/users/createOwnerForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/users/createOwnerForm.jsp @@ -2,23 +2,22 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> - - +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +

New Owner

- - - - - - - + + + + + + +
@@ -33,4 +32,4 @@
-
+ diff --git a/src/main/webapp/WEB-INF/jsp/welcome.jsp b/src/main/webapp/WEB-INF/jsp/welcome.jsp index 0cae0d52e..fc2db8671 100644 --- a/src/main/webapp/WEB-INF/jsp/welcome.jsp +++ b/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -1,11 +1,11 @@ <%@ page session="false" trimDirectiveWhitespaces="true" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> - +

@@ -19,4 +19,4 @@
-
+ diff --git a/src/main/webapp/WEB-INF/tags/bodyHeader.tag b/src/main/webapp/WEB-INF/tags/bodyHeader.tag index cd14d874c..db45d11d0 100644 --- a/src/main/webapp/WEB-INF/tags/bodyHeader.tag +++ b/src/main/webapp/WEB-INF/tags/bodyHeader.tag @@ -1,7 +1,7 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> <%@ attribute name="menuName" required="true" rtexprvalue="true" - description="Name of the active menu: home, owners, vets or error" %> + description="Name of the active menu: home, ofertas, contactanos, login" %> - + diff --git a/src/main/webapp/WEB-INF/tags/htmlHeader.tag b/src/main/webapp/WEB-INF/tags/htmlHeader.tag index 2417673ea..a259211ab 100644 --- a/src/main/webapp/WEB-INF/tags/htmlHeader.tag +++ b/src/main/webapp/WEB-INF/tags/htmlHeader.tag @@ -1,7 +1,7 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%-- -PetClinic :: a Spring Framework demonstration +Cheapy :: a Spring Framework demonstration --%> @@ -17,8 +17,8 @@ PetClinic :: a Spring Framework demonstration Cheapy : eat fast, eat cheapy <%-- CSS generated from LESS --%> - - + + <%-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --%> diff --git a/src/main/webapp/WEB-INF/tags/layout.tag b/src/main/webapp/WEB-INF/tags/layout.tag index 870c735b2..b5b93d21e 100644 --- a/src/main/webapp/WEB-INF/tags/layout.tag +++ b/src/main/webapp/WEB-INF/tags/layout.tag @@ -1,25 +1,25 @@ <%@ tag trimDirectiveWhitespaces="true" %> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> <%@ attribute name="pageName" required="true" %> <%@ attribute name="customScript" required="false" fragment="true"%> - + - +
- +
- + diff --git a/src/main/webapp/WEB-INF/tags/menu.tag b/src/main/webapp/WEB-INF/tags/menu.tag index 2d0eeff56..d402d3729 100644 --- a/src/main/webapp/WEB-INF/tags/menu.tag +++ b/src/main/webapp/WEB-INF/tags/menu.tag @@ -1,11 +1,11 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags"%> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags"%> <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> <%@ attribute name="name" required="true" rtexprvalue="true" - description="Name of the active menu: home, owners, vets or error"%> + description="Name of the active menu: home, ofertas, contactanos, login"%>