예제 #1
0
        /// <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));
        }
예제 #2
0
        /// <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());
        }
예제 #3
0
        /// <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);
        }