jam-cloud/web/app/assets/javascripts/react-components/mixins/PostProcessorMixin.js.coffee

128 lines
4.8 KiB
CoffeeScript
Raw Permalink Normal View History

context = window
teacherActions = window.JK.Actions.Teacher
@PostProcessorMixin = {
postProcessLesson: (lesson) ->
if lesson.student_id == context.JK.currentUserId
me = lesson.student
other = lesson.teacher
2016-05-20 02:42:27 +00:00
lesson.isStudent = true
lesson.isTeacher = false
lesson.hasUnreadMessages = lesson['student_unread_messages']
else
me = lesson.teacher
other = lesson.student
2016-05-20 02:42:27 +00:00
lesson.isStudent = false
lesson.isTeacher = true
lesson.hasUnreadMessages = lesson['teacher_unread_messages']
lesson.me = me
lesson.other = other
lesson.isAdmin = context.JK.currentUserAdmin
lesson.noSchoolOnSchoolPayment = !lesson['payment_if_school_on_school?']
2016-09-08 10:59:58 +00:00
lesson.cardNotOk = !lesson.lesson_booking.card_presumed_ok && lesson.payment_if_school_on_school?
2016-05-31 13:35:04 +00:00
lesson.isActive = lesson['is_active?']
2017-07-17 00:38:40 +00:00
if (lesson.status == 'requested' || lesson.status == 'countered' || lesson.lesson_booking['is_countered?'])
lesson.isRequested = true
if lesson.cardNotOk
lesson.displayStatus = 'No Card'
else
lesson.displayStatus = 'Requested'
2017-07-17 00:38:40 +00:00
if lesson['is_active?'] && (lesson.status == 'approved' && !lesson.lesson_booking['is_countered?'])
lesson.isScheduled = true
lesson.displayStatus = 'Scheduled'
if !lesson.displayStatus?
if lesson.status == 'unconfirmed'
lesson.displayStatus = 'Unconfirmed'
else if lesson.status == 'canceled'
lesson.displayStatus = 'Canceled'
if lesson.canceled_by_admin
lesson.displayStatus = 'Canceled (by Admin)'
else if lesson.student_canceled
2017-07-10 02:21:29 +00:00
lesson.displayStatus = 'Canceled (by Student)'
else if lesson.teacher_canceled
2017-07-10 02:21:29 +00:00
lesson.displayStatus = 'Canceled (by Teacher)'
else if lesson.status == 'suspended'
lesson.displayStatus = 'Suspended'
else
lesson.missed = true
lesson.missedRole = 'the teacher'
lesson.missedUser = lesson.teacher
2016-05-20 02:42:27 +00:00
if lesson.success
lesson.missed = false
lesson.missedRole = null
lesson.displayStatus = 'Completed'
else
if lesson.analysis?.teacher_analysis?.missed && lesson.analysis?.student_analysis?.missed
lesson.missedRole = 'both student and teacher'
lesson.missedUser = lesson.teacher
2017-07-10 02:21:29 +00:00
lesson.displayStatus = 'Missed (by Both)'
else if lesson.analysis?.teacher_analysis?.missed
lesson.missedRole = 'the teacher'
lesson.missedUser = lesson.teacher
2017-07-10 02:21:29 +00:00
lesson.displayStatus = 'Missed (by Teacher)'
else if lesson.analysis?.student_analysis?.missed
lesson.missedRole = 'the student'
lesson.missedUser = lesson.student
2017-07-10 02:21:29 +00:00
lesson.displayStatus = 'Missed (by Student)'
2016-05-20 02:42:27 +00:00
else
lesson.displayStatus = 'Missed'
@postProcessUser(me)
@postProcessUser(other)
postProcessUser: (user) ->
if !user.photo_url?
user.resolved_photo_url = '/assets/shared/avatar_generic.png'
else
user.resolved_photo_url = user.photo_url
if user.teacher?
user.teacher_profile = '/client#/profile/teacher/' + user.id
user.best_profile = user.teacher_profile
else
user.musician_profile = '/client#/profile/' + user.id
user.best_profile = user.musician_profile
if user.is_a_teacher && user.teacher?
2016-05-05 02:20:38 +00:00
cheapest_lesson_stmt = '(no pricing set yet)'
lowestPrice = null
lowestDuration = null
single = true
enabledMinutes = []
for minutes in [30, 45, 60, 90, 120]
duration_enabled = user.teacher["lesson_duration_#{minutes}"]
if duration_enabled
enabledMinutes.push(minutes)
if user.teacher.prices_per_lesson
for minutes in enabledMinutes
lesson_price = user.teacher["price_per_lesson_#{minutes}_cents"]
if lesson_price?
if !lowestPrice? || lesson_price < lowestPrice
lowestPrice = lesson_price
single = true
lowestDuration = minutes
for minutes in enabledMinutes
lesson_price = user.teacher["price_per_month_#{minutes}_cents"]
if lesson_price?
if !lowestPrice? || (lesson_price / 4) < lowestPrice
lowestPrice = lesson_price / 4
single = false
lowestDuration = minutes
if lowestPrice?
if single
# lowest price appears to be a single lesson
cheapest_lesson_stmt = "$#{lowestPrice / 100} for #{lowestDuration} minutes"
else
# lowest price appears to be a monthly recurring lesson
cheapest_lesson_stmt = "$#{Math.round(lowestPrice * 4) / 100} per month"
user.cheapest_lesson_stmt = cheapest_lesson_stmt
}