<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/

$router->get('/bulut/search', [
    'as' => 'Bulut.Search',
    'uses' => 'bulutController@search'
]);

$router->get('/bulut/hotel-data', [
    'as' => 'Bulut.HotelData',
    'uses' => 'bulutController@hotelData'
]);

$router->get('/bulut/hotel-photos', [
    'as' => 'Bulut.HotelPhotos',
    'uses' => 'bulutController@hotelPhotos'
]);

$router->get('/bulut/test-api', [
    'as' => 'Bulut.TestApi',
    'uses' => 'bulutController@testApi'
]);

$router->get('/bulut/match-facilities', [
    'as' => 'Bulut.MatchFacilities',
    'uses' => 'bulutController@matchFacilities'
]);

$router->get('/bulut/ai-match', [
    'as' => 'Bulut.AiMatch',
    'uses' => 'bulutController@aiMatch'
]);

$router->post('/bulut/property-insert', [
    'as'   => 'Bulut.PropertyInsert',
    'uses' => 'propertyInsertController@insert'
]);

$router->get('/bulut/property-check', [
    'as'   => 'Bulut.PropertyCheck',
    'uses' => 'propertyInsertController@check'
]);

$router->delete('/bulut/property-delete', [
    'as'   => 'Bulut.PropertyDelete',
    'uses' => 'propertyInsertController@delete'
]);

$router->get('/bulut/test', function () {
    return response()->json([
        'status' => true,
        'message' => 'Bulut route çalışıyor'
    ]);
});

$router->post('test', ['as' => 'Test', 'uses' => 'TestController@test']);


// Swagger / OpenAPI docs (public)
$router->get('docs', function () {
    return file_get_contents(public_path('docs.html'));
});
$router->get('openapi.yaml', function () {
    return response(file_get_contents(public_path('openapi.yaml')), 200, [
        'Content-Type' => 'application/yaml',
    ]);
});

