import graphene
from graphene_django import DjangoListField, DjangoObjectType

from .models import Datos_personales, Estudios, Antecedentes, Autoevaluacion_salud, Percepcion, Personalidad, Estatus_economico, Nutricion, Actividad_fisica, Informacion_salud, Observaciones, Antropometria, Laboratorio, Bioimpedancia

class Datos_personalesType(DjangoObjectType):
	class Meta:
		model = Datos_personales
		fields = ('id','fecha_encuesta','cuenta','estado','codigo_postal','sexo','estado_civil')

class EstudiosType(DjangoObjectType):
	class Meta:
		model = Estudios
		fields = ('id','grado_estudios','grado_estudios_madre','grado_estudios_padre','promedio_academico',
			'horas_lectivas_diarias', 'horas_recreativas_diarias', 'horas_diarias_transporte', 'tipo_transporte_facmed',
			'cuenta')

class AntecedentesType(DjangoObjectType):
	class Meta:
		model = Antecedentes
		fields = ('id','tienes_sobrepeso', 'edad_dx_sobrepeso' , 'tienes_obesidad' ,'edad_dx_obesidad' , 'padeces_enfermedades_cronicas' ,
			'edad_dx_enfermedades_cronicas','padre_padece_enfermedades_cronicas','edad_dx_padre_enfermedades_cronicas','madre_padece_enfermedades_cronicas',
			'edad_dx_madre_enfermedades_cronicas','padres_vivos','padre_vivo_edad','padre_muerto_edad','madre_viva_edad','madre_muerta_edad',
			'padre_vivo_sp_obesidad_dm_cardio','madre_viva_sp_obesidad_dm_crdio','hermanos_tienes','primer_hermano_vivo_muerto','primer_hermano_edad',
			'primer_hermano_sp_obesidad_dm_cardio','segundo_hermano_vivo_muerto','segundo_hermano_edad','segundo_hermano_sp_obesidad_dm_cardio',
			'tercer_hermano_vivo_muerto','tercer_hermano_edad','tercer_hermano_sp_obesidad_dm_cardio','cuarto_hermano_vivo_muerto',
			'cuarto_hermano_edad','cuarto_hermano_sp_obesidad_dm_cardio','hijos_tienes','primer_hijo_edad','primer_hijo_sp_obesidad_dm',
			'primer_hijo_peso_nacer','segundo_hijo_edad','segundo_hijo_sp_obesidad_dm','segundo_hijo_peso_nacer','tercer_hijo_edad',
			'tercer_hijo_sp_obesidad_dm','tercer_hijo_peso_nacer','cuarto_hijo_edad','cuarto_hijo_sp_obesidad_dm','cuarto_hijo_peso_nacer',
			'pareja_tienes','edad_pareja','pareja_sp_obesidad_dm','amigos_proporcion_sp_obesidad','amigos_cercanos_tienes')

class Autoevaluacion_saludType(DjangoObjectType):
	class Meta:
		model = Autoevaluacion_salud
		fields = ('id','peso_actual' ,'pesaste_ultima_vez' ,'estatura' ,'consideras_peso_actual' ,'consideras_peso_1' ,'consideras_peso_5' ,
			'acciones_respecto_peso' ,'intento_bajar_subir_peso' ,'estres_actual' ,'estres_1' ,'estres_5' ,'condicion_fisica_actual' ,
			'condicion_fisica_1' ,'condicion_fisica_5' ,'suenno_diario' ,'suenno_calidad' ,'suenno_diario_1ano' ,'suenno_diario_5anos' ,
			'salud_actual' ,'salud_actual_1ano' ,'salud_actual_5anos' ,'trastorno_sueno' ,'alcohol_semana' ,'tipo_bebida_alcoholica' ,
			'edad_tomando' )

class PercepcionType(DjangoObjectType):
	class Meta:
		model = Percepcion
		fields = ('id','stuntkard_peso_actual','stuntkard_figura_ideal','stuntkard_peso_1ano','stuntkard_peso_5anos')

class PersonalidadType(DjangoObjectType):
	class Meta:
		model = Personalidad
		fields = ('id','soy_organizado','soy_responsable','soy_dedicado','soy_descuidado','soy_minucioso','soy_disciplinado',
			'planear_futuro','buena_suerte','propios_exitos','cualquier_cosa_propuesta','problemas_mala_suerte',
			'control_malos_sucesos','desgracias_errores','responsable_fallas')

		
class Estatus_economicoType(DjangoObjectType):
	class Meta:
		model = Estatus_economico
		fields = ('id','actividad_remunerada','horas_semana_actividad','ingreso_mensual','gastos_personales_mensuales',
			'vives_padres_familia','focos_vivienda','focos_vivienda_rentada','personas_compartes_dormitorio_familia',
			'personas_compartes_dormitorio_rentas')

class NutricionType(DjangoObjectType):
	class Meta:
		model = Nutricion
		fields = ('id','comidas_fuertes','calorias_crees_recomendadas','comes_relativo_recomendado',
			'numero_refrescos_normales_consumes','numero_cereales_tuberculos_consumes','numero_frutas_consumes',
			'numero_maiz_consumes','numero_tortillas_consumes','numero_carne_etc_consumes','numero_verduras_leguminosas_consumes',
			'numero_botanas_etc_consumes','numero_comes_fuera_casa','numero_cfca','numero_cfcc')

class Actividad_fisicaType(DjangoObjectType):
	class Meta:
		model = Actividad_fisica
		fields = ('id','horas_ejercicio_actual','horas_ejercicio_1ano','horas_ejercicio_5ano','tipo_ejercicio_actual',
			'tipo_ejercicio_1ano','tipo_ejercicio_5anos','donde_haces_ejercicio','gusta_ejercicio_intenso',
			'r_medicas')

