Current section

Files

Jump to
blossom lib blossom models organizations.ex
Raw

lib/blossom/models/organizations.ex

defmodule Blossom.Models.Organizations do
alias Blossom.Models.Organizations
alias KilnCore.Builders.Model, as: Builder
alias KilnCore.Utils
def get(params, user, schema, org_roles) do
params
|> Map.put("id", org_roles.memberships(user))
|> schema.get()
end
def get_count(params, user, schema, org_roles) do
params
|> Map.put("id", org_roles.memberships(user))
|> schema.get_count()
end
def show(id, user, schema, org_roles) do
if org_roles.is_member?(id, user) do
schema.show(id)
else
{:error, :forbidden}
end
end
def delete(id, user, schema, org_roles) do
if org_roles.is_admin?(id, user) do
schema.delete(id)
else
{:error, :forbidden}
end
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Model,
protected_fields:
Keyword.get(unquote(opts), :protected_fields, ["enabled"]),
schema: unquote(Keyword.get(opts, :schema))
@org_roles Utils.option_or_mod_replace(
@caller,
unquote(opts),
:organizations_roles,
OrganizationsRoles,
2
)
def get(params, user) do
Organizations.get(params, user, @schema, @org_roles)
end
def get_count(params, user) do
Organizations.get_count(params, user, @schema, @org_roles)
end
def show(id, user) do
Organizations.show(id, user, @schema, @org_roles)
end
def edit(params, id, user) do
if @org_roles.is_admin?(id, user) do
params
|> Builder.handle_params(@protected_fields, user)
|> Map.delete("id")
|> @schema.edit(id)
else
{:error, :forbidden}
end
end
def delete(id, user) do
Organizations.delete(id, user, @schema, @org_roles)
end
end
end
end