diff --git a/Gemfile b/Gemfile index a42fad6..81dd888 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,7 @@ gem "devise" gem "devise-i18n" gem "administrate-field-active_storage" +gem "administrate-field-enumerize" gem "tailwindcss-rails" gem "administrate" gem "money-rails" diff --git a/Gemfile.lock b/Gemfile.lock index e0b38e7..27d14eb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -73,6 +73,10 @@ GEM administrate-field-active_storage (0.3.7) administrate (>= 0.2.2) rails (>= 6.0) + administrate-field-enumerize (1.0.0) + administrate (~> 0.8) + enumerize (~> 2.1) + rails (>= 5.0.0) annotate (3.1.1) activerecord (>= 3.2, < 7.0) rake (>= 10.4, < 14.0) @@ -334,6 +338,7 @@ PLATFORMS DEPENDENCIES administrate administrate-field-active_storage + administrate-field-enumerize annotate bootsnap (>= 1.4.4) devise diff --git a/app/controllers/admin/buy_crypto_orders_controller.rb b/app/controllers/admin/buy_crypto_orders_controller.rb new file mode 100644 index 0000000..d48955f --- /dev/null +++ b/app/controllers/admin/buy_crypto_orders_controller.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +module Admin + class BuyCryptoOrdersController < Admin::ApplicationController + end +end diff --git a/app/controllers/admin/sell_crypto_orders_controller.rb b/app/controllers/admin/sell_crypto_orders_controller.rb new file mode 100644 index 0000000..0d1f4f7 --- /dev/null +++ b/app/controllers/admin/sell_crypto_orders_controller.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +module Admin + class SellCryptoOrdersController < Admin::ApplicationController + end +end diff --git a/app/dashboards/buy_crypto_order_dashboard.rb b/app/dashboards/buy_crypto_order_dashboard.rb new file mode 100644 index 0000000..f5d60aa --- /dev/null +++ b/app/dashboards/buy_crypto_order_dashboard.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true +require "administrate/base_dashboard" + +class BuyCryptoOrderDashboard < Administrate::BaseDashboard + # ATTRIBUTE_TYPES + # a hash that describes the type of each of the model's fields. + # + # Each different type represents an Administrate::Field object, + # which determines how the attribute is displayed + # on pages throughout the dashboard. + ATTRIBUTE_TYPES = { + user: Field::BelongsTo, + currency: Field::BelongsTo, + id: Field::Number, + status: Field::Enumerize, + paid_amount_cents: Field::Number, + received_amount: Field::String.with_options(searchable: false), + created_at: Field::DateTime, + updated_at: Field::DateTime, + }.freeze + + # COLLECTION_ATTRIBUTES + # an array of attributes that will be displayed on the model's index page. + # + # By default, it's limited to four items to reduce clutter on index pages. + # Feel free to add, remove, or rearrange items. + COLLECTION_ATTRIBUTES = [:user, :currency, :id, :status].freeze + + # SHOW_PAGE_ATTRIBUTES + # an array of attributes that will be displayed on the model's show page. + SHOW_PAGE_ATTRIBUTES = [:user, :currency, :id, :status, :paid_amount_cents, :received_amount, :created_at, + :updated_at,].freeze + + # FORM_ATTRIBUTES + # an array of attributes that will be displayed + # on the model's form (`new` and `edit`) pages. + FORM_ATTRIBUTES = [:user, :currency, :status, :paid_amount_cents, :received_amount].freeze + + # COLLECTION_FILTERS + # a hash that defines filters that can be used while searching via the search + # field of the dashboard. + # + # For example to add an option to search for open resources by typing "open:" + # in the search field: + # + # COLLECTION_FILTERS = { + # open: ->(resources) { resources.where(open: true) } + # }.freeze + COLLECTION_FILTERS = {}.freeze + + # Overwrite this method to customize how buy crypto orders are displayed + # across all pages of the admin dashboard. + # + # def display_resource(buy_crypto_order) + # "BuyCryptoOrder ##{buy_crypto_order.id}" + # end +end diff --git a/app/dashboards/sell_crypto_order_dashboard.rb b/app/dashboards/sell_crypto_order_dashboard.rb new file mode 100644 index 0000000..d585994 --- /dev/null +++ b/app/dashboards/sell_crypto_order_dashboard.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true +require "administrate/base_dashboard" + +class SellCryptoOrderDashboard < Administrate::BaseDashboard + # ATTRIBUTE_TYPES + # a hash that describes the type of each of the model's fields. + # + # Each different type represents an Administrate::Field object, + # which determines how the attribute is displayed + # on pages throughout the dashboard. + ATTRIBUTE_TYPES = { + user: Field::BelongsTo, + currency: Field::BelongsTo, + id: Field::Number, + status: Field::Enumerize, + paid_amount: Field::String.with_options(searchable: false), + received_amount_cents: Field::Number, + created_at: Field::DateTime, + updated_at: Field::DateTime, + }.freeze + + # COLLECTION_ATTRIBUTES + # an array of attributes that will be displayed on the model's index page. + # + # By default, it's limited to four items to reduce clutter on index pages. + # Feel free to add, remove, or rearrange items. + COLLECTION_ATTRIBUTES = [:user, :currency, :id, :status].freeze + + # SHOW_PAGE_ATTRIBUTES + # an array of attributes that will be displayed on the model's show page. + SHOW_PAGE_ATTRIBUTES = [:user, :currency, :id, :status, :paid_amount, :received_amount_cents, :created_at, + :updated_at,].freeze + + # FORM_ATTRIBUTES + # an array of attributes that will be displayed + # on the model's form (`new` and `edit`) pages. + FORM_ATTRIBUTES = [:user, :currency, :status, :paid_amount, :received_amount_cents].freeze + + # COLLECTION_FILTERS + # a hash that defines filters that can be used while searching via the search + # field of the dashboard. + # + # For example to add an option to search for open resources by typing "open:" + # in the search field: + # + # COLLECTION_FILTERS = { + # open: ->(resources) { resources.where(open: true) } + # }.freeze + COLLECTION_FILTERS = {}.freeze + + # Overwrite this method to customize how sell crypto orders are displayed + # across all pages of the admin dashboard. + # + # def display_resource(sell_crypto_order) + # "SellCryptoOrder ##{sell_crypto_order.id}" + # end +end diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 14d0ea8..38517c5 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -21,6 +21,13 @@ pt-BR: one: Saldo Fiat other: Saldos Fiat + sell_crypto_order: + one: Pedido de Venda + other: Pedidos de Venda + + buy_crypto_order: + one: Pedido de Compra + other: Pedidos de Compra attributes: user: first_name: Primeiro nome diff --git a/config/routes.rb b/config/routes.rb index bdc7191..f7802d0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,7 +7,8 @@ Rails.application.routes.draw do resources :users resources :balances resources :fiat_balances - resources :currencies + resources :buy_crypto_orders + resources :sell_crypto_orders resources :admin_users root to: "users#index"