/// <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); }
/// <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); }