Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion assets/css/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
}

@theme {
--color-primary: #04041c;
--color-primary: #811824;
--color-accent: #ffdb0d;
--color-light: #ffffff;
--color-light-muted: #a1a1aa;
Expand Down
19 changes: 19 additions & 0 deletions assets/css/components/field.css
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,25 @@
@apply text-sm;
}

/* Radio */

.pearl-radio {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}

.pearl-radio::-webkit-inner-spin-button,
.pearl-radio::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}

.pearl-radio:focus {
outline: none;
box-shadow: none !important;
}

/* Color */

.pearl-color-input {
Expand Down
2 changes: 2 additions & 0 deletions lib/pearl/accounts/roles/permissions.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ defmodule Pearl.Accounts.Roles.Permissions do
"staffs" => ["show", "edit", "roles_edit"],
"challenges" => ["show", "edit", "delete"],
"companies" => ["edit"],
"tickets" => ["edit"],
"discount_codes" => ["edit"],
"enrolments" => ["show", "edit"],
"products" => ["show", "edit", "delete"],
"purchases" => ["show", "redeem", "refund"],
Expand Down
4 changes: 4 additions & 0 deletions lib/pearl/accounts/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ defmodule Pearl.Accounts.User do
schema "users" do
field :name, :string
field :email, :string
# field :notes, :string
# field :university, :string
# field :course, :string
# field :code, :string
field :handle, :string
field :picture, Pearl.Uploaders.UserPicture.Type
field :password, :string, virtual: true, redact: true
Expand Down
137 changes: 137 additions & 0 deletions lib/pearl/discount_codes.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
defmodule Pearl.DiscountCodes do
@moduledoc """
The DiscountCodes context.
"""

import Ecto.Query, warn: false
alias Pearl.Repo

alias Pearl.DiscountCodes.DiscountCode

@doc """
Returns the list of discount_codes.

## Examples

iex> list_discount_codes()
[%DiscountCode{}, ...]

"""
def list_discount_codes(params \\ %{}) do
DiscountCode
|> preload(:ticket_types)
|> Flop.validate_and_run(params, for: DiscountCode)
end

@doc """
Gets a single discount_code.

Raises `Ecto.NoResultsError` if the Discount code does not exist.

## Examples

iex> get_discount_code!(123)
%DiscountCode{}

iex> get_discount_code!(456)
** (Ecto.NoResultsError)

"""
def get_discount_code!(id) do
DiscountCode
|> Repo.get!(id)
|> Repo.preload(:ticket_types)
end

@doc """
Creates a discount_code.

## Examples

iex> create_discount_code(%{field: value})
{:ok, %DiscountCode{}}

iex> create_discount_code(%{field: bad_value})
{:error, %Ecto.Changeset{}}

"""
def create_discount_code(attrs) do
%DiscountCode{}
|> Repo.preload(:ticket_types)
|> DiscountCode.changeset(attrs)
|> Repo.insert()
end

@doc """
Updates a discount_code.

## Examples

iex> update_discount_code(discount_code, %{field: new_value})
{:ok, %DiscountCode{}}

iex> update_discount_code(discount_code, %{field: bad_value})
{:error, %Ecto.Changeset{}}

"""
def update_discount_code(%DiscountCode{} = discount_code, attrs) do
discount_code
|> Repo.preload(:ticket_types)
|> DiscountCode.changeset(attrs)
|> Repo.update()
end

@doc """
Deletes a discount_code.

## Examples

iex> delete_discount_code(discount_code)
{:ok, %DiscountCode{}}

iex> delete_discount_code(discount_code)
{:error, %Ecto.Changeset{}}

"""
def delete_discount_code(%DiscountCode{} = discount_code) do
Repo.delete(discount_code)
end

@doc """
Returns an `%Ecto.Changeset{}` for tracking discount_code changes.

## Examples

iex> change_discount_code(discount_code)
%Ecto.Changeset{data: %DiscountCode{}}

"""
def change_discount_code(%DiscountCode{} = discount_code, attrs \\ %{}) do
DiscountCode.changeset(discount_code, attrs)
end

@doc """
Updates a discount code's ticket types.

## Examples

iex> upsert_discount_code_ticket_types(discount_code, ["id1", "id2"])
{:ok, %DiscountCode{}}

iex> upsert_discount_code_ticket_types(discount_code, ["id1", "id2"])
{:error, %Ecto.Changeset{}}

"""
def upsert_discount_code_ticket_types(%DiscountCode{} = discount_code, ticket_type_ids) do
ids = ticket_type_ids || []

ticket_types =
Pearl.Tickets.TicketType
|> where([t], t.id in ^ids)
|> Repo.all()

discount_code
|> DiscountCode.changeset_update_ticket_types(ticket_types)
|> Repo.update()
end
end
50 changes: 50 additions & 0 deletions lib/pearl/discount_codes/discount_code.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
defmodule Pearl.DiscountCodes.DiscountCode do
@moduledoc """
Module for the Discount Code
"""

use Ecto.Schema
import Ecto.Changeset

alias Pearl.Tickets.TicketType

@derive {
Flop.Schema,
filterable: [:code, :active],
sortable: [:code, :amount, :active, :inserted_at],
default_limit: 25
}

@required_fields ~w(code amount active usage_limit)a
@optional_fields ~w()a

@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id

schema "discount_codes" do
field :code, :string
field :amount, :float
field :active, :boolean, default: false
field :usage_limit, :integer

many_to_many :ticket_types, TicketType,
join_through: "discount_codes_ticket_types",
on_replace: :delete

timestamps(type: :utc_datetime)
end

@doc false
def changeset(discount_code, attrs) do
discount_code
|> cast(attrs, @required_fields ++ @optional_fields)
|> validate_required(@required_fields)
end

@doc false
def changeset_update_ticket_types(discount_code, ticket_types) do
discount_code
|> cast(%{}, @required_fields ++ @optional_fields)
|> put_assoc(:ticket_types, ticket_types)
end
end
4 changes: 3 additions & 1 deletion lib/pearl/event.ex
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ defmodule Pearl.Event do
result
end

@spec subscribe_to_start_time_update(binary()) :: :ok | {:error, {:already_registered, pid()}}
@doc """
Subscribes the caller to the start time's updates.

Expand Down Expand Up @@ -124,7 +125,8 @@ defmodule Pearl.Event do
"faqs_enabled",
"general_regulation_enabled",
"team_enabled",
"call_for_staff_enabled"
"call_for_staff_enabled",
"tickets_enabled"
]
end

Expand Down
44 changes: 44 additions & 0 deletions lib/pearl/perks.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
defmodule Pearl.Perks do
@moduledoc """
Context for Perks
"""
use Pearl.Context
alias Pearl.Tickets.Perk

def list_perks do
Repo.all(Perk)
end

def get_perk!(id) do
Perk
|> Repo.get!(id)
end

def create_perk(attrs \\ %{}) do
%Perk{}
|> Perk.changeset(attrs)
|> Repo.insert()
end

def change_perk(%Perk{} = perk, attrs \\ %{}) do
Perk.changeset(perk, attrs)
end

def update_perk(%Perk{} = perk, attrs) do
perk
|> Perk.changeset(attrs)
|> Repo.update()
end

def archive_perk(%Perk{} = perk) do
perk
|> Perk.changeset(%{active: false})
|> Repo.update()
end

def unarchive_perk(%Perk{} = perk) do
perk
|> Perk.changeset(%{active: true})
|> Repo.update()
end
end
Loading