-
-
Save shankardevy/65665e4d6de966f87b04c68a1acacae7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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