Rails.application.routes.draw do

  mount Ckeditor::Engine => '/ckeditor'
  
  devise_for :users, controllers: {
    sessions: 'users/sessions',
    registrations: 'users/registrations',
    omniauth_callbacks: "users/omniauth_callbacks",
    confirmations: 'users/confirmations',
    tokens: 'users/api/tokens'
  }
  devise_scope :user do
    get '/login' => 'devise/sessions#new'
    get '/logout' => 'devise/sessions#destroy'
  end

  get "manifest.json" => "site_info#manifest"
  get "robots.txt" => "site_info#robots"
  get "sitemap" => "site_info#sitemap"
  get "humans.txt" => "site_info#humans"

  root "static_pages#home"
  get "dashboard" => "dashboard#index", as: :dashboard
  post '/upload-file' => "files#upload"
  get 'reportes', to: "reports#index"
  get 'aniversarios', to: "dashboard#birthdays", as: :birthdays
  # get 'reportes/:id', to: "reports#show", as: :reports
  get "activos" => "reports#actives", as: :actives
  
  # static pages
  get "mail", to: "mailer#mail"
  get "casa", to: "static_pages#home"
  get "quienes-somos", to: "static_pages#somos", as: :somos
  get "instalaciones", to: "static_pages#instalaciones", as: :instalaciones
  get "privacidad", to: 'static_pages#privacidad', as: :privacidad
  get "baja", to: 'static_pages#baja', as: :baja
  get "servicios", to: 'static_pages#servicios', as: :servicios
  get "terminos", to: 'static_pages#terminos', as: :terminos
  get "preguntasFrecuentes", to: 'static_pages#old_faqs', as: :preguntasFrecuentes
  get "preguntas-frecuentes", to: 'static_pages#faqs', as: :preguntas_frecuentes
  get "update_users", to: "plans#update_users"
  # citas
  resources :pacientes, :appointments, :cards, :promos, :empleados, :faqs, :countries
  resources :plans, :machos, :meals, :programs, :portions, :workouts, :medical_histories
  resources :cycles, :steroids, :payments, :messages, :products
  resources :speeches, :stores, :posts, :suppliers

  # User Pages admin
  post "webhook_inbody" => "api#inbody"

  get "citas" => "appointments#index"
  patch "plans/:id" => "plans#update"
  patch "nueva_comida/:id" => "plans#new_meal"
  patch "nueva_comida/:id/:uuid" => "plans#new_meal"
  patch "nueva_rutina/:id" => "plans#new_routine"
  get "plan/:id/note" => "plans#note"
  get "plan/:id/chat" => "plans#chat"
  get "new_portion/:meal_id/:id" => "plans#new_portion" # Añadir porción
  get "new_workout/:routine_id/:category" => "plans#new_workout" # Añadir rutinas
  patch "update_routine_program/:id/:routine_id" => "plans#update_routine_program" #Actualizar macho
  patch "update_diet_program/:id/:diet_id" => "plans#update_diet_program" #Actualizar macho
  
  get "add_meal_substitute/:meal_portion_id/:portion_id" => "plans#meal_substitute"
  
  # user pages | final user
  get "home" => "user_pages#home", as: :home
  get "progreso" => "user_pages#photos", as: :photos
  get "eliminar_cuenta" => "user_pages#destroy", as: :eliminar
  get "planes" => "user_pages#plans"
  get "calendario" => "user_pages#calendar", as: :calendario
  get "plan/:id" => "user_pages#plan"
  get "medidas" => "user_pages#measurements" #, as: :medidas
  get "alimentacion" => "user_pages#meals", as: :comidas
  get "registro_comida/:id/:value" => "diary#meals", as: :meal_register
  get "registro_sesion/:id/:value" => "diary#routines", as: :session_register
  get "registro_carga/:id" => "diary#charge", as: :charge_recorder
  post "registro_medidas" => "diary#record_measurements"
  post "notas_alimentacion" => "diary#notas_alimentacion", as: :notas_alimentacion
  post "notas_entrenamiento" => "diary#notas_entrenamiento", as: :notas_entrenamiento
  post "trace_comments" => "diary#trace_comments", as: :trace_comments

  get "api" => "api#docs"

  get "api/login" => "users#tokens"
  post "users/passwords/reset" => "users/api/passwords#reset"
  post "users/passwords/update" => "users/api/passwords#update"

  namespace :api, defaults: { format: "json" } do
    resources :pacientes
    post "login" => "sessions#login"
    get "profile/info" => "profile#show"
    get "address/info" => "address#show"
    post "address/update" => "address#update"
    # food
    get "alimentos" => "portions#index", as: :food
    get "alimentos/buscar" => "portions#search", as: :food_searcher
    get "alimentos/:id" => "portions#show", as: :portion
    post "alimentos" => "portions#create"
    
    get "dieta" => "diet#index", as: :diet
    get "calorias" => "diet#calories", as: :calories
    get "dieta/comidas" => "diet#meals", as: :meals
    get "dieta/comida/:id" => "diet#check_meal" #, as: :meal_check
    
    get "dieta/diario" => "diary#diet", as: :diary_diet
    post "dieta/diario" => "diary#diet_msg"
    post "dieta/registrar_comida/:id" => "diary#check_meal", as: :check_meal
    
    get "rutina/diario" => "diary#routine", as: :routine_diet
    post "rutina/diario" => "diary#routine_msg"

    get "rutina/cardio" => "routine#cardio", as: :cardio
    # get "diet" => "diet#index", as: :food
  end

  get "entrenamiento" => "user_pages#routines", as: :rutinas
  get "editar_perfil" => "user_pages#edit", as: :edit_profile
  patch "actualizar_perfil" => "user_pages#update", as: :update_profile

  get "entrenador" => "user_pages#trainer", as: :edit_trainer
  patch "actualizar_entrenador" => "user_pages#update_trainer", as: :update_trainer

  get "historial" => "user_pages#historial", as: :historial
  patch "actualizar_historial" => "user_pages#update_history", as: :update_history

  get "composicion" => "user_pages#composition", as: :composition
  patch "actualizar_composicion" => "user_pages#update_composition", as: :update_composition
  post "update_photo" => "user_pages#update_photo", as: :update_photo
  post "update_paciente_photo" => "pacientes#update_photos"
  get "actualizar_contrasena" => "user_pages#password"
  patch "update_password" => "user_pages#update_password"
  get "configuracion" => "user_pages#configuration", as: :configuration
  get "default_card/:id" => "cards#default_card", as: :default_card
  
  get "manual" => "static_pages#manual"
  get "machos/sort" => "machos#sort"
  
  get "recover_pass/:id" => "pacientes#recover_pass", as: :recover_pass
  get "pacientes/:id/destroy" => "pacientes#destroy"
  get "eliminar_fotos/:id/:attr" => "pacientes#destroy_photos"
  get "buscar_pacientes" => "pacientes#search"

  # recepcion
  get 'recepcion' => "reception#index"
  # get 'update_status/:id' => "pacientes#status"
  get 'expediente/:id' => "reception#paciente", as: :expediente
  get 'recepcion/renovaciones' => "reception#renewals"
  get 'recepcion/expirados' => "reception#expired"

  get "citas" => "appointments#index"
  get "citas/entrenador/:trainer_id" => "appointments#trainer"
  get "cita/:id" => "appointments#show"
  
  post 'oxxo_webhook' => "payments#webhook"

  # get "/plans/:id/print" => "plans#print", as: :plan_print
  get "/plans/:id/pdf" => "plans#pdf", as: :plan_pdf
  get "/plans/:id/sms" => "plans#sms", as: :plan_sms
  get "/plans/:id/mail" => "plans#mail", as: :plan_mail
  

  get "chat" => "messages#index"
  get "chat/:id" => "messages#show"
  get "message/:id/save" => "messages#save"
  get "message/:id/delete" => "messages#delete"

  get "blog" => "posts#blog"
  get "blog/:id" => "posts#show"

  scope format: true, constraints: { format: /jpg|jpeg|JPG|png|gif|webp/ } do
    get '/*anything', to: "static_pages#image_default"
  end

end