public bool Insercao(PerfilFuncionalidadeModelo perfilFuncionalidadeModelo) { try { if (perfilFuncionalidadeModelo.Funcionalidades == null) { throw new Exception("É necessário informar as funcionalidades!"); } if (string.IsNullOrEmpty(perfilFuncionalidadeModelo.eightIDUsuarioModificador)) { throw new Exception("O usuário modificador não foi informado!"); } //Registra o LOG /* * List<FUNCIONALIDADE> funcionalidades = new List<FUNCIONALIDADE>(); * logPerfilFuncionalidadePersistencia.BuscaEInsereFuncionalidades(perfilFuncionalidadeModelo.eightIDUsuarioModificador, * perfilFuncionalidadeModelo.CodPerfil,perfilFuncionalidadeModelo.CodTela, * AutoMapper.Mapper.Map(perfilFuncionalidadeModelo.Funcionalidades, funcionalidades)); */ bool result = false; result = this.perfisPersistencia.Insercao(perfilFuncionalidadeModelo); return(result); } catch (Exception ex) { throw ex; } }
public bool Insercao(PerfilFuncionalidadeModelo perfilFuncionalidadeModelo) { using (var entities = databaseEntities.GetDB_LaborSafetyEntities()) { //Verifica se o perfil existe var perfilExistente = entities.PERFIL.Where(x => x.CodPerfil == perfilFuncionalidadeModelo.CodPerfil).Select(x => x.CodPerfil).FirstOrDefault(); if (perfilExistente == 0) { throw new Exception("O perfil informado é inválido!"); } //Verifica se a tela existe var telaExistente = entities.TELA.Where(x => x.CodTela == perfilFuncionalidadeModelo.CodTela).Select(x => x.CodTela).FirstOrDefault(); if (telaExistente == 0) { throw new Exception("A tela informada é inválida!"); } List <FuncionalidadeModelo> funcionalidades = perfilFuncionalidadeModelo.Funcionalidades; using (var transaction = entities.Database.BeginTransaction()) { try { entities.PERFIL_FUNCIONALIDADE.RemoveRange( entities.PERFIL_FUNCIONALIDADE .Where(perfil => perfil.CodPerfil == perfilExistente && perfil.CodTela == telaExistente).ToList()); for (int i = 0; i < funcionalidades.Count; i++) { entities.PERFIL_FUNCIONALIDADE.Add(new PERFIL_FUNCIONALIDADE() { CodPerfil = (long)perfilExistente, CodFuncionalidade = (long)funcionalidades[i].CodFuncionalidade, CodTela = telaExistente, Edicao = true }); } entities.SaveChanges(); transaction.Commit(); } catch (Exception exception) { transaction.Rollback(); throw exception; } } } return(true); }
public IHttpActionResult AssociarFuncionalidades(PerfilFuncionalidadeModelo perfilFuncionalidadeModelo) { try { bool result; result = this.perfilNegocio.Insercao(perfilFuncionalidadeModelo); return(Ok(GeradorResponse.GenerateSuccessResponse((int)HttpStatusCode.OK, $"Inserção das funcionalidades ocorrida com sucesso", result))); } catch (InvalidOperationException exception) { throw new Exception(GeradorResponse.GenerateErrorResponseString((int)HttpStatusCode.NotFound, "Perfil ou funcionalidade não encontrado.", exception), exception); } catch (Exception exception) { throw new Exception(GeradorResponse.GenerateErrorResponseString((int)HttpStatusCode.BadRequest, "Erro ao inserir funcionalidades para o perfil.", exception), exception); } }