# frozen_string_literal: true module Api # OrdersController class OrdersController < AuthenticatedController def index @orders = current_user_account.orders render json: serialized_collection.serializable_hash, status: :ok end def show @order = current_user_account.orders.find_by(id: params[:id]) render status: :not_found and return if @order.nil? render json: serialized_object.serializable_hash, status: :ok end def create @service = PaymentServices::PaymentService.new(permitted_params[:card_id], current_user_account) @order = @service.call if @order render json: serialized_object.serializable_hash, status: :ok else render json: { errors: @service.error_messages }, status: :unprocessable_entity end end private def serialized_collection @serialized_collection ||= OrderSerializer.new(@orders) end def serialized_object @serialized_object ||= OrderSerializer.new(@order) end def permitted_params params.permit(:card_id) end end end