defmodule DaProductAppWeb.ReprintController do use DaProductAppWeb, :controller alias DaProductApp.Transactions def last(conn, params) do merchant_id = Map.get(params, "merchantId") || Map.get(params, "merchant_id") terminal_id = Map.get(params, "terminalId") || Map.get(params, "terminal_id") serial = Map.get(params, "serialNumber") || Map.get(params, "serial_number") if is_nil(merchant_id) or is_nil(terminal_id) do conn |> put_status(:bad_request) |> json(%{status: "error", message: "merchantId and terminalId are required"}) else case Transactions.fetch_last_for(merchant_id, terminal_id, serial_number: serial) do {:ok, record} -> json(conn, %{status: "ok", record: record}) {:not_found, _} -> conn |> put_status(:not_found) |> json(%{status: "not_found", message: "No records found on server"}) {:error, reason} -> Logger.error("Reprint fetch failed: #{inspect(reason)}") conn |> put_status(:internal_server_error) |> json(%{status: "error", message: "Communication failed"}) end end end end