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);
 }
Exemple #3
0
        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);
        }