Skip to content

Instantly share code, notes, and snippets.

@shankardevy
Last active August 19, 2017 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shankardevy/193802fae44e2610a6ec744eec453183 to your computer and use it in GitHub Desktop.
Save shankardevy/193802fae44e2610a6ec744eec453183 to your computer and use it in GitHub Desktop.
defmodule MangoWeb.BotChannel do
use MangoWeb, :channel
alias Mango.Sales
def join("pos", payload, socket) do
welcome_text = "Hello! Welcome to Mango Point of Sale"
{:ok, %{message: welcome_text}, socket}
end
def handle_in("status", payload, socket) do
reply = case Sales.get_order(payload["message"]) do
nil -> %{ message: "Order not found." }
order -> %{ message: "Status: #{order.status}"}
end
{:reply, {:ok, reply}, socket}
end
def handle_in("new", _, socket) do
order = Sales.create_cart()
new_socket = socket |> assign(:order, order)
reply = %{ message: "New Order in Progress: ##{order.id}" }
{:reply, {:ok, reply}, new_socket}
end
def handle_in("add", payload, socket) do
item = String.split(payload["message"], " ")
reply = case [socket.assigns[:order], item] do
[nil, _] ->
%{ message: "Please create a new order before proceeding." }
[order, [product_id, quantity]] ->
{:ok, order} = Sales.add_to_cart(order, %{"product_id" => product_id, "quantity" => quantity})
socket = socket |> assign(:order, order)
%{ message: "Product added to order." }
_ ->
%{ message: "Error" }
end
{:reply, {:ok, reply}, socket}
end
def handle_in(_, payload, socket) do
reply = %{ message: "I don't understand your question." }
{:reply, {:error, reply}, socket}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment