Package com.escuelademanejo.negocio

Source Code of com.escuelademanejo.negocio.UCController

package com.escuelademanejo.negocio;

import java.util.ArrayList;
import java.util.Date;
import java.util.TreeMap;

import com.escuelademanejo.persistencia.FactoryPersistencia;
import com.escuelademanejo.persistencia.IPersistenciaController;

public class UCController implements IUCController {
  /**
   * Esta clase implementa el patron Controller, el sistema es chico as� que
   * usaremos un unico controlador de CU
   */

  private CatalogoClientes catalogoClientes = null;
  private CatalogoTurnos catalogoTurnos = null;

  private Cliente cliReservaTurno = null;
  private Instructor instructor_modif = null; // instructor del CU modificarHorarioInstructor
  private CatalogoInstructores catalogoInstructores;
  private FactoryPersistencia fp;
  private IPersistenciaController ipc; /** cliente al que se le est� reservando el turno  */
 
 
  @Override
  public void ingresarCliente(String username, String clave,
      String nombre_completo, String telefono, String mail,
      Date fecha_nacimiento) throws Exception {
    // TODO Auto-generated method stub

    if (catalogoClientes == null)
      catalogoClientes = CatalogoClientes.getInstance();

    catalogoClientes.addCliente(username, clave, nombre_completo, telefono,
        mail, fecha_nacimiento);

  }
 
  @Override
  public void ingresarTurno(int id_cliente, int id_horario_instructor, Date fecha_turno, String observacion) throws Exception {
    // TODO Auto-generated method stub

    if (catalogoTurnos == null)
      catalogoTurnos = CatalogoTurnos.getInstance()

    catalogoTurnos.addTurno(id_cliente, fecha_turno, id_horario_instructor, observacion);

  }
 

  @Override
  public void modificarCliente(int id, String username, String clave,
      String nombre_completo, String telefono, String mail,
      Date fecha_nacimiento) throws Exception {
    // TODO Auto-generated method stub
   
    if (catalogoClientes == null)
      catalogoClientes = CatalogoClientes.getInstance();
   
    Cliente cli= catalogoClientes.getCliente(id);
    if(clave != null && !clave.isEmpty())
      cli.setClave(clave);
    if(fecha_nacimiento!=null)
      cli.setFecha_nacimiento(fecha_nacimiento);
    if(mail != null && !mail.isEmpty())
      cli.setMail(mail);
    if(nombre_completo!=null && !nombre_completo.isEmpty())
      cli.setNombre_completo(nombre_completo);
    if(telefono!=null && !telefono.isEmpty())
      cli.setTelefono(telefono);
    if(username!=null && !username.isEmpty())
      cli.setUserName(username);
   
    cli.update(); // commiteamos los cambios en la persistencia

  }

  @Override
  public void eliminarCliente(int id_cliente) throws Exception {
    // TODO Auto-generated method stub
    if (catalogoClientes == null)
      catalogoClientes = CatalogoClientes.getInstance();
   
    catalogoClientes.deleteCliente(id_cliente);

  }

  @Override
  public void nuevoTurno(int id_Cliente, Date fecha, int id_hora_inst, String observacion) throws Exception {
    // TODO Auto-generated method stub
    if (catalogoClientes == null)
      catalogoClientes = CatalogoClientes.getInstance();

    cliReservaTurno = catalogoClientes.getCliente(id_Cliente);
    if(cliReservaTurno == null)
      throw new Exception("El cliente "+ id_Cliente +" no existe.");
    if(! HorarioInstructor.existeId(id_hora_inst))
      throw new Exception("El horario-instructor no existen.");
    if (catalogoTurnos == null)
      catalogoTurnos = CatalogoTurnos.getInstance();
    int idTurno = catalogoTurnos.addTurno(id_Cliente, fecha, id_hora_inst, observacion);   
    cliReservaTurno.addNewTurno(idTurno);
  }

