feat(promotion code): Promotion code system done
I added the features for users to use promotion code and for promoters to create on their events. May be rewrite to discount code?
This commit is contained in:
@@ -1,30 +1,12 @@
|
||||
<div class="min-h-screen bg-gradient-to-br from-gray-50 to-gray-100 py-8">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||
<!-- Breadcrumb -->
|
||||
<nav class="inline-flex items-center gap-2 bg-white px-4 py-3 rounded-xl shadow-sm border border-gray-100 mb-8" aria-label="Breadcrumb">
|
||||
<div class="inline-flex items-center text-sm font-medium">
|
||||
<%= link_to root_path, class: "text-gray-700 hover:text-purple-600 transition-colors" do %>
|
||||
<i data-lucide="home" class="w-4 h-4 mr-2"></i>
|
||||
Accueil
|
||||
<% end %>
|
||||
</div>
|
||||
<i data-lucide="chevron-right" class="w-4 h-4 text-gray-400"></i>
|
||||
<div class="inline-flex items-center text-sm font-medium">
|
||||
<%= link_to events_path, class: "text-gray-700 hover:text-purple-600 transition-colors" do %>
|
||||
Événements
|
||||
<% end %>
|
||||
</div>
|
||||
<i data-lucide="chevron-right" class="w-4 h-4 text-gray-400"></i>
|
||||
<div class="inline-flex items-center text-sm font-medium">
|
||||
<%= link_to event_path(@order.event.slug, @order.event), class: "text-gray-700 hover:text-purple-600 transition-colors" do %>
|
||||
<%= @order.event.name %>
|
||||
<% end %>
|
||||
</div>
|
||||
<i data-lucide="chevron-right" class="w-4 h-4 text-gray-400"></i>
|
||||
<div class="text-sm font-medium text-purple-600">
|
||||
Commande #<%= @order.id %>
|
||||
</div>
|
||||
</nav>
|
||||
<%= render 'components/breadcrumb', crumbs: [
|
||||
{ name: 'Accueil', path: root_path },
|
||||
{ name: 'Événements', path: events_path },
|
||||
{ name: @order.event.name, path: event_path(@order.event.slug, @order.event) },
|
||||
{ name: "Commande ##{@order.id}", path: nil }
|
||||
] %>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
|
||||
<!-- Order Summary -->
|
||||
@@ -77,8 +59,8 @@
|
||||
</div>
|
||||
|
||||
<!-- Order Items -->
|
||||
<div class="space-y-4 mb-6">
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-4">Récapitulatif de votre commande</h3>
|
||||
<div class="space-y-4 mb-6 border-b border-gray-200 pb-6 mb-6">
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-4 ">Récapitulatif de votre commande</h3>
|
||||
|
||||
<% @tickets.each do |ticket| %>
|
||||
<div class="flex items-center justify-between py-3 border-b border-gray-100 last:border-b-0">
|
||||
@@ -99,12 +81,46 @@
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- Promotion Code Discount -->
|
||||
<% if @order.promotion_codes.any? %>
|
||||
<div class="space-y-2 mb-6 pb-6 border-b border-gray-200">
|
||||
<% @order.promotion_codes.each do |promo_code| %>
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-sm font-medium text-green-600">
|
||||
<i data-lucide="tag" class="w-4 h-4 mr-1"></i>
|
||||
Code: <%= promo_code.code %>
|
||||
</span>
|
||||
<span class="text-sm font-semibold text-green-600">-<%= promo_code.discount_amount_euros %>€</span>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<!-- Order Total -->
|
||||
<div class=" pt-12">
|
||||
<div class="space-y-2">
|
||||
<div class="flex items-center justify-between text-lg pt-2">
|
||||
<!-- Subtotal -->
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-sm text-gray-600">Sous-total</span>
|
||||
<span class="text-sm font-medium text-gray-600"><%= @order.subtotal_amount_euros %>€</span>
|
||||
</div>
|
||||
|
||||
<!-- Discount -->
|
||||
<% if @order.discount_amount_cents > 0 %>
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-sm text-green-600">Réduction</span>
|
||||
<span class="text-sm font-semibold text-green-600">-<%= @order.discount_amount_euros %>€</span>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<!-- Total -->
|
||||
<div class="flex items-center justify-between text-lg pt-2 border-t border-gray-200">
|
||||
<span class="font-medium text-gray-900">Total</span>
|
||||
<span class="font-bold text-2xl text-purple-600"><%= @order.total_amount_euros %>€</span>
|
||||
<% if @order.total_amount_cents == 0 %>
|
||||
<span class="font-bold text-2xl text-green-600">GRATUIT</span>
|
||||
<% else %>
|
||||
<span class="font-bold text-2xl text-purple-600"><%= @order.total_amount_euros %>€</span>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-xs text-gray-500 mt-2">TVA incluse</p>
|
||||
@@ -150,7 +166,11 @@
|
||||
>
|
||||
<div class="flex items-center justify-center">
|
||||
<i data-lucide="credit-card" class="w-5 h-5 mr-2"></i>
|
||||
Payer <%= @order.total_amount_euros %>€
|
||||
<% if @order.total_amount_cents == 0 %>
|
||||
Confirmer la commande
|
||||
<% else %>
|
||||
Payer <%= @order.total_amount_euros %>€
|
||||
<% end %>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
@@ -251,7 +271,11 @@ const stripeResult = await stripe.redirectToCheckout({
|
||||
button.innerHTML = `
|
||||
<div class="flex items-center justify-center">
|
||||
<i data-lucide="credit-card" class="w-5 h-5 mr-2"></i>
|
||||
Payer <%= @order.total_amount_euros %>€
|
||||
<% if @order.total_amount_cents == 0 %>
|
||||
Confirmer la commande
|
||||
<% else %>
|
||||
Payer <%= @order.total_amount_euros %>€
|
||||
<% end %>
|
||||
</div>
|
||||
`;
|
||||
alert('Erreur: ' + error.message);
|
||||
|
||||
Reference in New Issue
Block a user