package br.com.doctors.converters.agendamento; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; import org.joda.time.LocalDate; import org.joda.time.LocalTime; import org.joda.time.format.DateTimeFormatter; import br.com.doctors.modelo.agendamento.Agendamento; import br.com.doctors.modelo.util.ParametrosAgendamento; public class HorarioJsonImpl implements HorarioJson { private Map<String,String> atributos; private Long id; private HorarioJsonImpl(){ atributos = new LinkedHashMap<String, String>(); } public HorarioJsonImpl( Agendamento agendamento, ParametrosAgendamento parametros) { this(); this.id = agendamento.getId(); atributos.put("idAgendamento", verifica(agendamento.getId()) ); LocalDate dataAgendamento = agendamento.getDataAgendamento(); atributos.put("data", verifica(dataAgendamento.toString(parametros.getDataFormatter()))); System.out.println(atributos.get("data")); LocalTime horaAgendamento = agendamento.getHoraAgendamento(); atributos.put("horario", geraHorario(parametros, horaAgendamento)); atributos.put("idPaciente", verifica(agendamento.getPaciente().getId())); atributos.put("nomePaciente", verifica(agendamento.getNomePaciente())); atributos.put("status",verifica(agendamento.getStatus())); atributos.put("convenio", (agendamento.getConvenio() != null ? agendamento.getConvenio().getNome() : "Particular")); atributos.put("idMedico", verifica(agendamento.getMedico().getId())); atributos.put("nomeMedico", verifica(agendamento.getMedico().getNome())); atributos.put("idFuncionario", verifica((agendamento.getFuncionario()!= null ? agendamento.getFuncionario().getId() : "0"))); atributos.put("nomeFuncionario", verifica((agendamento.getFuncionario()!= null ? agendamento.getFuncionario().getNome() : "Ainda n�o foi confirmado"))); LocalDate dataNascimento = agendamento.getPaciente().getDataNascimento() ; String dataNascAsString = dataNascimento != null ? dataNascimento.toString(parametros.getDataFormatter()) : ""; atributos.put("dataNascimento", verifica(dataNascAsString)); } private String geraHorario(ParametrosAgendamento parametros, LocalTime horaAgendamento) { DateTimeFormatter horaFormatter = parametros.getHoraFormatter(); String horarioInicial = horaAgendamento.toString(horaFormatter); String horarioFinal = parametros.proximaConsultaApos(horaAgendamento).toString(horaFormatter); String horario = horarioInicial + " - " + horarioFinal; return horario; } public Long getId() { return id; } @Override public Map<String,String> getCells() { return atributos; } private String verifica(Object campo) { return campo!= null ? campo.toString() : ""; } private void addAtributo(String nomeAtributo, String valorAtributo){ atributos.put(nomeAtributo, valorAtributo); } public static HorarioJsonImpl criaHorarioLivre(LocalDate data, LocalTime horaAtual, ParametrosAgendamento parametros ) { HorarioJsonImpl horarioJson = new HorarioJsonImpl(); horarioJson.addAtributo("idAgendamento", "0"); DateTimeFormatter dataFormatter = parametros.getDataFormatter(); horarioJson.addAtributo("data", data.toString(dataFormatter)); horarioJson.addAtributo("horario", horarioJson.geraHorario(parametros, horaAtual)); horarioJson.addAtributo("idPaciente", "0"); horarioJson.addAtributo("nomePaciente", ""); horarioJson.addAtributo("status", "Livre"); horarioJson.addAtributo("convenio", ""); horarioJson.addAtributo("idMedico", "0"); horarioJson.addAtributo("nomeMedico", ""); horarioJson.addAtributo("idFuncionario", "0"); horarioJson.addAtributo("nomeFuncionario", ""); return horarioJson; } @Override public String toString() { return atributos.toString(); } }