/// <summary> /// obtém as raízes de uma HierarchicalList /// </summary> /// <param name="lista">HierarchicalList - lista hierárquica a se obterem as raizes</param> /// <returns>HierarchicalList - lista apenas com as raízes</returns> private TFWHierarchicalList _getRoots(TFWHierarchicalList lista) { //return lista.GetRoot(); var orfaos = lista.Where(x => !lista.Select(i => i.Id).Contains(x.IdPai ?? 0)).ToList(); return(new TFWHierarchicalList(orfaos)); }
/// <summary> /// Carrega ou recarrega todos os projectnodes em uma estrutura TFWHierarquicalList e traz o elemento correspondente /// </summary> /// <param name="id"></param> /// <returns></returns> public virtual TFWHierarchicalParameter GetProjectNode(int id) { if (AreNewProjectNodes()) { _projectNodes.Clear(); foreach (ProjectNode pn in _db.ProjectNodes) { _projectNodes.Add(pn.Id, pn.Pai_Id, pn.Nome); } } return(_projectNodes.Where(p => p.Id == id).FirstOrDefault()); }
/// <summary> /// importa uma planilha do excel com atividades para um usuário /// </summary> /// <param name="idUsuario">int - id do usuário</param> /// <param name="pkg">ExcelPackage - package da Epplus criado com os dados da planilha como stream</param> /// <returns>ImportacaoPlanilhaAtividadesUsuarioViewModel - viewmodel com as atividades para serem editadas e postadas</returns> public virtual ImportacaoPlanilhaAtividadesUsuarioViewModel TransformarPlanilhaUsuario(int idUsuario, ExcelPackage pkg) { TFWHierarchicalList projetos = new TFWHierarchicalList(); foreach (var pn in _db.ProjectNodes.AsNoTracking().ToList()) { projetos.Add(pn.Id, pn.Pai == null? new Nullable <int>() : pn.Pai.Id, pn.Nome); } ImportacaoPlanilhaAtividadesUsuarioViewModel result = new ImportacaoPlanilhaAtividadesUsuarioViewModel(); CalendarioServices cal = new CalendarioServices(); result.IdUsuario = idUsuario; const int LINHA_INICIAL = 15; const int LINHA_FINAL = 79; const int COLUNA_PROJETO = 1; const int COLUNA_DATA = 2; const int COLUNA_ENTM = 3; const int COLUNA_SAIM = 4; const int COLUNA_ENTT = 5; const int COLUNA_SAIT = 6; const int COLUNA_HORAS = 9; const int COLUNA_TIPOATIVIDADE = 10; const int COLUNA_DESCRICAO = 11; var currentSheet = pkg.Workbook.Worksheets; var workSheet = currentSheet.First(); var noOfCol = workSheet.Dimension.End.Column; var noOfRow = workSheet.Dimension.End.Row; for (int rowIterator = LINHA_INICIAL; rowIterator <= noOfRow || rowIterator <= LINHA_FINAL; rowIterator++) { ItemImportacaoPlanilha item = new ItemImportacaoPlanilha(); item.IdUsuario = idUsuario; TimeSpan qtdHoras = ExcelToTimeSpan(workSheet.Cells[rowIterator, COLUNA_HORAS].Value); if ((workSheet.Cells[rowIterator, COLUNA_PROJETO].Value != null) && (qtdHoras > TimeSpan.MinValue)) { DateTime?data = ExcelToNullableDateTime(workSheet.Cells[rowIterator, COLUNA_DATA].Value); //a data tem que ser não nula e dia util if ((data != null) && (cal.IsDiaUtil(data.Value))) { item.Data = data.Value; item.Descricao = workSheet.Cells[rowIterator, COLUNA_DESCRICAO].Value != null ? workSheet.Cells[rowIterator, COLUNA_DESCRICAO].Value.ToString() : ""; item.EntradaManha = ExcelToNullableTimeSpan(workSheet.Cells[rowIterator, COLUNA_ENTM].Value); item.SaidaManha = ExcelToNullableTimeSpan(workSheet.Cells[rowIterator, COLUNA_SAIM].Value); item.EntradaTarde = ExcelToNullableTimeSpan(workSheet.Cells[rowIterator, COLUNA_ENTT].Value); item.SaidaTarde = ExcelToNullableTimeSpan(workSheet.Cells[rowIterator, COLUNA_SAIT].Value); if (workSheet.Cells[rowIterator, COLUNA_PROJETO].Value != null) { string nome = workSheet.Cells[rowIterator, COLUNA_PROJETO].Value.ToString(); //procura por path completo var proj = projetos.Where(n => n.ValorPath == nome).FirstOrDefault(); if (proj != null) { item.IdProjeto = proj.Id; } else { //procura só por nome proj = projetos.Where(n => n.Valor == nome).FirstOrDefault(); if (proj != null) { item.IdProjeto = proj.Id; } } } if (workSheet.Cells[rowIterator, COLUNA_TIPOATIVIDADE].Value != null) { string nome = workSheet.Cells[rowIterator, COLUNA_TIPOATIVIDADE].Value.ToString(); var atv = _db.TiposAtividade.Where(n => n.Nome == nome).FirstOrDefault(); if (atv != null) { item.IdTipoAtividade = atv.Id; } } result.Itens.Add(item); } } } return(result); }