#https://symfony.com/doc/current/controller.html#controller-request-argument
#CRUD: edit, index, new, show, _delete_form, _form
#https://symfony.com/doc/current/routing.html#localized-routes-i18n
#SCRUD: index, add, edit, delete, view

#TODO: rename view in show ???
rapsys_air:
    path:
        en_gb: '/en'
        fr_fr: '/'
    controller: Rapsys\AirBundle\Controller\DefaultController::index
    methods: GET

rapsys_air_about:
    path:
        en_gb: '/en/about'
        fr_fr: '/a-propos'
    controller: Rapsys\AirBundle\Controller\DefaultController::about
    methods: GET

rapsys_air_contact:
    path:
        en_gb: '/en/contact/{id<\d*>?}/{user<[\w-]*>?}'
        fr_fr: '/contacter/{id<\d*>?}/{user<[\w-]*>?}'
    controller: Rapsys\AirBundle\Controller\DefaultController::contact
    methods: GET|POST

rapsys_air_calendar:
    path:
        en_gb: '/en/calendar'
        fr_fr: '/calendrier'
    controller: Rapsys\AirBundle\Controller\CalendarController::index
    methods: GET|POST

rapsys_air_calendar_callback:
    path: '/calendar/callback'
    controller: Rapsys\AirBundle\Controller\CalendarController::callback
    methods: GET

rapsys_air_city:
    path:
        'en_gb': '/en/city'
        'fr_fr': '/ville'
    controller: Rapsys\AirBundle\Controller\LocationController::cities
    methods: GET|POST

rapsys_air_city_view:
    path:
        'en_gb': '/en/city/{latitude<-?(?:\d*\.)?\d+>}/{longitude<-?(?:\d*\.)?\d+>}/{city<[\w-]+>}'
        'fr_fr': '/ville/{latitude<-?(?:\d*\.)?\d+>}/{longitude<-?(?:\d*\.)?\d+>}/{city<[\w-]+>}'
    controller: Rapsys\AirBundle\Controller\LocationController::city
    methods: GET|POST

rapsys_air_dance:
    path:
        'en_gb': '/en/dance'
        'fr_fr': '/danse'
    controller: Rapsys\AirBundle\Controller\DanceController::index
    methods: GET|POST

rapsys_air_dance_view:
    path:
        'en_gb': '/en/dance/{id<[0-9]+>}/{name<[\w-]+>}/{type<[\w-]+>}'
        'fr_fr': '/danse/{id<[0-9]+>}/{name<[\w-]+>}/{type<[\w-]+>}'
    controller: Rapsys\AirBundle\Controller\DanceController::view
    methods: GET|POST

rapsys_air_dance_name:
    path:
        'en_gb': '/en/dance/{name<[a-zA-Z0-9=_-]+>}/{dance<[\w-]+>}'
        'fr_fr': '/danse/{name<[a-zA-Z0-9=_-]+>}/{dance<[\w-]+>}'
    controller: Rapsys\AirBundle\Controller\DanceController::name
    methods: GET|POST

rapsys_air_frequently_asked_questions:
    path:
        en_gb: '/en/frequently-asked-questions'
        fr_fr: '/foire-aux-questions'
    controller: Rapsys\AirBundle\Controller\DefaultController::frequentlyAskedQuestions
    methods: GET

rapsys_air_organizer_regulation:
    path:
        en_gb: '/en/organizer-regulation'
        fr_fr: '/reglement-organisateur'
    controller: Rapsys\AirBundle\Controller\DefaultController::organizerRegulation
    methods: GET

rapsys_air_terms_of_service:
    path:
        en_gb: '/en/terms-of-service'
        fr_fr: '/conditions-generales-d-utilisation'
    controller: Rapsys\AirBundle\Controller\DefaultController::termsOfService
    methods: GET

rapsys_air_dispute:
    path:
        en_gb: '/en/dispute'
        fr_fr: '/contestation'
    controller: Rapsys\AirBundle\Controller\DefaultController::dispute
    methods: GET|POST

rapsys_air_location:
    path:
        en_gb: '/en/location'
        fr_fr: '/emplacement'
    controller: Rapsys\AirBundle\Controller\LocationController::index
    methods: GET|POST

rapsys_air_location_view:
    path:
        en_gb: '/en/location/{id<\d+>}/{location<[\w-]+>?}'
        fr_fr: '/emplacement/{id<\d+>}/{location<[\w-]+>?}'
    controller: Rapsys\AirBundle\Controller\LocationController::view
    methods: GET

rapsys_air_application_add:
    path:
        en_gb: '/en/application'
        fr_fr: '/reservation'
    controller: Rapsys\AirBundle\Controller\ApplicationController::add
    methods: GET|POST

rapsys_air_session:
    path:
        en_gb: '/en/session'
        fr_fr: '/seance'
    controller: Rapsys\AirBundle\Controller\SessionController::index
    methods: GET

rapsys_air_session_tangoargentin:
    path:
        en_gb: '/en/session/tangoargentin'
        fr_fr: '/seance/tangoargentin'
    format: json
    controller: Rapsys\AirBundle\Controller\SessionController::tangoargentin
    methods: GET

rapsys_air_session_view:
    path:
        en_gb: '/en/session/{id<\d+>}/{location<[\w-]+>}/{dance<[\w-]*>?}/{user<[\w-]*>?}'
        fr_fr: '/seance/{id<\d+>}/{location<[\w-]+>}/{dance<[\w-]*>?}/{user<[\w-]*>?}'
    controller: Rapsys\AirBundle\Controller\SessionController::view
    methods: GET|POST

rapsys_air_snippet_add:
    path:
        en_gb: '/en/snippet'
        fr_fr: '/extrait'
    controller: Rapsys\AirBundle\Controller\SnippetController::add
    methods: POST

rapsys_air_snippet_edit:
    path:
        en_gb: '/en/snippet/{id<\d+>}'
        fr_fr: '/extrait/{id<\d+>}'
    controller: Rapsys\AirBundle\Controller\SnippetController::edit
    methods: POST

rapsys_air_user:
    path:
        en_gb: '/en/user'
        fr_fr: '/utilisateur'
    controller: Rapsys\AirBundle\Controller\DefaultController::userIndex
    methods: GET

rapsys_air_user_view:
    path:
        en_gb: '/en/user/{id<\d+>}/{user<[\w-]+>?}'
        fr_fr: '/utilisateur/{id<\d+>}/{user<[\w-]+>?}'
    #TODO: changer pour DefaultController::organizer ou DefaultController::user et dropper cette classe useless
    controller: Rapsys\AirBundle\Controller\OrganizerController::view
    methods: GET|POST

rapsys_air_user_milongaraphael:
    path:
        en_gb: '/en/milonga-raphael'
        fr_fr: '/milonga-raphael'
    #TODO: changer pour DefaultController::organizer ou DefaultController::user et dropper cette classe useless
    controller: Rapsys\AirBundle\Controller\OrganizerController::view
    defaults:
        # default parameters
        id: 1
        user: 'milonga-raphael'

rapsys_user_confirm:
    path:
        en_gb: '/en/confirm/{hash}/{mail}'
        fr_fr: '/confirmer/{hash}/{mail}'
    controller: Rapsys\UserBundle\Controller\DefaultController::confirm
    requirements:
        mail: '[a-zA-Z0-9=_-]+'
        hash: '[a-zA-Z0-9=_-]+'
    methods: GET|POST

rapsys_user_edit:
    path:
        en_gb: '/en/user/{hash}/{mail}'
        fr_fr: '/utilisateur/{hash}/{mail}'
    controller: Rapsys\AirBundle\Controller\UserController::edit
    requirements:
        mail: '[a-zA-Z0-9=_-]+'
        hash: '[a-zA-Z0-9=_-]+'
    methods: GET|POST

rapsys_user_login:
    path:
        en_gb: '/en/login/{hash}/{mail}'
        fr_fr: '/connecter/{hash}/{mail}'
    controller: Rapsys\UserBundle\Controller\DefaultController::login
    defaults:
        mail: ~
        hash: ~
    requirements:
        mail: '[a-zA-Z0-9=_-]+'
        hash: '[a-zA-Z0-9=_-]+'
    methods: GET|POST

rapsys_user_logout:
    path:
        en_gb: '/en/logout'
        fr_fr: '/deconnecter'
    methods: GET

rapsys_user_recover:
    path:
        en_gb: '/en/recover/{hash}/{pass}/{mail}'
        fr_fr: '/recuperer/{hash}/{pass}/{mail}'
    controller: Rapsys\UserBundle\Controller\DefaultController::recover
    defaults:
        mail: ~
        pass: ~
        hash: ~
    requirements:
        mail: '[a-zA-Z0-9=_-]+'
        pass: '[a-zA-Z0-9=_-]+'
        hash: '[a-zA-Z0-9=_-]+'
    methods: GET|POST

rapsys_user_register:
    path:
        en_gb: '/en/register/{hash}/{field}/{mail}'
        fr_fr: '/enregistrer/{hash}/{field}/{mail}'
    controller: Rapsys\UserBundle\Controller\DefaultController::register
    defaults:
        mail: ~
        field: ~
        hash: ~
    requirements:
        mail: '[a-zA-Z0-9=_-]+'
        field: '[a-zA-Z0-9=_-]+'
        hash: '[a-zA-Z0-9=_-]+'
    methods: GET|POST