$router->group(['prefix' => 'app/v1', 'middleware' => ['cors', 'LanguageSetting']], function () use ($router) {

    $router->post('auth/login', ['as' => 'User.Login', 'uses' => 'AuthController@authenticate']);

    $router->post('redis', ['as' => 'Redis', 'uses' => 'AuthController@redis']);

    $router->post('temp-property/get', ['Temp.Property' => '', 'uses' => 'V1\TempPropertyController@getTempPropertyList']);

    $router->post('user/register', ['as' => 'User.Register', 'uses' => 'UserController@userRegister']);

    $router->post('user/register-user-with-property', ['as' => 'User.Register', 'uses' => 'UserController@userRegisterWithProperty']);

    $router->get('languages/get-null-description', ['as' => 'User.Languages', 'uses' => 'V1\LanguageController@getNullDescriptions']);

    $router->get('languages/get/{param}', ['as' => 'User.Languages', 'uses' => 'V1\LanguageController@getAllLanguages']);

    $router->get('currency', ['as' => 'Currency', 'uses' => 'V1\CurrencyController@getListCurrency']);

    $router->get('test', ['as' => 'Test', 'uses' => 'TestController@test']);

    $router->get('google', ['as' => 'Test.Google', 'uses' => 'TestController@google']);

    $router->post('offer/publish', ['as' => 'Offer.Publish', 'uses' => 'V1\PropertyOfferController@listPropertyOfferPublish']);

    $router->post('offer/accept', ['as' => 'Offer.Accept', 'uses' => 'V1\PropertyOfferController@updatePropertyOfferAcceptStatus']);

    $router->post('contact-form', ['as' => 'Enw.Contact.Form', 'uses' => 'V1\EnwContactFormController@sendEmail']);

    $router->post('booking/ticket', ['as' => 'Property.Booking.Ticket', 'uses' => 'V1\PropertyBookingTicketController@getTicketList']);

    $router->post('booking/ticket/create', ['as' => 'Property.Booking.Ticket.Create', 'uses' => 'V1\PropertyBookingTicketController@createTicket']);

    $router->post('cpa/property', ['as' => 'Competitor.Price.Analysis.Hotels', 'uses' => 'V1\CompetitorPriceAnalysisController@property']);

    $router->post('cpa/property/competitor-daily-price', ['as' => 'Competitor.Price.Analysis.Hotels', 'uses' => 'V1\CompetitorPriceAnalysisController@propertyCompetitorPrice']);

    $router->post('cpa/property/best-available-price', ['as' => 'Competitor.Price.BestAvailablePrice', 'uses' => 'V1\CompetitorPriceAnalysisController@bestAvailablePrice']);

    $router->post('cpa/property/promotion-available', ['as' => 'Competitor.Price.PromotionAvailable', 'uses' => 'V1\CompetitorPriceAnalysisController@promotionAvailable']);


    $router->group(
        ['middleware' => 'jwt.auth'],
        function () use ($router) {
            $router->get('auth/refresh-token', ['as' => '', 'uses' => 'AuthController@refreshToken']);
            $router->post('user-menu', ['as' => 'User.Menu', 'uses' => 'V1\PropertyController@userPropertyMenu']);
            $router->post('property/info/list', ['as' => 'Property.Info.List', 'uses' => 'V1\PropertyController@listProperty']);
            $router->post('property/create', ['as' => 'Create.New.Property', 'uses' => 'V1\PropertyController@createProperty']);

            $router->get('user', ['as' => '', 'uses' => 'UserController@getUserList']);
            $router->post('user/create', ['as' => '', 'uses' => 'UserController@userCreate']);
            $router->post('user/update', ['as' => '', 'uses' => 'UserController@userUpdate']);
            $router->post('user/change-password', ['as' => '', 'uses' => 'UserController@changePassword']);
            $router->post('user/add-user-property', ['as' => '', 'uses' => 'UserController@addUserProperty']);
            $router->post('user/remove-user-property', ['as' => '', 'uses' => 'UserController@removeUserProperty']);
            $router->post('user/profile/get', ['as' => 'User.Profile.Get', 'uses' => 'UserController@getProfile']);
            $router->post('user/profile/update', ['as' => 'User.Profile.Update', 'uses' => 'UserController@updateProfile']);

            $router->group(['middleware' => ['userRoutePermissionAuthorize']], function () use ($router) {
                $router->group(['middleware' => 'property'], function () use ($router) {
                    $router->group(['middleware' => 'contentWizard'], function () use ($router) { // use wizard

                        // for Check Complete Wizard.
                        $router->post('property/info/update', ['as' => 'Property.Information.Update', 'uses' => 'V1\PropertyController@updateProperty']);
                        $router->post('property/contact/update', ['as' => 'Property.Contact.Update', 'uses' => 'V1\PropertyContactController@updateOrCreatePropertyContact']);
                        $router->post('property/executive/list', ['as' => 'Property.Executive.List', 'uses' => 'V1\PropertyExecutiveController@listPropertyExecutive']);
                        $router->post('property/fact/get-subcategory-facts', ['as' => 'Property.Fact.SubCategoryFacts', 'uses' => 'V1\PropertyFactController@getSubCategoryFacts']);
                        $router->post('property/room/add-room-bed', ['as' => 'Property.RoomAndBed.Add', 'uses' => 'V1\PropertyRoomController@addPropertyRoomAndBed']);
                        $router->post('property/room-fact-mapping/update', ['as' => 'Property.RoomFactMapping.Update', 'uses' => 'V1\PropertyRoomFactMappingController@updatePropertyRoomFactMapping']);
                        $router->post('property/room-photo-mapping/update', ['as' => 'Property.RoomPhotoMapping.Update', 'uses' => 'V1\PropertyRoomPhotoMappingController@updatePropertyRoomPhotoMapping']);
                        $router->post('property/awards-certificates/list', ['as' => 'Property.AwardCertificates.List', 'uses' => 'V1\PropertyAwardCertificatesController@listAwardsCertificates']);
                        $router->post('property/update/content-code', ['as' => 'Property.Update.Content-Code', 'uses' => 'V1\PropertyController@updatePropertyContentCode']);
                    });

                    $router->post('ai/openai', ['as' => 'AI.OpenAI', 'uses' => 'V1\AIController@request']);

                    $router->post('property/room-fact-mapping/is-feature/update', ['as' => 'Property.RoomFactMapping.Room.Fact.IsFeature.Update', 'uses' => 'V1\PropertyRoomFactMappingController@updatePropertyRoomFactIsFeature']);
                    $router->post('property/photo/upload', ['as' => 'Property.Photo.Upload', 'uses' => 'V1\PropertyPhotoController@uploadPropertyPhoto']);
                    $router->post('user/set-user-property', ['as' => 'User.Set.Property', 'uses' => 'UserController@setProperty']);
                    $router->post('property/dashboard', ['as' => 'Property.Dashboard', 'uses' => 'V1\PropertyController@propertyDashBoard']);
                    $router->post('property/pab-dashboard', ['as' => 'Property.Dashboard', 'uses' => 'V1\PropertyController@propertyPabDashBoard']);

                    $router->post('property/dashboard-plus', ['as' => 'Property.Dashboard-Plus', 'uses' => 'V1\PropertyController@propertyDashBoardPlus']);
                    $router->post('property/dashboard-plus/web-visitor', ['as' => 'Property.Dashboard-Plus.Web-Visitor', 'uses' => 'V1\PropertyController@propertyDashBoardPlusWebVisitor']);
                    $router->post('property/dashboard-plus/guest-demographic', ['as' => 'Property.Dashboard-Plus.Guest-Demographic', 'uses' => 'V1\PropertyController@propertyDashBoardPlusGuestDemographic']);
                    $router->post('property/dashboard-plus/top-channel', ['as' => 'Property.Dashboard-Plus.Top-Channel', 'uses' => 'V1\PropertyController@propertyDashBoardPlusTopChannel']);
                    $router->post('property/dashboard-plus/channel-forecast', ['as' => 'Property.Dashboard-Plus.Channel-Forecast', 'uses' => 'V1\PropertyController@propertyDashBoardPlusChannelForecast']);

                    $router->post('destination/search', ['as' => 'Destination.Search', 'uses' => 'V1\DestinationController@searchDestination']);
                    $router->post('property/type/list', ['as' => 'Property.Type.List', 'uses' => 'V1\PropertyTypeController@getPropertyTypes']);
                    $router->post('property/chain/list', ['as' => 'Property.Chain.List', 'uses' => 'V1\PropertyChainController@getPropertyChains']);

                    $router->post('property/content/list', ['as' => 'Property.Content.List', 'uses' => 'V1\PropertyContentController@getPropertyContent']);
                    $router->post('property/content/update', ['as' => 'Property.Content.Update', 'uses' => 'V1\PropertyContentController@updatePropertyContent']);
                    $router->post('property/fact/list', ['as' => 'Property.Fact.List', 'uses' => 'V1\PropertyFactController@getPropertyFact']);
                    $router->post('property/fact/search-property-facts', ['as' => 'Property.Fact.List', 'uses' => 'V1\PropertyFactController@searchPropertyFact']);
                    $router->post('property/executive/get', ['as' => 'Property.Executive.Get', 'uses' => 'V1\PropertyExecutiveController@getPropertyExecutive']);
                    $router->post('property/executive/update', ['as' => 'Property.Executive.Update', 'uses' => 'V1\PropertyExecutiveController@updatePropertyExecutive']);
                    $router->post('property/executive/add', ['as' => 'Property.Executive.Add', 'uses' => 'V1\PropertyExecutiveController@addPropertyExecutive']);
                    $router->post('property/executive/delete', ['as' => 'Property.Executive.Delete', 'uses' => 'V1\PropertyExecutiveController@deletePropertyExecutive']);
                    $router->post('property/config/list', ['as' => 'Property.Config.List', 'uses' => 'V1\PropertyConfigController@getPropertyConfig']);
                    $router->post('property/config/update', ['as' => 'Property.Config.Update', 'uses' => 'V1\PropertyConfigController@updatePropertyConfig']);

                    $router->post('property/info/get', ['as' => 'Property.Information.Get', 'uses' => 'V1\PropertyController@getProperty']);
                    $router->post('property/brand/get', ['as' => 'Property.Brand.Get', 'uses' => 'V1\PropertyBrandController@getPropertyBrand']);
                    $router->post('property/contact/list', ['as' => 'Property.Contact.List', 'uses' => 'V1\PropertyContactController@getPropertyContact']);
                    $router->post('property/photo/list', ['as' => 'Property.Photo.List', 'uses' => 'V1\PropertyPhotoController@getPropertyPhotos']);
                    $router->post('property/rooms-with-rate-channel/get', ['as' => 'Property.RoomWithRateChannel.Get', 'uses' => 'V1\PropertyRoomController@getPropertyRoomRateChannel']);
                    $router->post('property/brand/update', ['as' => 'Property.Brand.Update', 'uses' => 'V1\PropertyBrandController@updatePropertyBrand']);
                    $router->post('property/brand/clear-logo', ['as' => 'Property.Brand.Clear.Logo', 'uses' => 'V1\PropertyBrandController@clearBrandLogo']);

                    $router->post('property/fact-mapping/remove', ['as' => 'Property.FactMapping.Remove', 'uses' => 'V1\PropertyFactMappingController@removePropertyFactMapping']);
                    $router->post('property/fact-mapping/add', ['as' => 'Property.FactMapping.Add', 'uses' => 'V1\PropertyFactMappingController@addPropertyFactMapping']);
                    $router->post('property/fact-mapping/update', ['as' => 'Property.FactMapping.Update', 'uses' => 'V1\PropertyFactMappingController@updatePropertyFactMapping']);
                    $router->post('property/additional-info/list', ['as' => 'Property.AdditionalInfo.List', 'uses' => 'V1\PropertyAdditionalInfoController@getPropertyAdditionalInfo']);
                    $router->post('property/additional-info/insert', ['as' => 'Property.AdditionalInfo.Insert', 'uses' => 'V1\PropertyAdditionalInfoController@insertPropertyAdditionalInfo']);
                    $router->post('property/additional-info/update', ['as' => 'Property.AdditionalInfo.Update', 'uses' => 'V1\PropertyAdditionalInfoController@updatePropertyAdditionalInfo']);

                    $router->post('property/photo/category/list', ['as' => 'Property.Photo.Category.List', 'uses' => 'V1\PropertyPhotoCategoryController@propertyPhotoCategoryList']);
                    $router->post('property/photo/order', ['as' => 'Property.Photo.Order', 'uses' => 'V1\PropertyPhotoController@setPropertyPhotoOrder']);
                    $router->post('property/photo/category/set', ['as' => 'Property.Photo.Category.Set', 'uses' => 'V1\PropertyPhotoController@setPropertyPhotoCategory']);
                    $router->post('property/photo/set-default', ['as' => 'Property.Photo.SetDefault', 'uses' => 'V1\PropertyPhotoController@setDefaultPhoto']);
                    $router->post('property/photo/publish', ['as' => 'Property.Photo.Publish', 'uses' => 'V1\PropertyPhotoController@publishPhotos']);
                    $router->post('property/photo/delete', ['as' => 'Property.Photo.Delete', 'uses' => 'V1\PropertyPhotoController@deletePropertyPhotos']);

                    $router->post('property/room/add', ['as' => 'Property.Room.Add', 'uses' => 'V1\PropertyRoomController@addPropertyRoom']);
                    $router->post('property/room/update-room-bed', ['as' => 'Property.RoomAndBed.Update', 'uses' => 'V1\PropertyRoomController@updatePropertyRoomAndBed']);
                    $router->post('property/room/get-room-bed', ['as' => 'Property.RoomAndBed.Get', 'uses' => 'V1\PropertyRoomController@getPropertyRoomAndBed']);
                    $router->post('property/room/get', ['as' => 'Property.Room.Get', 'uses' => 'V1\PropertyRoomController@getPropertyRoom']);
                    $router->post('property/room/update', ['as' => 'Property.Room.Update', 'uses' => 'V1\PropertyRoomController@updatePropertyRoom']);
                    $router->post('property/room/delete', ['as' => 'Property.Room.Delete', 'uses' => 'V1\PropertyRoomController@deletePropertyRoom']);

                    $router->post('property/room-fact/list', ['as' => 'Property.RoomFact.List', 'uses' => 'V1\PropertyRoomFactMappingController@getPropertyRoomFact']);

                    $router->post('property/room-photo/list', ['as' => 'Property.RoomPhoto.List', 'uses' => 'V1\PropertyRoomPhotoMappingController@getPropertyRoomPhoto']);

                    $router->post('property/room-bed/add', ['as' => 'Property.RoomBed.Add', 'uses' => 'V1\PropertyRoomBedController@addPropertyRoomBed']);
                    $router->post('property/room-bed/get', ['as' => 'Property.RoomBed.Get', 'uses' => 'V1\PropertyRoomBedController@getPropertyRoomBed']);

                    $router->post('property/property-channel-mapping/add', ['as' => 'Property.PropertyChannelMapping.Add', 'uses' => 'V1\PropertyChannelMappingController@addPropertyChannelMapping']);
                    $router->post('property/property-channel-mapping/get', ['as' => 'Property.PropertyChannelMapping.Get', 'uses' => 'V1\PropertyChannelMappingController@getPropertyChannelMapping']);
                    $router->post('property/property-channel-mapping/remove', ['as' => 'Property.PropertyChannelMapping.Remove', 'uses' => 'V1\PropertyChannelMappingController@removePropertyChannelMapping']);
                    $router->post('property/property-channel-mapping/update', ['as' => 'Property.PropertyChannelMapping.Update', 'uses' => 'V1\PropertyChannelMappingController@updatePropertyChannelMapping']);

                    $router->post('property/property-channel-setup/add', ['as' => 'Property.PropertyChannelSetup.Add', 'uses' => 'V1\PropertyChannelMappingController@addPropertyChannelSetup']);
                    $router->post('property/property-channel-setup/get', ['as' => 'Property.PropertyChannelSetup.Get', 'uses' => 'V1\PropertyChannelMappingController@getPropertyChannelSetup']);

                    $router->post('property/channel-nonrefundable/create', ['as' => 'Property.PropertyChannelNonrefundable.Create', 'uses' => 'V1\PropertyNonrefundableController@createPropertyChannelNonrefundable']);
                    $router->post('property/channel-nonrefundable/store', ['as' => 'Property.PropertyChannelNonrefundable.Store', 'uses' => 'V1\PropertyNonrefundableController@storePropertyChannelNonrefundable']);
                    $router->post('property/channel-nonrefundable/get', ['as' => 'Property.PropertyChannelNonrefundable.Get', 'uses' => 'V1\PropertyNonrefundableController@getPropertyChannelNonrefundable']);

                    $router->post('property/accommodation-types/get', ['as' => 'Property.AccommodationTypes.Get', 'uses' => 'V1\PropertyRoomRateController@getPropertyAccommodationTypes']);
                    $router->post('property/room-rate/add', ['as' => 'Property.RoomRate.Add', 'uses' => 'V1\PropertyRoomRateController@addPropertyRoomRate']);
                    $router->post('property/room-rate/add-with-inclusion', ['as' => 'Property.RoomRate.Add', 'uses' => 'V1\PropertyRoomRateController@addPropertyRoomRateWithInclusion']);
                    $router->post('property/room-rate/get', ['as' => 'Property.RoomRate.Get', 'uses' => 'V1\PropertyRoomRateController@getPropertyRoomRate']);
                    $router->post('property/room-rate/edit', ['as' => 'Property.RoomRate.Edit', 'uses' => 'V1\PropertyRoomRateController@editPropertyRoomRate']);
                    $router->post('property/room-rate/update', ['as' => 'Property.RoomRate.Update', 'uses' => 'V1\PropertyRoomRateController@updatePropertyRoomRate']);
                    $router->post('property/room-rate/delete', ['as' => 'Property.RoomRate.Delete', 'uses' => 'V1\PropertyRoomRateController@deletePropertyRoomRate']);
                    $router->post('property/room-rate/get-connected', ['as' => 'Property.RoomRate.Get.Connected', 'uses' => 'V1\PropertyRoomRateController@getPropertyRoomRateConnected']);
                    $router->post('property/room-rate/sync-connected', ['as' => 'Property.RoomRate.Sync.Connected', 'uses' => 'V1\PropertyRoomRateController@syncPropertyRoomRateConnected']);

                    $router->post('property/room-rate-mapping/add', ['as' => 'Property.RoomRateMapping.Add', 'uses' => 'V1\PropertyRoomRateMappingController@addPropertyRoomRateMapping']);
                    $router->post('property/room-rate-mapping/add-with-setup', ['as' => 'Property.RoomRateMapping.AddWithSetup', 'uses' => 'V1\PropertyRoomRateMappingController@addPropertyRoomRateMappingWithSetup']);
                    $router->post('property/room-rate-mapping/get', ['as' => 'Property.RoomRateMapping.Get', 'uses' => 'V1\PropertyRoomRateMappingController@getPropertyRoomRateMapping']);
                    $router->post('property/room-rate-mapping/update', ['as' => 'Property.RoomRateMapping.Update', 'uses' => 'V1\PropertyRoomRateMappingController@updatePropertyRoomRateMapping']);
                    $router->post('property/room-rate-mapping/set-status', ['as' => 'Property.RoomRateMapping.SetStatus', 'uses' => 'V1\PropertyRoomRateMappingController@setStatusPropertyRoomRateMapping']);
                    $router->post('property/room-rate-mapping/delete', ['as' => 'Property.RoomRateMapping.Delete', 'uses' => 'V1\PropertyRoomRateMappingController@deletePropertyRoomRateMapping']);

                    $router->post('property/room-rate-inclusion-mapping/add', ['as' => 'Property.RoomRateInclusionMapping.Add', 'uses' => 'V1\PropertyRoomRateInclusionMappingController@addPropertyRoomRateInclusionMapping']);
                    $router->post('property/room-rate-inclusion-mapping/get', ['as' => 'Property.RoomRateInclusionMapping.Get', 'uses' => 'V1\PropertyRoomRateInclusionMappingController@getPropertyRoomRateInclusionMapping']);

                    $router->post('property/room-rate-channel-mapping/add', ['as' => 'Property.RoomRateChannelMapping.Add', 'uses' => 'V1\PropertyRoomRateChannelMappingController@addPropertyRoomRateChannelMapping']);
                    $router->post('property/room-rate-channel-mapping/get', ['as' => 'Property.RoomRateChannelMapping.Get', 'uses' => 'V1\PropertyRoomRateChannelMappingController@getPropertyRoomRateChannelMapping']);

                    $router->post('property/room-rate-mapping-setup/add', ['as' => 'Property.RoomRateMappingSetup.Add', 'uses' => 'V1\PropertyRoomRateMappingSetupController@addPropertyRoomRateMappingSetup']);
                    $router->post('property/room-rate-mapping-setup/get', ['as' => 'Property.RoomRateMappingSetup.Get', 'uses' => 'V1\PropertyRoomRateMappingSetupController@getPropertyRoomRateMappingSetup']);

                    $router->post('property/property-room-types', ['as' => 'Property.Room.Types', 'uses' => 'V1\PropertyRoomTypeController@getPropertyMappedRoomTypes']);

                    $router->post('property/room-size-types/get', ['as' => '', 'uses' => 'V1\PropertyRoomSizeTypeController@getPropertyRoomSizeTypes']);

                    $router->post('property/offer/list', ['as' => 'Property.Offer.List', 'uses' => 'V1\PropertyOfferController@listPropertyOffer']);
                    $router->post('property/offer/create', ['as' => 'Property.Offer.Create', 'uses' => 'V1\PropertyOfferController@createPropertyOffer']);
                    $router->post('property/offer/store', ['as' => 'Property.Offer.Store', 'uses' => 'V1\PropertyOfferController@storePropertyOffer']);
                    $router->post('property/offer/price/get', ['as' => 'Property.Offer.GetPrice', 'uses' => 'V1\PropertyOfferController@getPricePropertyOffer']);
                    $router->post('property/offer/price/store', ['as' => 'Property.Offer.StorePrice', 'uses' => 'V1\PropertyOfferController@storePricePropertyOffer']);
                    $router->post('property/offer/edit', ['as' => 'Property.Offer.Edit', 'uses' => 'V1\PropertyOfferController@editPropertyOffer']);
                    $router->post('property/offer/update', ['as' => 'Property.Offer.Update', 'uses' => 'V1\PropertyOfferController@updatePropertyOffer']);
                    $router->post('property/offer/status/update', ['as' => 'Property.Offer.Status.Update', 'uses' => 'V1\PropertyOfferController@updatePropertyOfferStatus']);
                    $router->post('property/offer/accept-status/update', ['as' => 'Property.Offer.AcceptStatus.Update', 'uses' => 'V1\PropertyOfferController@updatePropertyOfferAceptStatus']);
                    $router->post('property/offer/dashboard', ['as' => 'Property.Offer.Dashboard', 'uses' => 'V1\PropertyOfferController@dashboardPropertyOffer']);
                    $router->post('property/offer/send-mail', ['as' => 'Offer.SendEmail', 'uses' => 'V1\PropertyOfferController@sendOfferEmail']);

                    $router->post('property/web/list', ['as' => 'Property.Web.List', 'uses' => 'V1\PropertyWebController@listPropertyWeb']);
                    $router->post('property/web/get', ['as' => 'Property.Web.Get', 'uses' => 'V1\PropertyWebController@getPropertyWeb']);
                    $router->post('property/web/create', ['as' => 'Property.Web.Create', 'uses' => 'V1\PropertyWebController@createPropertyWeb']);
                    $router->post('property/web/update', ['as' => 'Property.Web.Update', 'uses' => 'V1\PropertyWebController@updatePropertyWeb']);
                    $router->post('property/web/get-edit-content', ['as' => 'Property.Web.EditContent', 'uses' => 'V1\PropertyWebController@getPropertyWebEditContent']);
                    $router->post('property/web/update-content', ['as' => 'Property.Web.UpdateContent', 'uses' => 'V1\PropertyWebController@updatePropertyWebContent']);
                    $router->post('property/web/publish', ['as' => 'Property.Web.Publish', 'uses' => 'V1\PropertyWebController@setPublishWeb']);
                    $router->post('property/web/meta/get', ['as' => 'Property.Web.Meta.Get', 'uses' => 'V1\PropertyWebController@getPropertyWebMeta']);
                    $router->post('property/web/meta-tag/get', ['as' => 'Property.Web.MetaTag.Get', 'uses' => 'V1\PropertyWebController@getPropertyWebMetaTag']);
                    $router->post('property/web/meta-tag/sync', ['as' => 'Property.Web.MetaTag.Sync', 'uses' => 'V1\PropertyWebController@syncPropertyWebMetaTag']);
                    $router->post('property/web/meta-tag-mapping/get', ['as' => 'Property.Web.MetaTagMapping.Get', 'uses' => 'V1\PropertyWebController@listPropertyWebMetaTagMapping']);

                    $router->post('property/cancellation-policy/list', ['as' => 'Cancellation.Policy.Get', 'uses' => 'V1\PropertyCancellationPolicyController@getPropertyCancellationPolicyList']);
                    $router->post('property/cancellation-policy/create', ['as' => 'Cancellation.Policy.Create', 'uses' => 'V1\PropertyCancellationPolicyController@createPropertyCancellationPolicy']);
                    $router->post('property/cancellation-policy/update', ['as' => 'Cancellation.Policy.Update', 'uses' => 'V1\PropertyCancellationPolicyController@updatePropertyCancellationPolicy']);


                    $router->post('property/person-pricing-policy/list', ['as' => 'PersonPricing.Policy.Get', 'uses' => 'V1\PropertyPersonPricingPolicyController@getPropertyPersonPricingPolicyList']);
                    $router->post('property/person-pricing-policy-adult/create', ['as' => 'PersonPricingAdult.Policy.Add', 'uses' => 'V1\PropertyPersonPricingPolicyController@createPropertyPersonPricingAdultPolicy']);
                    $router->post('property/person-pricing-policy-child/create', ['as' => 'PersonPricingChild.Policy.Add', 'uses' => 'V1\PropertyPersonPricingPolicyController@createPropertyPersonPricingChildPolicy']);
                    $router->post('property/person-pricing-policy-adult/update', ['as' => 'PersonPricingAdult.Policy.Update', 'uses' => 'V1\PropertyPersonPricingPolicyController@updatePropertyPersonPricingAdultPolicy']);
                    $router->post('property/person-pricing-policy-child/update', ['as' => 'PersonPricingChild.Policy.Update', 'uses' => 'V1\PropertyPersonPricingPolicyController@updatePropertyPersonPricingChildPolicy']);
                    $router->post('property/person-pricing-policy-adult/delete', ['as' => 'PersonPricingAdult.Policy.Delete', 'uses' => 'V1\PropertyPersonPricingPolicyController@deletePropertyPersonPricingAdultPolicy']);
                    $router->post('property/person-pricing-policy-child/delete', ['as' => 'PersonPricingChild.Policy.Delete', 'uses' => 'V1\PropertyPersonPricingPolicyController@deletePropertyPersonPricingChildPolicy']);

                    $router->post('property/booking/list', ['as' => 'Property.Booking.List.Get', 'uses' => 'V1\PropertyBookingController@getPropertyBookingList']);
                    $router->post('property/booking/list-filter', ['as' => 'Property.Booking.List-Filter.Get', 'uses' => 'V1\PropertyBookingController@getPropertyBookingListFilter']);
                    $router->post('property/transaction/list', ['as' => 'Property.Transaction.List', 'uses' => 'V1\PropertyBookingController@getPropertyTransactionList']);
                    $router->post('property/booking/detail', ['as' => 'Property.Booking.Detail.Get', 'uses' => 'V1\PropertyBookingController@getPropertyBookingDetail']);
                    $router->post('property/booking/update', ['as' => 'Property.Booking.Update', 'uses' => 'V1\PropertyBookingController@updateBooking']);
                    $router->post('property/booking/sendEmail', ['as' => 'Property.Booking.SendEmail.Get', 'uses' => 'V1\PropertyBookingController@sendBookingEmail']);

                    $router->post('property/booking/paymentData', ['as' => 'Property.Booking.paymentData', 'uses' => 'V1\PropertyBookingController@getBookingPayment']);

                    $router->post('property/download-property-photos', ['as' => 'Download.Property.Photos', 'uses' => 'V1\PropertyPhotoController@downloadPropertyPhotos']);
                    $router->post('property/room-rate-channel-mapping/update', ['as' => 'Property.RoomRateChannelMapping.Update', 'uses' => 'V1\PropertyRoomRateChannelMappingController@updatePropertyRoomRateChannelMapping']);
                    $router->group(['middleware' => 'checkPropertyChannelConnection'], function () use ($router) { // check property channel connection status.
                        $router->post('property/room-rate-channel-cancellation-policy/list', ['as' => 'RoomRateChannelCancellationPolicy.Get', 'uses' => 'V1\PropertyCancellationPolicyController@getRoomRateChannelCancellationPolicy']);
                        $router->post('property/room-rate-channel-pricing-policy/list', ['as' => 'RoomRateChannelPersonPricingPolicy.Get', 'uses' => 'V1\PropertyPersonPricingPolicyController@getRoomRateChannelPersonPricingPolicy']);
                        $router->post('property/channel/payment-setup/get', ['as' => 'Property.Channel.Payment.Get', 'uses' => 'V1\PropertyChannelBookingPaymentSetupController@getPropertyChannelBookingPaymentSetup']);
                        $router->post('property/channel-room-rate-mapping/get', ['as' => 'Property.ChannelRoomRateMapping.Get', 'uses' => 'V1\PropertyRoomController@getChannelRoomRateMapping']);
                        $router->post('property/room-rate-channel-cancellation-policy/update', ['as' => 'RoomRateChannelCancellationPolicy.Update', 'uses' => 'V1\PropertyCancellationPolicyController@updateRoomRateChannelCancellationPolicy']);
                        $router->post('property/room-rate-channel-pricing-adult-policy/update', ['as' => 'RoomRatePricingAdultPolicy.Update', 'uses' => 'V1\PropertyPersonPricingPolicyController@updateRoomRatePricingAdultPolicy']);
                        $router->post('property/room-rate-channel-pricing-child-policy/update', ['as' => 'RoomRatePricingChildPolicy.Update', 'uses' => 'V1\PropertyPersonPricingPolicyController@updateRoomRatePricingChildPolicy']);
                        $router->post('property/channel/payment-setup/add', ['as' => 'Property.Channel.Payment.Add', 'uses' => 'V1\PropertyChannelBookingPaymentSetupController@addPropertyChannelBookingPaymentSetup']);
                        $router->post('property/rooms-inventory/get', ['as' => 'Property.RoomsInventory.Get', 'uses' => 'V1\PropertyRoomController@getPropertyRoomInventory']);
                        $router->post('property/group-inventory/get', ['as' => 'Property.GroupInventory.Get', 'uses' => 'V1\PropertyChannelGroupController@getPropertyGroupInventory']);
                        $router->post('property/room-rate-mapping/post-inventory-link', ['as' => 'Property.RoomRateMapping.PostInventoryLink', 'uses' => 'V1\PropertyRoomRateMappingController@postInventoryLink']);
                        $router->post('property/room-rate-mapping/rate-availability-update', ['as' => 'Property.RoomRateMapping.RoomRateAvailabilityUpdate', 'uses' => 'V1\PropertyRoomRateMappingController@roomRateAvailabilityUpdate']);
                        $router->post('property/room-rate-mapping/bulk-update', ['as' => 'Property.RoomRateMapping.BulkUpdate', 'uses' => 'V1\PropertyRoomRateMappingController@bulkUpdate']);
                        $router->post('property/bulk-update-params/get', ['as' => 'Property.ChannelBulkUpdateParams.Get', 'uses' => 'V1\PropertyRoomController@getChannelBulkUpdateParams']);
                    });
                    $router->post('property/download-pdf', ['as' => 'Property.Download.PDF', 'uses' => 'V1\ExportPdfController@pdf']);


                    $router->post('property/payment/dashboard', ['as' => 'Property.Payment.Dashboard', 'uses' => 'V1\PaymentController@paymentDashboard']);
                    $router->post('property/payment-type/list', ['as' => 'Property.PaymentType.List', 'uses' => 'V1\PaymentController@getPaymentTypeList']);
                    $router->post('property/payment-type/get', ['as' => 'Property.PaymentType.Get', 'uses' => 'V1\PaymentController@getPaymentType']);
                    $router->post('property/payment-mapping/list', ['as' => 'Property.PaymentMapping.List', 'uses' => 'V1\PaymentController@getPaymentMappingList']);
                    $router->post('property/payment-mapping/create', ['as' => 'Property.PaymentMapping.Create', 'uses' => 'V1\PaymentController@createPaymentMapping']);
                    $router->post('property/payment-mapping/update-status', ['as' => 'Property.PaymentMapping.UpdateStatus', 'uses' => 'V1\PaymentController@updatePaymentMappingStatus']);
                    $router->post('property/payment-mapping/set-default', ['as' => 'Property.PaymentMapping.SetDefault', 'uses' => 'V1\PaymentController@setPaymentMappingDefault']);
                    $router->post('property/payment-mapping/update', ['as' => 'Property.PaymentMapping.Update', 'uses' => 'V1\PaymentController@updatePaymentMapping']);
                    $router->post('property/payment-installments/update', ['as' => 'Property.PaymentInstallments.Update', 'uses' => 'V1\PaymentController@updatePaymentInstallments']);
                    $router->post('property/payment-installments/update-status', ['as' => 'Property.PaymentInstallments.UpdateStatus', 'uses' => 'V1\PaymentController@updatePaymentInstallmentStatus']);

                    $router->post('property/booking-engine/dashboard', ['as' => 'Property.BookingEngine.Dashboard', 'uses' => 'V1\PropertyBookingController@bookEngineDashboard']);
                    $router->post('property/booking-engine/contract-file-upload', ['as' => 'Property.BookingEngine.ContractFileUpload', 'uses' => 'V1\PropertyBookingController@bookingEngineContractUpload']);

                    $router->post('property/place-categories/list', ['as' => 'Property.PlaceCategories.List', 'uses' => 'V1\PropertyPlaceController@getPlaceCategories']);
                    $router->post('property/place-categories/single-list', ['as' => 'Property.PlaceCategories.SingleList', 'uses' => 'V1\PropertyPlaceController@getPlaceCategoriesSingle']);
                    $router->post('property/place-working-hour/list', ['as' => 'Property.PlaceWorkingHour.List', 'uses' => 'V1\PropertyPlaceController@getPlacePlaceWorkingHours']);
                    $router->post('property/place/create', ['as' => 'Property.Place.Create', 'uses' => 'V1\PropertyPlaceController@createPlace']);
                    $router->post('property/place/list', ['as' => 'Property.Place.List', 'uses' => 'V1\PropertyPlaceController@listPlace']);
                    $router->post('property/place/update', ['as' => 'Property.Place.Update', 'uses' => 'V1\PropertyPlaceController@updatePlace']);
                    $router->post('property/place/update-status', ['as' => 'Property.Place.UpdateStatus', 'uses' => 'V1\PropertyPlaceController@updatePlaceStatus']);
                    $router->post('property/place/delete', ['as' => 'Property.Place.Delete', 'uses' => 'V1\PropertyPlaceController@deletePlace']);
                    $router->post('property/place/edit', ['as' => 'Property.Place.Edit', 'uses' => 'V1\PropertyPlaceController@editPlace']);
                    $router->post('property/place-photo/list', ['as' => 'Property.PlacePhoto.List', 'uses' => 'V1\PropertyPlaceController@getPropertyPlacePhoto']);
                    $router->post('property/place-photo-mapping/update', ['as' => 'Property.PlacePhotoMapping.Update', 'uses' => 'V1\PropertyPlaceController@updatePropertyPlacePhotoMapping']);
                    $router->post('property/place-facilities/list', ['as' => 'Property.PlaceFacilities.List', 'uses' => 'V1\PropertyPlaceController@listPlaceFacilities']);
                    $router->post('property/place-facilities/update', ['as' => 'Property.PlaceFacilities.update', 'uses' => 'V1\PropertyPlaceController@updatePlaceFacilities']);
                    $router->post('property/place-category-fields/get', ['as' => 'Property.PlaceCategoryFields.Get', 'uses' => 'V1\PropertyPlaceController@getPlaceCategoryFields']);
                    $router->post('property/place-field-mapping/add', ['as' => 'Property.PlaceCategoryFields.NewField', 'uses' => 'V1\PropertyPlaceController@insertNewFieldMapping']);


                    $router->post('property/awards-certificates/categories', ['as' => 'Property.AwardCertificates.Categories', 'uses' => 'V1\PropertyAwardCertificatesController@getAwardCertificateCategories']);
                    $router->post('property/awards-certificates/create', ['as' => 'Property.AwardCertificates.Create', 'uses' => 'V1\PropertyAwardCertificatesController@createAwardsCertificates']);
                    $router->post('property/awards-certificates/update', ['as' => 'Property.AwardCertificates.Update', 'uses' => 'V1\PropertyAwardCertificatesController@updateAwardsCertificates']);
                    $router->post('property/awards-certificates/delete-photo', ['as' => 'Property.AwardCertificates.DeletePhoto', 'uses' => 'V1\PropertyAwardCertificatesController@deletePhotoAwardsCertificates']);
                    $router->post('property/awards-certificates/update-status', ['as' => 'Property.AwardCertificates.UpdateStatus', 'uses' => 'V1\PropertyAwardCertificatesController@updateStatusAwardsCertificates']);

                    $router->post('property/manual-payment/create-form', ['as' => 'Property.PaymentTransaction.CreateForm', 'uses' => 'BookingEngine\V1\PaymentLinkController@createManualPaymentForm']);
                    $router->post('property/manual-payment/create', ['as' => 'Property.PaymentTransaction.CreateLink', 'uses' => 'BookingEngine\V1\PaymentLinkController@createManualPayment']);
                    $router->post('property/manual-payment/edit-form', ['as' => 'Property.PaymentTransaction.EditForm', 'uses' => 'BookingEngine\V1\PaymentLinkController@editManualPaymentForm']);
                    $router->post('property/manual-payment/update', ['as' => 'Property.PaymentTransaction.List', 'uses' => 'BookingEngine\V1\PaymentLinkController@updateManualPayment']);
                    $router->post('property/manual-payment/get', ['as' => 'Property.PaymentTransaction.Get', 'uses' => 'BookingEngine\V1\PaymentLinkController@getManualPayment']);


                    $router->post('property/promotion-type/list', ['as' => 'Promotion.Type.List', 'uses' => 'V1\PropertyPromotionController@getPromotionTypeList']);
                    $router->post('property/property-promotion/list', ['as' => 'Property.Promotion.List', 'uses' => 'V1\PropertyPromotionController@getPropertyPromotionList']);
                    $router->post('property/property-promotion/create', ['as' => 'Property.Promotion.Create', 'uses' => 'V1\PropertyPromotionController@createPropertyPromotion']);
                    $router->post('property/room-rate-channel-promotion/list', ['as' => 'PropertyRoomRateChannelPromotion.List', 'uses' => 'V1\PropertyPromotionController@getRoomRateChannelPromotion']);
                    $router->post('property/property-promotion/update', ['as' => 'Property.Promotion.Update', 'uses' => 'V1\PropertyPromotionController@updatePropertyPromotion']);
                    $router->post('property/room-rate-channel-promotion/update', ['as' => 'RoomRateChannelPromotion.Update', 'uses' => 'V1\PropertyPromotionController@updateRoomRateChannelPromotion']);
                    $router->post('property/property-promotion/delete', ['as' => 'Property.Promotion.Delete', 'uses' => 'V1\PropertyPromotionController@deletePropertyPromotion']);

                    $router->post('property/property-products/get', ['as' => 'Property.Product.Get', 'uses' => 'V1\ProductController@getPropertyProducts']);
                    $router->post('property/property-products/activate', ['as' => 'Property.Product.Get', 'uses' => 'V1\ProductController@propertyProductActivate']);

                    $router->post('property/channel-group/get', ['as' => 'Property.ChannelGroup.Get', 'uses' => 'V1\PropertyChannelGroupController@getPropertyChannelGroup']);
                    $router->post('property/channel-group/create', ['as' => 'Property.ChannelGroup.Create', 'uses' => 'V1\PropertyChannelGroupController@createPropertyChannelGroup']);
                    $router->post('property/channel-group/add', ['as' => 'Property.ChannelGroup.Add', 'uses' => 'V1\PropertyChannelGroupController@addPropertyChannelGroup']);
                    $router->post('property/channel-group/update', ['as' => 'Property.ChannelGroup.Update', 'uses' => 'V1\PropertyChannelGroupController@updatePropertyChannelGroup']);

                    $router->post('property/channel-contact/get', ['as' => 'Property.ChannelContact.Get', 'uses' => 'V1\PropertyChannelContactController@getPropertyChannelContact']);
                    $router->post('property/channel-contact/add', ['as' => 'Property.ChannelContact.Add', 'uses' => 'V1\PropertyChannelContactController@addPropertyChannelContact']);
                    $router->post('property/channel-contact/update', ['as' => 'Property.ChannelContact.Update', 'uses' => 'V1\PropertyChannelContactController@updatePropertyChannelContact']);
                    $router->post('property/channel-contact/delete', ['as' => 'Property.ChannelContact.Delete', 'uses' => 'V1\PropertyChannelContactController@deletePropertyChannelContact']);

                    $router->post('cpa/property/competitor/create', ['as' => 'CPA.Property.Competitor.Create', 'uses' => 'V1\CompetitorPriceAnalysisController@createPropertyCompetitor']);
                    $router->post('cpa/property/competitor/get', ['as' => 'CPA.Property.Competitor.Get', 'uses' => 'V1\CompetitorPriceAnalysisController@getPropertyCompetitor']);
                    $router->post('cpa/property/competitor/delete', ['as' => 'CPA.Property.Competitor.Delete', 'uses' => 'V1\CompetitorPriceAnalysisController@deletePropertyCompetitor']);
                    $router->post('cpa/property/competitor/sync', ['as' => 'CPA.Property.Competitor.Sync', 'uses' => 'V1\CompetitorPriceAnalysisController@syncPropertyCompetitor']);
                    $router->post('cpa/property/competitor/excel', ['as' => 'CPA.Property.Competitor.Excel', 'uses' => 'V1\CompetitorPriceAnalysisController@propertyCompetitorExcel']);
                    $router->post('cpa/property/competitor/analysis', ['as' => 'CPA.Property.Competitor.Analysis', 'uses' => 'V1\CompetitorPriceAnalysisController@propertyCompetitorAnalysis']);

                    $router->post('cpa/property/competitor-group/get', ['as' => 'Property.CompetitorGroup.Get', 'uses' => 'V1\PropertyCompetitorGroupController@getPropertyCompetitorGroup']);
                    $router->post('cpa/property/competitor-group/sync', ['as' => 'Property.CompetitorGroup.Sync', 'uses' => 'V1\PropertyCompetitorGroupController@syncPropertyCompetitorGroup']);
                    $router->post('cpa/property/competitor-group-mapping/sync', ['as' => 'Property.CompetitorGroupMapping.Sync', 'uses' => 'V1\PropertyCompetitorGroupController@syncPropertyCompetitorGroupMapping']);
                    $router->post('cpa/property/competitor-group-mapping/get', ['as' => 'Property.CompetitorGroupMapping.Get', 'uses' => 'V1\PropertyCompetitorGroupController@getPropertyCompetitorGroupMapping']);


                    $router->post('cpa/property/quick-pricing/get', ['as' => 'CPA.Property.Quick-Pricing.Get', 'uses' => 'V1\PropertyQuickPricingController@getPropertyQuickPricing']);
                    $router->post('cpa/property/quick-pricing/sync', ['as' => 'CPA.Property.Quick-Pricing.Sync', 'uses' => 'V1\PropertyQuickPricingController@syncPropertyQuickPricing']);
                    $router->post('cpa/property/quick-pricing/rate', ['as' => 'CPA.Property.Quick-Pricing.Rate', 'uses' => 'V1\PropertyQuickPricingController@propertyQuickPricingRate']);

                    $router->post('property/addon/get', ['as' => 'Property.Addon.Get', 'uses' => 'V1\PropertyAddonController@getPropertyAddon']);
                    $router->post('property/addon/sync', ['as' => 'Property.Addon.Sync', 'uses' => 'V1\PropertyAddonController@syncPropertyAddon']);

                    $router->post('property/coupon/get', ['as' => 'Property.Coupon.Get', 'uses' => 'V1\PropertyCouponController@getPropertyChannelCoupon']);
                    $router->post('property/coupon/sync', ['as' => 'Property.Coupon.Sync', 'uses' => 'V1\PropertyCouponController@syncPropertyChannelCoupon']);

                    $router->post('property/web/content/get', ['as' => 'Property.Web.Content.Get', 'uses' => 'V1\PropertyWebContentController@getPropertyWebContent']);
                    $router->post('property/web/content/get/{id}', ['as' => 'Property.Web.Content.Get', 'uses' => 'V1\PropertyWebContentController@getPropertyWebContent']);
                    $router->post('property/web/content/create', ['as' => 'Property.Web.Content.Create', 'uses' => 'V1\PropertyWebContentController@createPropertyWebContent']);
                    $router->post('property/web/content/update/{id}', ['as' => 'Property.Web.Content.Update', 'uses' => 'V1\PropertyWebContentController@updatePropertyWebContent']);
                    $router->post('property/web/content/delete/{id}', ['as' => 'Property.Web.Content.Delete', 'uses' => 'V1\PropertyWebContentController@deletePropertyWebContent']);
                    $router->post('property/web/content-category/get', ['as' => 'Property.Web.Content-Category.Get', 'uses' => 'V1\PropertyWebContentController@getPropertyWebContentCategory']);
                    $router->post('property/web/content/image', ['as' => 'Property.Web.Content.Image.Upload', 'uses' => 'V1\PropertyWebContentController@uploadPropertyWebContentImage']);

                    $router->post('property/web/component/get', ['as' => 'Property.Web.Component.Get', 'uses' => 'V1\PropertyWebComponentController@getPropertyWebComponent']);
                    $router->post('property/web/component/sync', ['as' => 'Property.Web.Component.Sync', 'uses' => 'V1\PropertyWebComponentController@syncPropertyWebComponent']);


                    $router->post('property/web/popup/get', ['as' => 'Property.Web.Popup.Get', 'uses' => 'V1\PropertyWebPopupController@getPropertyWebPopup']);
                    $router->post('property/web/popup/get/{id}', ['as' => 'Property.Web.Popup.Get', 'uses' => 'V1\PropertyWebPopupController@getPropertyWebPopup']);
                    $router->post('property/web/popup/create', ['as' => 'Property.Web.Popup.Create', 'uses' => 'V1\PropertyWebPopupController@createPropertyWebPopup']);
                    $router->post('property/web/popup/update/{id}', ['as' => 'Property.Web.Popup.Update', 'uses' => 'V1\PropertyWebPopupController@updatePropertyWebPopup']);
                    $router->post('property/web/popup/delete/{id}', ['as' => 'Property.Web.Popup.Delete', 'uses' => 'V1\PropertyWebPopupController@deletePropertyWebPopup']);
                    $router->post('property/web/popup/image', ['as' => 'Property.Web.Popup.Image.Upload', 'uses' => 'V1\PropertyWebPopupController@uploadPropertyWebPopupImage']);

                    $router->post('property/booking-engine-report', ['as' => 'Property.Booking.Engine.Report', 'uses' => 'V1\PropertyController@bookingEngineReport']);
                    $router->post('property/coupon-code-report', ['as' => 'Property.Coupon.Code.Report', 'uses' => 'V1\PropertyController@couponCodeReport']);


                    $router->post('property/coupon-code-report', ['as' => 'Property.Coupon.Code.Report', 'uses' => 'V1\PropertyController@couponCodeReport']);



                    $router->post('reputation-management/channel/get', ['as' => 'Property.ReputationManagement.Channel.Get', 'uses' => 'V1\ReputationManagementController@getChannel']);
                    $router->post('reputation-management/channel/sync', ['as' => 'Property.ReputationManagement.Channel.Sync', 'uses' => 'V1\ReputationManagementController@syncChannel']);
                    $router->post('reputation-management/review/get', ['as' => 'Property.ReputationManagement.Review.Get', 'uses' => 'V1\ReputationManagementController@getReview']);
                    $router->post('reputation-management/review/statistics', ['as' => 'Property.ReputationManagement.Review.Statistics.Get', 'uses' => 'V1\ReputationManagementController@getReviewStatistics']);
                });

                $router->post('property/room-view-type/list', ['as' => 'Property.Room.Type.Get', 'uses' => 'V1\PropertyRoomViewTypeController@getPropertyRoomViewTypeList']);
                $router->post('property/room-type/list', ['as' => 'Property.Room.Type.Get', 'uses' => 'V1\PropertyRoomTypeController@getPropertyRoomTypes']);
                $router->post('property/room-bed-type/list', ['as' => 'Property.Room.Bed.Type.Get', 'uses' => 'V1\PropertyRoomBedTypeController@getPropertyRoomBedTypes']);
                $router->post('property/channel-category/list', ['as' => 'Property.Channel.Category.Get', 'uses' => 'V1\PropertyChannelCategoryController@getPropertyChannelCategories']);

                $router->post('property/channel/add', ['as' => 'Property.Channel.Add', 'uses' => 'V1\PropertyChannelController@addPropertyChannel']);
                $router->post('property/channel/update', ['as' => 'Property.Channel.Update', 'uses' => 'V1\PropertyChannelController@updatePropertyChannel']);
                $router->post('property/channel/get', ['as' => 'Property.Channel.Get', 'uses' => 'V1\PropertyChannelController@getPropertyChannel']);
            });

            $router->post('logout', ['as' => '', 'uses' => 'AuthController@logOut']);
        }
    );
    $router->post('user/check-key', ['as' => '', 'uses' => 'UserController@checkUserKey']);
    $router->post('user/new-password', ['as' => '', 'uses' => 'UserController@newPassword']);
    $router->post('user/forgot-password', ['as' => '', 'uses' => 'UserController@forgotPassword']);
    $router->post('user/reset-password', ['as' => '', 'uses' => 'UserController@resetPassword']);
});


