diff --git a/src/com/rjconsultores/ventaboletos/dao/ClienteCursoDAO.java b/src/com/rjconsultores/ventaboletos/dao/ClienteCursoDAO.java new file mode 100644 index 000000000..4dd3c2f45 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/ClienteCursoDAO.java @@ -0,0 +1,11 @@ +package com.rjconsultores.ventaboletos.dao; + +import com.rjconsultores.ventaboletos.entidad.Cliente; +import com.rjconsultores.ventaboletos.entidad.ClienteCurso; +import com.rjconsultores.ventaboletos.entidad.Curso; + +public interface ClienteCursoDAO extends GenericDAO { + + public ClienteCurso buscarClienteCurso(Cliente cliente, Curso curso); + +} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/ClienteCursoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/ClienteCursoHibernateDAO.java new file mode 100644 index 000000000..3bf3d5d46 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/ClienteCursoHibernateDAO.java @@ -0,0 +1,43 @@ +package com.rjconsultores.ventaboletos.dao.hibernate; + +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Repository; + +import com.rjconsultores.ventaboletos.dao.ClienteCursoDAO; +import com.rjconsultores.ventaboletos.entidad.Cliente; +import com.rjconsultores.ventaboletos.entidad.ClienteCurso; +import com.rjconsultores.ventaboletos.entidad.Curso; + +@Repository("clienteCursoDAO") +public class ClienteCursoHibernateDAO extends GenericHibernateDAO + implements ClienteCursoDAO { + + @Autowired + public ClienteCursoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + + @Override + public List obtenerTodos() { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + return c.list(); + } + + @Override + public ClienteCurso buscarClienteCurso(Cliente cliente, Curso curso) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("cliente", cliente)); + c.add(Restrictions.eq("curso", curso)); + + return (ClienteCurso) c.uniqueResult(); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/entidad/Cliente.java b/src/com/rjconsultores/ventaboletos/entidad/Cliente.java index 43145da54..57ddfb941 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Cliente.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Cliente.java @@ -5,6 +5,7 @@ package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -16,6 +17,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OneToOne; @@ -117,9 +120,12 @@ public class Cliente implements Serializable { @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "CLIENTE_ID", referencedColumnName = "CLIENTE_ID") private List lsClienteDescuento; - @ManyToOne(cascade = CascadeType.ALL) - @JoinColumn(name = "CURSO_ID", referencedColumnName = "CURSO_ID") - private Curso curso; + + @ManyToMany + @JoinTable(name = "CLIENTE_CURSO", joinColumns = { @JoinColumn(name = "CLIENTE_ID") }, + inverseJoinColumns = { @JoinColumn(name = "CURSO_ID") }) + private List cursoList; + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "ESCOLA_ID", referencedColumnName = "ESCOLA_ID") private Escola escola; @@ -419,12 +425,24 @@ public class Cliente implements Serializable { this.lsClienteDescuento = lsClienteDescuento; } - public Curso getCurso() { - return curso; + public List getCursoList() { + + List aux = new ArrayList(); + if (cursoList == null) { + return aux; + } + + for (Curso curso : cursoList) { + if (curso.getActivo()) { + aux.add(curso); + } + } + + return aux; } - public void setCurso(Curso curso) { - this.curso = curso; + public void setCursoList(List cursoList) { + this.cursoList = cursoList; } public Escola getEscola() { diff --git a/src/com/rjconsultores/ventaboletos/entidad/ClienteCurso.java b/src/com/rjconsultores/ventaboletos/entidad/ClienteCurso.java new file mode 100644 index 000000000..904631029 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/ClienteCurso.java @@ -0,0 +1,93 @@ +package com.rjconsultores.ventaboletos.entidad; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@SequenceGenerator(name = "CLIENTE_CURSO_SEQ", sequenceName = "CLIENTE_CURSO_SEQ", allocationSize = 1) +@Table(name = "CLIENTE_CURSO") +public class ClienteCurso implements Serializable { + + private static final long serialVersionUID = 1L; + @Id + @Basic(optional = false) + @GeneratedValue(strategy = GenerationType.AUTO, generator = "CLIENTE_CURSO_SEQ") + @Column(name = "CLIENTECURSO_ID") + private Integer clientecursoId; + @Column(name = "ACTIVO") + private Boolean activo; + @Column(name = "FECMODIF") + @Temporal(TemporalType.TIMESTAMP) + private Date fecmodif; + @Column(name = "USUARIO_ID") + private Integer usuarioId; + + @JoinColumn(name = "CURSO_ID", referencedColumnName = "CURSO_ID") + @ManyToOne + private Curso curso; + @JoinColumn(name = "CLIENTE_ID", referencedColumnName = "CLIENTE_ID") + @ManyToOne + private Cliente cliente; + + public Integer getClientecursoId() { + return clientecursoId; + } + + public void setClientecursoId(Integer clientecursoId) { + this.clientecursoId = clientecursoId; + } + + public Boolean getActivo() { + return activo; + } + + public void setActivo(Boolean activo) { + this.activo = activo; + } + + public Date getFecmodif() { + return fecmodif; + } + + public void setFecmodif(Date fecmodif) { + this.fecmodif = fecmodif; + } + + public Integer getUsuarioId() { + return usuarioId; + } + + public void setUsuarioId(Integer usuarioId) { + this.usuarioId = usuarioId; + } + + public Curso getCurso() { + return curso; + } + + public void setCurso(Curso curso) { + this.curso = curso; + } + + public Cliente getCliente() { + return cliente; + } + + public void setCliente(Cliente cliente) { + this.cliente = cliente; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/entidad/Curso.java b/src/com/rjconsultores/ventaboletos/entidad/Curso.java index ceb3fc860..f32d9498b 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Curso.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Curso.java @@ -2,6 +2,7 @@ package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; import java.util.Date; +import java.util.List; import javax.persistence.Basic; import javax.persistence.Column; @@ -9,6 +10,9 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; @@ -35,6 +39,11 @@ public class Curso implements Serializable { @Column(name = "USUARIO_ID") private Integer usuarioId; + @ManyToMany + @JoinTable(name = "CLIENTE_CURSO", joinColumns = { @JoinColumn(name = "CURSO_ID") }, + inverseJoinColumns = { @JoinColumn(name = "CLIENTE_ID") }) + private List clienteList; + public Integer getCursoId() { return cursoId; } @@ -75,6 +84,14 @@ public class Curso implements Serializable { this.usuarioId = usuarioId; } + public List getClienteList() { + return clienteList; + } + + public void setClienteList(List clienteList) { + this.clienteList = clienteList; + } + @Override public String toString() { return this.nomcurso; diff --git a/src/com/rjconsultores/ventaboletos/service/ClienteCursoService.java b/src/com/rjconsultores/ventaboletos/service/ClienteCursoService.java new file mode 100644 index 000000000..f6f33420d --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/ClienteCursoService.java @@ -0,0 +1,11 @@ +package com.rjconsultores.ventaboletos.service; + +import com.rjconsultores.ventaboletos.entidad.Cliente; +import com.rjconsultores.ventaboletos.entidad.ClienteCurso; +import com.rjconsultores.ventaboletos.entidad.Curso; + +public interface ClienteCursoService extends GenericService { + + public ClienteCurso buscarClienteCurso(Cliente cliente, Curso curso); + +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ClienteCursoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ClienteCursoServiceImpl.java new file mode 100644 index 000000000..96fd3e367 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/impl/ClienteCursoServiceImpl.java @@ -0,0 +1,71 @@ +package com.rjconsultores.ventaboletos.service.impl; + +import java.util.Calendar; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.rjconsultores.ventaboletos.dao.ClienteCursoDAO; +import com.rjconsultores.ventaboletos.entidad.Cliente; +import com.rjconsultores.ventaboletos.entidad.ClienteCurso; +import com.rjconsultores.ventaboletos.entidad.Curso; +import com.rjconsultores.ventaboletos.service.ClienteCursoService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; + +@Service("clienteCursoService") +public class ClienteCursoServiceImpl implements ClienteCursoService { + + @Autowired + private ClienteCursoDAO clienteCursoDAO; + + @Override + public List obtenerTodos() { + return clienteCursoDAO.obtenerTodos(); + } + + @Override + public ClienteCurso obtenerID(Integer id) { + return clienteCursoDAO.obtenerID(id); + } + + @Transactional + @Override + public ClienteCurso suscribir(ClienteCurso entidad) { + + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + + return clienteCursoDAO.suscribir(entidad); + } + + @Transactional + @Override + public ClienteCurso actualizacion(ClienteCurso entidad) { + + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + + return clienteCursoDAO.actualizacion(entidad); + } + + @Transactional + @Override + public void borrar(ClienteCurso entidad) { + + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.FALSE); + + clienteCursoDAO.actualizacion(entidad); + } + + @Override + public ClienteCurso buscarClienteCurso(Cliente cliente, Curso curso) { + return clienteCursoDAO.buscarClienteCurso(cliente, curso); + } + +}