Packages
ami
0.2.0
0.3.9
0.3.8
retired
0.3.7
retired
0.3.6
retired
0.3.5
retired
0.3.4
retired
0.3.3
retired
0.3.2
retired
0.3.1
retired
0.3.0
retired
0.2.9
retired
0.2.8
retired
0.2.7
retired
0.2.6
retired
0.2.5
retired
0.2.3
retired
0.2.2
retired
0.2.1
retired
0.2.0
retired
0.1.9
retired
0.1.8
retired
0.1.7
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
Package containing all AMI Models shared between micro-services.
Retired package: Security issue - retiring
Current section
Files
Jump to
Current section
Files
lib/ami/teaser_image_attachment.ex
defmodule Ami.TeaserImageAttachment do
use Ecto.Schema
use Arc.Ecto.Schema
import Ecto.{
Changeset,
Query
}
alias Ami.{
Course,
Repo
}
alias Ami.TeaserImageAttachmentUploader.Type
schema "teaser_image_attachments" do
@timestamps_opts [type: :naive_datetime_usec]
field(:name, :string)
field(:page_position, :integer)
field(:file, Type)
timestamps()
belongs_to(:course, Course)
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:course_id, :name, :page_position])
|> cast_attachments(params, [:file], allows_path: true)
|> case do
%{valid?: false, changes: changes} = changeset when changes == %{} ->
%{changeset | action: :ignore}
changeset ->
changeset
end
end
# enum page_position: [ :main, :detail, :box, :certificate, :teaser_box, :download_certificate ]
def page_positions do
[
{"main", 0},
{"detail", 1},
{"box", 2},
{"certificate", 3},
{"teaser_box", 4},
{"download_certificate", 5}
]
end
def create_or_update(params) do
if image = Repo.one(
from(
ti in __MODULE__,
where: ti.course_id == ^params["course_id"],
where: ti.page_position == ^params["page_position"]
)
) do
changeset = __MODULE__.changeset(image, params)
Repo.update(changeset)
else
changeset = __MODULE__.changeset(%__MODULE__{}, params)
Repo.insert(changeset)
end
end
def preload_main_teaser_images(course) do
course
|> Repo.preload(
teaser_image_attachments: from(ti in __MODULE__, where: ti.page_position == 0)
)
end
def preload_preview_images(course) do
course
|> Repo.preload(
teaser_image_attachments: from(ti in __MODULE__, where: ti.page_position == 4)
)
end
def preload_detail_teaser_images(course) do
course
|> Repo.preload(
teaser_image_attachments: from(ti in __MODULE__, where: ti.page_position == 1)
)
end
def preload_certificate_teaser_images(course) do
course
|> Repo.preload(
teaser_image_attachments: from(ti in __MODULE__, where: ti.page_position == 3)
)
end
def preload_download_certificate_teaser_images(course) do
course
|> Repo.preload(
teaser_image_attachments: from(ti in __MODULE__, where: ti.page_position == 5)
)
end
def teaser_image_from(list) do
ti = List.last(list)
env = Application.get_env(:ami_web, :env)
if !is_nil(ti) do
case Regex.match?(~r{/\d+/\w+}, ti.file.file_name) do
true ->
case env do
:dev ->
"https://ami-aws-staging.s3.amazonaws.com/uploads/teaser_image/file#{
ti.file.file_name
}"
:staging ->
"https://ami-aws-staging.s3.amazonaws.com/uploads/teaser_image/file#{
ti.file.file_name
}"
:prod ->
"https://ami-aws-s3.s3.amazonaws.com/uploads/teaser_image/file#{ti.file.file_name}"
end
_ ->
case env do
:dev ->
"https://ami-aws-staging.s3.amazonaws.com/uploads/teaser_image/file/#{
ti.file.file_name
}"
:staging ->
"https://ami-aws-staging.s3.amazonaws.com/uploads/teaser_image/file/#{
ti.file.file_name
}"
:prod ->
"https://ami-aws-s3.s3.amazonaws.com/uploads/teaser_image/file/#{ti.file.file_name}"
end
end
end
end
end