/// <summary> /// Método responsável por atribuir a data final que a meta será concluída, esta data não será modificada /// </summary> public void SetDataFim(MetasPorLivros meta, Livros livro) { if (PaginasDiarias > 0) { var dias = (livro.QuantidadePaginas / PaginasDiarias); DataFim = DateTime.Now.AddDays(dias); } else if (CapitulosDiarios > 0) { var dias = (livro.QuantidadeCapitulos / CapitulosDiarios); DataFim = DateTime.Now.AddDays(dias); } }
/// <summary> /// Método responsável por calcular a data prevista de conclusão da meta, de acordo com as atualizações do usuário /// </summary> /// <param name="meta"></param> public void SetDataPrevista(MetasPorLivros meta, Livros livro) { var diferencaEntreDatas = DateTime.Now.Subtract(DataCadastro); var leituraEsperada = diferencaEntreDatas.Days * PaginasDiarias; if (PaginasDiarias > 0) { if (PaginasOuCapitulosLidos < leituraEsperada) { var diasEsperados = livro.QuantidadePaginas / PaginasDiarias; var diasAtrasados = diasEsperados - ((livro.QuantidadePaginas - PaginasOuCapitulosLidos) / PaginasDiarias); var dias = Math.Ceiling((double)diasAtrasados); if (DataFim != null) { DataPrevista = DataFim.Value.AddDays(dias); } } else { var diasAdiantados = (livro.QuantidadePaginas - PaginasOuCapitulosLidos) / PaginasDiarias; DataPrevista = DataCadastro.AddDays(diasAdiantados); } } else if (CapitulosDiarios > 0) { if (PaginasOuCapitulosLidos < leituraEsperada) { var diasEsperados = livro.QuantidadeCapitulos / CapitulosDiarios; var diasAtrasados = diasEsperados - ((livro.QuantidadeCapitulos - PaginasOuCapitulosLidos) / CapitulosDiarios); var dias = Math.Ceiling((double)diasAtrasados); if (DataFim != null) { DataPrevista = DataFim.Value.AddDays(dias); } } else { var diasAdiantados = (livro.QuantidadeCapitulos - PaginasOuCapitulosLidos) / CapitulosDiarios; DataPrevista = DataCadastro.AddDays(diasAdiantados); } } }