module Public class ClubBillingController < WebBaseController before_action :require_login! before_action :set_club before_action :require_club_owner_for_club! def profile end def update_profile @club.assign_attributes(billing_profile_params) if @club.save(context: :billing_profile) redirect_to public_club_billing_path(@club), notice: "Dati di fatturazione aggiornati." else flash.now[:alert] = @club.errors.full_messages.join(", ") render :profile, status: :unprocessable_entity end end def sync_payments unless MatchLiveTv.stripe_enabled? redirect_to public_club_billing_path(@club), alert: "Stripe non configurato." return end count = Billing::Stripe::SyncPayments.call(club: @club) redirect_to public_club_billing_path(@club), notice: "Sincronizzati #{count} pagamenti da Stripe." rescue ::Stripe::StripeError => e redirect_to public_club_billing_path(@club), alert: "Errore Stripe: #{e.message}" end def download_invoice invoice = @club.billing_invoices.find(params[:invoice_id]) unless invoice.pdf.attached? redirect_to public_club_billing_path(@club), alert: "PDF fattura non disponibile." return end redirect_to rails_blob_path(invoice.pdf, disposition: "attachment"), allow_other_host: true end private def set_club @club = current_user.owned_clubs.find(params[:id]) end def require_club_owner_for_club! require_club_owner!(@club) end def billing_profile_params params.require(:club).permit( :billing_entity_type, :billing_legal_name, :billing_vat_number, :billing_fiscal_code, :billing_email, :billing_phone, :billing_address_line, :billing_city, :billing_province, :billing_postal_code, :billing_country, :billing_recipient_code, :billing_pec ) end end end