return array of ids evavel_route_get('/app/bookings/tables/:shiftId/:date', 'Alexr\Http\Controllers\BookingsController@tables', \Evavel\Enums\Context::INDEX), // Scanner view evavel_route_get('/app/bookings/scan/:bookingUUID', 'Alexr\Http\Controllers\BookingsController@bookingUUID', \Evavel\Enums\Context::INDEX), // Get booking evavel_route_get('/app/bookings/:bookingId', 'Alexr\Http\Controllers\BookingsController@booking', \Evavel\Enums\Context::INDEX), // Update booking tables id only - No lo captura bien, lo envio a BookingsController@update evavel_route_post('/app/bookings/:bookingId/tables', 'Alexr\Http\Controllers\BookingsController@updateTables', \Evavel\Enums\Context::UPDATE), // Update booking status only evavel_route_post('/app/bookings/:bookingId/status/:status', 'Alexr\Http\Controllers\BookingsController@updateStatus', \Evavel\Enums\Context::UPDATE), // Upddate booking tags evavel_route_post('/app/bookings/:bookingId/tags', 'Alexr\Http\Controllers\BookingsController@updateTags', \Evavel\Enums\Context::UPDATE), // Update booking offer/menu selection evavel_route_post('/app/bookings/:bookingId/menu', 'Alexr\Http\Controllers\BookingsController@updateMenu', \Evavel\Enums\Context::UPDATE), // Context for the dashboard menu-edit modal: all enabled offers + the // matched offer rule for the booking + existing selection. evavel_route_get('/app/bookings/:bookingId/offer-menu-context', 'Alexr\Http\Controllers\BookingsController@offerMenuContext', \Evavel\Enums\Context::INDEX), // Admin "request payment / assign pending menu" setup (addon_offers): set a // fixed payment, or assign an offer the customer must choose later (optionally // charging a percentage of the menu), then move the booking to the right status. evavel_route_post('/app/bookings/:bookingId/offer-payment-setup', 'Alexr\Http\Controllers\BookingsController@offerPaymentSetup', \Evavel\Enums\Context::UPDATE), // Update booking data evavel_route_post('/app/bookings/:bookingId', 'Alexr\Http\Controllers\BookingsController@update', \Evavel\Enums\Context::UPDATE), // Create a booking evavel_route_post('/app/bookings/create', 'Alexr\Http\Controllers\BookingsController@create', \Evavel\Enums\Context::CREATE), // Send email evavel_route_post('/app/bookings/email/:status/:bookingId', 'Alexr\Http\Controllers\BookingsController@emailStatus', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/bookings/email/:bookingId', 'Alexr\Http\Controllers\BookingsController@emailCustom', \Evavel\Enums\Context::UPDATE), // Send SMS evavel_route_post('/app/bookings/sms/:status/:bookingId', 'Alexr\Http\Controllers\BookingsController@smsStatus', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/bookings/sms/:bookingId', 'Alexr\Http\Controllers\BookingsController@smsCustom', \Evavel\Enums\Context::UPDATE), // Send WhatsApp evavel_route_post('/app/bookings/whatsapp/:status/:bookingId', 'Alexr\Http\Controllers\BookingsController@whatsappStatus', \Evavel\Enums\Context::UPDATE), // Download CSV bookings. Print document evavel_route_post('/app/bookings/csv/:date', 'Alexr\Http\Controllers\BookingsController@downloadCSV', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/bookings/pdf/:date', 'Alexr\Http\Controllers\BookingsController@printPDF', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/bookings/status', 'Alexr\Http\Controllers\BookingsController@indexStatus', \Evavel\Enums\Context::INDEX), // Get list of bookings for one day, one month, several-days // Get list of bookings for one day, one month, several-days // 2022-09-01 , 2022-09, 2022-09-01-2022-09-30 evavel_route_get('/app/bookings/:date', 'Alexr\Http\Controllers\BookingsController@index', \Evavel\Enums\Context::INDEX), // Kitchen prep view: aggregate menu/extras per item for a given date evavel_route_get('/app/kitchen-prep/:date', 'Alexr\Http\Controllers\KitchenPrepController@index', \Evavel\Enums\Context::INDEX), // RECURRING BOOKINGS --------------------------------------------------------------- evavel_route_get('/app/bookings-recurring/:bookingId', 'Alexr\Http\Controllers\BookingsRecurringController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/bookings-recurring/update', 'Alexr\Http\Controllers\BookingsRecurringController@update', \Evavel\Enums\Context::INDEX), // Mark notification as read/unread and load more evavel_route_post('/app/notifications/read/:notificationId', 'Alexr\Http\Controllers\NotificationsController@read', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/notifications/unread/:notificationId', 'Alexr\Http\Controllers\NotificationsController@unread', \Evavel\Enums\Context::UPDATE), evavel_route_get('/app/notifications/more/:notificationId', 'Alexr\Http\Controllers\NotificationsController@loadMore', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/notifications/allread', 'Alexr\Http\Controllers\NotificationsController@markAllRead', \Evavel\Enums\Context::UPDATE), // Payments evavel_route_get('/app/payments/data/:bookingId', 'Alexr\Http\Controllers\BookingsController@getPaymentData', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/payments/receipt/:bookingId', 'Alexr\Http\Controllers\BookingsController@getReceipt', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/payments/charge-card/:bookingId', 'Alexr\Http\Controllers\BookingsController@chargeCard', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/payments/charge-preauth/:bookingId', 'Alexr\Http\Controllers\BookingsController@chargePreauth', \Evavel\Enums\Context::INDEX), // SHIFTS --------------------------------------------------------------- // Shifts metrics and enable/disable online bookings evavel_route_get('/app/shift-metrics', 'Alexr\Http\Controllers\BookingsController@shiftMetrics', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/shift-metrics', 'Alexr\Http\Controllers\BookingsController@updateShiftMetrics', \Evavel\Enums\Context::UPDATE), // Get dates with some slot closed in the range of dates evavel_route_get('/app/shifts/:range/slots-closed', 'Alexr\Http\Controllers\ShiftsController@getDatesWithSlotsClosed', \Evavel\Enums\Context::INDEX), // Get blocked slots for shifts/events for specific date evavel_route_get('/app/shifts/:date', 'Alexr\Http\Controllers\ShiftsController@forDate', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/shifts/:date', 'Alexr\Http\Controllers\ShiftsController@saveForDate', \Evavel\Enums\Context::INDEX), // CLOSE TABLES --------------------------------------------------------------- evavel_route_get('/app/closed-tables-range/:range', 'Alexr\Http\Controllers\ClosedTablesController@getDatesWithTablesClosed', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/closed-tables/:date', 'Alexr\Http\Controllers\ClosedTablesController@forDate', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/closed-tables/:date', 'Alexr\Http\Controllers\ClosedTablesController@saveForDate', \Evavel\Enums\Context::INDEX), // parameters are in the query (tableId, date) evavel_route_get('/app/closed-table-times', 'Alexr\Http\Controllers\ClosedTablesController@getTableTimesClosed', \Evavel\Enums\Context::INDEX), // Topbar. Check for a date if has slots and tables blocked evavel_route_get('/app/closed-statuses/:date', 'Alexr\Http\Controllers\ClosedTablesController@getStatuses', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/tables/:tableId/tags', 'Alexr\Http\Controllers\TablesController@updateTags', \Evavel\Enums\Context::UPDATE), // CUSTOMERS --------------------------------------------------------------- // Get the list of Customers Tags and Groups evavel_route_get('/app/ctags', 'Alexr\Http\Controllers\CtagsController@index'), // Get a list of customers (used for the metrics) evavel_route_get('/app/customers-list/:customers', 'Alexr\Http\Controllers\CustomersController@customersList', \Evavel\Enums\Context::UPDATE), // Get customers statistics for a month (new vs returning per day) evavel_route_get('/app/customers-stats/:yearmonth', 'Alexr\Http\Controllers\CustomersController@customerStats', \Evavel\Enums\Context::INDEX), // Get inactive customers grouped by inactivity bands (30/60/90/>90 days) evavel_route_get('/app/customers-inactive/:yearmonth', 'Alexr\Http\Controllers\CustomersController@customersInactive', \Evavel\Enums\Context::INDEX), // Search customer by phone (phone-first booking flow) evavel_route_get('/app/customers/search-by-phone', 'Alexr\Http\Controllers\CustomersController@searchByPhone', \Evavel\Enums\Context::INDEX), // Get customer evavel_route_get('/app/customers/:customerId', 'Alexr\Http\Controllers\CustomersController@customer', \Evavel\Enums\Context::UPDATE), // Update Customer data evavel_route_post('/app/customers/:customerId', 'Alexr\Http\Controllers\CustomersController@update', \Evavel\Enums\Context::UPDATE), // Toggle customer has_whatsapp evavel_route_post('/app/customers/toggle-has-whatsapp', 'Alexr\Http\Controllers\CustomersController@toggleHasWhatsapp', \Evavel\Enums\Context::UPDATE), // Create a customer evavel_route_post('/app/customers/create', 'Alexr\Http\Controllers\CustomersController@create', \Evavel\Enums\Context::CREATE), // Delete customers evavel_route_post('/app/customers/delete', 'Alexr\Http\Controllers\CustomersController@delete', \Evavel\Enums\Context::DELETE), // Merge customers evavel_route_post('/app/customers/merge', 'Alexr\Http\Controllers\CustomersController@merge', \Evavel\Enums\Context::UPDATE), // CSV export evavel_route_post('/app/customers/csv', 'Alexr\Http\Controllers\CustomersController@downloadCSV', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/customers/pdf', 'Alexr\Http\Controllers\CustomersController@printPDF', \Evavel\Enums\Context::UPDATE), // Get list of Customers paginated evavel_route_get('/app/customers', 'Alexr\Http\Controllers\CustomersController@index', \Evavel\Enums\Context::INDEX), // Import customers evavel_route_post('/app/customers/import', 'Alexr\Http\Controllers\CustomersController@import', \Evavel\Enums\Context::UPDATE), // Import bookings evavel_route_post('/app/bookings/import', 'Alexr\Http\Controllers\BookingsController@import', \Evavel\Enums\Context::UPDATE), // PAYMENTS evavel_route_get('/app/payments', 'Alexr\Http\Controllers\PaymentsController@index', \Evavel\Enums\Context::INDEX), // RESTAURANTS --------------------------------------------------------------- // Get list of Restaurants evavel_route_get('/app/restaurants', 'Alexr\Http\Controllers\RestaurantsController@index', \Evavel\Enums\Context::INDEX), // Get list of Restaurants Metrics evavel_route_get('/app/restaurants/metrics', 'Alexr\Http\Controllers\RestaurantsController@metrics', \Evavel\Enums\Context::INDEX), // Get restaurant evavel_route_get('/app/restaurants/:restaurantId', 'Alexr\Http\Controllers\RestaurantsController@restaurant', \Evavel\Enums\Context::INDEX), // Update restaurant data evavel_route_post('/app/restaurants/:restaurantId', 'Alexr\Http\Controllers\RestaurantsController@update', \Evavel\Enums\Context::UPDATE), // Bulk update licensing status (live | demo | archived) evavel_route_post('/app/restaurants/status', 'Alexr\Http\Controllers\RestaurantsController@updateStatus', \Evavel\Enums\Context::UPDATE), // Delete restaurants evavel_route_post('/app/restaurants/delete', 'Alexr\Http\Controllers\RestaurantsController@delete', \Evavel\Enums\Context::DELETE), // Create a restaurant evavel_route_post('/app/restaurants/create', 'Alexr\Http\Controllers\RestaurantsController@create', \Evavel\Enums\Context::CREATE), // USERS --------------------------------------------------------------- // Get list of Users evavel_route_get('/app/users', 'Alexr\Http\Controllers\UsersController@index', \Evavel\Enums\Context::INDEX), // Get user evavel_route_get('/app/users/:userId', 'Alexr\Http\Controllers\UsersController@user', \Evavel\Enums\Context::INDEX), // Update user data evavel_route_post('/app/users/:userId', 'Alexr\Http\Controllers\UsersController@update', \Evavel\Enums\Context::UPDATE), // Create a user evavel_route_post('/app/users/create', 'Alexr\Http\Controllers\UsersController@create', \Evavel\Enums\Context::CREATE), // Delete users evavel_route_post('/app/users/delete', 'Alexr\Http\Controllers\UsersController@delete', \Evavel\Enums\Context::DELETE), // Get tokens issues evavel_route_get('/app/users-tokens', 'Alexr\Http\Controllers\UsersController@listTokens', \Evavel\Enums\Context::INDEX), // User clear tokens evavel_route_post('/app/user-clear-tokens/:userId', 'Alexr\Http\Controllers\UsersController@clearUserTokens', \Evavel\Enums\Context::DELETE), evavel_route_post('/app/user-clear-tokens', 'Alexr\Http\Controllers\UsersController@clearAllTokens', \Evavel\Enums\Context::DELETE), // Get user associated restaurants evavel_route_get('/app/user-restaurants/:userId', 'Alexr\Http\Controllers\UsersController@restaurants', \Evavel\Enums\Context::INDEX), // REVIEWS --------------------------------------------------------------- // Get list of reviews for one day, one month, several-days // 2022-09-01 , 2022-09, 2022-09-01-2022-09-30 evavel_route_get('/app/reviews/:date', 'Alexr\Http\Controllers\ReviewsController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/reviews/respond', 'Alexr\Http\Controllers\ReviewsController@respond', \Evavel\Enums\Context::INDEX), // PROFILE --------------------------------------------------------------- evavel_route_get('/app/profile', 'Alexr\Http\Controllers\ProfileController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/profile', 'Alexr\Http\Controllers\ProfileController@update', \Evavel\Enums\Context::INDEX), // SUPPORT --------------------------------------------------------------- evavel_route_post('/app/support', 'Alexr\Http\Controllers\SupportController@send', \Evavel\Enums\Context::INDEX), // LICENSE --------------------------------------------------------------- evavel_route_get('/app/license-check', 'Alexr\Http\Controllers\LicenseController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/license-check', 'Alexr\Http\Controllers\LicenseController@update', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/license-restaurants', 'Alexr\Http\Controllers\LicenseController@getRestaurants', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/license-errors', 'Alexr\Http\Controllers\LicenseController@getErrors', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/license-errors', 'Alexr\Http\Controllers\LicenseController@saveErrors', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/license-addons-deactivate', 'Alexr\Http\Controllers\LicenseController@deactivateTenantsLicensesAddons', \Evavel\Enums\Context::INDEX), //evavel_route_post('/app/license/activate', 'Alexr\Http\Controllers\LicenseController@activate', \Evavel\Enums\Context::INDEX), //evavel_route_post('/app/license/deactivate', 'Alexr\Http\Controllers\LicenseController@deactivate', \Evavel\Enums\Context::INDEX), // WP USERS --------------------------------------------------------------- // Get list of WP-Users evavel_route_get('/app/wp-users', 'Alexr\Http\Controllers\WpUsersController@index', \Evavel\Enums\Context::INDEX), // Get WP-User evavel_route_get('/app/wp-users/:userId', 'Alexr\Http\Controllers\WpUsersController@user', \Evavel\Enums\Context::INDEX), // ROLES --------------------------------------------------------------- // Get list of roles evavel_route_get('/app/roles', 'Alexr\Http\Controllers\RolesController@index', \Evavel\Enums\Context::INDEX), // Update roles data evavel_route_post('/app/roles', 'Alexr\Http\Controllers\RolesController@update', \Evavel\Enums\Context::UPDATE), // BOOKINGS --------------------------------------------------------------- evavel_route_get('/app/search-bookings', 'Alexr\Http\Controllers\SearchBookingsController@search', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/fields-booking', 'Alexr\Http\Controllers\SearchBookingsController@fields', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/reserve-booking', 'Alexr\Http\Controllers\SearchBookingsController@reserve', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/test-email', 'Alexr\Http\Controllers\SendTestEmailController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/test-sms', 'Alexr\Http\Controllers\SendTestSmsController@sendSms', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/test-whatsapp', 'Alexr\Http\Controllers\SendTestSmsController@sendWhatsapp', \Evavel\Enums\Context::INDEX), // WIZARD --------------------------------------------------------------- evavel_route_get('/app/wizard', 'Alexr\Http\Controllers\WizardController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/wizard', 'Alexr\Http\Controllers\WizardController@save', \Evavel\Enums\Context::INDEX), // TRANSLATE --------------------------------------------------------------- evavel_route_get('/app/translate/languages', 'Alexr\Http\Controllers\TranslateController@activeLanguages', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/translate/languages', 'Alexr\Http\Controllers\TranslateController@saveActiveLanguages', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/translate/load/:lang', 'Alexr\Http\Controllers\TranslateController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/translate/load/:lang', 'Alexr\Http\Controllers\TranslateController@save', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/translate/sync/:lang', 'Alexr\Http\Controllers\TranslateController@sync', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/translate/download/:lang', 'Alexr\Http\Controllers\TranslateController@download', \Evavel\Enums\Context::INDEX), // DASHBOARD CONFIGURATION --------------------------------------------------------------- evavel_route_get('/app/dashboard/columns', 'Alexr\Http\Controllers\DashboardController@getColumns', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/dashboard/columns', 'Alexr\Http\Controllers\DashboardController@saveColumns', \Evavel\Enums\Context::INDEX), // GENERAL METRICS --------------------------------------------------------------- evavel_route_get('/app/general-metrics', 'Alexr\Http\Controllers\BookingsController@generalMetrics', \Evavel\Enums\Context::INDEX), // MISSED CALLS --------------------------------------------------------------- evavel_route_get('/app/missed-calls/:yearmonth', 'Alexr\Http\Controllers\MissedCallController@index', \Evavel\Enums\Context::INDEX), // File uploads evavel_route_post('/app/upload/file', 'Alexr\Http\Controllers\UploadFileController@upload', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/delete/file', 'Alexr\Http\Controllers\UploadFileController@delete', \Evavel\Enums\Context::INDEX), // UI SETTINGS evavel_route_get('/app/dashboard/settings', 'Alexr\Http\Controllers\DashboardController@getSettings', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/dashboard/settings', 'Alexr\Http\Controllers\DashboardController@saveSettings', \Evavel\Enums\Context::INDEX), // DAILY NOTIFICATIONS evavel_route_get('/app/daily-notifications/counts/:range', 'Alexr\Http\Controllers\DailyNotificationsController@countForRange', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/daily-notifications/:date', 'Alexr\Http\Controllers\DailyNotificationsController@index', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/daily-notifications/delete/:uuid', 'Alexr\Http\Controllers\DailyNotificationsController@delete', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/daily-notifications/update/:uuid', 'Alexr\Http\Controllers\DailyNotificationsController@update', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/daily-notifications/save/:date', 'Alexr\Http\Controllers\DailyNotificationsController@save', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/daily-notifications/read-all/:date', 'Alexr\Http\Controllers\DailyNotificationsController@readAll', \Evavel\Enums\Context::INDEX), // SPACES evavel_route_post('/app/spaces/:spaceId/add-table', 'Alexr\Http\Controllers\SpacesController@addTable', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/spaces/:spaceId/remove-table', 'Alexr\Http\Controllers\SpacesController@removeTable', \Evavel\Enums\Context::UPDATE), // MOBILE - hacerlos mas rapido evavel_route_get('/app/mobile/get_all_data', 'Alexr\Http\MobileControllers\MobileController@getAllData', \Evavel\Enums\Context::INDEX), // NOW SETTINGS OF THE APPLICATION -> done from the framework // THIS IS THE FIRST EXAMPLE I MADE FOR TESTING: /t/1/availability // Get shifts //evavel_route_get('/app/shifts', 'Alexr\Http\Controllers\ShiftsController@index' ), // Save shift //evavel_route_post('/app/shifts/:resourceId', 'Alexr\Http\Controllers\ShiftsController@save', \Evavel\Enums\Context::UPDATE ), // New shift //evavel_route_get('/app/shifts/new', 'Alexr\Http\Controllers\ShiftsController@create', \Evavel\Enums\Context::CREATE ), // LAYOUTS --------------------------------------------------------------- // Rutas para LayoutsController - Nueva implementación evavel_route_get('/app/layouts', 'Alexr\Http\Controllers\LayoutsController@index', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/layouts/:layoutId', 'Alexr\Http\Controllers\LayoutsController@show', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/layouts', 'Alexr\Http\Controllers\LayoutsController@create', \Evavel\Enums\Context::CREATE), evavel_route_post('/app/layouts/:layoutId', 'Alexr\Http\Controllers\LayoutsController@update', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/layouts/:layoutId/delete', 'Alexr\Http\Controllers\LayoutsController@delete', \Evavel\Enums\Context::DELETE), evavel_route_post('/app/layouts/:layoutId/duplicate', 'Alexr\Http\Controllers\LayoutsController@duplicate', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/layouts/reorder', 'Alexr\Http\Controllers\LayoutsController@reorder', \Evavel\Enums\Context::UPDATE), // TRACKING --------------------------------------------------------------- evavel_route_get('/app/tracking/filters', 'Alexr\Http\Controllers\TrackingController@filters', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/tracking/data', 'Alexr\Http\Controllers\TrackingController@data', \Evavel\Enums\Context::INDEX), // WHATSAPP CONFIGURE WEBHOOKS --------------------------------------------------------------- evavel_route_post('/app/whatsapp/configure-webhooks', 'Alexr\Http\Controllers\WhatsappTemplatesController@configureWebhooks', \Evavel\Enums\Context::UPDATE), // WHATSAPP / TWILIO ACCOUNT BALANCE ------------------------------------------------------------ evavel_route_get('/app/whatsapp/balance', 'Alexr\Http\Controllers\WhatsappTemplatesController@getBalance', \Evavel\Enums\Context::INDEX), // SMS BALANCE (Twilio or Bulkgate) ------------------------------------------------------------- evavel_route_get('/app/sms/balance', 'Alexr\Http\Controllers\WhatsappTemplatesController@getSmsBalance', \Evavel\Enums\Context::INDEX), // WHATSAPP TEMPLATES --------------------------------------------------------------- evavel_route_post('/app/whatsapp/templates/fetch', 'Alexr\Http\Controllers\WhatsappTemplatesController@fetchTemplates', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsapp/templates/fetch-single', 'Alexr\Http\Controllers\WhatsappTemplatesController@fetchTemplate', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsapp/templates/save', 'Alexr\Http\Controllers\WhatsappTemplatesController@saveTemplates', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/whatsapp/templates/refresh', 'Alexr\Http\Controllers\WhatsappTemplatesController@refreshTemplates', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsapp/templates/approval-status', 'Alexr\Http\Controllers\WhatsappTemplatesController@getApprovalStatus', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsapp/templates/send-test', 'Alexr\Http\Controllers\WhatsappTemplatesController@sendTestMessage', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsapp/templates/check-test-status', 'Alexr\Http\Controllers\WhatsappTemplatesController@checkTestStatus', \Evavel\Enums\Context::INDEX), // WHATSAPP BOOKING CONVERSATION --------------------------------------------------------------- // Obtener conversación y mensajes de una reserva evavel_route_get('/app/whatsapp/bookings/:bookingId', 'Alexr\Http\Controllers\WhatsappConversationsController@getBookingConversation', \Evavel\Enums\Context::INDEX), // Obtener mensajes actualizados para polling evavel_route_get('/app/whatsapp/bookings/:bookingId/messages', 'Alexr\Http\Controllers\WhatsappConversationsController@getMessages', \Evavel\Enums\Context::INDEX), // Enviar mensaje de texto libre (dentro de ventana 24h) evavel_route_post('/app/whatsapp/bookings/:bookingId/send-message', 'Alexr\Http\Controllers\WhatsappConversationsController@sendMessage', \Evavel\Enums\Context::UPDATE), // Enviar template de WhatsApp evavel_route_post('/app/whatsapp/bookings/:bookingId/send-template', 'Alexr\Http\Controllers\WhatsappConversationsController@sendTemplate', \Evavel\Enums\Context::UPDATE), // Marcar conversación como leída evavel_route_post('/app/whatsapp/bookings/:bookingId/mark-read', 'Alexr\Http\Controllers\WhatsappConversationsController@markAsRead', \Evavel\Enums\Context::UPDATE), // WHATSAPP INBOX cuando solo tenia bookings --------------------------------------------------------------- // Get list of bookings with conversation data (filtered by date range, status, unread) // Params: date_range (today|tomorrow|week|past|all), status (all|pending|booked|...), only_unread (0|1) //evavel_route_get('/app/whatsapp/inbox/bookings', 'Alexr\Http\Controllers\WhatsappConversationsController@getInboxBookings', \Evavel\Enums\Context::INDEX), // Get total unread count across all conversations (lightweight endpoint for badge polling) //evavel_route_get('/app/whatsapp/inbox/unread-count', 'Alexr\Http\Controllers\WhatsappConversationsController@getInboxUnreadCount', \Evavel\Enums\Context::INDEX), // WHATSAPP INBOX mas completo para leer conversations y bookings --------------------------------------------------------------- // TAB 1: Inbox - conversations ordered by last message evavel_route_get('/app/whatsapp/inbox/conversations', 'Alexr\Http\Controllers\WhatsappConversationsController@getInboxConversations', \Evavel\Enums\Context::INDEX), // TAB 2: Bookings - bookings with conversation data (filtered by date range, status, unread) evavel_route_get('/app/whatsapp/inbox/bookings', 'Alexr\Http\Controllers\WhatsappConversationsController@getInboxBookings', \Evavel\Enums\Context::INDEX), // Get total unread count across all conversations (lightweight endpoint for badge polling) evavel_route_get('/app/whatsapp/inbox/unread-count', 'Alexr\Http\Controllers\WhatsappConversationsController@getInboxUnreadCount', \Evavel\Enums\Context::INDEX), // Resolve booking → conversation (used by Bookings tab in V2 to find conversation by booking phone) evavel_route_get('/app/whatsapp/booking/:bookingId/conversation', 'Alexr\Http\Controllers\WhatsappConversationsController@resolveBookingConversation', \Evavel\Enums\Context::INDEX), // CONVERSATION-BASED ENDPOINTS (used by both tabs) --------------------------------------------------------------- // Get conversation detail with messages and templates evavel_route_get('/app/whatsapp/conversation/:conversationId', 'Alexr\Http\Controllers\WhatsappConversationsController@getConversationDetail', \Evavel\Enums\Context::INDEX), // Get updated messages for polling (by conversation_id) evavel_route_get('/app/whatsapp/conversation/:conversationId/messages', 'Alexr\Http\Controllers\WhatsappConversationsController@getConversationMessages', \Evavel\Enums\Context::INDEX), // Send free text message (by conversation_id) evavel_route_post('/app/whatsapp/conversation/:conversationId/send-message', 'Alexr\Http\Controllers\WhatsappConversationsController@sendConversationMessage', \Evavel\Enums\Context::UPDATE), // Send template (by conversation_id) evavel_route_post('/app/whatsapp/conversation/:conversationId/send-template', 'Alexr\Http\Controllers\WhatsappConversationsController@sendConversationTemplate', \Evavel\Enums\Context::UPDATE), // Mark conversation as read (by conversation_id) evavel_route_post('/app/whatsapp/conversation/:conversationId/mark-read', 'Alexr\Http\Controllers\WhatsappConversationsController@markConversationAsRead', \Evavel\Enums\Context::UPDATE), // Set customer_status on conversation (IDLE, HUMAN_INTERACTION, etc.) evavel_route_post('/app/whatsapp/conversation/:conversationId/customer-status', 'Alexr\Http\Controllers\WhatsappConversationsController@setConversationCustomerStatus', \Evavel\Enums\Context::UPDATE), // Set or clear active_booking_id on conversation evavel_route_post('/app/whatsapp/conversation/:conversationId/active-booking', 'Alexr\Http\Controllers\WhatsappConversationsController@setConversationActiveBooking', \Evavel\Enums\Context::UPDATE), // Get all bookings for a conversation's customer evavel_route_get('/app/whatsapp/conversation/:conversationId/bookings', 'Alexr\Http\Controllers\WhatsappConversationsController@getConversationBookings', \Evavel\Enums\Context::INDEX), // Resolve conversation for a customer (find or create by phone) evavel_route_get('/app/whatsapp/customer/:customerId/resolve-conversation', 'Alexr\Http\Controllers\WhatsappConversationsController@resolveCustomerConversation', \Evavel\Enums\Context::INDEX), // WHATSAPP DEFAULT TEMPLATES --------------------------------------------------------------- evavel_route_get('/app/whatsapp/default-templates/languages', 'Alexr\Http\Controllers\WhatsappDefaultTemplatesController@languages', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/whatsapp/default-templates/list', 'Alexr\Http\Controllers\WhatsappDefaultTemplatesController@list', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsapp/default-templates/upload', 'Alexr\Http\Controllers\WhatsappDefaultTemplatesController@upload', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/whatsapp/default-templates/auto-map', 'Alexr\Http\Controllers\WhatsappDefaultTemplatesController@autoMap', \Evavel\Enums\Context::UPDATE), // WHATSAPP INBOX (en pruebas) no lo uso --------------------------------------------------------------- /* // Get list of conversations with pagination and filters evavel_route_get('/app/whatsapp-inbox/conversations', 'Alexr\Http\Controllers\WhatsappInboxController@conversations', \Evavel\Enums\Context::INDEX), // Get messages for a specific conversation evavel_route_get('/app/whatsapp-inbox/messages', 'Alexr\Http\Controllers\WhatsappInboxController@messages', \Evavel\Enums\Context::INDEX), // Send a message to a conversation evavel_route_post('/app/whatsapp-inbox/send', 'Alexr\Http\Controllers\WhatsappInboxController@sendMessage', \Evavel\Enums\Context::UPDATE), // Mark conversation as read evavel_route_post('/app/whatsapp-inbox/mark-read', 'Alexr\Http\Controllers\WhatsappInboxController@markAsRead', \Evavel\Enums\Context::UPDATE), // Get total unread count (for header badge) evavel_route_get('/app/whatsapp-inbox/unread-count', 'Alexr\Http\Controllers\WhatsappInboxController@unreadCount', \Evavel\Enums\Context::INDEX), // Link conversation to a customer evavel_route_post('/app/whatsapp-inbox/link-customer', 'Alexr\Http\Controllers\WhatsappInboxController@linkCustomer', \Evavel\Enums\Context::UPDATE), */ // WHATSAPP FLOWS --------------------------------------------------------------- /*evavel_route_get('/app/whatsappflows', 'Alexr\Http\Controllers\WhatsappFlowsController@index', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/whatsappflows/:flowId', 'Alexr\Http\Controllers\WhatsappFlowsController@show', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/whatsappflows', 'Alexr\Http\Controllers\WhatsappFlowsController@create', \Evavel\Enums\Context::CREATE), evavel_route_post('/app/whatsappflows/:flowId', 'Alexr\Http\Controllers\WhatsappFlowsController@update', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/whatsappflows/:flowId/delete', 'Alexr\Http\Controllers\WhatsappFlowsController@delete', \Evavel\Enums\Context::DELETE), // Additional operations evavel_route_post('/app/whatsappflows/:flowId/duplicate', 'Alexr\Http\Controllers\WhatsappFlowsController@duplicate', \Evavel\Enums\Context::CREATE), evavel_route_post('/app/whatsappflows/:flowId/toggle-active', 'Alexr\Http\Controllers\WhatsappFlowsController@toggleActive', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/whatsappflows/reorder', 'Alexr\Http\Controllers\WhatsappFlowsController@reorder', \Evavel\Enums\Context::UPDATE), // Structure and configs updates (granular updates) evavel_route_post('/app/whatsappflows/:flowId/structure', 'Alexr\Http\Controllers\WhatsappFlowsController@updateStructure', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/whatsappflows/:flowId/configs', 'Alexr\Http\Controllers\WhatsappFlowsController@updateConfigs', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/whatsappflows/:flowId/node/:nodeId/config', 'Alexr\Http\Controllers\WhatsappFlowsController@updateNodeConfig', \Evavel\Enums\Context::UPDATE), // Filter by type and active status evavel_route_get('/app/whatsappflows/type/:type', 'Alexr\Http\Controllers\WhatsappFlowsController@byType', \Evavel\Enums\Context::INDEX), evavel_route_get('/app/whatsappflows/active', 'Alexr\Http\Controllers\WhatsappFlowsController@active', \Evavel\Enums\Context::INDEX) */ // API KEYS --------------------------------------------------------------- evavel_route_post('/app/api-keys/create', 'Alexr\Http\Controllers\ApiKeysController@create', \Evavel\Enums\Context::CREATE), evavel_route_post('/app/api-keys/:id/toggle', 'Alexr\Http\Controllers\ApiKeysController@toggle', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/api-keys/:id/update', 'Alexr\Http\Controllers\ApiKeysController@update', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/api-keys/:id/delete', 'Alexr\Http\Controllers\ApiKeysController@delete', \Evavel\Enums\Context::DELETE), // API KEYS BOT ----------------------------------------------------------- evavel_route_get('/app/api-keys-bot/widgets', 'Alexr\Http\Controllers\ApiKeysBotController@widgets', \Evavel\Enums\Context::INDEX), evavel_route_post('/app/api-keys-bot/create', 'Alexr\Http\Controllers\ApiKeysBotController@create', \Evavel\Enums\Context::CREATE), evavel_route_post('/app/api-keys-bot/:id/toggle', 'Alexr\Http\Controllers\ApiKeysBotController@toggle', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/api-keys-bot/:id/update', 'Alexr\Http\Controllers\ApiKeysBotController@update', \Evavel\Enums\Context::UPDATE), evavel_route_post('/app/api-keys-bot/:id/delete', 'Alexr\Http\Controllers\ApiKeysBotController@delete', \Evavel\Enums\Context::DELETE), // OFFER EXAMPLES --------------------------------------------------------- evavel_route_get('/app/offer-examples', 'Alexr\Http\Controllers\OfferExamplesController@index', \Evavel\Enums\Context::INDEX), ];