mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-24 00:05:48 +00:00
Merge branch 'develop' into 032-filtro_municipio-issue#98
This commit is contained in:
commit
cd43baed95
46 changed files with 1599 additions and 335 deletions
|
@ -13,7 +13,6 @@ before_install:
|
||||||
- wget -O ~/codacy-coverage-reporter-assembly-latest.jar $(curl https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r .assets[0].browser_download_url)
|
- wget -O ~/codacy-coverage-reporter-assembly-latest.jar $(curl https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r .assets[0].browser_download_url)
|
||||||
- chmod +x mvnw
|
- chmod +x mvnw
|
||||||
- mysql -e 'CREATE DATABASE cheapy;'
|
- mysql -e 'CREATE DATABASE cheapy;'
|
||||||
- sudo apt-get update
|
|
||||||
after_success:
|
after_success:
|
||||||
- ls
|
- ls
|
||||||
- ls target
|
- ls target
|
||||||
|
|
|
@ -6,8 +6,10 @@ import javax.persistence.Table;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "authorities")
|
@Table(name = "authorities")
|
||||||
public class Authorities{
|
public class Authorities {
|
||||||
|
|
||||||
|
|
||||||
|
//@NotNull
|
||||||
@Id
|
@Id
|
||||||
String username;
|
String username;
|
||||||
|
|
||||||
|
@ -25,34 +27,41 @@ public class Authorities{
|
||||||
public void setAuthority(String authority) {
|
public void setAuthority(String authority) {
|
||||||
this.authority = authority;
|
this.authority = authority;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((authority == null) ? 0 : authority.hashCode());
|
||||||
|
result = prime * result + ((username == null) ? 0 : username.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
Authorities other = (Authorities) obj;
|
||||||
|
if (authority == null) {
|
||||||
|
if (other.authority != null)
|
||||||
|
return false;
|
||||||
|
} else if (!authority.equals(other.authority))
|
||||||
|
return false;
|
||||||
|
if (username == null) {
|
||||||
|
if (other.username != null)
|
||||||
|
return false;
|
||||||
|
} else if (!username.equals(other.username))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Authorities [username=" + username + ", authority=" + authority + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// @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;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,16 +57,16 @@ public class Client extends BaseEntity {
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
// Codigo de activacion de cuenta
|
|
||||||
@NotEmpty
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
private String food;
|
private String food;
|
||||||
|
|
||||||
@OneToOne(cascade = CascadeType.ALL)
|
@OneToOne(cascade = CascadeType.ALL)
|
||||||
@JoinColumn(name = "username", referencedColumnName = "username")
|
@JoinColumn(name = "username", referencedColumnName = "username")
|
||||||
private User usuar;
|
private User usuar;
|
||||||
|
|
||||||
|
@OneToOne(cascade = CascadeType.ALL)
|
||||||
|
@JoinColumn(name = "code", referencedColumnName = "code")
|
||||||
|
private Code cod;
|
||||||
|
|
||||||
@OneToMany
|
@OneToMany
|
||||||
private List<FoodOffer> foodOffers;
|
private List<FoodOffer> foodOffers;
|
||||||
|
@ -145,12 +145,20 @@ public class Client extends BaseEntity {
|
||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCode() {
|
public Municipio getMunicipio() {
|
||||||
return this.code;
|
return municipio;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCode(final String code) {
|
public void setMunicipio(Municipio municipio) {
|
||||||
this.code = code;
|
this.municipio = municipio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Code getCode() {
|
||||||
|
return cod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(Code code) {
|
||||||
|
this.cod = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFood() {
|
public String getFood() {
|
||||||
|
|
38
src/main/java/org/springframework/cheapy/model/Code.java
Normal file
38
src/main/java/org/springframework/cheapy/model/Code.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
package org.springframework.cheapy.model;
|
||||||
|
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "codes")
|
||||||
|
public class Code extends BaseEntity{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
String code;
|
||||||
|
|
||||||
|
Boolean activo;
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getActivo() {
|
||||||
|
return activo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActivo(Boolean activo) {
|
||||||
|
this.activo = activo;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,5 +3,4 @@ package org.springframework.cheapy.model;
|
||||||
|
|
||||||
public enum Municipio {
|
public enum Municipio {
|
||||||
Dos_Hermanas, Sevilla
|
Dos_Hermanas, Sevilla
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,12 +36,10 @@ public class Offer extends BaseEntity {
|
||||||
|
|
||||||
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
|
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
|
||||||
@NotNull(message = "Debe introducir una fecha de inicio")
|
@NotNull(message = "Debe introducir una fecha de inicio")
|
||||||
@Future(message = "La fecha debe debe ser futura")
|
|
||||||
private LocalDateTime start;
|
private LocalDateTime start;
|
||||||
|
|
||||||
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
|
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
|
||||||
@NotNull(message = "Debe introducir una fecha de fin")
|
@NotNull(message = "Debe introducir una fecha de fin")
|
||||||
@Future(message = "La fecha debe debe ser futura")
|
|
||||||
private LocalDateTime end;
|
private LocalDateTime end;
|
||||||
|
|
||||||
private String code;
|
private String code;
|
||||||
|
|
|
@ -7,18 +7,27 @@ import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "users")
|
@Table(name = "users")
|
||||||
public class User{
|
public class User {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
|
@NotBlank
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
boolean enabled;
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
|
private Boolean enabled;
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return username;
|
return username;
|
||||||
|
@ -36,11 +45,48 @@ public class User{
|
||||||
this.password = password;
|
this.password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getEnabled() {
|
|
||||||
return enabled;
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((enabled == null) ? 0 : enabled.hashCode());
|
||||||
|
result = prime * result + ((password == null) ? 0 : password.hashCode());
|
||||||
|
result = prime * result + ((username == null) ? 0 : username.hashCode());
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
@Override
|
||||||
this.enabled = enabled;
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
User other = (User) obj;
|
||||||
|
if (enabled == null) {
|
||||||
|
if (other.enabled != null)
|
||||||
|
return false;
|
||||||
|
} else if (!enabled.equals(other.enabled))
|
||||||
|
return false;
|
||||||
|
if (password == null) {
|
||||||
|
if (other.password != null)
|
||||||
|
return false;
|
||||||
|
} else if (!password.equals(other.password))
|
||||||
|
return false;
|
||||||
|
if (username == null) {
|
||||||
|
if (other.username != null)
|
||||||
|
return false;
|
||||||
|
} else if (!username.equals(other.username))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "User [username=" + username + ", password=" + password + ", enabled=" + enabled + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package org.springframework.cheapy.model;
|
||||||
|
|
||||||
import javax.persistence.CascadeType;
|
import javax.persistence.CascadeType;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.EnumType;
|
||||||
|
import javax.persistence.Enumerated;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.OneToOne;
|
import javax.persistence.OneToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
@ -23,16 +25,12 @@ public class Usuario extends BaseEntity{
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String apellidos;
|
private String apellidos;
|
||||||
|
|
||||||
@NotBlank
|
|
||||||
private String dni;
|
|
||||||
|
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String direccion;
|
private String direccion;
|
||||||
|
|
||||||
@NotBlank
|
@Enumerated(value = EnumType.STRING)
|
||||||
//@Pattern(regexp = "([+][^0][\\d]{0,2})?[ ]?([(][\\d]{0,4}[)])?[ ]?([\\d]{6,10})$")
|
private Municipio municipio;
|
||||||
private String telefono;
|
|
||||||
|
|
||||||
@Email
|
@Email
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String email;
|
private String email;
|
||||||
|
@ -57,13 +55,6 @@ public class Usuario extends BaseEntity{
|
||||||
this.apellidos = apellidos;
|
this.apellidos = apellidos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDni() {
|
|
||||||
return dni;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDni(String dni) {
|
|
||||||
this.dni = dni;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDireccion() {
|
public String getDireccion() {
|
||||||
return direccion;
|
return direccion;
|
||||||
|
@ -73,12 +64,20 @@ public class Usuario extends BaseEntity{
|
||||||
this.direccion = direccion;
|
this.direccion = direccion;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTelefono() {
|
public Municipio getMunicipio() {
|
||||||
return telefono;
|
return municipio;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTelefono(String telefono) {
|
public void setMunicipio(Municipio municipio) {
|
||||||
this.telefono = telefono;
|
this.municipio = municipio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public User getUsuar() {
|
||||||
|
return usuar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsuar(User usuar) {
|
||||||
|
this.usuar = usuar;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getEmail() {
|
public String getEmail() {
|
||||||
|
@ -89,13 +88,7 @@ public class Usuario extends BaseEntity{
|
||||||
this.email = email;
|
this.email = email;
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getUsuar() {
|
|
||||||
return usuar;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUsuar(User username) {
|
|
||||||
this.usuar = username;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
package org.springframework.cheapy.repository;
|
package org.springframework.cheapy.repository;
|
||||||
|
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
|
import org.springframework.data.repository.Repository;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cheapy.model.Authorities;
|
import org.springframework.cheapy.model.Authorities;
|
||||||
|
import org.springframework.dao.DataAccessException;
|
||||||
|
|
||||||
public interface AuthoritiesRepository extends CrudRepository<Authorities, Integer>{
|
public interface AuthoritiesRepository extends CrudRepository<Authorities, String>{
|
||||||
|
|
||||||
|
// @Autowired
|
||||||
|
// void save(Authorities authorities);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,14 @@ import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
|
import org.springframework.cheapy.model.Usuario;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
import org.springframework.data.repository.Repository;
|
import org.springframework.data.repository.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
public interface ClientRepository extends CrudRepository<Client, String> {
|
public interface ClientRepository extends Repository<Client, Integer> {
|
||||||
|
|
||||||
@Query("SELECT client FROM Client client WHERE username =:username")
|
@Query("SELECT client FROM Client client WHERE username =:username")
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
|
@ -26,5 +28,7 @@ public interface ClientRepository extends CrudRepository<Client, String> {
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
List<Client> findAllClient();
|
List<Client> findAllClient();
|
||||||
|
|
||||||
|
void save(Client client);
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package org.springframework.cheapy.repository;
|
||||||
|
|
||||||
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
|
import org.springframework.cheapy.model.Usuario;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.CrudRepository;
|
||||||
|
import org.springframework.data.repository.Repository;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
public interface CodeRepository extends Repository<Code, Integer> {
|
||||||
|
|
||||||
|
void save(Code code);
|
||||||
|
|
||||||
|
@Query("SELECT code FROM Code code WHERE code.code =:code")
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
Code findCodeByCode(String code);
|
||||||
|
|
||||||
|
}
|
|
@ -3,13 +3,18 @@ package org.springframework.cheapy.repository;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
|
import org.springframework.data.repository.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cheapy.model.User;
|
import org.springframework.cheapy.model.User;
|
||||||
import org.springframework.cheapy.model.Usuario;
|
import org.springframework.cheapy.model.Usuario;
|
||||||
|
|
||||||
public interface UserRepository extends CrudRepository<Usuario, String> {
|
public interface UserRepository extends Repository<User, Integer> {
|
||||||
|
|
||||||
@Query("SELECT u FROM User u WHERE username =:username")
|
@Query("SELECT u FROM User u WHERE username =:username")
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
User findByUsername(String username);
|
User findByUsername(String username);
|
||||||
|
|
||||||
|
|
||||||
|
void save(User user);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
package org.springframework.cheapy.repository;
|
package org.springframework.cheapy.repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -23,4 +24,5 @@ public interface UsuarioRepository extends Repository<Usuario, String> {
|
||||||
|
|
||||||
void save(Usuario usuario);
|
void save(Usuario usuario);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,14 +15,20 @@
|
||||||
*/
|
*/
|
||||||
package org.springframework.cheapy.service;
|
package org.springframework.cheapy.service;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.cheapy.model.Authorities;
|
||||||
|
import org.springframework.cheapy.repository.AuthoritiesRepository;
|
||||||
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class AuthoritiesService {
|
public class AuthoritiesService {
|
||||||
/*
|
|
||||||
private AuthoritiesRepository authoritiesRepository;
|
|
||||||
private UserService userService;
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AuthoritiesRepository authoritiesRepository;
|
||||||
|
// private UserService userService;
|
||||||
|
/*
|
||||||
@Autowired
|
@Autowired
|
||||||
public AuthoritiesService(AuthoritiesRepository authoritiesRepository,UserService userService) {
|
public AuthoritiesService(AuthoritiesRepository authoritiesRepository,UserService userService) {
|
||||||
this.authoritiesRepository = authoritiesRepository;
|
this.authoritiesRepository = authoritiesRepository;
|
||||||
|
@ -33,12 +39,20 @@ public class AuthoritiesService {
|
||||||
public Authorities findAuthoritiyByUser(User user) {
|
public Authorities findAuthoritiyByUser(User user) {
|
||||||
return this.authoritiesRepository.findByUser(user.getUsername());
|
return this.authoritiesRepository.findByUser(user.getUsername());
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
public void saveAuthorities(Authorities authorities) throws DataAccessException {
|
public void saveAuthorities(Authorities authorities) throws DataAccessException {
|
||||||
authoritiesRepository.save(authorities);
|
authoritiesRepository.save(authorities);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void saveAuthorities(String username, String role) throws DataAccessException {
|
||||||
|
Authorities authority = new Authorities();
|
||||||
|
authority.setUsername(username);
|
||||||
|
authority.setAuthority(role);
|
||||||
|
authoritiesRepository.save(authority);
|
||||||
|
}
|
||||||
|
/*
|
||||||
@Transactional
|
@Transactional
|
||||||
public void saveAuthorities(String username, String role) throws DataAccessException {
|
public void saveAuthorities(String username, String role) throws DataAccessException {
|
||||||
Authorities authority = new Authorities();
|
Authorities authority = new Authorities();
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
package org.springframework.cheapy.service;
|
package org.springframework.cheapy.service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
|
import org.springframework.cheapy.model.Usuario;
|
||||||
import org.springframework.cheapy.repository.ClientRepository;
|
import org.springframework.cheapy.repository.ClientRepository;
|
||||||
|
import org.springframework.cheapy.repository.CodeRepository;
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
|
@ -15,10 +20,12 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
public class ClientService {
|
public class ClientService {
|
||||||
|
|
||||||
private ClientRepository clientRepository;
|
private ClientRepository clientRepository;
|
||||||
|
private CodeRepository codeRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ClientService(final ClientRepository clientRepository) {
|
public ClientService(final ClientRepository clientRepository, CodeRepository codeRepository) {
|
||||||
this.clientRepository = clientRepository;
|
this.clientRepository = clientRepository;
|
||||||
|
this.codeRepository = codeRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@ -27,15 +34,25 @@ public class ClientService {
|
||||||
String username = authentication.getName();
|
String username = authentication.getName();
|
||||||
return this.clientRepository.findByUsername(username);
|
return this.clientRepository.findByUsername(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveClient(final Client client) throws DataAccessException {
|
||||||
|
this.clientRepository.save(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveCode(Code code) throws DataAccessException{
|
||||||
|
this.codeRepository.save(code);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Code findCodeByCode(String code) {
|
||||||
|
return this.codeRepository.findCodeByCode(code);
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public Client findByUsername(String username) throws DataAccessException {
|
public Client findByUsername(String username) throws DataAccessException {
|
||||||
return this.clientRepository.findByUsername(username);
|
return this.clientRepository.findByUsername(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveClient(final Client client) throws DataAccessException {
|
|
||||||
this.clientRepository.save(client);
|
|
||||||
}
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public List<Client> findAllClient() throws DataAccessException {
|
public List<Client> findAllClient() throws DataAccessException {
|
||||||
return this.clientRepository.findAllClient();
|
return this.clientRepository.findAllClient();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.springframework.cheapy.service;
|
package org.springframework.cheapy.service;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.cheapy.model.FoodOffer;
|
||||||
import org.springframework.cheapy.model.User;
|
import org.springframework.cheapy.model.User;
|
||||||
import org.springframework.cheapy.repository.UserRepository;
|
import org.springframework.cheapy.repository.UserRepository;
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
|
@ -25,5 +26,8 @@ public class UserService {
|
||||||
String username = authentication.getName();
|
String username = authentication.getName();
|
||||||
return this.userRepository.findByUsername(username);
|
return this.userRepository.findByUsername(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveUser(final User user) throws DataAccessException {
|
||||||
|
this.userRepository.save(user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,11 @@ public class UsuarioService {
|
||||||
|
|
||||||
private UsuarioRepository usuarioRepository;
|
private UsuarioRepository usuarioRepository;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public UsuarioService(final UsuarioRepository usuarioRepository) {
|
public UsuarioService(final UsuarioRepository usuarioRepository) {
|
||||||
this.usuarioRepository = usuarioRepository;
|
this.usuarioRepository = usuarioRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public Usuario getCurrentUsuario() throws DataAccessException {
|
public Usuario getCurrentUsuario() throws DataAccessException {
|
||||||
|
|
|
@ -0,0 +1,147 @@
|
||||||
|
package org.springframework.cheapy.system;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.cheapy.model.Authorities;
|
||||||
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
|
import org.springframework.cheapy.model.Municipio;
|
||||||
|
import org.springframework.cheapy.model.User;
|
||||||
|
import org.springframework.cheapy.model.Usuario;
|
||||||
|
import org.springframework.cheapy.service.AuthoritiesService;
|
||||||
|
import org.springframework.cheapy.service.ClientService;
|
||||||
|
import org.springframework.cheapy.service.UserService;
|
||||||
|
import org.springframework.cheapy.service.UsuarioService;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
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.PostMapping;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class SingUpController {
|
||||||
|
|
||||||
|
//private static final String VIEWS_OWNER_CREATE_OR_UPDATE_FORM = "owners/createOrUpdateOwnerForm";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private final ClientService clientService;
|
||||||
|
@Autowired
|
||||||
|
private final UserService userService;
|
||||||
|
@Autowired
|
||||||
|
private final UsuarioService usuarioService;
|
||||||
|
@Autowired
|
||||||
|
private final AuthoritiesService authoritiesService;
|
||||||
|
|
||||||
|
|
||||||
|
public SingUpController(final ClientService clientService, UserService userService, AuthoritiesService authoritiesService,
|
||||||
|
UsuarioService usuarioService) {
|
||||||
|
this.clientService = clientService;
|
||||||
|
this.userService = userService;
|
||||||
|
this.authoritiesService = authoritiesService;
|
||||||
|
this.usuarioService = usuarioService;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@InitBinder
|
||||||
|
public void setAllowedFields(WebDataBinder dataBinder) {
|
||||||
|
dataBinder.setDisallowedFields("id");
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkTimes(final Client client) {
|
||||||
|
boolean res = false;
|
||||||
|
if(client.getFinish()==null || client.getInit()==null || client.getFinish().isAfter(client.getInit())) {
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/users/new")
|
||||||
|
public String singUpUserForm(Map<String, Object> model) {
|
||||||
|
Usuario usuario = new Usuario();
|
||||||
|
|
||||||
|
User user=new User();
|
||||||
|
|
||||||
|
usuario.setUsuar(user);
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
|
model.put("usuario", usuario);
|
||||||
|
//model.put("user", user);
|
||||||
|
return "singup/singUpUser";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/users/new")
|
||||||
|
public String singUpUserForm(/*@Valid User user,*/ @Valid Usuario usuario, BindingResult result) {
|
||||||
|
Authorities auth=new Authorities();
|
||||||
|
User user= usuario.getUsuar();
|
||||||
|
user.setEnabled(true);
|
||||||
|
usuario.setUsuar(user);
|
||||||
|
auth.setUsername(user.getUsername());
|
||||||
|
auth.setAuthority("usuario");
|
||||||
|
if (result.hasErrors()) {
|
||||||
|
return "singup/singUpUser";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//auth.setId(1);
|
||||||
|
//this.authoritiesService.saveAuthorities(auth);
|
||||||
|
this.usuarioService.saveUsuario(usuario);
|
||||||
|
this.userService.saveUser(user);
|
||||||
|
this.authoritiesService.saveAuthorities(usuario.getUsuar().getUsername(), "usuario");
|
||||||
|
|
||||||
|
return "redirect:/";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/clients/new")
|
||||||
|
public String singUpClientForm(Map<String, Object> model) {
|
||||||
|
Client cliente = new Client();
|
||||||
|
|
||||||
|
User user=new User();
|
||||||
|
|
||||||
|
cliente.setUsuar(user);
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
|
model.put("cliente", cliente);
|
||||||
|
//model.put("user", user);
|
||||||
|
return "singup/singUpClient";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/clients/new")
|
||||||
|
public String singUpClientForm(/*@Valid User user,*/ @Valid Client cliente, final BindingResult result, final ModelMap model,
|
||||||
|
HttpServletRequest request) {
|
||||||
|
Authorities auth=new Authorities();
|
||||||
|
String cod=cliente.getCode().getCode();
|
||||||
|
Code code=this.clientService.findCodeByCode(cod);
|
||||||
|
User user= cliente.getUsuar();
|
||||||
|
user.setEnabled(true);
|
||||||
|
cliente.setUsuar(user);
|
||||||
|
auth.setUsername(user.getUsername());
|
||||||
|
auth.setAuthority("client");
|
||||||
|
if(!this.checkTimes(cliente)) {
|
||||||
|
result.rejectValue("finish","" ,"La hora de cierre debe ser posterior a la hora de apertura");
|
||||||
|
|
||||||
|
}
|
||||||
|
if (result.hasErrors()) {
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
|
model.put("cliente", cliente);
|
||||||
|
return "singup/singUpClient";
|
||||||
|
}else if(code.getActivo().equals(false)) {
|
||||||
|
return "error";
|
||||||
|
}else {
|
||||||
|
code.setActivo(false);
|
||||||
|
this.clientService.saveCode(code);
|
||||||
|
cliente.setCode(code);
|
||||||
|
this.clientService.saveClient(cliente);
|
||||||
|
this.userService.saveUser(user);
|
||||||
|
this.authoritiesService.saveAuthorities(cliente.getUsuar().getUsername(), "client");
|
||||||
|
|
||||||
|
|
||||||
|
return "redirect:/";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
import org.springframework.cheapy.model.FoodOffer;
|
import org.springframework.cheapy.model.FoodOffer;
|
||||||
|
import org.springframework.cheapy.model.Municipio;
|
||||||
import org.springframework.cheapy.model.NuOffer;
|
import org.springframework.cheapy.model.NuOffer;
|
||||||
import org.springframework.cheapy.model.SpeedOffer;
|
import org.springframework.cheapy.model.SpeedOffer;
|
||||||
import org.springframework.cheapy.model.StatusOffer;
|
import org.springframework.cheapy.model.StatusOffer;
|
||||||
|
@ -84,7 +85,8 @@ public class ClientController {
|
||||||
public String updateClient( final ModelMap model, HttpServletRequest request) {
|
public String updateClient( final ModelMap model, HttpServletRequest request) {
|
||||||
|
|
||||||
Client client = this.clientService.getCurrentClient();
|
Client client = this.clientService.getCurrentClient();
|
||||||
|
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
model.addAttribute("client", client);
|
model.addAttribute("client", client);
|
||||||
|
|
||||||
return ClientController.VIEWS_CREATE_OR_UPDATE_CLIENT;
|
return ClientController.VIEWS_CREATE_OR_UPDATE_CLIENT;
|
||||||
|
@ -96,7 +98,6 @@ public class ClientController {
|
||||||
|
|
||||||
|
|
||||||
Client clienteSesion = this.clientService.getCurrentClient();
|
Client clienteSesion = this.clientService.getCurrentClient();
|
||||||
|
|
||||||
if(!this.checkTimes(clientEdit)) {
|
if(!this.checkTimes(clientEdit)) {
|
||||||
result.rejectValue("finish","" ,"La hora de cierre debe ser posterior a la hora de apertura");
|
result.rejectValue("finish","" ,"La hora de cierre debe ser posterior a la hora de apertura");
|
||||||
|
|
||||||
|
@ -105,10 +106,11 @@ public class ClientController {
|
||||||
|
|
||||||
if (result.hasErrors()) {
|
if (result.hasErrors()) {
|
||||||
model.addAttribute("client", clientEdit);
|
model.addAttribute("client", clientEdit);
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
return ClientController.VIEWS_CREATE_OR_UPDATE_CLIENT;
|
return ClientController.VIEWS_CREATE_OR_UPDATE_CLIENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
BeanUtils.copyProperties(clienteSesion, clientEdit, "name", "email", "address","init", "finish","telephone", "description","food","usuar");
|
BeanUtils.copyProperties(clienteSesion, clientEdit, "name", "email", "address","init","municipio", "finish","telephone", "description","food","usuar");
|
||||||
clientEdit.getUsuar().setUsername(clienteSesion.getUsuar().getUsername());
|
clientEdit.getUsuar().setUsername(clienteSesion.getUsuar().getUsername());
|
||||||
clientEdit.getUsuar().setEnabled(true);
|
clientEdit.getUsuar().setEnabled(true);
|
||||||
this.clientService.saveClient(clientEdit);
|
this.clientService.saveClient(clientEdit);
|
||||||
|
@ -161,7 +163,6 @@ public class ClientController {
|
||||||
public String showRestaurant(final ModelMap model, @PathVariable("clientId") Integer id) {
|
public String showRestaurant(final ModelMap model, @PathVariable("clientId") Integer id) {
|
||||||
|
|
||||||
Client client = this.clientRepo.findById(id).get();
|
Client client = this.clientRepo.findById(id).get();
|
||||||
System.out.println(client.getDescription());
|
|
||||||
model.put("client", client);
|
model.put("client", client);
|
||||||
return "clients/restaurantShow";
|
return "clients/restaurantShow";
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
package org.springframework.cheapy.web;
|
package org.springframework.cheapy.web;
|
||||||
|
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -23,6 +24,7 @@ import org.springframework.validation.BindingResult;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class NuOfferController {
|
public class NuOfferController {
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
package org.springframework.cheapy.web;
|
package org.springframework.cheapy.web;
|
||||||
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -10,6 +12,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.cheapy.model.FoodOffer;
|
import org.springframework.cheapy.model.FoodOffer;
|
||||||
import org.springframework.cheapy.model.Municipio;
|
import org.springframework.cheapy.model.Municipio;
|
||||||
import org.springframework.cheapy.model.NuOffer;
|
import org.springframework.cheapy.model.NuOffer;
|
||||||
|
import org.springframework.cheapy.model.Offer;
|
||||||
import org.springframework.cheapy.model.SpeedOffer;
|
import org.springframework.cheapy.model.SpeedOffer;
|
||||||
import org.springframework.cheapy.model.TimeOffer;
|
import org.springframework.cheapy.model.TimeOffer;
|
||||||
import org.springframework.cheapy.service.ClientService;
|
import org.springframework.cheapy.service.ClientService;
|
||||||
|
@ -158,7 +161,38 @@ public class OfertaController {
|
||||||
|
|
||||||
return "offers/offersCreate";
|
return "offers/offersCreate";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/offersRecord")
|
||||||
|
public String processOffersRecordForm(final Map<String, Object> model) {
|
||||||
|
|
||||||
|
Pageable p = PageRequest.of(0, 3);
|
||||||
|
|
||||||
|
Map<Offer, String> datos = new HashMap<Offer, String>();
|
||||||
|
|
||||||
|
for(Offer of:this.foodOfferService.findAllFoodOffer(p)) {
|
||||||
|
datos.put(of, "food");
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Offer of:this.nuOfferService.findAllNuOffer(p)) {
|
||||||
|
datos.put(of, "nu");
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Offer of:this.speedOfferService.findAllSpeedOffer(p)) {
|
||||||
|
datos.put(of, "speed");
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Offer of:this.timeOfferService.findAllTimeOffer(p)) {
|
||||||
|
datos.put(of, "time");
|
||||||
|
}
|
||||||
|
|
||||||
|
model.put("datos", datos);
|
||||||
|
|
||||||
|
//Se añade formateador de fecha al modelo
|
||||||
|
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
|
||||||
|
|
||||||
|
return "offers/offersRecordList";
|
||||||
|
}
|
||||||
|
|
||||||
// @GetMapping("/owners/{ownerId}/edit")
|
// @GetMapping("/owners/{ownerId}/edit")
|
||||||
// public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) {
|
// public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) {
|
||||||
// Owner owner = this.ownerService.findOwnerById(ownerId);
|
// Owner owner = this.ownerService.findOwnerById(ownerId);
|
||||||
|
|
|
@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.cheapy.model.Municipio;
|
||||||
import org.springframework.cheapy.model.Usuario;
|
import org.springframework.cheapy.model.Usuario;
|
||||||
import org.springframework.cheapy.service.UsuarioService;
|
import org.springframework.cheapy.service.UsuarioService;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
@ -37,15 +38,21 @@ public class UsuarioController {
|
||||||
public String updateUsuario(final ModelMap model, HttpServletRequest request) {
|
public String updateUsuario(final ModelMap model, HttpServletRequest request) {
|
||||||
Usuario usuario = this.usuarioService.getCurrentUsuario();
|
Usuario usuario = this.usuarioService.getCurrentUsuario();
|
||||||
model.addAttribute("usuario", usuario);
|
model.addAttribute("usuario", usuario);
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
return UsuarioController.VIEWS_USUARIO_CREATE_OR_UPDATE_FORM;
|
return UsuarioController.VIEWS_USUARIO_CREATE_OR_UPDATE_FORM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/usuarios/edit")
|
@PostMapping(value = "/usuarios/edit")
|
||||||
public String updateUsuario(@Valid final Usuario usuarioEdit, final BindingResult result,
|
public String updateUsuario(@Valid final Usuario usuarioEdit, final BindingResult result,
|
||||||
final ModelMap model, HttpServletRequest request) {
|
final ModelMap model, HttpServletRequest request) {
|
||||||
|
|
||||||
|
if (result.hasErrors()) {
|
||||||
|
model.addAttribute("usuario", usuarioEdit);
|
||||||
|
model.put("municipio", Municipio.values());
|
||||||
|
return UsuarioController.VIEWS_USUARIO_CREATE_OR_UPDATE_FORM;
|
||||||
|
}
|
||||||
Usuario usuario = this.usuarioService.getCurrentUsuario();
|
Usuario usuario = this.usuarioService.getCurrentUsuario();
|
||||||
BeanUtils.copyProperties(usuario, usuarioEdit, "nombre", "apellidos", "dni", "direccion", "telefono", "usuar");
|
BeanUtils.copyProperties(usuario, usuarioEdit, "nombre", "apellidos", "municipio", "direccion","email", "usuar");
|
||||||
usuarioEdit.getUsuar().setUsername(usuario.getNombre());
|
usuarioEdit.getUsuar().setUsername(usuario.getNombre());
|
||||||
usuarioEdit.getUsuar().setEnabled(true);
|
usuarioEdit.getUsuar().setEnabled(true);
|
||||||
this.usuarioService.saveUsuario(usuarioEdit);
|
this.usuarioService.saveUsuario(usuarioEdit);
|
||||||
|
|
|
@ -81,6 +81,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
.container .text-muted {
|
.container .text-muted {
|
||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
|
@ -221,6 +224,28 @@ img.img-responsive{
|
||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-filter{
|
||||||
|
background: rgb(40, 140, 215);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-filter:hover{
|
||||||
|
background: rgb(0, 64, 128);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-filter-active{
|
||||||
|
background: rgb(0, 64, 128);
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-filter-max button {
|
||||||
|
padding:10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
.btn-home {
|
.btn-home {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
@ -304,6 +329,15 @@ img.img-responsive{
|
||||||
background-color: rgb(40, 140, 215);
|
background-color: rgb(40, 140, 215);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#offerTable th{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#offerTable td{
|
||||||
|
vertical-align:middle;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
#foodOfferTable th {
|
#foodOfferTable th {
|
||||||
width: 20%;
|
width: 20%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -561,6 +595,12 @@ text-align: center;
|
||||||
color: rgb(29, 142, 226);
|
color: rgb(29, 142, 226);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[type=text] {
|
||||||
|
width:80%;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.row-full{
|
.row-full{
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
@ -1,27 +1,33 @@
|
||||||
INSERT INTO users (username,password,enabled) VALUES ('admin','admin', TRUE );
|
INSERT INTO users (username,password,enabled) VALUES ('admin','admin', TRUE );
|
||||||
INSERT INTO authorities VALUES ('admin','admin');
|
INSERT INTO authorities (username,authority) VALUES ('admin','admin');
|
||||||
|
|
||||||
INSERT INTO users (username,password,enabled) VALUES ('manoli','manoli', TRUE );
|
INSERT INTO users (username,password,enabled) VALUES ('manoli','manoli', TRUE );
|
||||||
INSERT INTO authorities VALUES ('manoli','client');
|
INSERT INTO authorities (username,authority) VALUES ('manoli','client');
|
||||||
INSERT INTO users (username,password,enabled) VALUES ('david','david', TRUE );
|
INSERT INTO users (username,password,enabled) VALUES ('david','david', TRUE );
|
||||||
INSERT INTO authorities VALUES ('david','client');
|
INSERT INTO authorities (username,authority) VALUES ('david','client');
|
||||||
|
|
||||||
INSERT INTO users (username,password,enabled) VALUES ('paco','paco', TRUE );
|
INSERT INTO users (username,password,enabled) VALUES ('paco','paco', TRUE );
|
||||||
INSERT INTO authorities VALUES ('paco','usuario');
|
INSERT INTO authorities (username,authority) VALUES ('paco','usuario');
|
||||||
INSERT INTO users (username,password,enabled) VALUES ('lolo','lolo', TRUE );
|
INSERT INTO users (username,password,enabled) VALUES ('lolo','lolo', TRUE );
|
||||||
INSERT INTO authorities VALUES ('lolo','usuario');
|
INSERT INTO authorities (username,authority) VALUES ('lolo','usuario');
|
||||||
INSERT INTO users (username,password,enabled) VALUES ('pepe','pepe', TRUE );
|
INSERT INTO users (username,password,enabled) VALUES ('pepe','pepe', TRUE );
|
||||||
INSERT INTO authorities VALUES ('pepe','usuario');
|
INSERT INTO authorities (username,authority) VALUES ('pepe','usuario');
|
||||||
|
|
||||||
INSERT INTO administrators (id, username) VALUES (1, 'admin');
|
|
||||||
|
|
||||||
INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (2, 'Paco', 'Naranjo', '21154416G', 'C/Esperanza', '666973647', 'Paco@gmail.com','paco');
|
INSERT INTO usuarios (id, nombre, apellidos, direccion, municipio, email, username) VALUES (1, 'admin', 'admin', 'C/admin', 'carmona', 'admin@gmail.com','admin');
|
||||||
INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (3, 'Lolo', 'Lopez', '25486596L', 'C/Macarena', '690670547' ,'Lolo@gmail.com','lolo');
|
INSERT INTO usuarios (id, nombre, apellidos, direccion, municipio, email, username) VALUES (2, 'Paco', 'Naranjo', 'C/Esperanza', 'sevilla', 'Paco@gmail.com','paco');
|
||||||
INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (4, 'Pepe', 'Lopez', '12456776V', 'C/Macarena', '690670547', 'Pepe@gmail.com','pepe');
|
INSERT INTO usuarios (id, nombre, apellidos, direccion, municipio, email, username) VALUES (3, 'Lolo', 'Lopez', 'C/Macarena', 'dos_hermanas', 'Lolo@gmail.com','lolo');
|
||||||
|
INSERT INTO usuarios (id, nombre, apellidos, direccion, municipio, email, username) VALUES (4, 'Pepe', 'Lopez', 'C/Macarena', 'carmona', 'Pepe@gmail.com','pepe');
|
||||||
|
|
||||||
|
INSERT INTO codes (id,code,activo) VALUES (1,'code1',FALSE);
|
||||||
|
INSERT INTO codes (id,code,activo) VALUES (2,'code2',FALSE);
|
||||||
|
INSERT INTO codes (id,code,activo) VALUES (3,'code3',TRUE);
|
||||||
|
INSERT INTO codes (id,code,activo) VALUES (4,'code4',TRUE);
|
||||||
|
|
||||||
INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, code, food, username) VALUES (1,'bar manoli','manoli@gmail.com','C/Betis', 'Sevilla','10:00:00','22:00:00','608726190', 'description 1', 'code1', 'ESPAÑOLA','manoli');
|
INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, code, food, username) VALUES (1,'bar manoli','manoli@gmail.com','C/Betis', 'Sevilla','10:00:00','22:00:00','608726190', 'description 1', 'code1', 'ESPAÑOLA','manoli');
|
||||||
INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, code, food, username) VALUES (2,'bar david','david@gmail.com', 'C/Sevilla', 'Dos_Hermanas','09:30:00','22:00:00','608726190', 'description 2', 'code2', 'americana','david');
|
INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, code, food, username) VALUES (2,'bar david','david@gmail.com', 'C/Sevilla', 'Dos_Hermanas','09:30:00','22:00:00','608726190', 'description 2', 'code2', 'americana','david');
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-14 12:00:00', '2021-08-15 12:00:00', 'FO-1', 'inactive', 1, 'macarrones', 15);
|
INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-14 12:00:00', '2021-08-15 12:00:00', 'FO-1', 'inactive', 1, 'macarrones', 15);
|
||||||
INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-15 12:00:00', '2021-08-16 12:00:00', 'FO-2', 'active', 1, 'macarrones con tomate', 10);
|
INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-15 12:00:00', '2021-08-16 12:00:00', 'FO-2', 'active', 1, 'macarrones con tomate', 10);
|
||||||
INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-15 12:00:00', '2021-08-16 12:00:00', 'FO-3', 'active', 1, 'Estofado', 10);
|
INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-15 12:00:00', '2021-08-16 12:00:00', 'FO-3', 'active', 1, 'Estofado', 10);
|
||||||
|
|
|
@ -69,4 +69,5 @@ users=Usuarios
|
||||||
nameUser=Nombre
|
nameUser=Nombre
|
||||||
surname= Apellidos
|
surname= Apellidos
|
||||||
dni= DNI
|
dni= DNI
|
||||||
usuario=Usuario
|
usuario=Usuario
|
||||||
|
municipio=Municipio
|
|
@ -35,6 +35,10 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th><fmt:message key="addressClient"/></th>
|
<th><fmt:message key="addressClient"/></th>
|
||||||
<td><c:out value="${client.address}"/> </td>
|
<td><c:out value="${client.address}"/> </td>
|
||||||
|
</tr><tr>
|
||||||
|
<tr>
|
||||||
|
<th><fmt:message key="municipio"/></th>
|
||||||
|
<td><c:out value="${client.municipio}"/> </td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th><fmt:message key="telephone"/></th>
|
<th><fmt:message key="telephone"/></th>
|
||||||
<td><c:out value="${client.telephone}"/> </td>
|
<td><c:out value="${client.telephone}"/> </td>
|
||||||
|
|
|
@ -14,35 +14,32 @@
|
||||||
|
|
||||||
<form:form modelAttribute="client" class="form-horizontal" id="add-client-form">
|
<form:form modelAttribute="client" class="form-horizontal" id="add-client-form">
|
||||||
<div class="form-group has-feedback">
|
<div class="form-group has-feedback">
|
||||||
|
|
||||||
<form:hidden path="code"/>
|
<cheapy:passwordField label="Contraseña" placeholder="Restaurante pepito" name="usuar.password"/>
|
||||||
<cheapy:inputField label="Contraseña" placeholder="Restaurante pepito" name="usuar.password"/>
|
|
||||||
|
|
||||||
|
|
||||||
<cheapy:inputField label="Hora de inicio" placeholder="HH:mm" name="init"/>
|
<cheapy:inputField label="Hora de inicio" placeholder="HH:mm" name="init"/>
|
||||||
<cheapy:inputField label="Hora de fin" placeholder="HH:mm" name="finish"/>
|
<cheapy:inputField label="Hora de fin" placeholder="HH:mm" name="finish"/>
|
||||||
<cheapy:inputField label="Name" placeholder="Restaurante pepito" name="name"/>
|
<cheapy:inputField label="Nombre" placeholder="Restaurante pepito" name="name"/>
|
||||||
<cheapy:inputField label="Email" placeholder="" name="email"/>
|
<cheapy:inputField label="Email" placeholder="" name="email"/>
|
||||||
<cheapy:inputField label="Dirección" placeholder="" name="address"/>
|
<cheapy:inputField label="Dirección" placeholder="" name="address"/>
|
||||||
<cheapy:inputField label="telephone" placeholder="" name="telephone"/>
|
<div class="form-group">
|
||||||
<cheapy:inputField label="description" placeholder="" name="description"/>
|
<label>Municipio: </label>
|
||||||
<cheapy:inputField label="food" placeholder="food" name="food"/>
|
<select name="municipio">
|
||||||
|
<c:forEach items="${municipio}" var="entry">
|
||||||
|
<option value="${entry}">${entry}</option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<cheapy:inputField label="Teléfono" placeholder="" name="telephone"/>
|
||||||
|
<cheapy:inputField label="descripción" placeholder="" name="description"/>
|
||||||
|
<cheapy:inputField label="Comida" placeholder="food" name="food"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
<div class="btn-mod">
|
<div class="btn-mod">
|
||||||
<c:choose>
|
|
||||||
<c:when test="${client['new']}">
|
|
||||||
<button class="btn btn-default" type="submit" style="font-family: 'Lobster'; font-size: 20px;">
|
|
||||||
<span class="glyphicon glyphicon-floppy-save" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
Crear cliente</button>
|
|
||||||
</c:when>
|
|
||||||
<c:otherwise>
|
|
||||||
<button class="btn btn-default" type="submit" style="font-family: 'Lobster'; font-size: 20px;">
|
<button class="btn btn-default" type="submit" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon-floppy-save" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon-floppy-save" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Modificar</button>
|
Modificar</button>
|
||||||
</c:otherwise>
|
|
||||||
</c:choose>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,39 +9,43 @@
|
||||||
|
|
||||||
<cheapy:layout pageName="ofertas de plato especifico">
|
<cheapy:layout pageName="ofertas de plato especifico">
|
||||||
|
|
||||||
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
<div class="text-center">
|
||||||
<spring:param name="page" value="0"/>
|
<div class="btn-filter-max">
|
||||||
</spring:url>
|
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<spring:param name="page" value="0"/>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
</spring:url>
|
||||||
Ofertas de plato especifico</button>
|
|
||||||
|
<button type="button" role="link" class="btn-filter-active" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
<spring:param name="page" value="0"/>
|
Ofertas de plato específico</button>
|
||||||
</spring:url>
|
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<spring:param name="page" value="0"/>
|
||||||
Ofertas por número de comensales</button>
|
</spring:url>
|
||||||
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
<spring:param name="page" value="0"/>
|
Ofertas por número de comensales</button>
|
||||||
</spring:url>
|
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<spring:param name="page" value="0"/>
|
||||||
Ofertas de velocidad</button>
|
</spring:url>
|
||||||
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
<spring:param name="page" value="0"/>
|
Ofertas de velocidad</button>
|
||||||
</spring:url>
|
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<spring:param name="page" value="0"/>
|
||||||
Ofertas de franja horaria</button>
|
</spring:url>
|
||||||
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de franja horaria</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2 style="text-align:center;padding:5px"><fmt:message key="foodOffers"/></h2>
|
<h2 style="text-align:center;padding:5px"><fmt:message key="foodOffers"/></h2>
|
||||||
|
|
||||||
<c:if test="${empty foodOfferLs }">
|
<c:if test="${empty foodOfferLs }">
|
||||||
<p id="vacio" >No hay ninguna oferta por plato específico activa.</p>
|
<p id="vacio" >No hay ninguna oferta por plato espec<EFBFBD>fico activa.</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${not empty foodOfferLs }">
|
<c:if test="${not empty foodOfferLs }">
|
||||||
<table id="foodOfferTable" class="table table-striped">
|
<table id="foodOfferTable" class="table table-striped">
|
||||||
|
@ -97,7 +101,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. anterior</button>
|
P<EFBFBD>g. anterior</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:out value='${page}'></c:out>
|
<c:out value='${page}'></c:out>
|
||||||
<c:if test="${fn:length(foodOfferLs) == 5}">
|
<c:if test="${fn:length(foodOfferLs) == 5}">
|
||||||
|
@ -106,7 +110,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. siguiente</button>
|
P<EFBFBD>g. siguiente</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
|
|
||||||
|
|
|
@ -5,27 +5,74 @@
|
||||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %>
|
<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %>
|
||||||
|
|
||||||
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
|
||||||
|
<!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.css">
|
||||||
|
|
||||||
|
-->
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
|
||||||
|
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
|
||||||
|
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment-with-locales.js"></script>
|
||||||
|
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
<script src="http://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/a549aa8780dbda16f6cff545aeabc3d71073911e/src/js/bootstrap-datetimepicker.js"></script>
|
||||||
|
|
||||||
|
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
|
||||||
|
|
||||||
|
<link href="http://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/a549aa8780dbda16f6cff545aeabc3d71073911e/build/css/bootstrap-datetimepicker.css" rel="stylesheet"/>
|
||||||
|
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/2.4.4/js/bootstrap-datetimepicker.min.js"></script>
|
||||||
|
|
||||||
<cheapy:layout pageName="NumOffers">
|
<cheapy:layout pageName="NumOffers">
|
||||||
<h2 style="text-align:center;padding:5px">
|
<h2 style="text-align:center;padding:5px">
|
||||||
<c:if test="${nuOffer['new']}"><fmt:message key="new"/> </c:if> <fmt:message key="nuOffer"/>
|
<c:if test="${nuOffer['new']}"><fmt:message key="new"/> </c:if> <fmt:message key="nuOffer"/>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<form:form modelAttribute="nuOffer" class="form-horizontal" id="add-nuOffer-form">
|
<form:form modelAttribute="nuOffer" class="form-horizontal" id="add-nuOffer-form">
|
||||||
<div class="form-group has-feedback">
|
<div class="form-group has-feedback">
|
||||||
<form:hidden path="id"/>
|
<form:hidden path="id"/>
|
||||||
<form:hidden path="code"/>
|
<form:hidden path="code"/>
|
||||||
<form:hidden path="status"/>
|
<form:hidden path="status"/>
|
||||||
<cheapy:inputField label="Fecha de Inicio" placeholder="dd/MM/yyyy HH:mm" name="start"/>
|
|
||||||
<cheapy:inputField label="Fecha de Fin" placeholder="dd/MM/yyyy HH:mm" name="end"/>
|
|
||||||
|
|
||||||
|
<!-- <div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class='col-sm-6'>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class='input-group date' id='datetimepicker1'>
|
||||||
|
<input type='text' class="form-control" />
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<span class="glyphicon glyphicon-calendar"></span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$('#datetimepicker1').datetimepicker();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<cheapy:inputField label="Fecha de Inicio" placeholder="dd/MM/yyyy HH:mm" name="start"/>
|
||||||
|
<cheapy:inputField label="Fecha de Fin" placeholder="dd/MM/yyyy HH:mm" name="end"/>
|
||||||
<cheapy:inputField label="Número de comensales (nivel Oro)" placeholder="XX (Ej. 6)" name="gold"/>
|
<cheapy:inputField label="Número de comensales (nivel Oro)" placeholder="XX (Ej. 6)" name="gold"/>
|
||||||
<cheapy:inputField label="Descuento de nivel oro" placeholder="XX% (Ej. 30)" name="discountGold"/>
|
<cheapy:inputField label="Descuento de nivel oro" placeholder="XX% (Ej. 30)" name="discountGold"/>
|
||||||
<cheapy:inputField label="Número de comensales (nivel Plata)" placeholder="XX (Ej. 4)" name="silver"/>
|
<cheapy:inputField label="Número de comensales (nivel Plata)" placeholder="XX (Ej. 4)" name="silver"/>
|
||||||
<cheapy:inputField label="Descuento de plata" placeholder="XX% (Ej. 15)" name="discountSilver"/>
|
<cheapy:inputField label="Descuento de plata" placeholder="XX% (Ej. 15)" name="discountSilver"/>
|
||||||
<cheapy:inputField label="Número de comensales (nivel Bronce)" placeholder="XX (Ej. 2)" name="bronze"/>
|
<cheapy:inputField label="Número de comensales (nivel Bronce)" placeholder="XX (Ej. 2)" name="bronze"/>
|
||||||
<cheapy:inputField label="Descuento de bronce" placeholder="XX% (Ej. 5)" name="discountBronze"/>
|
<cheapy:inputField label="Descuento de bronce" placeholder="XX% (Ej. 5)" name="discountBronze"/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
|
@ -45,7 +92,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form:form>
|
</form:form>
|
||||||
|
|
||||||
|
|
||||||
</cheapy:layout>
|
</cheapy:layout>
|
||||||
|
|
|
@ -7,40 +7,42 @@
|
||||||
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
||||||
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
|
||||||
<cheapy:layout pageName="ofertas">
|
<cheapy:layout pageName="ofertas por numero de comensales">
|
||||||
|
<div class="text-center">
|
||||||
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
<div class="btn-filter-max">
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de plato especifico</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de plato especifico</button>
|
||||||
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter-active" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas por número de comensales</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas por número de comensales</button>
|
||||||
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de velocidad</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de velocidad</button>
|
||||||
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de franja horaria</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de franja horaria</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2 style="text-align:center;padding:5px"><fmt:message key="nuOffers"/></h2>
|
<h2 style="text-align:center;padding:5px"><fmt:message key="nuOffers"/></h2>
|
||||||
<c:if test="${empty nuOfferLs }">
|
<c:if test="${empty nuOfferLs }">
|
||||||
<p id="vacio" >No hay ninguna oferta por número de comensales activa.</p>
|
<p id="vacio" >No hay ninguna oferta por n<EFBFBD>mero de comensales activa.</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${not empty nuOfferLs }">
|
<c:if test="${not empty nuOfferLs }">
|
||||||
<table id="nuOfferTable" class="table table-striped">
|
<table id="nuOfferTable" class="table table-striped">
|
||||||
|
@ -94,7 +96,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. anterior</button>
|
P<EFBFBD>g. anterior</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:out value='${page}'></c:out>
|
<c:out value='${page}'></c:out>
|
||||||
<c:if test="${fn:length(nuOfferLs) == 5}">
|
<c:if test="${fn:length(nuOfferLs) == 5}">
|
||||||
|
@ -103,7 +105,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. siguiente</button>
|
P<EFBFBD>g. siguiente</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
|
|
||||||
|
|
|
@ -9,44 +9,60 @@
|
||||||
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
|
||||||
<cheapy:layout pageName="ofertas">
|
<cheapy:layout pageName="ofertas">
|
||||||
|
<div class="text-center">
|
||||||
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
<div class="btn-filter-max">
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
Ofertas de plato especifico</button>
|
|
||||||
|
<button type="button" class="btn-filter" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
<spring:param name="page" value="0"/>
|
Ofertas de plato específico</button>
|
||||||
</spring:url>
|
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<spring:param name="page" value="0"/>
|
||||||
Ofertas por número de comensales</button>
|
</spring:url>
|
||||||
|
|
||||||
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<spring:param name="page" value="0"/>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
</spring:url>
|
Ofertas por número de comensales</button>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
Ofertas de velocidad</button>
|
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
||||||
|
<spring:param name="page" value="0"/>
|
||||||
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
</spring:url>
|
||||||
<spring:param name="page" value="0"/>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
</spring:url>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
Ofertas de velocidad</button>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
Ofertas de franja horaria</button>
|
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
||||||
|
<spring:param name="page" value="0"/>
|
||||||
|
</spring:url>
|
||||||
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de franja horaria</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<form class="example" action="/offersByName">
|
<form class="example" action="/offersByName">
|
||||||
<input type="text" name="name">
|
<h2 class="text-center" style="font-size: 100%" >Búsqueda por nombre del bar/restaurante: </h2>
|
||||||
<button type="submit">Buscar por nombre</button>
|
<div class="text-center">
|
||||||
|
<input type="text" placeholder="Búsqueda por nombre" name="name">
|
||||||
|
<button type="submit"><i class="fa fa-search"></i>
|
||||||
|
<span class="glyphicon glyphicon glyphicon-search" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="example" action="/offersByFood">
|
<form class="example" action="/offersByFood">
|
||||||
<input type="text" name="name">
|
<h2 class="text-center" style="font-size: 100%" >Búsqueda por comida: </h2>
|
||||||
<button type="submit">Buscar por comida</button>
|
<div class="text-center">
|
||||||
|
<input type="text" placeholder="Búsqueda por comida (Ej: Macarrones)" name="name">
|
||||||
|
<button type="submit"><i class="fa fa-search"></i>
|
||||||
|
<span class="glyphicon glyphicon glyphicon-search" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="example" action="/offersByPlace">
|
<form class="example" action="/offersByPlace">
|
||||||
|
@ -62,7 +78,7 @@
|
||||||
<h2 style="text-align:center;padding:5px"><fmt:message key="foodOffers"/></h2>
|
<h2 style="text-align:center;padding:5px"><fmt:message key="foodOffers"/></h2>
|
||||||
|
|
||||||
<c:if test="${empty foodOfferLs }">
|
<c:if test="${empty foodOfferLs }">
|
||||||
<p id="vacio" >No hay ninguna oferta por plato específico activa.</p>
|
<p id="vacio" >No hay ninguna oferta por plato específico activa.</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${not empty foodOfferLs }">
|
<c:if test="${not empty foodOfferLs }">
|
||||||
|
|
||||||
|
@ -120,13 +136,13 @@
|
||||||
</table>
|
</table>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Ver más</button>
|
Ver más</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</c:if>
|
</c:if>
|
||||||
<h2 style="text-align:center;padding:5px"><fmt:message key="nuOffers"/></h2>
|
<h2 style="text-align:center;padding:5px"><fmt:message key="nuOffers"/></h2>
|
||||||
<c:if test="${empty nuOfferLs }">
|
<c:if test="${empty nuOfferLs }">
|
||||||
<p id="vacio" >No hay ninguna oferta por número de comensales activa.</p>
|
<p id="vacio" >No hay ninguna oferta por n<EFBFBD>mero de comensales activa.</p>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${not empty nuOfferLs }">
|
<c:if test="${not empty nuOfferLs }">
|
||||||
|
|
||||||
|
@ -178,7 +194,7 @@
|
||||||
</table>
|
</table>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Ver más</button>
|
Ver más</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</c:if>
|
</c:if>
|
||||||
|
@ -239,7 +255,7 @@
|
||||||
<spring:url value="/offers/speedOfferList" var="speedOfferUrl"></spring:url>
|
<spring:url value="/offers/speedOfferList" var="speedOfferUrl"></spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Ver más</button>
|
Ver más</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</c:if>
|
</c:if>
|
||||||
|
@ -298,7 +314,7 @@
|
||||||
<spring:url value="/offers/timeOfferList" var="timeOfferUrl"></spring:url>
|
<spring:url value="/offers/timeOfferList" var="timeOfferUrl"></spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Ver más</button>
|
Ver más</button>
|
||||||
</div>
|
</div>
|
||||||
</c:if>
|
</c:if>
|
||||||
|
|
||||||
|
|
82
src/main/webapp/WEB-INF/jsp/offers/offersRecordList.jsp
Normal file
82
src/main/webapp/WEB-INF/jsp/offers/offersRecordList.jsp
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
<%@ 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" %>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
|
||||||
|
<cheapy:layout pageName="ofertasM">
|
||||||
|
<h2 style="text-align:center;padding:5px">Registro de Ofertas</h2>
|
||||||
|
<c:if test="${empty datos }">
|
||||||
|
<p id="vacio" >No hay ninguna oferta creada.</p>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${not empty datos }">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table id="offerTable" class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Restaurante</th>
|
||||||
|
<th>Tipo de oferta</th>
|
||||||
|
<th><fmt:message key="startDate"/></th>
|
||||||
|
<th><fmt:message key="endDate"/></th>
|
||||||
|
<th><fmt:message key="status"/></th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach items="${datos}" var="datos">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<c:out value="${datos.key.client.name}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:if test="${datos.value == 'time'}">
|
||||||
|
<c:out value="Por franja horaria"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${datos.value == 'nu'}">
|
||||||
|
<c:out value="Por numero de comensales"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${datos.value == 'speed'}">
|
||||||
|
<c:out value="Por rapidez"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${datos.value == 'food'}">
|
||||||
|
<c:out value="Por plato especifico"/>
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${localDateTimeFormat.format(datos.key.start)}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${localDateTimeFormat.format(datos.key.end)}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:if test="${datos.key.status == 'active'}">
|
||||||
|
<c:out value="Activa"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${datos.key.status == 'hidden'}">
|
||||||
|
<c:out value="Oculta"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${datos.key.status == 'inactive'}">
|
||||||
|
<c:out value="Inactiva"/>
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<spring:url value="/offers/${datos.value}/${datos.key.id}" var="offerUrl">
|
||||||
|
<spring:param name="foodOfferId" value="${foodOffer.id}"/>
|
||||||
|
</spring:url>
|
||||||
|
<div class="btn-detalles">
|
||||||
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(offerUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
|
<span class="glyphicon glyphicon-info-sign" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
<fmt:message key="details"/></button>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</c:if>
|
||||||
|
</cheapy:layout>
|
|
@ -7,37 +7,38 @@
|
||||||
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
||||||
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
|
||||||
<cheapy:layout pageName="ofertas">
|
<cheapy:layout pageName="ofertas por rapidez">
|
||||||
|
<div class="text-center">
|
||||||
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
<div class="btn-filter-max">
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de plato especifico</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de plato especifico</button>
|
||||||
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas por número de comensales</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas por número de comensales</button>
|
||||||
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter-active" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de velocidad</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de velocidad</button>
|
||||||
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de franja horaria</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de franja horaria</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<h2 style="text-align:center;padding:5px"><fmt:message key="speedOffers"/></h2>
|
<h2 style="text-align:center;padding:5px"><fmt:message key="speedOffers"/></h2>
|
||||||
<c:if test="${empty speedOfferLs }">
|
<c:if test="${empty speedOfferLs }">
|
||||||
<p id="vacio" >No hay ninguna oferta por tiempo empleado en comer activa.</p>
|
<p id="vacio" >No hay ninguna oferta por tiempo empleado en comer activa.</p>
|
||||||
|
@ -95,7 +96,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. anterior</button>
|
P<EFBFBD>g. anterior</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:out value='${page}'></c:out>
|
<c:out value='${page}'></c:out>
|
||||||
<c:if test="${fn:length(speedOfferLs) == 5}">
|
<c:if test="${fn:length(speedOfferLs) == 5}">
|
||||||
|
@ -104,7 +105,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. siguiente</button>
|
P<EFBFBD>g. siguiente</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
</cheapy:layout>
|
</cheapy:layout>
|
||||||
|
|
|
@ -7,36 +7,38 @@
|
||||||
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
||||||
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
|
||||||
<cheapy:layout pageName="ofertas">
|
<cheapy:layout pageName="ofertas por intervalo de tiempo">
|
||||||
|
<div class="text-center">
|
||||||
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
<div class="btn-filter-max">
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de plato especifico</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de plato especifico</button>
|
||||||
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas por número de comensales</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas por número de comensales</button>
|
||||||
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de velocidad</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de velocidad</button>
|
||||||
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
|
||||||
<spring:param name="page" value="0"/>
|
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
|
||||||
</spring:url>
|
<spring:param name="page" value="0"/>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
</spring:url>
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<button type="button" role="link" class="btn-filter-active" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
Ofertas de franja horaria</button>
|
<span class="glyphicon glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
|
Ofertas de franja horaria</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2 style="text-align:center;padding:5px"><fmt:message key="timeOffers"/></h2>
|
<h2 style="text-align:center;padding:5px"><fmt:message key="timeOffers"/></h2>
|
||||||
<c:if test="${empty timeOfferLs }">
|
<c:if test="${empty timeOfferLs }">
|
||||||
|
@ -94,7 +96,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. anterior</button>
|
P<EFBFBD>g. anterior</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:out value='${page}'></c:out>
|
<c:out value='${page}'></c:out>
|
||||||
<c:if test="${fn:length(timeOfferLs) == 5}">
|
<c:if test="${fn:length(timeOfferLs) == 5}">
|
||||||
|
@ -103,7 +105,7 @@
|
||||||
</spring:url>
|
</spring:url>
|
||||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Pág. siguiente</button>
|
P<EFBFBD>g. siguiente</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
|
|
||||||
|
|
317
src/main/webapp/WEB-INF/jsp/singup/singUpClient.jsp
Normal file
317
src/main/webapp/WEB-INF/jsp/singup/singUpClient.jsp
Normal file
|
@ -0,0 +1,317 @@
|
||||||
|
<%@ 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="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %>
|
||||||
|
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
|
||||||
|
<!-- %@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %-->
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "montserratregular", sans-serif;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #92badd;
|
||||||
|
display:inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
display:inline-block;
|
||||||
|
margin: 40px 8px 10px 8px;
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* STRUCTURE */
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#formContent {
|
||||||
|
-webkit-border-radius: 10px 10px 10px 10px;
|
||||||
|
border-radius: 10px 10px 10px 10px;
|
||||||
|
background: #fff;
|
||||||
|
padding: 30px;
|
||||||
|
width: 90%;
|
||||||
|
max-width: 450px;
|
||||||
|
position: relative;
|
||||||
|
padding: 0px;
|
||||||
|
-webkit-box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3);
|
||||||
|
box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#formFooter {
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
border-top: 1px solid #dce8f1;
|
||||||
|
padding: 25px;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-border-radius: 0 0 10px 10px;
|
||||||
|
border-radius: 0 0 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* TABS */
|
||||||
|
|
||||||
|
h2.inactive {
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2.active {
|
||||||
|
color: #0d0d0d;
|
||||||
|
border-bottom: 2px solid #5fbae9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* FORM TYPOGRAPHY*/
|
||||||
|
|
||||||
|
input[type=button], input[type=submit], input[type=reset] {
|
||||||
|
background-color: #56baed;
|
||||||
|
border: none;
|
||||||
|
color: white;
|
||||||
|
padding: 15px 80px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 13px;
|
||||||
|
-webkit-box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4);
|
||||||
|
box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4);
|
||||||
|
-webkit-border-radius: 5px 5px 5px 5px;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
margin: 5px 20px 40px 20px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
-moz-transition: all 0.3s ease-in-out;
|
||||||
|
-ms-transition: all 0.3s ease-in-out;
|
||||||
|
-o-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
|
||||||
|
background-color: #39ace7;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=button]:active, input[type=submit]:active, input[type=reset]:active {
|
||||||
|
-moz-transform: scale(0.95);
|
||||||
|
-webkit-transform: scale(0.95);
|
||||||
|
-o-transform: scale(0.95);
|
||||||
|
-ms-transform: scale(0.95);
|
||||||
|
transform: scale(0.95);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text], input[type=password] {
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
border: none;
|
||||||
|
color: #0d0d0d;
|
||||||
|
padding: 15px 32px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 5px;
|
||||||
|
width: 85%;
|
||||||
|
border: 2px solid #f6f6f6;
|
||||||
|
-webkit-transition: all 0.5s ease-in-out;
|
||||||
|
-moz-transition: all 0.5s ease-in-out;
|
||||||
|
-ms-transition: all 0.5s ease-in-out;
|
||||||
|
-o-transition: all 0.5s ease-in-out;
|
||||||
|
transition: all 0.5s ease-in-out;
|
||||||
|
-webkit-border-radius: 5px 5px 5px 5px;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text]:focus {
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 2px solid #5fbae9;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text]:placeholder {
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ANIMATIONS */
|
||||||
|
|
||||||
|
/* Simple CSS3 Fade-in-down Animation */
|
||||||
|
.fadeInDown {
|
||||||
|
-webkit-animation-name: fadeInDown;
|
||||||
|
animation-name: fadeInDown;
|
||||||
|
-webkit-animation-duration: 1s;
|
||||||
|
animation-duration: 1s;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeInDown {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(0, -100%, 0);
|
||||||
|
transform: translate3d(0, -100%, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeInDown {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(0, -100%, 0);
|
||||||
|
transform: translate3d(0, -100%, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Simple CSS3 Fade-in Animation */
|
||||||
|
@-webkit-keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
|
||||||
|
@-moz-keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
|
||||||
|
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
|
||||||
|
|
||||||
|
.fadeIn {
|
||||||
|
opacity:0;
|
||||||
|
-webkit-animation:fadeIn ease-in 1;
|
||||||
|
-moz-animation:fadeIn ease-in 1;
|
||||||
|
animation:fadeIn ease-in 1;
|
||||||
|
|
||||||
|
-webkit-animation-fill-mode:forwards;
|
||||||
|
-moz-animation-fill-mode:forwards;
|
||||||
|
animation-fill-mode:forwards;
|
||||||
|
|
||||||
|
-webkit-animation-duration:1s;
|
||||||
|
-moz-animation-duration:1s;
|
||||||
|
animation-duration:1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.first {
|
||||||
|
-webkit-animation-delay: 0.4s;
|
||||||
|
-moz-animation-delay: 0.4s;
|
||||||
|
animation-delay: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.second {
|
||||||
|
-webkit-animation-delay: 0.6s;
|
||||||
|
-moz-animation-delay: 0.6s;
|
||||||
|
animation-delay: 0.6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.third {
|
||||||
|
-webkit-animation-delay: 0.8s;
|
||||||
|
-moz-animation-delay: 0.8s;
|
||||||
|
animation-delay: 0.8s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.fourth {
|
||||||
|
-webkit-animation-delay: 1s;
|
||||||
|
-moz-animation-delay: 1s;
|
||||||
|
animation-delay: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Simple CSS3 Fade-in Animation */
|
||||||
|
.underlineHover:after {
|
||||||
|
display: block;
|
||||||
|
left: 0;
|
||||||
|
bottom: -10px;
|
||||||
|
width: 0;
|
||||||
|
height: 2px;
|
||||||
|
background-color: #56baed;
|
||||||
|
content: "";
|
||||||
|
transition: width 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.underlineHover:hover {
|
||||||
|
color: #0d0d0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.underlineHover:hover:after{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* OTHERS */
|
||||||
|
|
||||||
|
*:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#icon {
|
||||||
|
width:60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<cheapy:layout pageName="singUp">
|
||||||
|
<h2 style="text-align:center;padding:5px">
|
||||||
|
<fmt:message key="new"/><fmt:message key="client"/>
|
||||||
|
</h2>
|
||||||
|
<form:form modelAttribute="cliente" class="form-horizontal"
|
||||||
|
id="add-client-form">
|
||||||
|
<div class="form-group has-feedback">
|
||||||
|
<cheapy:inputField label="Nombre" placeholder="Ponga aqui su nombre"
|
||||||
|
name="name" />
|
||||||
|
<cheapy:inputField label="Direccion" placeholder="Ponga aqui su dirección"
|
||||||
|
name="address" />
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Municipio: </label>
|
||||||
|
<select name="municipio">
|
||||||
|
<c:forEach items="${municipio}" var="entry">
|
||||||
|
<option value="${entry}">${entry}</option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<cheapy:inputField label="Hora de apertura" placeholder="Ponga aqui su hora de apertura (formato HH:mm)"
|
||||||
|
name="init" />
|
||||||
|
<cheapy:inputField label="Hora de cierre" placeholder="Ponga aqui su hora de cierre (formato HH:mm)"
|
||||||
|
name="finish" />
|
||||||
|
<cheapy:inputField label="Teléfono" placeholder="Ponga aqui el teléfono del local"
|
||||||
|
name="telephone" />
|
||||||
|
<cheapy:inputField label="Descripción" placeholder="Ponga aqui su descripción"
|
||||||
|
name="description" />
|
||||||
|
<cheapy:inputField label="Email" placeholder="Ponga aqui su email"
|
||||||
|
name="email" />
|
||||||
|
<cheapy:inputField label="Tipo de comida" placeholder="Indique que tipo de comida sirve su negocio"
|
||||||
|
name="food" />
|
||||||
|
<cheapy:inputField label="Nombre de usuario" placeholder="Ponga aqui su nombre de usuario"
|
||||||
|
name="usuar.username" />
|
||||||
|
<cheapy:inputField label="Contraseña" placeholder="Ponga aqui su contraseña"
|
||||||
|
name="usuar.password" />
|
||||||
|
<cheapy:inputField label="Código de activación" placeholder="Ponga aqui el código que se le suministro al firmar el contrato"
|
||||||
|
name="code.code" />
|
||||||
|
<input type="submit" class="fadeIn fourth" value="Registrarse">
|
||||||
|
</div>
|
||||||
|
</form:form>
|
||||||
|
|
||||||
|
</cheapy:layout>
|
||||||
|
|
307
src/main/webapp/WEB-INF/jsp/singup/singUpUser.jsp
Normal file
307
src/main/webapp/WEB-INF/jsp/singup/singUpUser.jsp
Normal file
|
@ -0,0 +1,307 @@
|
||||||
|
<%@ 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="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %>
|
||||||
|
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||||
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
|
||||||
|
<!-- %@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %-->
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "montserratregular", sans-serif;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #92badd;
|
||||||
|
display:inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
display:inline-block;
|
||||||
|
margin: 40px 8px 10px 8px;
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* STRUCTURE */
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#formContent {
|
||||||
|
-webkit-border-radius: 10px 10px 10px 10px;
|
||||||
|
border-radius: 10px 10px 10px 10px;
|
||||||
|
background: #fff;
|
||||||
|
padding: 30px;
|
||||||
|
width: 90%;
|
||||||
|
max-width: 450px;
|
||||||
|
position: relative;
|
||||||
|
padding: 0px;
|
||||||
|
-webkit-box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3);
|
||||||
|
box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#formFooter {
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
border-top: 1px solid #dce8f1;
|
||||||
|
padding: 25px;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-border-radius: 0 0 10px 10px;
|
||||||
|
border-radius: 0 0 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* TABS */
|
||||||
|
|
||||||
|
h2.inactive {
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2.active {
|
||||||
|
color: #0d0d0d;
|
||||||
|
border-bottom: 2px solid #5fbae9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* FORM TYPOGRAPHY*/
|
||||||
|
|
||||||
|
input[type=button], input[type=submit], input[type=reset] {
|
||||||
|
background-color: #56baed;
|
||||||
|
border: none;
|
||||||
|
color: white;
|
||||||
|
padding: 15px 80px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 13px;
|
||||||
|
-webkit-box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4);
|
||||||
|
box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4);
|
||||||
|
-webkit-border-radius: 5px 5px 5px 5px;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
margin: 5px 20px 40px 20px;
|
||||||
|
-webkit-transition: all 0.3s ease-in-out;
|
||||||
|
-moz-transition: all 0.3s ease-in-out;
|
||||||
|
-ms-transition: all 0.3s ease-in-out;
|
||||||
|
-o-transition: all 0.3s ease-in-out;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
|
||||||
|
background-color: #39ace7;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=button]:active, input[type=submit]:active, input[type=reset]:active {
|
||||||
|
-moz-transform: scale(0.95);
|
||||||
|
-webkit-transform: scale(0.95);
|
||||||
|
-o-transform: scale(0.95);
|
||||||
|
-ms-transform: scale(0.95);
|
||||||
|
transform: scale(0.95);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text], input[type=password] {
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
border: none;
|
||||||
|
color: #0d0d0d;
|
||||||
|
padding: 15px 32px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 5px;
|
||||||
|
width: 85%;
|
||||||
|
border: 2px solid #f6f6f6;
|
||||||
|
-webkit-transition: all 0.5s ease-in-out;
|
||||||
|
-moz-transition: all 0.5s ease-in-out;
|
||||||
|
-ms-transition: all 0.5s ease-in-out;
|
||||||
|
-o-transition: all 0.5s ease-in-out;
|
||||||
|
transition: all 0.5s ease-in-out;
|
||||||
|
-webkit-border-radius: 5px 5px 5px 5px;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text]:focus {
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 2px solid #5fbae9;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=text]:placeholder {
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ANIMATIONS */
|
||||||
|
|
||||||
|
/* Simple CSS3 Fade-in-down Animation */
|
||||||
|
.fadeInDown {
|
||||||
|
-webkit-animation-name: fadeInDown;
|
||||||
|
animation-name: fadeInDown;
|
||||||
|
-webkit-animation-duration: 1s;
|
||||||
|
animation-duration: 1s;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeInDown {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(0, -100%, 0);
|
||||||
|
transform: translate3d(0, -100%, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeInDown {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(0, -100%, 0);
|
||||||
|
transform: translate3d(0, -100%, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Simple CSS3 Fade-in Animation */
|
||||||
|
@-webkit-keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
|
||||||
|
@-moz-keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
|
||||||
|
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
|
||||||
|
|
||||||
|
.fadeIn {
|
||||||
|
opacity:0;
|
||||||
|
-webkit-animation:fadeIn ease-in 1;
|
||||||
|
-moz-animation:fadeIn ease-in 1;
|
||||||
|
animation:fadeIn ease-in 1;
|
||||||
|
|
||||||
|
-webkit-animation-fill-mode:forwards;
|
||||||
|
-moz-animation-fill-mode:forwards;
|
||||||
|
animation-fill-mode:forwards;
|
||||||
|
|
||||||
|
-webkit-animation-duration:1s;
|
||||||
|
-moz-animation-duration:1s;
|
||||||
|
animation-duration:1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.first {
|
||||||
|
-webkit-animation-delay: 0.4s;
|
||||||
|
-moz-animation-delay: 0.4s;
|
||||||
|
animation-delay: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.second {
|
||||||
|
-webkit-animation-delay: 0.6s;
|
||||||
|
-moz-animation-delay: 0.6s;
|
||||||
|
animation-delay: 0.6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.third {
|
||||||
|
-webkit-animation-delay: 0.8s;
|
||||||
|
-moz-animation-delay: 0.8s;
|
||||||
|
animation-delay: 0.8s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fadeIn.fourth {
|
||||||
|
-webkit-animation-delay: 1s;
|
||||||
|
-moz-animation-delay: 1s;
|
||||||
|
animation-delay: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Simple CSS3 Fade-in Animation */
|
||||||
|
.underlineHover:after {
|
||||||
|
display: block;
|
||||||
|
left: 0;
|
||||||
|
bottom: -10px;
|
||||||
|
width: 0;
|
||||||
|
height: 2px;
|
||||||
|
background-color: #56baed;
|
||||||
|
content: "";
|
||||||
|
transition: width 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.underlineHover:hover {
|
||||||
|
color: #0d0d0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.underlineHover:hover:after{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* OTHERS */
|
||||||
|
|
||||||
|
*:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#icon {
|
||||||
|
width:60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<cheapy:layout pageName="singUp">
|
||||||
|
<h2 style="text-align:center;padding:5px">
|
||||||
|
<fmt:message key="new"/><fmt:message key="user"/>
|
||||||
|
</h2>
|
||||||
|
<form:form modelAttribute="usuario" class="form-horizontal"
|
||||||
|
id="add-foodOffer-form">
|
||||||
|
<div class="form-group has-feedback">
|
||||||
|
<cheapy:inputField label="Nombre" placeholder="Ponga aqui su nombre"
|
||||||
|
name="nombre" />
|
||||||
|
<cheapy:inputField label="Apellidos" placeholder="Ponga aqui sus apellidos"
|
||||||
|
name="apellidos" />
|
||||||
|
<cheapy:inputField label="Direccion" placeholder="Ponga aqui su dirección"
|
||||||
|
name="direccion" />
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Municipio: </label>
|
||||||
|
<select name="municipio">
|
||||||
|
<c:forEach items="${municipio}" var="entry">
|
||||||
|
<option value="${entry}">${entry}</option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<cheapy:inputField label="Email" placeholder="Ponga aqui su email"
|
||||||
|
name="email" />
|
||||||
|
<cheapy:inputField label="Nombre de usuario" placeholder="Ponga aqui su nombre de usuario"
|
||||||
|
name="usuar.username" />
|
||||||
|
<cheapy:inputField label="Contraseña" placeholder="Ponga aqui su contraseña"
|
||||||
|
name="usuar.password" />
|
||||||
|
<input type="submit" class="fadeIn fourth" value="Registrarse">
|
||||||
|
</div>
|
||||||
|
</form:form>
|
||||||
|
|
||||||
|
</cheapy:layout>
|
||||||
|
|
|
@ -16,27 +16,24 @@
|
||||||
<div class="form-group has-feedback">
|
<div class="form-group has-feedback">
|
||||||
<cheapy:inputField label="Nombre" name="nombre"/>
|
<cheapy:inputField label="Nombre" name="nombre"/>
|
||||||
<cheapy:inputField label="Apellidos" name="apellidos"/>
|
<cheapy:inputField label="Apellidos" name="apellidos"/>
|
||||||
<cheapy:inputField label="DNI" name="dni"/>
|
<div class="form-group">
|
||||||
|
<label>Municipio: </label>
|
||||||
|
<select name="municipio">
|
||||||
|
<c:forEach items="${municipio}" var="entry">
|
||||||
|
<option value="${entry}">${entry}</option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<cheapy:inputField label="Direccion" name="direccion"/>
|
<cheapy:inputField label="Direccion" name="direccion"/>
|
||||||
<cheapy:inputField label="Telefono" name="telefono"/>
|
|
||||||
<cheapy:inputField label="Email" name="email"/>
|
<cheapy:inputField label="Email" name="email"/>
|
||||||
<cheapy:inputField label="Password" name="usuar.password"/>
|
<cheapy:passwordField label="Password" name="usuar.password"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
<div class="btn-mod">
|
<div class="btn-mod">
|
||||||
<c:choose>
|
|
||||||
<c:when test="${usuario['new']}">
|
|
||||||
<button class="btn btn-default" type="submit" style="font-family: 'Lobster'; font-size: 20px;">
|
|
||||||
<span class="glyphicon glyphicon-floppy-save" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
Crear usuario</button>
|
|
||||||
</c:when>
|
|
||||||
<c:otherwise>
|
|
||||||
<button class="btn btn-default" type="submit" style="font-family: 'Lobster'; font-size: 20px;">
|
<button class="btn btn-default" type="submit" style="font-family: 'Lobster'; font-size: 20px;">
|
||||||
<span class="glyphicon glyphicon-floppy-save" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon-floppy-save" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
Modificar</button>
|
Modificar</button>
|
||||||
</c:otherwise>
|
|
||||||
</c:choose>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -22,17 +22,14 @@
|
||||||
<td><c:out value="${usuario.apellidos}"/></td>
|
<td><c:out value="${usuario.apellidos}"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th><fmt:message key="dni"/></th>
|
<th><fmt:message key="municipio"/></th>
|
||||||
<td><c:out value="${usuario.dni}"/></td>
|
<td><c:out value="${usuario.municipio}"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th><fmt:message key="addressUser"/></th>
|
<th><fmt:message key="addressUser"/></th>
|
||||||
<td><c:out value="${usuario.direccion}"/> </td>
|
<td><c:out value="${usuario.direccion}"/> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<th><fmt:message key="telephone"/></th>
|
|
||||||
<td><c:out value="${usuario.telefono}"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<th><fmt:message key="email"/></th>
|
<th><fmt:message key="email"/></th>
|
||||||
<td><c:out value="${usuario.email}"/></td>
|
<td><c:out value="${usuario.email}"/></td>
|
||||||
|
|
|
@ -34,23 +34,11 @@
|
||||||
<span class="glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
<span class="glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||||
<fmt:message key="createOffers"/> </button>
|
<fmt:message key="createOffers"/> </button>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-home">
|
|
||||||
<button type="button" role="link" onclick="window.location='/clients/show'" style="font-family: 'Lobster'; font-size: 20px;margin:5px;" class="btn-block">
|
|
||||||
<span class="glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
<fmt:message key="clientShow"/> </button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</sec:authorize>
|
</sec:authorize>
|
||||||
</div>
|
</div>
|
||||||
<sec:authorize access="hasAnyAuthority('usuario')">
|
|
||||||
<div class="btn-home-max">
|
|
||||||
<div class="btn-home">
|
|
||||||
<button type="button" role="link" onclick="window.location='/usuarios/show'" style="font-family: 'Lobster'; font-size: 20px;margin:5px;">
|
|
||||||
<span class="glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
|
||||||
<fmt:message key="showUsuario"/> </button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</sec:authorize>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
29
src/main/webapp/WEB-INF/tags/dateField.tag
Normal file
29
src/main/webapp/WEB-INF/tags/dateField.tag
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
|
<%@ attribute name="name" required="true" rtexprvalue="true"
|
||||||
|
description="Name of corresponding property in bean object" %>
|
||||||
|
<%@ attribute name="label" required="true" rtexprvalue="true"
|
||||||
|
description="Label appears in red color if input is considered as invalid after submission" %>
|
||||||
|
<%@ attribute name="placeholder" required="false" rtexprvalue="true"
|
||||||
|
description="Placeholder para los campos en los input fields" %>
|
||||||
|
|
||||||
|
<spring:bind path="${name}">
|
||||||
|
<c:set var="cssGroup" value="form-group ${status.error ? 'has-error' : '' }"/>
|
||||||
|
<c:set var="valid" value="${not status.error and not empty status.actualValue}"/>
|
||||||
|
<div class="${cssGroup}">
|
||||||
|
<label class="col-sm-2 control-label">${label}</label>
|
||||||
|
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<form:input type="datetime-local" class="form-control" path="${name}"/>
|
||||||
|
|
||||||
|
<c:if test="${valid}">
|
||||||
|
<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${status.error}">
|
||||||
|
<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
|
||||||
|
<span class="help-inline">${status.errorMessage}</span>
|
||||||
|
</c:if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</spring:bind>
|
|
@ -53,6 +53,13 @@
|
||||||
<span>Usuarios</span>
|
<span>Usuarios</span>
|
||||||
</cheapy:menuItem>
|
</cheapy:menuItem>
|
||||||
</sec:authorize>
|
</sec:authorize>
|
||||||
|
|
||||||
|
<sec:authorize access="hasAnyAuthority('admin')">
|
||||||
|
<cheapy:menuItem active="${name eq 'registro'}" url="/offersRecord" title="offersRecord">
|
||||||
|
<span class="glyphicon " aria-hidden="true"></span>
|
||||||
|
<span>Registro de ofertas</span>
|
||||||
|
</cheapy:menuItem>
|
||||||
|
</sec:authorize>
|
||||||
<!--
|
<!--
|
||||||
<cheapy:menuItem active="${name eq 'contactanos'}" url="/contactanos"
|
<cheapy:menuItem active="${name eq 'contactanos'}" url="/contactanos"
|
||||||
title="contactanos">
|
title="contactanos">
|
||||||
|
@ -71,12 +78,33 @@
|
||||||
</cheapy:menuItem>
|
</cheapy:menuItem>
|
||||||
</sec:authorize>
|
</sec:authorize>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
|
||||||
|
<sec:authorize access="hasAnyAuthority('client')">
|
||||||
|
<cheapy:menuItem active="${name eq 'miPerfil'}" url="/clients/show" title="miPerfil">
|
||||||
|
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
|
||||||
|
<span>Mi perfil</span>
|
||||||
|
</cheapy:menuItem>
|
||||||
|
</sec:authorize>
|
||||||
|
<sec:authorize access="hasAnyAuthority('usuario')">
|
||||||
|
<cheapy:menuItem active="${name eq 'miPerfil'}" url="/usuarios/show" title="miPerfil">
|
||||||
|
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
|
||||||
|
<span>Mi perfil</span>
|
||||||
|
</cheapy:menuItem>
|
||||||
|
</sec:authorize>
|
||||||
<sec:authorize access="!isAuthenticated()">
|
<sec:authorize access="!isAuthenticated()">
|
||||||
<li><a href="<c:url value="/login" />">Iniciar sesión</a></li>
|
<li><a href="<c:url value="/login" />">Iniciar sesión</a></li>
|
||||||
<!--<li><a href="<c:url value="/users/new" />">Register</a></li>-->
|
<!--<li><a href="<c:url value="/users/new" />">Register</a></li>-->
|
||||||
</sec:authorize>
|
</sec:authorize>
|
||||||
|
<sec:authorize access="!isAuthenticated()">
|
||||||
|
<li><a href="<c:url value="/users/new" />">Registrarse Usuario</a></li>
|
||||||
|
<!--<li><a href="<c:url value="/users/new" />">Register</a></li>-->
|
||||||
|
</sec:authorize>
|
||||||
|
<sec:authorize access="!isAuthenticated()">
|
||||||
|
<li><a href="<c:url value="/clients/new" />">Registrarse Cliente</a></li>
|
||||||
|
<!--<li><a href="<c:url value="/users/new" />">Register</a></li>-->
|
||||||
|
</sec:authorize>
|
||||||
<sec:authorize access="isAuthenticated()">
|
<sec:authorize access="isAuthenticated()">
|
||||||
<li class="dropdown"><a href="#" class="dropdown-toggle"
|
<li class="dropdown"><a href="#" class="dropdown-toggle"
|
||||||
data-toggle="dropdown"> <span class="glyphicon glyphicon-user"></span>
|
data-toggle="dropdown"> <span class="glyphicon glyphicon-user"></span>
|
||||||
|
|
28
src/main/webapp/WEB-INF/tags/passwordField.tag
Normal file
28
src/main/webapp/WEB-INF/tags/passwordField.tag
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
|
<%@ attribute name="name" required="true" rtexprvalue="true"
|
||||||
|
description="Name of corresponding property in bean object" %>
|
||||||
|
<%@ attribute name="label" required="true" rtexprvalue="true"
|
||||||
|
description="Label appears in red color if input is considered as invalid after submission" %>
|
||||||
|
<%@ attribute name="placeholder" required="false" rtexprvalue="true"
|
||||||
|
description="Placeholder para los campos en los input fields" %>
|
||||||
|
|
||||||
|
<spring:bind path="${name}">
|
||||||
|
<c:set var="cssGroup" value="form-group ${status.error ? 'has-error' : '' }"/>
|
||||||
|
<c:set var="valid" value="${not status.error and not empty status.actualValue}"/>
|
||||||
|
<div class="${cssGroup}">
|
||||||
|
<label class="col-sm-2 control-label">${label}</label>
|
||||||
|
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<form:input type="password" class="form-control" placeholder="${placeholder }" path="${name}"/>
|
||||||
|
<c:if test="${valid}">
|
||||||
|
<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${status.error}">
|
||||||
|
<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
|
||||||
|
<span class="help-inline">${status.errorMessage}</span>
|
||||||
|
</c:if>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</spring:bind>
|
|
@ -18,6 +18,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
import org.springframework.cheapy.model.FoodOffer;
|
import org.springframework.cheapy.model.FoodOffer;
|
||||||
import org.springframework.cheapy.model.User;
|
import org.springframework.cheapy.model.User;
|
||||||
import org.springframework.cheapy.service.ClientService;
|
import org.springframework.cheapy.service.ClientService;
|
||||||
|
@ -52,6 +53,9 @@ class FoodOfferControllerTest {
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() {
|
void setup() {
|
||||||
User user1 = new User();
|
User user1 = new User();
|
||||||
|
Code code1 = new Code();
|
||||||
|
code1.setActivo(true);
|
||||||
|
code1.setCode("codeTest1");
|
||||||
user1.setUsername("user1");
|
user1.setUsername("user1");
|
||||||
user1.setPassword("user1");
|
user1.setPassword("user1");
|
||||||
Client client1 = new Client();;
|
Client client1 = new Client();;
|
||||||
|
@ -63,7 +67,7 @@ class FoodOfferControllerTest {
|
||||||
client1.setFinish(LocalTime.of(01, 01));
|
client1.setFinish(LocalTime.of(01, 01));
|
||||||
client1.setTelephone("123456789");
|
client1.setTelephone("123456789");
|
||||||
client1.setDescription("client1");
|
client1.setDescription("client1");
|
||||||
client1.setCode("client1");
|
client1.setCode(code1);
|
||||||
client1.setFood("client1");
|
client1.setFood("client1");
|
||||||
client1.setUsuar(user1);
|
client1.setUsuar(user1);
|
||||||
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
||||||
|
@ -132,4 +136,4 @@ class FoodOfferControllerTest {
|
||||||
mockMvc.perform(get("/offers/food/{foodOfferId}/activate", TEST_FOODOFFER_ID+1))
|
mockMvc.perform(get("/offers/food/{foodOfferId}/activate", TEST_FOODOFFER_ID+1))
|
||||||
.andExpect(view().name("exception"));
|
.andExpect(view().name("exception"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
import org.springframework.cheapy.model.NuOffer;
|
import org.springframework.cheapy.model.NuOffer;
|
||||||
import org.springframework.cheapy.model.User;
|
import org.springframework.cheapy.model.User;
|
||||||
import org.springframework.cheapy.service.ClientService;
|
import org.springframework.cheapy.service.ClientService;
|
||||||
|
@ -51,6 +52,9 @@ class NuOfferControllerTest {
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() {
|
void setup() {
|
||||||
User user1 = new User();
|
User user1 = new User();
|
||||||
|
Code code1 = new Code();
|
||||||
|
code1.setActivo(true);
|
||||||
|
code1.setCode("codeTest1");
|
||||||
user1.setUsername("user1");
|
user1.setUsername("user1");
|
||||||
user1.setPassword("user1");
|
user1.setPassword("user1");
|
||||||
Client client1 = new Client();
|
Client client1 = new Client();
|
||||||
|
@ -62,7 +66,7 @@ class NuOfferControllerTest {
|
||||||
client1.setFinish(LocalTime.of(01, 01));
|
client1.setFinish(LocalTime.of(01, 01));
|
||||||
client1.setTelephone("123456789");
|
client1.setTelephone("123456789");
|
||||||
client1.setDescription("client1");
|
client1.setDescription("client1");
|
||||||
client1.setCode("client1");
|
client1.setCode(code1);
|
||||||
client1.setFood("client1");
|
client1.setFood("client1");
|
||||||
client1.setUsuar(user1);
|
client1.setUsuar(user1);
|
||||||
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
||||||
|
@ -148,4 +152,4 @@ class NuOfferControllerTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
import org.springframework.cheapy.model.SpeedOffer;
|
import org.springframework.cheapy.model.SpeedOffer;
|
||||||
import org.springframework.cheapy.model.User;
|
import org.springframework.cheapy.model.User;
|
||||||
import org.springframework.cheapy.service.ClientService;
|
import org.springframework.cheapy.service.ClientService;
|
||||||
|
@ -52,6 +53,9 @@ class SpeedOfferControllerTest {
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() {
|
void setup() {
|
||||||
User user1 = new User();
|
User user1 = new User();
|
||||||
|
Code code1 = new Code();
|
||||||
|
code1.setActivo(true);
|
||||||
|
code1.setCode("codeTest1");
|
||||||
user1.setUsername("user1");
|
user1.setUsername("user1");
|
||||||
user1.setPassword("user1");
|
user1.setPassword("user1");
|
||||||
Client client1 = new Client();
|
Client client1 = new Client();
|
||||||
|
@ -63,7 +67,7 @@ class SpeedOfferControllerTest {
|
||||||
client1.setFinish(LocalTime.of(01, 01));
|
client1.setFinish(LocalTime.of(01, 01));
|
||||||
client1.setTelephone("123456789");
|
client1.setTelephone("123456789");
|
||||||
client1.setDescription("client1");
|
client1.setDescription("client1");
|
||||||
client1.setCode("client1");
|
client1.setCode(code1);
|
||||||
client1.setFood("client1");
|
client1.setFood("client1");
|
||||||
client1.setUsuar(user1);
|
client1.setUsuar(user1);
|
||||||
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
||||||
|
@ -148,4 +152,4 @@ class SpeedOfferControllerTest {
|
||||||
mockMvc.perform(get("/offers/speed/{speedOfferId}/activate", TEST_SPEEDOFFER_ID+1))
|
mockMvc.perform(get("/offers/speed/{speedOfferId}/activate", TEST_SPEEDOFFER_ID+1))
|
||||||
.andExpect(view().name("exception"));
|
.andExpect(view().name("exception"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
import org.springframework.cheapy.configuration.SecurityConfiguration;
|
||||||
import org.springframework.cheapy.model.Client;
|
import org.springframework.cheapy.model.Client;
|
||||||
|
import org.springframework.cheapy.model.Code;
|
||||||
import org.springframework.cheapy.model.TimeOffer;
|
import org.springframework.cheapy.model.TimeOffer;
|
||||||
import org.springframework.cheapy.model.User;
|
import org.springframework.cheapy.model.User;
|
||||||
import org.springframework.cheapy.service.ClientService;
|
import org.springframework.cheapy.service.ClientService;
|
||||||
|
@ -51,6 +52,9 @@ class TimeOfferControllerTest {
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() {
|
void setup() {
|
||||||
User user1 = new User();
|
User user1 = new User();
|
||||||
|
Code code1 = new Code();
|
||||||
|
code1.setActivo(true);
|
||||||
|
code1.setCode("codeTest1");
|
||||||
user1.setUsername("user1");
|
user1.setUsername("user1");
|
||||||
user1.setPassword("user1");
|
user1.setPassword("user1");
|
||||||
Client client1 = new Client();
|
Client client1 = new Client();
|
||||||
|
@ -62,7 +66,7 @@ class TimeOfferControllerTest {
|
||||||
client1.setFinish(LocalTime.of(01, 01));
|
client1.setFinish(LocalTime.of(01, 01));
|
||||||
client1.setTelephone("123456789");
|
client1.setTelephone("123456789");
|
||||||
client1.setDescription("client1");
|
client1.setDescription("client1");
|
||||||
client1.setCode("client1");
|
client1.setCode(code1);
|
||||||
client1.setFood("client1");
|
client1.setFood("client1");
|
||||||
client1.setUsuar(user1);
|
client1.setUsuar(user1);
|
||||||
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
BDDMockito.given(this.clientService.getCurrentClient()).willReturn(client1);
|
||||||
|
@ -138,4 +142,4 @@ class TimeOfferControllerTest {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue