Skip to content

Instantly share code, notes, and snippets.

@shankardevy
Last active July 8, 2017 15:22
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/65665e4d6de966f87b04c68a1acacae7 to your computer and use it in GitHub Desktop.
Save shankardevy/65665e4d6de966f87b04c68a1acacae7 to your computer and use it in GitHub Desktop.
defmodule Mango.CRM do
alias Mango.Repo
alias Mango.CRM.Customer
def build_customer(attrs \\ %{}) do
%Customer{}
|> Customer.changeset(attrs)
end
def create_customer(attrs) do
attrs
|> build_customer
|> Repo.insert
end
def get_customer(id), do: Repo.get(Customer, id)
def get_customer_by_email(email), do: Repo.get_by(Customer, email: email)
def get_customer_by_credentials(%{"email" => email, "password" => pass}) do
customer = get_customer_by_email(email)
cond do
customer && Comeonin.Bcrypt.checkpw(pass, customer.password_hash) ->
customer
true ->
:error
end
end
alias Mango.CRM.Ticket
def list_customer_tickets(customer) do
customer
|> Ecto.assoc(:tickets)
|> Repo.all
end
def get_customer_ticket!(customer, id) do
customer
|> Ecto.assoc(:tickets)
|> Repo.get!(id)
end
def create_customer_ticket(%Customer{} = customer, attrs \\ %{}) do
build_customer_ticket(customer, attrs)
|> Repo.insert()
end
def build_customer_ticket(%Customer{} = customer, attrs \\ %{}) do
Ecto.build_assoc(customer, :tickets, %{status: "New"})
|> Ticket.changeset(attrs)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment