## $Id: utils.py 16522 2021-07-01 05:53:15Z henrik $
##
## Copyright (C) 2012 Uli Fouquet & Henrik Bettermann
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
"""Customize general helper utilities for Kofa.
"""
from kofacustom.nigeria.utils.utils import NigeriaKofaUtils

class CustomKofaUtils(NigeriaKofaUtils):
    """A collection of methods subject to customization.
    """

    SYSTEM_MAX_LOAD = {
        'swap-mem': None,
        'virt-mem': 80.0,
        'cpu-load': 100.0,
        }

    PREFERRED_LANGUAGES_DICT = {
        }

    APP_CATS_DICT = {
        'basic': 'ASE, PUDE, PCE, PRENCE',
        'no': 'No Application',
        'sandwich': 'Sandwich',
        'cest': 'Part-Time, Diploma, Certificate',
        'dp_ft': 'Diploma Full-Time Programmes',
        'pt_ext': 'Part-Time (extended application)',
        'pg': 'Postgraduate (main advert)',
        'pga': 'Postgraduate (1st supplementary advert)',
        'pgb': 'Postgraduate (2nd supplementary advert)',
        'pgc': 'Postgraduate (3rd supplementary advert)',
        'pgd': 'Postgraduate (4th supplementary advert)',
        'pgnils': 'Postgraduate NILS',
        'pg_ft': 'Postgraduate Full-Time (deprecated)',
        'pg_pt': 'Postgraduate Part-Time (deprecated)',
        'pg_ext': 'Postgraduate (extended application, deprecated)',
        'pg_new': 'Postgraduate (supplementary application #1, deprecated)',
        'pg_new2': 'Postgraduate (supplementary application #2, deprecated)',
        'pre': 'Pre-Degree Studies',
        'asaba': 'FCE Asaba',
        'akoka': 'FCE Akoka',
        'akokaj': 'FCE Akoka JUPEB',
        'special_ft': 'Special Full-Time',
        'cdl': 'Center For Distance Learning',
        }

    # de modes are only used for entry_mode
    MODE_GROUPS = {
        'All':('all',),
        'Undergraduate Full-Time':('ug_ft', 'special_ft'),
        'Undergraduate Part-Time':('ug_pt'),
        'Diploma/Certificate Full-Time':('dp_ft', 'ct_ft'),
        'Diploma/Certificate Part-Time':('dp_pt', 'ct_pt'),
        'Postgraduate Full-Time':('pg_ft', 'pgd_ft'),
        'Postgraduate Part-Time':('pg_pt', 'special_pg_pt', 'pgd_pt'),
        }

    PAYMENT_CATEGORIES = {
        'schoolfee': 'School Fee',
        'clearance': 'Acceptance Fee',
        'bed_allocation': 'Bed Allocation Fee',
        #'hostel_application': 'Hostel Application Fee',
        'hostel_maintenance': 'Hostel Maintenance Fee',
        #'tempmaint_1': 'Hall 1-4 M/F Ekehuan',
        #'tempmaint_2': 'Hall 5 M/F',
        #'tempmaint_3': 'Clinical Hostel',
        'transfer': 'Transfer Fee',
        'gown': 'Gown Hire Fee',
        'application': 'Application Fee',
        'transcript': 'Transcript Fee',
        'admission_checking': 'Admission Checking Fee',
        'jupeb': 'JUPEB Examination Fee',
        'registration': 'Total Registration Fee',
        'clinexam':'Clinical Examination Fee',
        #'pharmd_1':'Clerkship Fee',
        'pharmd_2':'Module 1 Fee',
        'develop':'Development Fee',
        'carryover':'School Fee (carry over from previous sessions)',
        'foreign':'School Fee (paid in foreign currency)',
        'medical_quest':'Medical Questionnaire Fee',
        }

    SELECTABLE_PAYMENT_CATEGORIES = {
        'schoolfee': 'School Fee',
        'clearance': 'Acceptance Fee',
        'bed_allocation': 'Bed Allocation Fee',
        #'hostel_application': 'Hostel Application Fee',
        'hostel_maintenance': 'Hostel Maintenance Fee',
        #'tempmaint_1': 'Hall 1-4 M/F Ekehuan Maintenance Fee',
        #'tempmaint_2': 'Hall 5 M/F Maintenance Fee',
        #'tempmaint_3': 'Clinical Hostel Maintenance Fee',
        'gown': 'Gown Hire Fee',
        'application': 'Application Fee',
        'transcript': 'Transcript Fee',
        'transfer': 'Transfer Fee',
        'jupeb': 'JUPEB Examination Fee',
        'clinexam':'Clinical Examination Fee',
        #'pharmd_1':'PharmD Clerkship Fee (1st school fee prepayment)',
        'pharmd_2':'PharmD Module 1 Fee (school fee prepayment)',
        #'develop':'Development Fee',
        'medical_quest':'Medical Questionnaire Fee',
        }

    REPORTABLE_PAYMENT_CATEGORIES = {
        'schoolfee': 'School Fee',
        'clearance': 'Acceptance Fee',
        'bed_allocation': 'Bed Allocation Fee',
        'hostel_maintenance': 'Hostel Maintenance Fee',
        'medical_quest':'Medical Questionnaire Fee',
        }

    def selectable_payment_categories(self, student):
        return self.SELECTABLE_PAYMENT_CATEGORIES

    DISABLE_PAYMENT_GROUP_DICT = {
        'sf_all':    'School Fee - All',
        'sf_found':  'School Fee - Foundation',
        'sf_pg':     'School Fee - PG',
        'sf_pt':     'School Fee - UG PT',
        'sf_ft':     'School Fee - UG FT',
        'sf_sw':     'School Fee - Sandwich',
        'sf_dp':     'School Fee - Diploma',
        'sf_return': 'School Fee - Returning',
        'maint_all': 'Accomm. Fee - All',
        'cl_all':    'Accept. Fee- All',
        'cl_jupeb':  'Accept. Fee - JUPEB',
        'cl_allexj': 'Accept. Fee - All except JUPEB',
        }

    SEMESTER_DICT = {
        1: '1st Semester',
        2: '2nd Semester',
        3: 'Combined',
        4: '1st Term',
        5: '2nd Term',
        6: '3rd Term',
        9: 'N/A'
        }

    BALANCE_PAYMENT_CATEGORIES = {
        'schoolfee': 'School Fee',
        'clearance': 'Clearance Fee',
        'hostel_maintenance': 'Hostel Maintenance Fee',
        'bed_allocation': 'Bed Allocation Fee',
        'carryover':'School Fee (carry over from previous sessions)',
        'foreign':'School Fee (paid in foreign currency)',
        }

    EXAM_GRADES = NigeriaKofaUtils.EXAM_GRADES + (('B1', 'B1'), ('P', 'P'),)

    SPECIAL_HANDLING_DICT = {
        'regular': 'Regular Hostel',
        'blocked': 'Blocked Hostel',
        'clinical': 'Clinical Hostel',
        'ekenwan': 'Ekenwan Campus',
        'pg': 'Postgraduate Hostel',
        }

    STUDY_MODES_DICT = {
        'ume_ft': 'UME Full-Time',
        'ug_ft': 'Undergraduate Full-Time',
        'ug_pt': 'Undergraduate Part-Time',
        'dp_pt': 'Diploma Part-Time',
        'ct_ft': 'Certificate Full-Time',
        'dp_ft': 'Diploma Full-Time',
        'de_ft': 'Direct Entry Full-Time',
        'de_pt': 'Direct Entry Part-Time',
        'pg_ft': 'Postgraduate Full-Time',
        'pg_pt': 'Postgraduate Part-Time',
        'pgd_ft': 'Postgraduate Diploma Full-Time',
        'pgd_pt': 'Postgraduate Diploma Part-Time',
        'special_pg_pt': 'Special Postgraduate Part-Time',
        'ug_sw': 'Undergraduate Sandwich',
        'transfer_pt': 'Transfer Part-Time',
        'transfer_ft': 'Transfer Full-Time',
        'ct_pt': 'Certificate Part-Time',
        'transfer': 'Transfer',
        'found': 'Foundation',
        'no': 'no application',
        'special_ft': 'Special Full-Time'
        }