$router->get('property-comparison/{weekKey}', ['as' => 'Property.Comparison', 'uses' => 'V1\PropertyWebController@propertyComparison']);
$router->get('property-comparison/{weekKey}/{userId}', ['as' => 'Property.Comparison', 'uses' => 'V1\PropertyWebController@propertyComparison']);

$router->post('web/check-domain', ['as' => 'Property.Web.CheckDomain', 'uses' => 'V1\PropertyWebController@checkDomain']);
$router->post('web/check-domain-token', ['as' => 'Property.Web.CheckDomainToken', 'uses' => 'V1\PropertyWebController@checkDomainToken']);
$router->post('web/check-domain-group', ['as' => 'Property.Web.CheckDomainWebGroup', 'uses' => 'V1\PropertyWebController@checkDomainWebGroup']);
$router->post('web/content-domain-group', ['as' => 'Property.Web.ContentDomainWebGroup', 'uses' => 'V1\PropertyWebController@contentDomainWebGroup']);
$router->post('web/languages', ['as' => 'Property.Web.Language', 'uses' => 'V1\PropertyWebController@getLanguages']);
$router->group(['middleware' => 'myWebToken'], function () use ($router) {
    // todo add different web api's
    $router->post('web/test', ['as' => 'Property.Web.Test', 'uses' => 'V1\PropertyWebController@test']);
    $router->post('web/home', ['as' => 'Property.Web.GeneralContent', 'uses' => 'V1\MyWebContentController@home']);
    $router->post('web/about-us', ['as' => 'Property.Web.AboutUs', 'uses' => 'V1\MyWebContentController@aboutUs']);
    $router->post('web/contact', ['as' => 'Property.Web.Contact', 'uses' => 'V1\MyWebContentController@contact']);
    $router->post('web/contact-form', ['as' => 'Property.Web.ContactForm', 'uses' => 'V1\MyWebContentController@contactForm']);
    $router->post('web/executive-detail', ['as' => 'Property.Web.ExecutiveDetail', 'uses' => 'V1\MyWebContentController@executiveDetail']);
    $router->post('web/gallery', ['as' => 'Property.Web.Gallery', 'uses' => 'V1\MyWebContentController@gallery']);
    $router->post('web/rooms', ['as' => 'Property.Web.Rooms', 'uses' => 'V1\MyWebContentController@rooms']);
    $router->post('web/room-detail', ['as' => 'Property.Web.Detail', 'uses' => 'V1\MyWebContentController@roomDetail']);
    $router->post('web/place-category', ['as' => 'Property.Place.Category', 'uses' => 'V1\MyWebContentController@placeCategoryPlaces']);
    $router->post('web/place', ['as' => 'Property.Place', 'uses' => 'V1\MyWebContentController@getPlace']);
    $router->post('web/kvkk', ['as' => 'Property.Web.Kvkk', 'uses' => 'V1\MyWebContentController@kvkk']);
    $router->post('web/multimedia', ['as' => 'Property.Multimedia', 'uses' => 'V1\MyWebContentController@multimedia']);
    $router->post('web/multimedia-confirm', ['as' => 'Property.Multimedia.Confirm', 'uses' => 'V1\MyWebContentController@multimediaConfirm']);
    $router->post('web/content', ['as' => 'Property.Web.Content', 'uses' => 'V1\MyWebContentController@content']);
    $router->post('web/content/detail', ['as' => 'Property.Web.Content.Detail', 'uses' => 'V1\MyWebContentController@contentDetail']);
    $router->post('web/policy', ['as' => 'Property.Web.Policy', 'uses' => 'V1\MyWebContentController@policy']);
    $router->post('web/promotion', ['as' => 'Property.Web.Promotion', 'uses' => 'V1\MyWebContentController@promotion']);
    $router->post('web/affiliate/request/mail', ['as' => 'Property.Web.Affiliate.Request.Mail', 'uses' => 'V1\MyWebContentController@affiliateRequestMail']);
    $router->post('web/booking', ['as' => 'Property.Web.Kvkk', 'uses' => 'V1\MyWebContentController@booking']);
    $router->post('web/facts', ['as' => 'Property.Web.Kvkk', 'uses' => 'V1\MyWebContentController@facts']);
    $router->post('web/privacy-policy', ['as' => 'Property.Web.Kvkk', 'uses' => 'V1\MyWebContentController@privacyPolicy']);
    $router->post('web/announcement', ['as' => 'Property.Web.Kvkk', 'uses' => 'V1\MyWebContentController@announcement']);
});

