package com.escuelademanejo.negocio;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import com.escuelademanejo.persistencia.FactoryPersistencia;
import com.escuelademanejo.persistencia.IPersistenciaController;
public class Cliente extends Usuario {
private int id_cliente;
private Date fecha_nacimiento;
private ArrayList<Integer> turnos;
private IPersistenciaController iPersistController = null;
public Cliente(String username, String clave, String nombre_completo,
String telefono, String mail, Date fecha_nacimiento,
ArrayList<Integer> turnos) throws Exception {
super(username, clave, "", nombre_completo, telefono, mail);
FactoryPersistencia factPersistencia = FactoryPersistencia
.getInstance();
iPersistController = factPersistencia.getIPersistenciaController();
this.fecha_nacimiento = fecha_nacimiento;
this.turnos = turnos;
this.setTipo(iPersistController.get_TIPO_CLIENTE());
this.id_cliente = -1; // no se asigna id todavia se hace desde la
// persistencia
}
/**
* @param datos_cli= lista de string que contiene:
* id , username, clave, nombre_completo, telefono, mail, fecha_nacimiento(dd-mm-yyyy)
* @throws Exception
*/
public Cliente(ArrayList<String> datos_cli) throws Exception {
// TODO Auto-generated constructor stub
super(datos_cli.get(1), datos_cli.get(2), "", datos_cli.get(3), datos_cli.get(4), datos_cli.get(5));
SimpleDateFormat formatoDelTexto = new SimpleDateFormat("dd-mm-yyyy");
String strFecha = datos_cli.get(6);
this.fecha_nacimiento = formatoDelTexto.parse(strFecha);
FactoryPersistencia factPersistencia = FactoryPersistencia
.getInstance();
iPersistController = factPersistencia.getIPersistenciaController();
this.setTipo(iPersistController.get_TIPO_CLIENTE());
if (!datos_cli.get(0).isEmpty())
this.id_cliente = Integer.valueOf(datos_cli.get(0));
}
public int save() throws Exception {
this.id_cliente = iPersistController.addUsuario(getUserName(),
getClave(), getNombre_completo(), getTelefono(), getMail(),
iPersistController.get_TIPO_CLIENTE(), null, null, getFecha_nacimiento());
if (this.getTurnos() != null) {
iPersistController.addTurnosACliente(this.getId_cliente(),
this.getTurnos());
}
return this.id_cliente;
}
public int getId_cliente() {
return id_cliente;
}
public Date getFecha_nacimiento() {
return fecha_nacimiento;
}
public void setFecha_nacimiento(Date fecha_nacimiento) {
this.fecha_nacimiento = fecha_nacimiento;
}
public ArrayList<Integer> getTurnos() {
return turnos;
}
public void setTurnos(ArrayList<Integer> turnos) {
this.turnos = turnos;
}
/**
*
* @return devuelve un ArrayList de Strings que contiene los siguientes datos del Cliente:
* id, username, clave, nombre_completo, telefono, mail, fecha_nacimiento
*/
public ArrayList<String> getDatos() {
// TODO Auto-generated method stub
ArrayList<String> datos = new ArrayList<String>();
datos.add(Integer.toString(getId_cliente()));
datos.add(getUserName());
datos.add(getClave());
datos.add(getNombre_completo());
datos.add(getTelefono());
datos.add(getMail());
SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd-MM-yyyy");
datos.add(formatoDeFecha.format(getFecha_nacimiento()));
return datos;
}
public void addNewTurno(int idTurno) throws Exception {
// TODO Auto-generated method stub
if (turnos.contains(idTurno))
throw new Exception("El cliente " + getId_cliente()
+ "ya tiene asociado el turno " + idTurno);
else {
turnos.add(idTurno);
iPersistController.addTurnosACliente(this.getId_cliente(),
new ArrayList<Integer>(idTurno));
}
}
public void update() throws Exception {
iPersistController.updateUsuario(this.getId_cliente(),
this.getUserName(), this.getClave(), this.getNombre_completo(),
this.getTelefono(), this.getMail(), iPersistController.get_TIPO_CLIENTE(), null,
null, this.getFecha_nacimiento());
iPersistController.setTurnosACliente(this.getId_cliente(),
this.getTurnos());
}
public void delete() throws Exception {
// TODO Auto-generated method stub
iPersistController.deleteUsuario(this.id_cliente, null);
}
public void removeTurno(int id_turno) {
// TODO Auto-generated method stub
this.turnos.remove(id_turno);
iPersistController.removeTurnoDeCliente(this.getId_cliente(), id_turno);
}
}