public Mensagem.Mensagem CriarRelatorio(CadastroRelatorio relatorio) { var resultado = validaRelatorioCadastro(relatorio); if (resultado.Codigo == 1) { var relatorioDB = new ZBD.Model.cliente_relatorios(); relatorioDB.idcliente = relatorio.idCliente; relatorioDB.idusuario = relatorio.idUsuario; relatorioDB.nome = relatorio.nome; relatorioDB.datahora = DateTime.Now; relatorioDB.dataini = relatorio.dtInicio; relatorioDB.datafim = relatorio.dtFim; relatorioDB.excluido = false; db.cliente_relatorios.Add(relatorioDB); //Salvar relatorio_empresas foreach (var idempresa in relatorio.ListaEmpresas) { var relatorioempDB = new ZBD.Model.cliente_relatorio_empresas(); relatorioempDB.idempresa = idempresa; relatorioempDB.idclienterelatorio = relatorioDB.idclienterelatorio; db.cliente_relatorio_empresas.Add(relatorioempDB); } //Salvar relatorio_metricas foreach (var metrica in relatorio.ListaMetricas) { var relatoriometDB = new ZBD.Model.cliente_relatorio_metricas(); relatoriometDB.campo = metrica; relatoriometDB.idclienterelatorio = relatorioDB.idclienterelatorio; db.cliente_relatorio_metricas.Add(relatoriometDB); } db.SaveChanges(); return(new Mensagem.Mensagem() { Codigo = relatorioDB.idclienterelatorio, Texto = "Ok", Tipo = Mensagem.Mensagem.tipoMensagem.Sucesso }); } else { return(resultado); } }
private ZRN.Mensagem.Mensagem validaRelatorioCadastro(CadastroRelatorio relatorio) { var nomeRelatorioDB = db.cliente_relatorios.Where(x => x.nome.ToLower().Equals(relatorio.nome.ToLower()) && x.idcliente == relatorio.idCliente).Select(x => x); if (nomeRelatorioDB.Any()) { return(new Mensagem.Mensagem() { Codigo = 0, Texto = "Nome do relatório já cadastrado!", Tipo = Mensagem.Mensagem.tipoMensagem.Erro }); } if (relatorio.dtInicio == null || relatorio.dtFim == null) { return(new Mensagem.Mensagem() { Codigo = 0, Texto = "Selecionar datas para o período de comparação!", Tipo = Mensagem.Mensagem.tipoMensagem.Erro }); } var dias = (relatorio.dtFim - relatorio.dtInicio).TotalDays; if (dias > 30) { return(new Mensagem.Mensagem() { Codigo = 0, Texto = "O intervalo de datas ultrapassou os 30 dias!", Tipo = Mensagem.Mensagem.tipoMensagem.Erro }); } if (relatorio.ListaEmpresas.Count == 0 || relatorio.ListaEmpresas == null) { return(new Mensagem.Mensagem() { Codigo = 0, Texto = "Selecionar pelo menos uma empresa!", Tipo = Mensagem.Mensagem.tipoMensagem.Erro }); } var clienteAcessoTotal = db.clientes.Where(x => x.idclientes == relatorio.idCliente).Select(x => x.vertodasempresas.Value).FirstOrDefault(); if (!clienteAcessoTotal) { var empresasClienteDB = db.cliente_empresas .Where(x => x.idcliente == relatorio.idCliente && x.excluido == false) .Select(x => x.idempresa.Value).ToList(); var resultado = relatorio.ListaEmpresas.Except(empresasClienteDB); if (resultado.Any()) { return(new Mensagem.Mensagem() { Codigo = 0, Texto = "Selecione pelo menos uma empresa!", Tipo = Mensagem.Mensagem.tipoMensagem.Erro }); } } var resultadoCount = relatorio.ListaMetricas.Count; if (resultadoCount == 0) { return(new Mensagem.Mensagem() { Codigo = 0, Texto = "Selecionar pelo menos uma métrica!", Tipo = Mensagem.Mensagem.tipoMensagem.Erro }); } return(new Mensagem.Mensagem() { Codigo = 1, Texto = "Ok", Tipo = Mensagem.Mensagem.tipoMensagem.Sucesso });; }