## $Id: utils.py 16820 2022-02-21 11:58:38Z 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 copy import deepcopy
from kofacustom.nigeria.utils.utils import NigeriaKofaUtils

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

    APP_CATS_DICT = {
        'basic': 'Basic Application',
        'no': 'no application',
        'ft': 'Full Time Courses',
        'pt': 'Part Time Courses',
        'pre': 'Pre-Degree Studies',
        'ct': 'Certificate Programmes',
        'ndft': 'National Diploma Full-Time Programmes',
        'ndpt': 'National Diploma Part-Time Programmes',
        'ndwe': 'National Diploma Weekend Programmes',
        'nde': 'National Diploma Part-Time Evening Programmes',
        'hndft': 'Higher National Diploma Full-Time Programmes',
        'hndpt': 'Higher National Diploma Part-Time Programmes',
        'hndwe': 'Higher National Diploma Weekend Programmes',
        'hnde': 'Higher National Diploma Part-Time Evening Programmes',

        }

    PAYMENT_CATEGORIES = {
        'schoolfee': 'Tuition/Exams Fee',
        'clearance': 'Acceptance Fee',
        'bed_allocation': 'Accommodation Booking Fee',
        'hostel_maintenance': 'Hostel Maintenance Fee',
        'application': 'Application Fee',
        'ict_entre': 'ICT and Entrepreneur Fee',
        'logbook_combo': 'Logbook Combo Fee',
        'siwess_combo': 'SIWESS Combo Fee',
        'transcript': 'Transcript Fee',
        'certificate': 'Certificate Fee',
        'certificate_confirm': 'Certificate Confirmation Fee',
        'late_registration': 'Late Course Registration Fee',
        'final_clearance': 'Final Clearance Fee',
        'union': 'Student Union Dues',
        'admission_checking': 'Admission Checking Fee',
        'medical': 'Medical Laboratory Test Fee',
        'conv_nd': 'ND Convocation Fee',
        'conv_hnd': 'HND Convocation Fee',
        'nhis': 'TISHIP Fee',
        'coc': 'Change of Course Fee',
        'damages': 'Damages Fee',
        'project_bind': 'Project Binding Fee',
        'maintenance':'Maintenance and Utility Fees',
        'cyber': 'Cyber Security',
        'ispon': 'ISPON Safety',
        }

    SELECTABLE_PAYMENT_CATEGORIES = {
        'schoolfee': 'Tuition/Exams Fee',
        'clearance': 'Acceptance Fee',
        'bed_allocation': 'Accommodation Booking Fee',
        'hostel_maintenance': 'Hostel Maintenance Fee',
        'application': 'Application Fee',
        'ict_entre': 'ICT and Entrepreneur Fee',
        'logbook_combo': 'Logbook Combo Fee',
        'siwess_combo': 'SIWESS Combo Fee',
        'transcript': 'Transcript Fee',
        'certificate': 'Certificate Fee',
        'certificate_confirm': 'Certificate Confirmation Fee',
        'late_registration': 'Late Course Registration Fee',
        'final_clearance': 'Final Clearance Fee',
        'union': 'Student Union Dues',
        'admission_checking': 'Admission Checking Fee',
        'medical': 'Medical Laboratory Test Fee',
        'conv_nd': 'ND Convocation Fee',
        'conv_hnd': 'HND Convocation Fee',
        'nhis': 'TISHIP Fee',
        'coc': 'Change of Course Fee',
        'damages': 'Damages Fee',
        'project_bind': 'Project Binding Fee',
        'maintenance':'Maintenance and Utility Fees',
        'cyber': 'Cyber Security',
        'ispon': 'ISPON Safety',
        }

    def selectable_payment_categories(self, student):
        spc = deepcopy(self.SELECTABLE_PAYMENT_CATEGORIES)
        if not student.is_fresh:
            del spc['application']
            del spc['admission_checking']
            del spc['clearance']
        return spc

    PREVIOUS_PAYMENT_CATEGORIES = deepcopy(SELECTABLE_PAYMENT_CATEGORIES)

    BALANCE_PAYMENT_CATEGORIES = {
        'schoolfee': 'Tuition/Exams Fee',
        'ict_entre': 'ICT and Entrepreneur Fee',
        'certificate_confirm': 'Certificate Confirmation Fee',
        'final_clearance': 'Final Clearance Fee',
        }

    REPORTABLE_PAYMENT_CATEGORIES = {
        'schoolfee': 'Tuition Exams Fee',
        'clearance': 'Accept. Fee',
        'hostel_maintenance': 'Hostel Maint. Fee',
        'ict_entre': 'ICT Entrepr. Fee',
        'logbook_combo': 'Logbook Combo Fee',
        'siwess_combo': 'SIWESS Combo Fee',
        'certificate': 'Cert. Fee',
        'certificate_confirm': 'Cert. Confirm. Fee',
        'late_registration': 'Late Course Registr. Fee',
        'final_clearance': 'Final Clearance Fee',
        'union': 'Student Union Dues',
        'medical': 'Medical Laboratory Test Fee',
        }

    SPECIAL_APP_DICT = {
        'conv_nd': 'Convocation ND',
        'conv_hnd': 'Convocation HND',
        }

    STUDY_MODES_DICT = {
        'ug_ft': 'Undergraduate Full Time (not used in EdoPoly)',
        'nd_ft': 'National Diploma Full-Time',
        'nd_pt': 'National Diploma Part-Time',
        'nd_we': 'National Diploma Weekend',
        'hnd_ft': 'Higher National Diploma Full-Time',
        'hnd_pt': 'Higher National Diploma Part-Time',
        'hnd_we': 'Higher National Diploma Weekend',
        'ct': 'Certificate',
        'pre': 'Pre-Degree',
        'transfer': 'Transfer',
        'no': 'no application',
        }

    MODE_GROUPS = {
        'All': ('all',),
        'Undergraduate Full-Time': ('hnd_ft', 'nd_ft'),
        'Undergraduate Part-Time': ('hnd_pt', 'nd_pt'),
        #'Postgraduate Full-Time': ('pg_ft',),
        #'Postgraduate Part-Time': ('pg_pt',),
        }
