New list: orders

This commit is contained in:
2023-03-13 19:12:36 +02:00
parent 30fecdb876
commit f24dce5e51
15 changed files with 805 additions and 0 deletions

104
lib/osuuspuutarha/orders.ex Normal file
View File

@@ -0,0 +1,104 @@
defmodule Osuuspuutarha.Orders do
@moduledoc """
The Orders context.
"""
import Ecto.Query, warn: false
alias Osuuspuutarha.Repo
alias Osuuspuutarha.Orders.Order
@doc """
Returns the list of orders.
## Examples
iex> list_orders()
[%Order{}, ...]
"""
def list_orders do
Repo.all(Order)
end
@doc """
Gets a single order.
Raises `Ecto.NoResultsError` if the Order does not exist.
## Examples
iex> get_order!(123)
%Order{}
iex> get_order!(456)
** (Ecto.NoResultsError)
"""
def get_order!(id), do: Repo.get!(Order, id)
@doc """
Creates a order.
## Examples
iex> create_order(%{field: value})
{:ok, %Order{}}
iex> create_order(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_order(attrs \\ %{}) do
%Order{}
|> Order.changeset(attrs)
|> Repo.insert()
end
@doc """
Updates a order.
## Examples
iex> update_order(order, %{field: new_value})
{:ok, %Order{}}
iex> update_order(order, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_order(%Order{} = order, attrs) do
order
|> Order.changeset(attrs)
|> Repo.update()
end
@doc """
Deletes a order.
## Examples
iex> delete_order(order)
{:ok, %Order{}}
iex> delete_order(order)
{:error, %Ecto.Changeset{}}
"""
def delete_order(%Order{} = order) do
Repo.delete(order)
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking order changes.
## Examples
iex> change_order(order)
%Ecto.Changeset{data: %Order{}}
"""
def change_order(%Order{} = order, attrs \\ %{}) do
Order.changeset(order, attrs)
end
end

View File

@@ -0,0 +1,65 @@
defmodule Osuuspuutarha.Orders.Order do
use Ecto.Schema
import Ecto.Changeset
schema "orders" do
field :address, :string
field :city, :string
field :email, :string
field :even_weeks, :boolean, default: false
field :fname, :string
field :is_member, :boolean, default: false
field :lname, :string
field :location, Ecto.Enum,
values: [
:koroinen,
:ocean,
:raisio,
:naantali,
:viherlassila,
:kirjakahvila,
:askainen,
:livonsaari
]
field :order_type, Ecto.Enum, values: [:full, :everyother, :elo, :community]
field :pcode, :string
field :phone, :string
field :split_invoice, :boolean, default: false
timestamps()
end
@doc false
def changeset(order, attrs) do
order
|> cast(attrs, [
:order_type,
:location,
:fname,
:lname,
:address,
:pcode,
:city,
:phone,
:email,
:is_member,
:split_invoice,
:even_weeks
])
|> validate_required([
:order_type,
:location,
:fname,
:lname,
:address,
:pcode,
:city,
:phone,
:email,
:is_member,
:split_invoice
])
end
end