Packages
ami
0.1.9
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/package.ex
defmodule Ami.Package do
use Ecto.Schema
import Ecto.{Query}
# alias Users.User
alias Ami.{
PackagePeriod,
TeaserImage,
EnrollmentInterest,
PackageToolKit,
PromoCode,
Repo,
Video
}
schema "packages" do
@timestamps_opts [type: :naive_datetime_usec]
field(:title, :string)
field(:description, :string)
field(:marketing_url, :string)
field(:is_featured, :boolean)
field(:on_air, :boolean)
field(:price, :integer)
field(:price_currency, :string)
field(:search_box_text, :string)
field(:slug, :string)
field(:teaser_banner_text, :string)
field(:teaser_description, :string)
field(:total_hours, :integer)
field(:why_take_package, :string)
field(:created_at, :utc_datetime_usec)
field(:updated_at, :utc_datetime_usec)
has_many(:package_periods, PackagePeriod)
has_many(:enrollments, through: [:package_periods, :enrollment])
has_many(:users, through: [:enrollments, :user])
has_many(:teaser_images, TeaserImage, on_delete: :delete_all, foreign_key: :teaseable_id)
has_one(:video, Video, foreign_key: :videoable_id, on_delete: :delete_all)
has_many(:enrollment_interests, EnrollmentInterest, foreign_key: :package_id)
has_many(:interested_users, through: [:enrollment_interests, :user])
has_many(:package_tool_kits, PackageToolKit)
has_many(:tool_kits, through: [:package_tool_kits, :tool_kit])
has_many(:promo_codes, PromoCode)
end
def on_air do
package_periods_query =
from(
pp in PackagePeriod,
where: pp.starts_on <= ^Date.utc_today() and pp.enrollment_end >= ^Date.utc_today(),
order_by: [asc: pp.starts_on]
)
Repo.all(
from(
p in __MODULE__,
where: p.on_air == true,
preload: [package_periods: ^package_periods_query]
)
)
end
def preload_preview_images(struct) do
TeaserImage.preload_preview_images(struct, "Package")
end
def courses_for(package_struct) do
current_package_period = PackagePeriod.current_for(package_struct)
if current_package_period do
Repo.preload(current_package_period, courses: :thumb_images).courses
else
pp =
List.first(
Repo.preload(package_struct, package_periods: [courses: :thumb_images]).package_periods
)
pp.courses
end
end
end