protected async Task <ActionResult> Post <TCreacion, TEntidad, TLectura>(TCreacion creacionDTO, string nombreRuta) where TEntidad : class, IId
        {
            try {
                var entidad = mapper.Map <TEntidad>(creacionDTO);
                context.Add(entidad);
                await context.SaveChangesAsync();

                var dtoLectura = mapper.Map <TLectura>(entidad);

                return(new CreatedAtRouteResult(nombreRuta, new { id = entidad.Id }, dtoLectura));
            } catch (Exception e) {
                return(Content(e.ToString()));
            }
        }
        public async Task <ActionResult <UserToken> > Post([FromBody] ComercioCreacionDTO comercioCreacionDTO)
        {
            try {
                var entidad = mapper.Map <Usuario>(comercioCreacionDTO);
                context.Add(entidad);
                //  var dtoLectura = mapper.Map<ComercioDTO>(entidad);

                var userinfo = new UserInfo()
                {
                    Email = comercioCreacionDTO.Email, Password = comercioCreacionDTO.Contraseña, Nombre = comercioCreacionDTO.Nombre
                };

                await context.SaveChangesAsync();

                // return new CreatedAtRouteResult("obtenerComercio", new { id = entidad.Id }, dtoLectura);
                return(ConstruirToken(userinfo));
            } catch (Exception e) {
                return(Content(e.ToString()));
            }

            // return await Post<ComercioCreacionDTO, Usuario, ComercioDTO>(comercioCreacionDTO, "obtenerComercio");
        }