defmodule Ami.AffiliateLogoAttachment do use Ecto.Schema use Arc.Ecto.Schema import Ecto.{ Changeset } alias Ami.{ Course, Repo } alias Ami.AffiliateLogoAttachmentUploader.Type schema "affiliate_logo_attachments" do @timestamps_opts [type: :naive_datetime_usec] field(:name, :string) field(:file, Type) timestamps() belongs_to(:course, Course) end def changeset(struct, params \\ %{}) do struct |> cast(params, [:course_id, :name]) |> cast_attachments(params, [:file]) |> case do %{valid?: false, changes: changes} = changeset when changes == %{} -> %{changeset | action: :ignore} changeset -> changeset end end def affiliate_logo_for_course(logos_list) do logo = List.last(logos_list) env = Application.get_env(:ami_web, :env) if !is_nil(logo) do case Regex.match?(~r{/\d+/\w+}, logo.file.file_name) do true -> case env do :dev -> "https://ami-aws-staging.s3.amazonaws.com/uploads/affiliate_logo/file#{ logo.file.file_name }" :staging -> "https://ami-aws-staging.s3.amazonaws.com/uploads/affiliate_logo/file#{ logo.file.file_name }" :prod -> "https://ami-aws-s3.s3.amazonaws.com/uploads/affiliate_logo/file#{ logo.file.file_name }" end _ -> case env do :dev -> "https://ami-aws-staging.s3.amazonaws.com/uploads/affiliate_logo/file/#{ logo.file.file_name }" :staging -> "https://ami-aws-staging.s3.amazonaws.com/uploads/affiliate_logo/file/#{ logo.file.file_name }" :prod -> "https://ami-aws-s3.s3.amazonaws.com/uploads/affiliate_logo/file/#{ logo.file.file_name }" end end end end end