class Informacion_saludType(DjangoObjectType):
	class Meta:
		model = Informacion_salud
		fields = ('id','imc_normal','stuntkard_bajo_peso','stuntkard_normal_peso','stuntkard_sobrepeso','stuntkard_obeso',
			'porc_mexicanos_obesidad','calorias_refresco','calorias_agua','calorias_manzana','distancia_calorias_coca',
			'cambio_habitos_probabilidad_dm','factores_obesidad_dm','eres_religioso','partidario_politico',
			'cual_partido_politico')

class ObservacionesType(DjangoObjectType):
	class Meta:
		model = Observaciones
		fields = ('id','observaciones','etiquetas')

class AntropometriaType(DjangoObjectType):
	class Meta:
		model = Antropometria
		fields = ('id','cuenta','peso_real','talla_real','presion_sistolica','presion_diastolica','circunferencia_brazo',
			'circunferencia_cintura','circunferencia_cadera','temperatura_axilar','temperatura_oido','temperatura_muneca',
			'bioimpedancia_peso','bioimpedancia_porcentaje_grasa','bioimpedancia_porcentaje_agua','plicometria_triceps',
			'plicometria_biceps','plicometria_suprailiaco','plicometria_subescapular')

class LaboratorioType(DjangoObjectType):
	class Meta:
		model = Laboratorio
		fields = ('id','paciente','cuenta','glucosa','urea','creatinina','acido_urico','colesterol_total','trigliceridos',
			'bilirrubina_total','bilirrubina_directa','bilirrubina_indirecta','aspartato_amino_transferasa','calcio','fosforo',
			'hemoglobina_glucosilada','glucosa_promedio_estimada','insulina_basal','hemoglobina','hematocrito','eritrocitos',
			'vgm','hgm','chcm','rdw','leucocitos','porcentaje_neutrofilos_totales','porcentaje_neutrofilos_segmentados',
			'porcentaje_neutrofilos_en_banda','numero_eosinofilos','porcentaje_eosinofilos','numero_basofilos',
			'porcentaje_basofilos','numero_linfocitos','porcentaje_linfocitos','numero_monocitos','porcentaje_monocitos',
			'plaquetas','vpm','paciente','glucosa','urea','creatinina','acido_urico','colesterol_total','trigliceridos',
			'hemoglobina_glucosilada','insulina_basal','hemoglobina','hematocrito','eritrocitos','vgm','chcm','leucocitos',
			'porcentaje_neutrofilos_totales','porcentaje_eosinofilos','porcentaje_basofilos','porcentaje_linfocitos',
			'porcentaje_monocitos','plaquetas','hdl','ldl','bun','albumina','pcr','cloro','potasio','sodio','glucosa',
			'colesterol_total','hemoglobina_glucosilada','insulina_basal','hdl','ldl','bun','pcr')

class BioimpedanciaType(DjangoObjectType):
	class Meta:
		model = Bioimpedancia
		fields = ('id','edad_real','munneca','porc_musculos','rmkcal','edad_corporal','imc','grasa_visceral')


class Query(graphene.ObjectType):
	all_datos = graphene.List(Datos_personalesType)
	datos = graphene.Field(Datos_personalesType,id=graphene.Int())
	filter_sexo = graphene.List(Datos_personalesType, sex = graphene.String())

	all_estudios = graphene.Field(EstudiosType, id=graphene.Int())
	all_antecedentes = graphene.List(AntecedentesType)
	all_autoevaluacion = graphene.List(Autoevaluacion_saludType)
	all_percepcion = graphene.List(PercepcionType)
	all_personalidad = graphene.List(PersonalidadType)
	all_estatus = graphene.List(Estatus_economicoType)
	all_nutricion = graphene.List(NutricionType)
	all_actividad = graphene.List(Actividad_fisicaType)
	all_informacion = graphene.List(Informacion_saludType)
	all_observaciones = graphene.List(ObservacionesType)
	all_antropometria = graphene.List(AntropometriaType)
	all_laboratorio = graphene.List(LaboratorioType)
	all_bioimpedancia = graphene.List(BioimpedanciaType)


	#Queries para Datos_personales
	def resolve_all_datos(root,info):
		return Datos_personales.objects.all()
	def resolve_datos(root,info,id):
		return Datos_personales.objects.get(pk=id)
	def resolve_filter_sexo(root,info,sex):
		return Datos_personales.objects.filter(sexo=sex)

	#Queries para Estudios
	def resolve_all_estudios(root,info,id):
		return Estudios.objects.get(pk=id)

	def resolve_all_antecedentes(root,info):
		return Antecedentes.objects.all()

	def resolve_all_autoevaluacion(root,info):
		return Autoevaluacion_salud.objects.all()

	def resolve_all_percepcion(root,info):
		return Percepcion.objects.all()

	def resolve_all_personalidad(root,info):
		return Personalidad.objects.all()

	def resolve_all_estatus(root,info):
		return Estatus_economico.objects.all()

	def resolve_all_nutricion(root,info):
		return Nutricion.objects.all()

	def resolve_all_actividad(root,info):
		return Actividad_fisica.objects.all()

	def resolve_all_informacion(root,info):
		return Informacion_salud.objects.all()

	def resolve_all_observaciones(root,info):
		return Observaciones.objects.all()

	def resolve_all_antropometria(root,info):
		return Antropometria.objects.all()

	def resolve_all_laboratorio(root,info):	
		return Laboratorio.objects.all()

	def recolve_all_bioimpedancia(root,info):
		return Bioimpedancia.objects.all()

schema = graphene.Schema(query=Query)