$router->get('/multimedia/fact/{language}/{contentCodeConfirmToken}', ['as' => 'Property.Multimedia.Fact.Download', 'uses' => 'V1\MyWebContentController@multimediaFactDownload']);
$router->get('/multimedia/photo/{type}/{id}/{contentCodeConfirmToken}', ['as' => 'Property.Multimedia.Photo.Download', 'uses' => 'V1\MyWebContentController@multimediaPhotoDownload']);

$router->get('/v1/propertyList', ['as' => 'BookingEngine.PropertyList', 'uses' => 'BookingEngine\V1\BookingController@propertyList']);
$router->group(['prefix' => '/v1', 'middleware' => ['bookingEngineToken', 'LanguageSetting']], function () use ($router) {
    // todo add different web api's
    $router->post('search', ['as' => 'BookingEngine.Search', 'uses' => 'BookingEngine\V1\SearchController@search']);
    $router->post('booking', ['as' => 'BookingEngine.Booking', 'uses' => 'BookingEngine\V1\BookingController@booking']);
    $router->post('bookingConfirm', ['as' => 'BookingEngine.BookingConfirm', 'uses' => 'BookingEngine\V1\BookingController@bookingConfirm']);
    $router->get('bookingDetail/{bookingCode}', ['as' => 'BookingEngine.bookingDetail', 'uses' => 'BookingEngine\V1\BookingController@bookingDetail']);
    $router->post('bookingUpdate/{bookingCode}', ['as' => 'BookingEngine.bookingUpdate', 'uses' => 'BookingEngine\V1\BookingController@bookingUpdate']);
    $router->post('bookingPaymentInstallment', ['as' => 'BookingEngine.bookingPaymentInstallment', 'uses' => 'BookingEngine\V1\BookingController@bookingPaymentInstallment']);
    $router->post('couponCodeCheck', ['as' => 'BookingEngine.couponCodeCheck', 'uses' => 'BookingEngine\V1\BookingController@couponCodeCheck']);
    $router->post('couponCodeNotify', ['as' => 'BookingEngine.couponCodeNotify', 'uses' => 'BookingEngine\V1\BookingController@couponCodeNotify']);
    $router->post('bookingAddonAttribute', ['as' => 'BookingEngine.bookingAddonAttribute', 'uses' => 'BookingEngine\V1\BookingController@bookingAddonAttribute']);
    $router->post('bookingPaymentData', ['as' => 'BookingEngine.bookingPaymentData', 'uses' => 'BookingEngine\V1\BookingController@bookingPaymentData']);

    $router->post('bestAvailableRate', ['as' => 'BookingEngine.BestAvailableRate', 'uses' => 'BookingEngine\V1\SearchController@bestAvailableRate']);

    $router->post('cancellation', ['as' => 'BookingEngine.Cancellation', 'uses' => 'BookingEngine\V1\BookingController@bookingCancellation']);
    $router->post('bookingInvoice', ['as' => 'BookingEngine.BookingInvoice', 'uses' => 'BookingEngine\V1\BookingController@bookingInvoice']);






    $router->post('homeSearch/brand', ['as' => 'BookingEngine.Brand.Data', 'uses' => 'V1\PropertyBrandController@getPropertyBrand']);
});