  @Override
  public void modificarTurno(int idTurno, int id_Cliente, Date fecha, int id_hora_inst , String observacion) throws Exception {
    // TODO Auto-generated method stub
    if (catalogoTurnos == null)
      catalogoTurnos = CatalogoTurnos.getInstance();
    Turno t = catalogoTurnos.getTurno(idTurno);
    if(t==null)
      throw new Exception("El turno no existe:" + idTurno);
    else{
      if(t.getId_cliente() != id_Cliente){
        throw new Exception("No se permite cambiar el cliente, por favor cree un nuevo turno para este cliente.");
      }
      t.setFecha(fecha);
      t.setId_hi(id_hora_inst);
      if(observacion!=null && !observacion.isEmpty())
        t.setObservacion(observacion);
      t.update();
    }
  }

  @Override
  public void eliminarturno(int id_turno) throws Exception {
    // TODO Auto-generated method stub
    if (catalogoTurnos == null)
      catalogoTurnos = CatalogoTurnos.getInstance();
    Turno t = catalogoTurnos.getTurno(id_turno);
    if(t==null)
      throw new Exception("El turno no existe.");
    else{
      /*Esto no es necesario hacerlo porque el turno no esta asociado
       * al cliente en el actual modelo de datos.
       *
       * Cliente cli= catalogoClientes.getCliente(t.getId_cliente());
       *
       * cli.removeTurno(id_turno);
       */     
      t.delete();
    }
  }

  /**
   * @return Un Treemap donde la key es el id del cliente y el value una lista de string que contiene:
   *       id (el id va ac� tambi�n), username, clave, nombre_completo, telefono, mail, fecha_nacimiento
   */
  @Override
  public TreeMap<Integer, ArrayList<String>> listarClientes() throws Exception {
    // TODO Auto-generated method stub
    TreeMap<Integer, ArrayList<String>> lista = new TreeMap<Integer, ArrayList<String>>();
    if (catalogoClientes == null)
      catalogoClientes = CatalogoClientes.getInstance();
    TreeMap<Integer, Cliente> clientes = catalogoClientes.getClientes();
    if(clientes == null)
      return null;
    Iterable<Cliente> iteratorClientes = clientes.values();
   
    for (Cliente cli : iteratorClientes) {
      lista.put(cli.getId_cliente(), cli.getDatos());
    }
    return lista;
  }
 
