Created
September 30, 2008 22:42
-
-
Save lobo-tuerto/13979 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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