//Payment Link
$router->group(['prefix' => '/v1', 'middleware' => ['LanguageSetting']], function () use ($router) {
    $router->post('paymentLinkInitialize', ['as' => 'BookingEngine.Link.PaymentLinkInitialize', 'uses' => 'BookingEngine\V1\PaymentLinkController@paymentLinkInitialize']);
    $router->post('paymentLinkConfirm', ['as' => 'BookingEngine.Link.PaymentLinkConfirm', 'uses' => 'BookingEngine\V1\PaymentLinkController@paymentLinkConfirm']);
    $router->get('paymentLinkDetail/{orderCode}', ['as' => 'BookingEngine.Link.PaymentLinkDetail', 'uses' => 'BookingEngine\V1\PaymentLinkController@paymentLinkDetail']);
});

$router->get('test', ['as' => 'Test', 'uses' => 'TestController@test']);
$router->get('testResponse', ['as' => 'Test', 'uses' => 'TestController@testResponse']);
$router->post('testResponse', ['as' => 'Test', 'uses' => 'TestController@testResponse']);


//$router->post('initializePayment', ['as' => 'initializePayment', 'uses' => 'PaymentController@initializePayment']);
$router->get('paymentRedirect/{paymentCode}', ['as' => 'paymentRedirect', 'uses' => 'PaymentController@paymentRedirect']);
$router->get('paymentCheck/{paymentCode}', ['as' => 'paymentCheck', 'uses' => 'PaymentController@paymentCheck']);
$router->post('paymentCheck/{paymentCode}', ['as' => 'paymentCheck', 'uses' => 'PaymentController@paymentCheck']);

