import re

with open("../wallet_web/lib/wallet_web/live/admin/user_management_live/index.ex", "r") as f:
    content = f.read()

# Replace the inputs in the form
inputs_old = """      <.form for={@new_user_form} phx-change="validate_user" phx-submit="save_user" class="space-y-4">
        <.input field={@new_user_form[:email]} type="email" label="Email Address" required />
        <.input field={@new_user_form[:display_name]} type="text" label="Display Name" />
        
        <div class="grid grid-cols-2 gap-4">
          <.input field={@new_user_form[:tier]} type="select" label="Tier" options={[{"Standard", "standard"}, {"Premium", "premium"}, {"Business", "business"}]} />
          <.input field={@new_user_form[:kyc_status]} type="select" label="KYC Status" options={[{"Pending", "pending"}, {"Submitted", "submitted"}, {"Approved", "approved"}, {"Rejected", "rejected"}, {"Expired", "expired"}]} />
        </div>
        
        <.input field={@new_user_form[:status]} type="select" label="Status" options={[{"Active", "active"}, {"Suspended", "suspended"}, {"Closed", "closed"}]} />"""

inputs_new = """      <.form for={@new_user_form} phx-change="validate_user" phx-submit="save_user" class="space-y-4">
        <.input field={@new_user_form[:user_type]} type="select" label="User Type" required options={[{"Customer", "customer"}, {"Merchant (KYB)", "merchant"}, {"Administrator", "admin"}]} />
        
        <.input field={@new_user_form[:email]} type="email" label="Email Address" required />
        <.input field={@new_user_form[:display_name]} type="text" label="Display Name" />
        
        <div class="grid grid-cols-2 gap-4">
          <.input field={@new_user_form[:tier]} type="select" label="Tier" options={[{"Standard", "standard"}, {"Premium", "premium"}, {"Business", "business"}]} />
          
          <%= if @new_user_form[:user_type].value != "admin" do %>
            <.input field={@new_user_form[:kyc_status]} type="select" label={if @new_user_form[:user_type].value == "merchant", do: "KYB Status", else: "KYC Status"} options={[{"Pending", "pending"}, {"Submitted", "submitted"}, {"Approved", "approved"}, {"Rejected", "rejected"}, {"Expired", "expired"}]} />
          <% else %>
            <.input field={@new_user_form[:kyc_status]} type="select" label="KYC Status" options={[{"Exempt (Admin)", "exempt"}]} disabled={true} />
          <% end %>
        </div>
        
        <.input field={@new_user_form[:status]} type="select" label="Status" options={[{"Active", "active"}, {"Suspended", "suspended"}, {"Closed", "closed"}]} />"""

content = content.replace(inputs_old, inputs_new)

# Add user type to the table header and rows
header_old = """<th scope="col" class="px-6 py-3 font-medium">Status</th>"""
header_new = """<th scope="col" class="px-6 py-3 font-medium">Type</th>
              <th scope="col" class="px-6 py-3 font-medium">Status</th>"""
content = content.replace(header_old, header_new)

row_old = """<td class="px-6 py-4">
                  <.status_chip status={user.status} />
                </td>"""
row_new = """<td class="px-6 py-4">
                  <span class={"inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset " <> 
                    case user.user_type do
                      "admin" -> "bg-purple-50 text-purple-700 ring-purple-700/10"
                      "merchant" -> "bg-blue-50 text-blue-700 ring-blue-700/10"
                      _ -> "bg-zinc-50 text-zinc-700 ring-zinc-500/10"
                    end
                  }>
                    {String.capitalize(user.user_type || "customer")}
                  </span>
                </td>
                <td class="px-6 py-4">
                  <.status_chip status={user.status} />
                </td>"""
content = content.replace(row_old, row_new)


with open("../wallet_web/lib/wallet_web/live/admin/user_management_live/index.ex", "w") as f:
    f.write(content)

