diff --git a/Gemfile b/Gemfile index faec53f56..db3fd7c30 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -ruby '3.4.4' +ruby '>= 3.4.4' ##-- base gems for rails --## gem 'rack-cors', '2.0.0', require: 'rack/cors' diff --git a/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb b/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb index 2eb0f6746..bbf99a836 100644 --- a/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb +++ b/app/controllers/api/v1/accounts/captain/reports/insights_controller.rb @@ -32,6 +32,10 @@ class Api::V1::Accounts::Captain::Reports::InsightsController < Api::V1::Account unit_id = params[:unit_id].present? ? params[:unit_id].to_i : nil inbox_id = params[:inbox_id].present? ? params[:inbox_id].to_i : nil + # Log parameters to help debugging + Rails.logger.info '[Captain::Reports::InsightsController] Generating insight ' \ + "for Unit: #{unit_id}, Inbox: #{inbox_id}, Period: #{period_start} to #{period_end}" + enqueue_insight(unit_id, inbox_id, period_start, period_end) end # rubocop:enable Metrics/AbcSize @@ -69,8 +73,10 @@ class Api::V1::Accounts::Captain::Reports::InsightsController < Api::V1::Account end def parse_date(param, default) - param.present? ? Date.parse(param) : default - rescue ArgumentError + return default if param.blank? + + Date.parse(param.to_s) + rescue ArgumentError, TypeError default end diff --git a/app/javascript/dashboard/i18n/locale/en/captain.json b/app/javascript/dashboard/i18n/locale/en/captain.json index 51c47a848..9df5e7e22 100644 --- a/app/javascript/dashboard/i18n/locale/en/captain.json +++ b/app/javascript/dashboard/i18n/locale/en/captain.json @@ -54,10 +54,12 @@ "ACTIONS": "Actions" }, "STATUS": { - "DRAFT": "Draft", + "SCHEDULED": "Scheduled", "PENDING_PAYMENT": "Awaiting payment", - "CONFIRMED": "Confirmed", - "CANCELLED": "Cancelled" + "ACTIVE": "Active", + "COMPLETED": "Completed", + "CANCELLED": "Cancelled", + "DRAFT": "Draft" }, "ACTIONS": { "OPEN_CONVERSATION": "Open conversation", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/captain.json b/app/javascript/dashboard/i18n/locale/pt_BR/captain.json index fcd34059c..bb43238c9 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/captain.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/captain.json @@ -54,10 +54,13 @@ "ACTIONS": "Ações" }, "STATUS": { - "DRAFT": "Rascunho", + "SCHEDULED": "Agendado", "PENDING_PAYMENT": "Aguardando pagamento", + "ACTIVE": "Ativa", "CONFIRMED": "Confirmada", - "CANCELLED": "Cancelada" + "COMPLETED": "Concluída", + "CANCELLED": "Cancelada", + "DRAFT": "Rascunho" }, "ACTIONS": { "OPEN_CONVERSATION": "Abrir conversa", diff --git a/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue b/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue index 3045c4b0d..b60fe1637 100644 --- a/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue +++ b/app/javascript/dashboard/routes/dashboard/captain/reservations/components/NewReservationModal.vue @@ -76,8 +76,8 @@ const statusOptions = computed(() => [ value: 'pending_payment', }, { - label: t('CAPTAIN_RESERVATIONS.STATUS.ACTIVE'), - value: 'active', + label: t('CAPTAIN_RESERVATIONS.STATUS.CONFIRMED'), + value: 'confirmed', }, ]); diff --git a/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue b/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue index 1ade106f3..fdafc46bf 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/captain/reports/Index.vue @@ -33,13 +33,16 @@ const onFilterChange = async event => { }; const onGenerateInsight = async () => { + if (uiFlags.value.isGenerating) return; try { await store.dispatch('captainReports/generateInsight', { inbox_id: selectedInboxId.value, }); useAlert(t('CAPTAIN_REPORTS.GENERATE.SUCCESS')); - } catch { - useAlert(t('CAPTAIN_REPORTS.GENERATE.ERROR')); + } catch (error) { + const errorMessage = + error?.response?.data?.message || t('CAPTAIN_REPORTS.GENERATE.ERROR'); + useAlert(errorMessage); } }; @@ -103,6 +106,7 @@ const periodLabel = insight =>