public IEnumerable <TElemento> MapearElementos(List <TRegistro> registros, ParametrosDeMapeo parametros = null)
        {
            if (parametros == null)
            {
                parametros = new ParametrosDeMapeo();
            }

            var lista = new List <TElemento>();

            foreach (var registro in registros)
            {
                var elemento = MapearElemento(registro, parametros);
                if (elemento != null)
                {
                    lista.Add(elemento);
                }
            }
            return(lista.AsEnumerable());
        }
        public IEnumerable <TElemento> LeerElementos(int posicion, int cantidad, List <ClausulaDeFiltrado> filtros, List <ClausulaDeOrdenacion> orden, Dictionary <string, object> opcionesDeMapeo)
        {
            if (!opcionesDeMapeo.ContainsKey(nameof(ParametrosDeNegocio.Operacion)))
            {
                opcionesDeMapeo.Add(nameof(ParametrosDeNegocio.Operacion), enumTipoOperacion.LeerSinBloqueo.ToString());
            }

            var to          = opcionesDeMapeo[nameof(ParametrosDeNegocio.Operacion)].ToTipoOperacion();
            var aplicarJoin = opcionesDeMapeo.ContainsKey(nameof(ParametrosDeNegocio.AplicarJoin)) ? (bool)opcionesDeMapeo[nameof(ParametrosDeNegocio.AplicarJoin)] : true;
            var p           = new ParametrosDeNegocio(to, aplicarJoin);

            List <TRegistro> elementosDeBd = LeerRegistros(posicion, cantidad, filtros, orden, null, p);

            ParametrosDeMapeo parametrosDelMapeo = opcionesDeMapeo.Count > 0 ? new ParametrosDeMapeo()
            {
                Opciones = opcionesDeMapeo
            } : null;

            return(MapearElementos(elementosDeBd, parametrosDelMapeo));
        }
        public TElemento MapearElemento(TRegistro registro, ParametrosDeMapeo parametros = null)
        {
            if (parametros == null)
            {
                parametros = new ParametrosDeMapeo();
            }

            if (parametros.AnularMapeo)
            {
                return(null);
            }

            TElemento elemento = null;

            elemento = Mapeador.Map <TRegistro, TElemento>(registro,
                                                           opt =>
            {
                opt.BeforeMap((registro, elemento) => AntesDeMapearElemento(registro, parametros));
                opt.AfterMap((registro, elemento) => DespuesDeMapearElemento(registro, elemento, parametros));
            }
                                                           );

            return(elemento);
        }
        protected virtual void DespuesDeMapearElemento(TRegistro registro, TElemento elemento, ParametrosDeMapeo parametros)
        {
            if (registro.ImplementaUnElemento())
            {
                ((IAuditadoDto)elemento).CreadoEl     = ((IElementoDtm)registro).FechaCreacion;
                ((IAuditadoDto)elemento).ModificadoEl = ((IElementoDtm)registro).FechaModificacion;

                ((IAuditadoDto)elemento).Creador     = ((IElementoDtm)registro).UsuarioCreador == null ? "" : UsuarioDtm.NombreCompleto(((IElementoDtm)registro).UsuarioCreador);
                ((IAuditadoDto)elemento).Modificador = ((IElementoDtm)registro).UsuarioModificador == null ? "" : UsuarioDtm.NombreCompleto(((IElementoDtm)registro).UsuarioModificador);
            }
        }
 protected virtual void AntesDeMapearElemento(TRegistro registro, ParametrosDeMapeo parametros)
 {
 }