$router->get('/', function () {
    return view('index');
});

$router->get('app/v1/channel-pdf-inventory/{token}', ['as' => 'Channel.Pdf.Inventory', 'uses' => 'V1\ExportPdfController@getPropertyPdfInventory']);
$router->get('create/language/files', ['as' => 'create.language.files', 'uses' => 'V1\LanguageController@createApplicationLanguageFiles']);
$router->post('booking-engine/property-token', ['as' => 'Property.BookingEngine.CheckProperty', 'uses' => 'BookingEngine\V1\PropertyBookingEngineController@checkProperty']);


$router->get('property-product-offer/{offerKey}', ['as' => 'Property.Product.Offer', 'uses' => 'V1\ExportPdfController@propertyProductOfferExport']);
$router->get('property-product-offer-data/{offerKey}', ['as' => 'Property.Product.Offer.Data', 'uses' => 'V1\ExportPdfController@propertyProductOfferData']);
$router->post('property-product-offer', ['as' => 'Property.Product.Offer', 'uses' => 'V1\ExportPdfController@propertyProductOffer']);


$router->group(['prefix' => '/channel-manager'], function () use ($router) {

    $router->group(['prefix' => '/reseliva/v1'], function () use ($router) {

        $router->post('room-rate', ['as' => 'ChannelManager.Reseliva.RoomRate', 'uses' => 'ChannelManager\Reseliva\v1\ReselivaController@roomRate']);
        $router->post('availability-rate', ['as' => 'ChannelManager.Reseliva.AvailabilityRate', 'uses' => 'ChannelManager\Reseliva\v1\ReselivaController@availabilityRate']);
        $router->post('availability-rate-update', ['as' => 'ChannelManager.Reseliva.AvailabilityRateUpdate', 'uses' => 'ChannelManager\Reseliva\v1\ReselivaController@availabilityRateUpdate']);
        $router->post('booking', ['as' => 'ChannelManager.Reseliva.Booking', 'uses' => 'ChannelManager\Reseliva\v1\ReselivaController@booking']);
    });
});

