Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal... Estou fazendo um mini sistema que quando eu terminar irei disponibilizar para qualquer um que queira baixar e utilizar, por isto as vezes surgem dificuldades e eu pergunto por aqui.
O sistema consiste em marcar tarefas em uma espécie de calendário de datas diárias com intervalos de meia hora para cada dia, então no dia de hoje terá espaços para 07:30, 08:00 etc.
Acontece que quando o usuário vai criar uma nova tarefa, eu preciso de verificar se a duração que ele escolheu para a tarefa não passa por cima de uma tarefa que está na frente.
Ex: o usuário marcar uma tarefa para o nosso motorista começando às 08:00 com duração de 3 horas e depois outro usuário marca uma tarefa para às 09:00.
Concluí que a melhor forma de fazer isto seria criando intervalos de meia hora no banco de dados mas não sei como verificar todos os intervalos de meia hora de acordo com a duração da tarefa que o usuário escolheu. Acho que está meio confuso, mas é tipo isso:
1º Tarefa: 2 horas (4 intervalos de 30min.) e inicia as 07:30
2º Tarefa: 1 hora (2 intervalos de 30min.) e inicia às 08:30
Quero achar uma forma de "scanear" este intervalo e se algum dos intervalos que a 2º tarefa necessita para ser concluída estiverem ocupados não inserir no banco.
A tabela tem a seguinte estrutura:
eventos (
id(int) auto_increment primary_key
evento(varchar)
nome(varchar) // utilizado para verificar o nome do motorista
data(data)
inicio(varchar) // acho que poderia ser outro se facilitar
termino(varchar)
duracao(float)
)
Estou quebrando a cabeça já, se alguém puder me ajudar...
Bom dia, valeu ai de novo você me ajudou William, deu certo o que eu queria, mas só vou terminar no ano que vem, valeu!
cara, "duração" é o resultado de uma conta entre 2 campos, então não deveria existir essa coluna.
início e término devem ser do tipo DATETIME, assim elimininando a necessidade do campo "data"
com essa modelagem que sugeri, fica muito mais simples de trabalhar.
Antes de inserir outra data de início, vc deve verificar no banco com um BETWEEN, se esse DATETIME já não está no range de algum outro.
Eu também não pensaria em 30 minutos, pq isso limita a aplicação, e te impossibilita por exemplo, de fazer tarefas de 10min, 15min, 2min... sem ter que remodelar muito da aplicação. Sempre pense em soluções robustas, deixando o caminho pronto.