Skip to content

Instantly share code, notes, and snippets.

@lobo-tuerto
Created September 30, 2008 22:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lobo-tuerto/13979 to your computer and use it in GitHub Desktop.
Save lobo-tuerto/13979 to your computer and use it in GitHub Desktop.
class Socios < Application
# Definimos el tipo de información que servirá este controlador
provides :json
def lista
begin
if params[:estatus].nil?
# Si no hay especificado un estatus, desplegamos todos los clientes
@resultado[:datos] = Cliente.all
else
# Buscamos con el estatus especificado
@resultado[:datos] = Cliente.all(:estatus => params[:estatus])
end
@resultado[:exito] = true
@resultado[:msj] = "Lista de #{self.class} obtenida"
rescue Exception => e
registra_excepcion(e)
ensure
return display(@resultado)
end
end
def muestra
begin
@resultado[:datos] = busca(Cliente, params[:id].to_i)
@resultado[:exito] = true
@resultado[:msj] = "Información de #{self.class.to_s.singularize} obtenida"
rescue Exception => e
registra_excepcion(e)
ensure
return display(@resultado)
end
end
def destruye
begin
@cliente = busca(Cliente, params[:id].to_i)
elimina(@cliente)
@resultado[:exito] = true
@resultado[:msj] = "#{self.class.to_s.singularize} eliminado"
rescue Exception => e
registra_excepcion(e)
ensure
return display(@resultado)
end
end
def crea
begin
# Levantamos una excepción si no se enviaron datos para crear un socio
revisa_existen_datos(params[:socio])
# Revisamos si existe alguien con ese RFC
@sujeto = Sujeto.first(:rfc => params[:socio][:rfc])
# Si encontramos a alguien...
unless @sujeto.nil?
# Levantamos una excepción si ya tiene un Cliente asociado
raise YaExiste, "El socio ya existe en el sistema" if !@sujeto.cliente.nil?
end
# Checamos el tipo de RFC (Persona o Empresa)
clase_sujeto = Sujeto.identifica_clase(params[:socio][:rfc])
# Levantamos una excepción si no se encontró el RFC
# y no se identificó el tipo de persona
raise RfcInvalido, "RFC inválido" if (clase_sujeto.nil? && @sujeto.nil?)
# Si no hay algo en @sujeto...
if @sujeto.nil?
# Instanciamos una nueva Persona o Empresa
@sujeto = clase_sujeto.new(params[:socio])
# Levantamos una excepción si no se puede guardar el registro
guarda(@sujeto)
end
# Si no hay algo en @sujeto.cliente...
if @sujeto.cliente.nil?
# Creamos un Cliente para esa persona
# el Cliente es el que tiene acceso a los servicios
@cliente = Cliente.new(:sujeto => @sujeto)
# Levantamos una excepción si no se puede guardar
guarda(@cliente)
end
@resultado[:exito] = true
@resultado[:msj] = "#{self.class.to_s.singularize} creado"
rescue Exception => e
registra_excepcion(e)
ensure
return display(@resultado)
end
end
def actualiza
begin
# Levantamos una excepción si no se enviaron datos para crear un socio
revisa_existen_datos(params[:socio])
# Revisamos si existe alguien con ese RFC
@socio = busca(Cliente, params[:id].to_i)
@sujeto = busca(Sujeto, @socio.sujeto_id)
@sujeto.attributes = params[:socio]
guarda(@sujeto)
@resultado[:exito] = true
@resultado[:msj] = "#{self.class.to_s.singularize} actualizado"
rescue Exception => e
registra_excepcion(e)
ensure
return display(@resultado)
end
end
def autoriza
begin
@cliente = busca(Cliente, params[:id].to_i)
revisa_estatus_nuevo(@cliente)
@cliente.autorizar!
guarda(@cliente)
@resultado[:exito] = true
@resultado[:msj] = "#{self.class.to_s.singularize} autorizado"
rescue Exception => e
registra_excepcion(e)
ensure
return display(@resultado)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment