# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

GET           /ping                                           controllers.RootController.ping()
GET           /jsRoutes                                       controllers.RootController.jsRoutes

GET           /assets/*file                                   controllers.Assets.at(path="/public", file)

GET           /                                               controllers.RootController.index()

GET           /hotels                                         @controllers.HotelsController.index(filters: models.HotelFilters ?= models.HotelFilters.empty, page: models.Page ?= models.Page.default)
GET           /hotels/:hotel_id                               @controllers.HotelsController.getHotel(hotel_id: Int)
PUT           /hotels/:hotel_id/region                        @controllers.HotelsController.setHotelRegion(hotel_id: Int, region_id: Int)
POST          /hotels/:hotel_id/name                          @controllers.HotelsController.setHotelName(hotel_id: Int)
DELETE        /hotels/:hotel_id/name/:lang                    @controllers.HotelsController.clearHotelName(hotel_id: Int, lang)
POST          /hotels/:hotel_id/feature                       @controllers.HotelsController.addHotelFeature(hotel_id: Int)
PUT           /hotels/:hotel_id/feature/:name                 @controllers.HotelsController.selectHotelFeature(hotel_id: Int, name: String, partner_id: Int)
DELETE        /hotels/:hotel_id/feature/:name                 @controllers.HotelsController.deleteHotelFeature(hotel_id: Int, name: String)
POST          /hotels/:hotel_id/stars                         @controllers.HotelsController.setHotelStars(hotel_id: Int)
PUT           /hotels/:hotel_id/stars                         @controllers.HotelsController.selectHotelStars(hotel_id: Int, partner_id: Int)
POST          /hotels/:hotel_id/type                          @controllers.HotelsController.setHotelType(hotel_id: Int)
PUT           /hotels/:hotel_id/type                          @controllers.HotelsController.selectHotelType(hotel_id: Int, partner_id: Int)
PUT           /hotels/:hotel_id/point                         @controllers.HotelsController.selectHotelPoint(hotel_id: Int, partner_id: Int)
PUT           /hotels/:hotel_id/image/:name                   @controllers.HotelsController.selectHotelMainImage(hotel_id: Int, name: String)
DELETE        /hotels/:hotel_id/image/:name                   @controllers.HotelsController.hideHotelImage(hotel_id: Int, name: String)
GET           /hotels/partner/                                @controllers.HotelsController.getPartnerHotels(request: models.PartnerHotelRequest ?= models.PartnerHotelRequest.empty, page: models.Page ?= models.Page.default)
POST          /hotels/partner/search                          @controllers.HotelsController.searchPartnerHotels
GET           /hotels/partner/:hotel_id                       @controllers.HotelsController.getPartnerHotel(hotel_id: Int)
GET           /hotels/compare/:hotel_id1/:hotel_id2           @controllers.HotelsController.comparePartnerHotels(hotel_id1:  Int, hotel_id2: Int)
GET           /hotels/lcompare/:hotel_id1/:hotel_id2          @controllers.HotelsController.lightComparePartnerHotels(hotel_id1:  Int, hotel_id2: Int)
GET           /hotels/cluster/:hotel_id                       @controllers.HotelsController.getCluster(hotel_id: Int)
POST          /hotels/publish                                 @controllers.HotelsController.publish(hotel_ids: List[Int])
PUT           /hotels/links/:from                             @controllers.HotelsController.linkWith(from: Int, url)

GET           /api/hotels/similarity/:hotel_id1/:hotel_id2    @controllers.HotelsController.similarity(hotel_id1:  Int, hotel_id2: Int)
PUT           /api/hotels/links/:from/:to                     @controllers.HotelsController.link(from: Int, to: Int)
DELETE        /api/hotels/links/:from/:to                     @controllers.HotelsController.unlink(from: Int, to: Int)

GET           /calendar                                       @controllers.CalendarController.index()
GET           /calendar/:from/:to                             @controllers.CalendarController.view(from: Int, to: Int)

GET           /regions                                        @controllers.RegionsController.index()
GET           /regions/edit                                   @controllers.RegionsController.custom(page: models.Page ?= models.Page.default)
GET           /regions/:id                                    @controllers.RegionsController.get(id: Int)
GET           /regions/edit/new                               @controllers.RegionsController.createNew()
POST          /regions/edit/save                              @controllers.RegionsController.save
GET           /regions/edit/:id                               @controllers.RegionsController.edit(id: Int)
DELETE        /regions/edit/:id                               @controllers.RegionsController.delete(id: Int)
PUT           /regions/sm/:id                                 @controllers.RegionsController.putSearchSettings(id: Int)

GET           /subscriptions                                  @controllers.SubscriptionsController.all
GET           /subscriptions/:tpe/:identity                   @controllers.SubscriptionsController.forUser(tpe, identity)
GET           /subscriptions/:tpe/:identity/:id               @controllers.SubscriptionsController.get(tpe, identity, id)

GET           /label                                          @controllers.LabelController.viewLabel()
POST          /label                                          @controllers.LabelController.handleLabel()
GET           /label/decode                                   @controllers.LabelController.decodeLabel(label)

GET           /suggest/geo                                    @controllers.suggest.SuggestController.suggestGeo(query)
GET           /suggest/geo/:partner                           @controllers.suggest.SuggestController.suggestPartnerGeo(partner, query)

GET           /regions/mappings/dropped                       @controllers.PartnerRegionsController.getDroppedMappings(r: models.DroppedRegionsRequest)
GET           /regions/mappings/:id                           @controllers.GeoMappingController.edit(id: Int)
POST          /regions/mappings/save                          @controllers.GeoMappingController.save

GET           /regions/partner/:partnerName/:id               @controllers.PartnerRegionsController.get(partnerName, id)
GET           /regions/partner/:partnerName/:id/:geoId        @controllers.PartnerRegionsController.view(partnerName, id, geoId: Int)
POST          /regions/partner/:partnerName/:id/:geoId        @controllers.PartnerRegionsController.saveMapping(partnerName, id, geoId: Int)

GET           /partners/search                                @controllers.PartnerSearchController.searchRequests(r: models.SearchRequestWrapper)

GET           /scheduler                                      @controllers.SchedulerController.listJobs()
GET           /scheduler/:id/enabled                          @controllers.SchedulerController.setJobEnabledStatus(id, enabled: scala.Boolean)