Esempio n. 1
0
 /// <summary>
 /// construtor padrão, recebe o context e passa para o objeto application
 /// </summary>
 /// <param name="ctx">TPAContext - context do entity framework</param>
 public ImportaPlanilhaApplication(TPAContext ctx)
 {
     _db      = ctx;
     _ativApp = new AtividadeApplication(_db);
 }
Esempio n. 2
0
        /// <summary>
        /// posta os dados retirados da planilha e trabalhados no ImportacaoPlanilhaAtividadesViewModel
        /// </summary>
        /// <param name="planilha">ImportacaoPlanilhaAtividadesViewModel - viewmodel com os dados estruturados e editados para inserção no banco de dados</param>
        /// <returns>int - quantidade de atividades importadas</returns>
        public virtual async Task <int> LancarAsync(ImportacaoPlanilhaAtividadesViewModel planilha)
        {
            int result = 0;

            CalendarioServices cal = new CalendarioServices();

            AtividadeApplication app = new AtividadeApplication(this._db);

            foreach (var i in planilha.Itens)
            {
                try
                {
                    if ((i.Data != null) && (i.Data != DateTime.MinValue) && (cal.IsDiaUtil(i.Data)))
                    {
                        var projeto = await this._db.ProjectNodes.FindAsync(i.IdProjeto);

                        var tipo = await this._db.TiposAtividade.FindAsync(i.IdTipoAtividade);


                        if (planilha is ImportacaoPlanilhaAtividadesUsuarioViewModel)
                        {
                            i.IdUsuario = (planilha as ImportacaoPlanilhaAtividadesUsuarioViewModel).IdUsuario;
                        }

                        Usuario usuario = await this._db.Usuarios.FindAsync(i.IdUsuario);

                        if (usuario == null)
                        {
                            throw new Exception("Usuário da planilha não preenchido");
                        }

                        if (i.EntradaManha != null && i.SaidaManha != null && i.EntradaTarde != null && i.SaidaTarde != null)
                        {
                            if (i.EntradaManha > i.SaidaManha)
                            {
                                throw new Exception("A entrada do primeiro horário não pode ser maior que a saída do primeiro horário");
                            }

                            if (i.EntradaTarde > i.SaidaTarde)
                            {
                                throw new Exception("A entrada do segundo horário não pode ser maior que a saída do segundo horário");
                            }

                            if (i.EntradaManha > i.SaidaTarde)
                            {
                                throw new Exception("A entrada do primeiro horário não pode ser maior que a saída do segundo horário");
                            }

                            if (i.SaidaManha > i.EntradaTarde)
                            {
                                throw new Exception("A saída do primeiro horário não pode ser maior que a entrada do segundo horário");
                            }
                        }

                        if ((i.EntradaManha != null) && (i.SaidaManha != null) && (i.SaidaManha > i.EntradaManha))
                        {
                            await app.SalvarAsync(new Atividade
                            {
                                Observacao    = i.Descricao,
                                Inicio        = i.Data.AddHours(i.EntradaManha.Value.Hours).AddMinutes(i.EntradaManha.Value.Minutes),
                                Fim           = i.Data.AddHours(i.SaidaManha.Value.Hours).AddMinutes(i.SaidaManha.Value.Minutes),
                                ProjectNode   = projeto,
                                TipoAtividade = tipo,
                                Usuario       = usuario
                            }, false);
                        }

                        if ((i.EntradaTarde != null) && (i.SaidaTarde != null) && (i.SaidaTarde > i.EntradaTarde))
                        {
                            await app.SalvarAsync(new Atividade
                            {
                                Observacao    = i.Descricao,
                                Inicio        = i.Data.AddHours(i.EntradaTarde.Value.Hours).AddMinutes(i.EntradaTarde.Value.Minutes),
                                Fim           = i.Data.AddHours(i.SaidaTarde.Value.Hours).AddMinutes(i.SaidaTarde.Value.Minutes),
                                ProjectNode   = projeto,
                                TipoAtividade = tipo,
                                Usuario       = usuario
                            }, false);
                        }
                    }
                }
                catch (DbEntityValidationException ex)
                {
                    string exceptionMessage = LogServices.ConcatenaErrosDbEntityValidation(ex);
                    throw new Exception("Problemas com a validação das entities: " + exceptionMessage, ex);
                }
                catch (Exception err)
                {
                    LogServices.LogarException(err);
                    throw new Exception("Erro: " + err.Message, err);
                }
                finally
                {
                    result++;
                }
            }

            return(result);
        }