public (TRelacion relacio, bool existe) CrearRelacion(string propiedadIdElemento1, int idElemento1, int idElemento2, bool errorSiYaExiste) { var registro = ApiDeRegistro.RegistroVacio <TRelacion>(); if (!registro.ImplementaUnaRelacion()) { throw new Exception($"El registro {typeof(TRelacion)} no es de relación."); } var filtros = new List <ClausulaDeFiltrado>(); DefinirFiltroDeRelacion(registro, filtros, propiedadIdElemento1, idElemento1, idElemento2); var registros = ValidarAntesDeRelacionar(filtros).ToList(); if (registros.Count != 0 && errorSiYaExiste) { GestorDeErrores.Emitir($"El registro {registro} ya existe"); } if (registros.Count == 0) { MapearDatosDeRelacion(registro, propiedadIdElemento1, idElemento1, idElemento2); return(PersistirRegistro(registro, new ParametrosDeNegocio(enumTipoOperacion.Insertar)), false); } return(registros[0], true); }
protected virtual IQueryable <TRegistro> AplicarJoins(IQueryable <TRegistro> registros, List <ClausulaDeFiltrado> filtros, List <ClausulaDeJoin> joins, ParametrosDeNegocio parametros) { if (ApiDeRegistro.ImplementaUnElemento(typeof(TRegistro)) && HacerJoinCon(parametros, ltrJoinAudt.IncluirUsuarioDtm)) { registros = registros.Include(e => ((IElementoDtm)e).UsuarioCreador); registros = registros.Include(e => ((IElementoDtm)e).UsuarioModificador); } return(registros); }
internal static Type TipoDtm(this enumNegocio negocio) { var negocioDto = LeerNegocioPorEnumerado(negocio); if (negocioDto.ElementoDto.IsNullOrEmpty()) { throw new Exception($"El negocio {negocio} no tiene definido el tipo Dtm"); } var tipoDto = ApiDeRegistro.ObtenerTypoDtm(negocioDto.ElementoDtm); return(tipoDto); }