/**
 * Mixin for common Course functions
 * 
 * @exports CourseMixin 
 * 
 */

var CourseMixin = {};

var courseStatusPrettyTable = require('trc-client-core/src/constants/CourseProcess');

var sessionStatusPrettyTable = {
    NOT_EXIST: 'Session Cancelled',
    EXIST: 'Session available'
};

/**
 * Checks for course completion then enrollment then elligibliliy               
 * @param  {object} course
 * @return {string}
 */
function courseStatus (course) {
    var status = course.eligible ? 'ELIGIBLE' :  'INELIGIBLE';
    if(course.completionProcess) {
        status = course.completionProcess;
    } else if (course.regProcess) {
        status = course.regProcess;
    }
    return  status;
}




/* Public functions */

/**
 * Wrapper for courseStatus()
 * @param  {object} course
 * @param  {boolean} pretty
 * @return {string}
 */
CourseMixin.getCourseStatus = function(course, pretty) {
    if (pretty) {
        if (courseStatusPrettyTable[courseStatus(course)]) {
            return courseStatusPrettyTable[courseStatus(course)];
        } else {
            return 'STATUS NOT FOUND';
        }
    }
    return courseStatus(course);
};


/**
 * Wrapper for courseStatusPrettyTable. Allows for flexible status codes.
 * @param  {string} status
 * @return {string}
 */
CourseMixin.getPrettyStatus = function (status) {
    return courseStatusPrettyTable[status];
};

CourseMixin.getPrettySessionStatus = function (status) {
    return sessionStatusPrettyTable[status];
};

module.exports = CourseMixin;