Hi Peerreynders,
Finally I came out with below code which is work
def getListPO(conn, params) do
page = params["page"]
posCount = case Repo.all(from p in PO, where: p.is_active == true,
join: c in assoc(p, :customer),
select: count(p.id)
) do
nil -> 0
[] -> 0
p -> hd(p)
_ -> 0
end
sortBy = if params["sortBy"] == "desc", do: :desc, else: :asc
offset = ((String.to_integer(page)-1) * 10)
qr_where = from p in PO, where: p.is_active == true, join: c in assoc(p, :customer)
qr_sortBy = case params["orderBy"] do
"Keterangan" -> from([p, c] in qr_where, order_by: [{^sortBy, p.notes}])
"Tanggal PO" -> from([p, c] in qr_where, order_by: [{^sortBy, p.po_date}])
"Kustomer" -> from([p, c] in qr_where, order_by: [{^sortBy, c.name}])
end
qr = from([_p, _c] in qr_sortBy,
limit: 10,
offset: ^offset,
select: %{id: _p.id,
number: _p.number,
notes: _p.notes,
customer_name: _c.name,
customer_id: _p.customer_id,
po_date: _p.po_date
})
pos = case Repo.all(qr) do
nil -> "Data not found"
[] -> "Data not found"
p -> p
_ -> "Data not found"
end
render(conn, "pos.json", pos: pos, posCount: posCount)
end
And thanks for your guidance