Exemplo n.º 1
0
        public async Task <ActionResult> LancaPlanilhaPost(ImportacaoPlanilhaAtividadesUsuarioViewModel planmodel)
        {
            CarregaTipos();
            CarregaProjetos();
            CarregaUsuarios();

            if (ModelState.IsValid && planmodel != null && planmodel.Itens.Count > 0)
            {
                try
                {
                    ImportaPlanilhaApplication app = new ImportaPlanilhaApplication(this.db);
                    int linhas = await app.LancarAsync(planmodel);

                    MensagemParaUsuarioViewModel.MensagemSucesso(string.Format("Planilha importada com sucesso! {0} linhas da planilha importadas.", linhas), TempData);
                    return(View("Index"));
                }
                catch (Exception err)
                {
                    MensagemParaUsuarioViewModel.MensagemErro(err.Message, TempData, ModelState);
                    LogServices.LogarException(err);
                }
            }



            return(View(planmodel));
        }
Exemplo n.º 2
0
        public ActionResult LancaPlanilha(ImportacaoPlanilhaAtividadesUsuarioViewModel planmodel)
        {
            CarregaTipos();
            CarregaProjetos();
            CarregaUsuarios();

            return(View(planmodel));
        }
Exemplo n.º 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);
        }