  @Override
  public TreeMap<Integer, ArrayList<String>> listarInstructores() throws Exception{
    // TODO Auto-generated method stub
    TreeMap<Integer, ArrayList<String>> lista = new TreeMap<Integer, ArrayList<String>>();
    if (catalogoInstructores == null)
      catalogoInstructores = CatalogoInstructores.getInstance();
    TreeMap<Integer, Instructor> instructores = catalogoInstructores.getInstructores();
    if(instructores == null)
      return null;
    Iterable<Instructor> iteratorInstructor = instructores.values();
   
    for (Instructor inst : iteratorInstructor) {
      lista.put(inst.getId_instructor(), inst.getDatos());
    }
    return lista; 
  }
 
 
  @Override
  public TreeMap<Integer, ArrayList<ArrayList<String>>> listarHorariosInstructores() throws Exception{
    // TODO Auto-generated method stub     
    TreeMap<Integer, ArrayList<ArrayList<String>>> horarios_instructores= null;
   
    FactoryPersistencia factp = FactoryPersistencia.getInstance();
    IPersistenciaController ipc = factp.getIPersistenciaController();
    try {
      horarios_instructores = ipc.selectAllHorariosInstructores();
    } catch ( Exception e ) {
      throw e;
    }
    return horarios_instructores;
 

  /**
   * @see com.escuelademanejo.negocio.UCController#modificarHorarioInstructor(int, java.util.ArrayList)
   * @param id_instructor es el id del instructor al que se le modifican los horarios de trabajo.
   * @param ids_horarios es una lista de ids de horarios en los que trabaja el instructor con id = id_intructor.
   * @return
   * @return nada
   *
   * PRECOND:   - el instructor con id = id_instructor existe
   *         - todos los horarios de ids_horarios existen
   *
   * POSCOND: Para cada id_horario de ids_horario si:
   *       - el instructor ya tiene ese horario no se hace nada.
   *       - el instructor no tiene ese horario asignado se le asigna.
   *       Si un horario asociado actualmente al instructor no est� en la lista ids_horarios se da de baja.
   *
   * @return los turnos que est�n asignados y por tanto sus horarios no se pueden borrar. La siguiente informaci�n es devuelta:
   * para cada fila: turno.fecha, cliente.id, cliente.nombre_completo, instructor.id, instructor.nombre_completo,
   *  id_hora, hora.hora_desde, hora.hora_hasta, id_hora_instructor
   *
   * @throws Exception:
   *           - si el instructor con id = id_instructor no existe
   *           - si algun horario de ids_horarios no existe
   *
   * */
  @Override
  public ArrayList<ArrayList<String>> modificarHorarioInstructor(int id_instructor,
      ArrayList<Integer> ids_horarios) throws Exception {
    // TODO Auto-generated method stub
   
    // si el instructor a modificar el horario es el mismo no lo volvemos a buscar
    if(instructor_modif == null || instructor_modif.getId_instructor() != id_instructor){
      if (catalogoInstructores == null)
        catalogoInstructores = CatalogoInstructores.getInstance();
      instructor_modif = catalogoInstructores.getInstructor(id_instructor);
    }   
    if(instructor_modif == null)
      throw new Exception("El instructor con id = " + id_instructor + "no existe.");
   
    return instructor_modif.changeHorarios(ids_horarios);   
  }

  /**
   *
   * @param id_cliente
   *            Es el id del cliente que se quiere buscar. Para indicar que no
   *            se quiere buscar por id se debe ingresar un numero menor o
   *            igual a cero
   * @param username
   *            Es el nombre de usuario del cliente. Para indicar que no se
   *            quiere buscar por nombre de usuario poner username=null
   *
   * PRECOND: se debe ingresar correctamente alguno de los dos par�metros          
   *
   * @return Un ArrayList de String que contiene: id, username,
   *         clave, nombre_completo, telefono, mail, fecha_nacimiento
   * @throws Exception
   */
  @Override
  public ArrayList<String> getCliente(int id_cliente, String username) throws Exception {
    // TODO Auto-generated method stub
    if (catalogoClientes == null)
      catalogoClientes = CatalogoClientes.getInstance();
   
    return catalogoClientes.getCliente(id_cliente, username).getDatos();
  }

  @Override
  public String validarAdmin(String username, String password) throws Exception {
    // TODO Auto-generated method stub
    fp = FactoryPersistencia.getInstance();
    ipc = fp.getIPersistenciaController();
    return ipc.validarAdmin(username, password);
  }

  @Override
  public TreeMap<Integer,ArrayList<String>> reporte_clientes(Date desde, Date hasta) throws Exception {
    // TODO Auto-generated method stub
    FactoryPersistencia fp = FactoryPersistencia.getInstance();
    IPersistenciaController ipc = fp.getIPersistenciaController();
    return ipc.reporteClientes(desde, hasta);
  }
 
  @Override
  public TreeMap<Integer,ArrayList<String>> reporte_instructores(Date desde, Date hasta) throws Exception {
    // TODO Auto-generated method stub
    FactoryPersistencia fp = FactoryPersistencia.getInstance();
    IPersistenciaController ipc = fp.getIPersistenciaController();
    return ipc.reporteInstructores(desde, hasta);
  }
  /**
   *
   * @return devuelve un Treemap con key= id del horario y value= (id_horario,hora_desde, hora_hasta)
   * @throws Exception
   */
  @Override
  public TreeMap<Integer, ArrayList<String>> getHorarios() throws Exception{
    if(ipc == null){
      if(fp==null)
        fp = FactoryPersistencia.getInstance();
      ipc= fp.getIPersistenciaController();
    }
    return ipc.selectAllHorarios();
  }
 
  @Override
  public TreeMap<Integer,ArrayList<String>> reporte_turnos(Date desde, Date hasta) throws Exception {
    // TODO Auto-generated method stub
    if(ipc == null){
      if(fp==null)
        fp = FactoryPersistencia.getInstance();
      ipc= fp.getIPersistenciaController();
    }
    return ipc.reporteTurnos(desde, hasta);
  }


  /**
   *
   * @param id
   *            Es el id del instructor que se quiere buscar. Para indicar que no
   *            se quiere buscar por id se debe ingresar un numero menor o
   *            igual a cero
   * @param username
   *            Es el nombre de usuario del instructor. Para indicar que no se
   *            quiere buscar por nombre de usuario poner username=null
   *
   * PRECOND: se debe ingresar correctamente alguno de los dos par�metros          
   *
   * @return Un ArrayList de String que contiene: id,  username,
   *         clave, nombre_completo, telefono, mail, modelo_auto, patente
   * @throws Exception
   */ 
  @Override
  public ArrayList<String> getInstructor(int id, String username)
      throws Exception {
    // TODO Auto-generated method stub
    if (catalogoInstructores == null)
      catalogoInstructores = CatalogoInstructores.getInstance();
   
    return catalogoInstructores.getInstructor(id, username).getDatos();
  }
 
  /**
   * 
   * @param id_instructor el id del instructor al que le buscamos los horarios de trabajo
   * @return una matriz donde cada fila es un horario de trabajo del instructor. Cada fila
   *       contiene: id horario-instructor, id del horario, hora desde, hora hasta
   * @throws Exception si ocurre un error al conectarse a la BD o al hacer la consulta
   */
  @Override
  public ArrayList<ArrayList<String>> listarHorariosTrabajaInstructor(
      int id_instructor) throws Exception{
    if(ipc == null){
      if(fp==null)
        fp = FactoryPersistencia.getInstance();
      ipc= fp.getIPersistenciaController();
    }
    return ipc.selectHorariosTrabajaInstructor(id_instructor);
  }
 
  @Override
  public TreeMap<Integer, ArrayList<String>> listarTurnosCliente(int id_cliente) throws Exception {
    ipc = FactoryPersistencia.getInstance().getIPersistenciaController();
    try {
      return ipc.selectTurnosCliente(id_cliente);
    } catch (Exception e) {
      throw e;
    }
  }

  @Override
  public int getIDHorarioInstructor(int id_horario, int id_instructor) throws Exception {
    // TODO Auto-generated method stub
   
    ArrayList<ArrayList<String>> hs = ipc.selectHorariosTrabajaInstructor(id_instructor);
    for (ArrayList<String> h : hs) {
      if(h.get(1).equals(""+ id_horario));
        return Integer.parseInt(h.get(0));
    }
    return 0;
  }
 
  @Override
  public String generarHorariosJSON ( TreeMap<Integer, ArrayList<ArrayList<String>>> data ) throws Exception {
    // TODO Auto-generated method stub
   
    String json = "";   
    for ( int id_inst : data.keySet() ) {
      ArrayList<ArrayList<String>> value = data.get(id_inst);
      String filas = "";     
      for (ArrayList<String> fila : value) {
        filas += fila.get(0) + "-" + fila.get(1) + "-" + fila.get(2) + "/";
      }
      filas = filas.substring(0, filas.length()-1);
      json += id_inst + "|" + filas + "#";
    }
    json = json.substring(0, json.length()-1);
   
    return json;
   
  }
 
}
TOP

Related Classes of com.escuelademanejo.negocio.UCController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.