Hoje, 22/07/2021, os horários disponíveis no app do Motorista vêm de um array (lista) que colocamos no próprio front-end:
- const horas = ['08:00', '08:30', '09:00', '09:30', ....];
A única limitação que há é a de não poder selecionar horários anteriores e próximos à hora atual.
Alterações
A intenção é passar toda lógica para o back-end, que retornará a lista de horários, e o front-end será responsável apenas por chamar o endpoint passando o dia selecionado.
Quais validações haverá no back-end?
- Horários bloqueados pelo próprio estabelecimento: por algum motivo, o profissional poderá ficar ausente, seja por férias ou algum compromisso, e poderá informar a data e horário iniciais e finais no seu app.
- Limite de agendamentos no mesmo horário: o estabelecimento poderá escolher quantos agendamentos ele permitirá no mesmo horário. Exemplo: caso ele escolha 3, se tivermos 3 agendamentos no mesmo dia e horário, essa hora será bloqueada no app do Motorista.
- Horário de funcionamento do estabelecimento: o profissional informará, no cadastro, o seu horário e os dias de funcionamento e limitaremos a lista baseando-se neles. Exemplo: se funciona das 09 às 18, aparecerão no app apenas das 09 às 17.
- Intervalo entre os horários: o profissional escolherá o intervalo que quer entre os horários que aparecerão no app, se é 30min, 1h, 1h30, etc. Exemplo: se escolhido o intervalo de 1h, aparecerá ['09:00', '10:00', '11:00', ...]. O estabelecimento escolhe os horários q qr.
Bloqueios
Possibilidade de bloquear:
- Períodos (data inicial e final)
- Alguns horários, podendo ser exclusivos para cidades, estabelecimentos e/ou dias da semana
- olhar todos ifs que tem no timeInput app
Lógica do blocked dates:
- establishment_id: para identificar o estabelecimento, pode ser null mas não ao mesmo tempo que city_id.
- city_id: para identificar a cidade do bloqueio, pode ser null mas não ao mesmo tempo que establishment_id.
- weekday: para restringir o bloqueio a apenas um dia da semana, pode ser null
- initial_date: data do inicio do bloqueio, pode ser null caso weekday não seja
- final_date: data do final do bloqueio, pode ser null caso weekday não seja
- initial_time: horário inicial do bloqueio, pode ser null se initial_date e final_date não forem
- final_time: horário final do bloqueio, pode ser null quando não initial_time também for
DONE