$router->group(['prefix' => '/channel-manager'], function () use ($router) {
    $router->group(['prefix' => '/channex/v1'], function () use ($router) {
        $router->post('notification', ['as' => 'ChannelManager.Channex.RoomRate', 'uses' => 'ChannelManager\Channex\v1\ChannexController@notification']);
    });
});

$router->group(['prefix' => '/channel-manager'], function () use ($router) {

    $router->group(['prefix' => '/hotelrunner/v1'], function () use ($router) {

        $router->post('roomlist', ['as' => 'ChannelManager.HotelRunner.RoomRate', 'uses' => 'ChannelManager\HotelRunner\v1\HotelRunnerController@roomRate']);
        $router->post('room-inventory', ['as' => 'ChannelManager.HotelRunner.AvailabilityRate', 'uses' => 'ChannelManager\HotelRunner\v1\HotelRunnerController@availabilityRate']);
        $router->post('room-inventory-update', ['as' => 'ChannelManager.HotelRunner.RoomRate.AvailabilityRateUpdate', 'uses' => 'ChannelManager\HotelRunner\v1\HotelRunnerController@availabilityRateUpdate']);
    });
});


$router->group(['prefix' => '/channel-manager'], function () use ($router) {

    $router->group(['prefix' => '/elektraweb/v1'], function () use ($router) {

        $router->post('room-rate', ['as' => 'ChannelManager.ElektraWeb.RoomRate', 'uses' => 'ChannelManager\ElektraWeb\v1\ElektraWebController@roomRate']);
        $router->post('update-room-availability', ['as' => 'ChannelManager.ElektraWeb.UpdateRoomAvailability', 'uses' => 'ChannelManager\ElektraWeb\v1\ElektraWebController@updateRoomAvailability']);
        $router->post('update-room-rate', ['as' => 'ChannelManager.ElektraWeb.UpdateRoomRate', 'uses' => 'ChannelManager\ElektraWeb\v1\ElektraWebController@updateRoomRate']);
    });
});

