public Agenda Get(int idClinica, int idOdontologista) { using (var repositorio = new AgendaRepositorio(new Connection(new System.Data.SqlClient.SqlConnection()))) { return(repositorio.Buscar(new Agenda() { IdClinica = idClinica, IdOdontologista = idOdontologista }).FirstOrDefault()); } }
public IEnumerable <OdontologistaAgendamento> Todos(DateTime data, int idClinica) { var conexao = new Connection(new System.Data.SqlClient.SqlConnection()); try { using (var repositorioOdonto = new OdontologistaRepositorio(conexao)) { var listaOdonto = new List <OdontologistaAgendamento>(); repositorioOdonto.Buscar(idClinica).ToList().ForEach( x => listaOdonto.Add(new OdontologistaAgendamento() { Odontologista = x })); using (var repositorioAgenda = new AgendaRepositorio(conexao)) { using (var repositorioAgendamento = new AgendamentoRepositorio(conexao)) { using (var repositorioSemana = new SemanaAgendaRepositorio(conexao)) { using (var repositorioDia = new DiaAgendaRepositorio(conexao)) { using (var repositorioDayOff = new AgendaDayOffRepositorio(conexao)) { foreach (var item in listaOdonto) { var agenda = repositorioAgenda.Buscar(new Agenda() { IdClinica = idClinica, IdOdontologista = item.Odontologista.Id }).FirstOrDefault(); if (agenda != null) { var agendamentos = repositorioAgendamento.Buscar(new Agendamento() { IdAgenda = agenda.Id }).Where(x => x.Data == data.Date); var semana = repositorioSemana.Buscar(new SemanaAgenda() { IdClinica = idClinica, IdOdontologista = item.Odontologista.Id }).Where(x => x.DiaSemana == (int)data.DayOfWeek + 1); var dia = repositorioDia.Buscar(new DiaAgenda() { IdClinica = idClinica, IdOdontologista = item.Odontologista.Id }).Where(x => x.Data == data.Date); var dayOff = repositorioDayOff.Buscar(new AgendaDayOff() { IdClinica = idClinica, IdOdontologista = item.Odontologista.Id }).Where(x => x.Data == data.Date); var listaAgendamentos = new List <Agendamento>(); if (dayOff.Count() >= 1) { return(null); } if (dia.Count() >= 1) { foreach (var d in dia.Where(x => x.Data.Date == data.Date)) { TimeSpan horario = d.HorarioAtendimentoInicio; do { if (agendamentos.Where(x => x.Data.Date == data.Date && x.Horario >= horario && x.Horario < horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)) ).Count() > 0) { var agendamento = agendamentos.Where(x => x.Data.Date == data.Date && x.Horario >= horario && x.Horario < horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)) ).FirstOrDefault(); listaAgendamentos.Add(new Agendamento() { Id = agendamento.Id, Data = agendamento.Data, Horario = agendamento.Horario, IdAgenda = agenda.Id, IdOdonto = agenda.IdOdontologista, IdPaciente = agendamento.IdPaciente, Nome = agendamento.Nome }); } else { listaAgendamentos.Add(new Agendamento() { Id = 0, Data = data.Date, Horario = horario, IdAgenda = agenda.Id, IdOdonto = agenda.IdOdontologista, IdPaciente = 0 }); } horario = horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)); } while (horario <= d.HorarioAtendimentoTermino); } } if (semana.Count() >= 1) { foreach (var s in semana.Where(x => x.DiaSemana == (int)data.DayOfWeek + 1)) { TimeSpan horario = s.HorarioAtendimentoInicio; do { if (agendamentos.Where(x => x.Data.Date == data.Date && x.Horario >= horario && x.Horario < horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)) ).Count() > 0) { var agendamento = agendamentos.Where(x => x.Data.Date == data.Date && x.Horario >= horario && x.Horario < horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)) ).FirstOrDefault(); listaAgendamentos.Add(new Agendamento() { Id = agendamento.Id, Data = agendamento.Data, Horario = agendamento.Horario, IdAgenda = agenda.Id, IdOdonto = agenda.IdOdontologista, IdPaciente = agendamento.IdPaciente, Nome = agendamento.Nome }); } else { listaAgendamentos.Add(new Agendamento() { Id = 0, Data = data.Date, Horario = horario, IdAgenda = agenda.Id, IdOdonto = agenda.IdOdontologista, IdPaciente = 0 }); } horario = horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)); } while (horario <= s.HorarioAtendimentoTermino); } } item.Agendamentos = listaAgendamentos; } } } } } } } return(listaOdonto); } } catch (Exception ex) { throw ex; } finally { conexao.Dispose(); } }
public IEnumerable <DateTime> DiasDisponiveis(int meses, int idOdontologista, int idClinica) { var conexao = new Connection(new System.Data.SqlClient.SqlConnection()); using (var repositorio = new AgendaRepositorio(conexao)) { var agenda = repositorio.Buscar(new Agenda() { IdClinica = idClinica, IdOdontologista = idOdontologista }).FirstOrDefault(); if (agenda == null) { return(null); } using (var repositorioAgendamento = new AgendamentoRepositorio(conexao)) { var agendamentos = repositorioAgendamento.Buscar(new Agendamento() { IdAgenda = agenda.Id }); using (var repositorioSemana = new SemanaAgendaRepositorio(conexao)) { var semana = repositorioSemana.Buscar(new SemanaAgenda() { IdClinica = idClinica, IdOdontologista = idOdontologista }); using (var repositorioDia = new DiaAgendaRepositorio(conexao)) { var dia = repositorioDia.Buscar(new DiaAgenda() { IdClinica = idClinica, IdOdontologista = idOdontologista }); using (var repositorioDayOff = new AgendaDayOffRepositorio(conexao)) { var dayOff = repositorioDayOff.Buscar(new AgendaDayOff() { IdClinica = idClinica, IdOdontologista = idOdontologista }); var listaDatas = new List <DateTime>(); var dataAtual = DateTime.Now; while (dataAtual <= DateTime.Now.AddMonths(meses)) { if (dayOff.Where(x => x.Data.Date == dataAtual.Date).Count() >= 1) { dataAtual = dataAtual.AddDays(1); continue; } if (dia.Where(x => x.Data.Date == dataAtual.Date).Count() >= 1) { foreach (var d in dia.Where(x => x.Data.Date == dataAtual.Date)) { TimeSpan horario = d.HorarioAtendimentoInicio; do { if (agendamentos.Where(x => x.Data.Date == dataAtual.Date && x.Horario >= horario && x.Horario < horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)) ).Count() == 0) { listaDatas.Add(dataAtual); horario = d.HorarioAtendimentoTermino.Add(new TimeSpan(90000)); } else { horario = horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)); } } while (horario <= d.HorarioAtendimentoTermino); } } if (semana.Where(x => x.DiaSemana == (int)dataAtual.DayOfWeek + 1).Count() >= 1 && listaDatas.Where(x => x.Date == dataAtual.Date).Count() == 0) { foreach (var s in semana.Where(x => x.DiaSemana == (int)dataAtual.DayOfWeek + 1)) { TimeSpan horario = s.HorarioAtendimentoInicio; do { if (agendamentos.Where(x => x.Data.Date == dataAtual.Date && x.Horario >= horario && x.Horario < horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)) ).Count() == 0) { listaDatas.Add(dataAtual); horario = s.HorarioAtendimentoTermino.Add(new TimeSpan(90000)); } horario = horario.Add(new TimeSpan(0, 0, agenda.TempoAtendimento, 0, 0)); } while (horario <= s.HorarioAtendimentoTermino); } } dataAtual = dataAtual.AddDays(1); } return(listaDatas); } } } } } }