Open joomoraes opened 3 years ago
if (item.Ativo == true && item.Id != model.Id)
{
if (model.DataInicio <= item.DataInicio && model.DataFim >= item.DataInicio )
{
item.Ativo = false;
db.Entry(item).State = EntityState.Modified;
}else if(model.DataInicio <= item.DataInicio && model.DataFim >= item.DataInicio)
{
item.Ativo = false;
db.Entry(item).State = EntityState.Modified;
}else if(model.DataInicio >= item.DataInicio && model.DataFim >= item.DataInicio && model.DataInicio <= item.DataFim)
{
item.Ativo = false;
db.Entry(item).State = EntityState.Modified;
}
}
Digamos que eu queira construir uma atribuição de tarefas onde elas tenham um determinado tempo de duração, e que elas funcionem através de um checkBox onde a pessoa poderá ativa-la ou desativa-la, mas a partir da condição que o período de tempo de atividade desta tarefa não possa conflitar com demais, e caso conflite ele remove o status de ativo das que estão conflitantes e mantenha os demais que já estão ativos como ativos, obs: isso tudo deve ser feito de forma dinâmica, sem que exista um padrão nem variáveis pré-determinadas, trabalhando dentro de um foreach com chamada do banco comparada ao formulário.
Encontrei bastante dificuldade em atribuição a atividade, não me recordo onde, mas eu já havia ouvido falar que isto era teoricamente impossível, porque o tempo não possui intervalos de tempo, ele tende ao infinito, tendo o único ponto de referencia como dia atual, gostaria de saber se alguém já lidou com problema similar, se existe realmente uma solução ou se isto se trata realmente de um problema mateticamente impossível.
onde
BuscaBanco
são os dados do banco passando dentro de um foreEache
model
são os dados do formulário que o usuário está preenchendoO Algoritmo abaixo apresenta as condições situacionais apresentadas no texto que infelizmente ainda não fui capaz de encontrar uma solução lógica para o problema
USP - Sobre Algoritmos Disjuntos
Neste link é possível encontrar uma referência acadêmica do problema que foi citado, lá eles tratam o problema como
Algoritmos disjuntos
uma expressão usada para justificar a impossibilidade da própria lógica de agrupar um conjunto de três ou mais fatores simultâneos se tratando de um problema onde existe apenas um ponto de referência para uma semirreta oposta tendendo ao infinito em ambas suas extremidades, intervalo.