$router->group(['prefix' => '/channel-manager'], function () use ($router) {
    $router->group(['prefix' => '/athena/v1'], function () use ($router) {
        $router->post('room-rate', ['as' => 'ChannelManager.Athena.RoomRate', 'uses' => 'ChannelManager\Athena\v1\AthenaController@roomRate']);
        $router->post('channel', ['as' => 'ChannelManager.Athena.Channel', 'uses' => 'ChannelManager\Athena\v1\AthenaController@channel']);
    });
});

$router->group(['prefix' => '/channel-manager'], function () use ($router) {
    $router->group(['prefix' => '/fina/v1'], function () use ($router) {
        $router->post('room-rate', ['as' => 'ChannelManager.Fina.RoomRate', 'uses' => 'ChannelManager\Fina\v1\FinaController@roomRate']);
        $router->post('channel', ['as' => 'ChannelManager.Fina.Channel', 'uses' => 'ChannelManager\Fina\v1\FinaController@channel']);
    });
});

$router->group(['prefix' => '/channel-manager'], function () use ($router) {

    $router->group(['prefix' => '/sistemotel/v1'], function () use ($router) {

        $router->post('room-rate', ['as' => 'ChannelManager.SistemOtel.RoomRate', 'uses' => 'ChannelManager\SistemOtel\v1\SistemOtelController@roomRate']);
        $router->post('update-room-availability', ['as' => 'ChannelManager.SistemOtel.UpdateRoomAvailability', 'uses' => 'ChannelManager\SistemOtel\v1\SistemOtelController@updateRoomAvailability']);
        $router->post('update-room-rate', ['as' => 'ChannelManager.SistemOtel.UpdateRoomRate', 'uses' => 'ChannelManager\SistemOtel\v1\SistemOtelController@updateRoomRate']);
    });
});


$router->group(['prefix' => '/channel-manager'], function () use ($router) {
    $router->group(['prefix' => '/1C/v1'], function () use ($router) {
        $router->post('room-rate', ['as' => 'ChannelManager.1C.RoomRate', 'uses' => 'ChannelManager\OneC\v1\OneCController@roomRate']);
        $router->post('channel', ['as' => 'ChannelManager.1C.Channel', 'uses' => 'ChannelManager\OneC\v1\OneCController@channel']);
        $router->post('update-room-availability', ['as' => 'ChannelManager.1C.UpdateRoomAvailability', 'uses' => 'ChannelManager\OneC\v1\OneCController@updateRoomAvailability']);
    });
});


$router->group(['prefix' => '/channel-manager'], function () use ($router) {

    $router->group(['prefix' => '/hyperguest/v1'], function () use ($router) {

        $router->post('room-inventory-update', ['as' => 'ChannelManager.HyperGuest.RoomRate.AvailabilityRateUpdate', 'uses' => 'ChannelManager\HyperGuest\v1\HyperGuestController@availabilityRateUpdate']);
    });
});


$router->group(['prefix' => '/metasearch'], function () use ($router) {
    $router->group(['prefix' => '/trivago/v1'], function () use ($router) {
        $router->post('availability', ['as' => 'MetaSearch.Trivago.Availability', 'uses' => 'MetaSearch\Trivago\v1\TrivagoController@availability']);
        $router->get('hotel', ['as' => 'MetaSearch.Trivago.Hotel', 'uses' => 'MetaSearch\Trivago\v1\TrivagoController@hotel']);
        $router->get('campaign', ['as' => 'MetaSearch.Trivago.Campaing', 'uses' => 'MetaSearch\Trivago\v1\TrivagoController@campaign']);
        $router->get('cpa', ['as' => 'MetaSearch.Trivago.CPA', 'uses' => 'MetaSearch\Trivago\v1\TrivagoController@cpa']);
    });
});


$router->group(['prefix' => '/metasearch'], function () use ($router) {
    $router->group(['prefix' => '/yandex/v1'], function () use ($router) {
        $router->post('availability', ['as' => 'MetaSearch.Yandex.Availability', 'uses' => 'MetaSearch\Yandex\v1\YandexController@availability']);
        $router->get('hotel', ['as' => 'MetaSearch.Yandex.Hotel', 'uses' => 'MetaSearch\Yandex\v1\YandexController@hotel']);
    });
});

$router->group(['prefix' => '/metasearch'], function () use ($router) {
    $router->group(['prefix' => '/google/v1'], function () use ($router) {
        $router->post('availability', ['as' => 'MetaSearch.Google.Availability', 'uses' => 'MetaSearch\Google\v1\GoogleController@availability']);
        $router->get('hotel', ['as' => 'MetaSearch.Google.Hotel', 'uses' => 'MetaSearch\Google\v1\GoogleController@hotel']);
    });
});
