Current section

Files

Jump to
ami lib ami score.ex
Raw

lib/ami/score.ex

defmodule Ami.Score do
use Ecto.Schema
import Ecto.Changeset
alias Ami.{
Enrollment,
Course,
CoursePeriod,
Quiz,
User,
Repo
}
schema "scores" do
@timestamps_opts [type: :naive_datetime_usec]
field(:value, :integer)
field(:answers_correct, :integer)
field(:total_questions, :integer)
field(:results, :string)
field(:created_at, :utc_datetime_usec)
field(:updated_at, :utc_datetime_usec)
belongs_to(:quiz, Quiz)
belongs_to(:user, User)
belongs_to(:enrollment, Enrollment)
belongs_to(:course, Course)
belongs_to(:course_period, CoursePeriod)
end
def find(quiz_id, enrollment_id),
do: Repo.get_by(__MODULE__, quiz_id: quiz_id, enrollment_id: enrollment_id)
def insert_changeset(struct, params) do
struct
|> cast(
%{
value: params[:value],
answers_correct: params[:answers_correct],
total_questions: params[:total_questions]
},
[:value, :answers_correct, :total_questions]
)
|> cast(%{created_at: DateTime.utc_now(), updated_at: DateTime.utc_now()}, [
:created_at,
:updated_at
])
|> cast(
%{
quiz_id: params[:quiz_id],
user_id: params[:user_id],
enrollment_id: params[:enrollment_id]
},
[:quiz_id, :user_id, :enrollment_id]
)
|> cast(%{course_id: params[:course_id], course_period_id: params[:course_period_id]}, [
:course_id,
:course_period_id
])
end
def update_changeset(struct, params) do
struct
|> cast(
%{
value: params[:value],
answers_correct: params[:answers_correct],
total_questions: params[:total_questions]
},
[:value, :answers_correct, :total_questions]
)
|> cast(%{updated_at: DateTime.utc_now()}, [:updated_at])
end
end