From 763641771440472083b29a61b3027e67bde2efaf Mon Sep 17 00:00:00 2001
From: xamgore <xamgore@ya.ru>
Date: Tue, 10 Mar 2015 00:18:23 +0300
Subject: [PATCH] Moved getDegreeTitle() to Model_Grades, tried to unify the
 function

---
 .../classes/Controller/Admin/Accounts.php     |  6 ++--
 .../classes/Controller/Admin/Profile.php      |  3 +-
 .../classes/Controller/Teacher/Discipline.php |  4 +--
 .../classes/Controller/Teacher/Index.php      |  6 ++--
 .../classes/Controller/UserEnvi.php           | 10 ++-----
 .../application/classes/DataArr/Grades.php    |  4 +--
 .../application/classes/DataArr/Students.php  | 17 +----------
 .../application/classes/DataHelper.php        |  6 +---
 .../application/classes/FileParser.php        | 13 +-------
 .../application/classes/Model/Grades.php      | 30 +++++++++++++------
 .../application/classes/Model/Students.php    | 19 +-----------
 11 files changed, 39 insertions(+), 79 deletions(-)

diff --git a/~dev_rating/application/classes/Controller/Admin/Accounts.php b/~dev_rating/application/classes/Controller/Admin/Accounts.php
index 62dee1b52..04197f416 100644
--- a/~dev_rating/application/classes/Controller/Admin/Accounts.php
+++ b/~dev_rating/application/classes/Controller/Admin/Accounts.php
@@ -25,7 +25,7 @@ class Controller_Admin_Accounts extends Controller_UserEnvi {
     public function getGrades() {
         $grades = Model_Grades::create()->common()->asArray();
         $gradesHandled = array(); $i = $j = 0; $degree = 'null';
-        $degrees = array('bachelor' => 'Бакалавр', 'specialist' => 'Специалист', 'master' => 'Магистр');
+
         foreach($grades as $row)
         {
             if($degree != $row['Degree'])
@@ -34,11 +34,11 @@ class Controller_Admin_Accounts extends Controller_UserEnvi {
                 $i++; $j = 0;
             }
             $j++;
-            $gradesHandled[$i]['Title'] = $degrees[$row['Degree']];
+            $gradesHandled[$i]['Title'] = Model_Grades::getDegreeTitle($row['Degree']);
             $gradesHandled[$i]['Grades'][$j]['ID'] = $row['ID'];
             $gradesHandled[$i]['Grades'][$j]['Num'] = $row['Num'];
         }
         return $gradesHandled;
-    }        
+    } # todo: duplicating code, see Model_Grades
 }
             
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Controller/Admin/Profile.php b/~dev_rating/application/classes/Controller/Admin/Profile.php
index b391b5da9..2087ea888 100644
--- a/~dev_rating/application/classes/Controller/Admin/Profile.php
+++ b/~dev_rating/application/classes/Controller/Admin/Profile.php
@@ -7,9 +7,8 @@ class Controller_Admin_Profile extends Controller_UserEnvi {
         $twig = Twig::factory('admin/students/profile');
         $id = $this->request->param('param1');
         $model = new Model_Account;
-        $degrees = array('bachelor' => 'Бакалавриат', 'specialist' => 'Специалитет', 'master' => 'Магистратура');
         $profile = $model->getPersonalInfo($id)->offsetGet(0);
-        $profile['Degree'] = $degrees[$profile['Degree']];
+        $profile['Degree'] = Model_Grades::getDegreeTitle($profile['Degree']);
         $twig->Account = $model->getAccountInfo($id)->offsetGet(0);
         $twig->Profile = $profile;
         $twig->User = $this->UserInfo;
diff --git a/~dev_rating/application/classes/Controller/Teacher/Discipline.php b/~dev_rating/application/classes/Controller/Teacher/Discipline.php
index b75514342..dc084a727 100644
--- a/~dev_rating/application/classes/Controller/Teacher/Discipline.php
+++ b/~dev_rating/application/classes/Controller/Teacher/Discipline.php
@@ -87,7 +87,7 @@ class Controller_Teacher_Discipline extends Controller_UserEnvi {
                     $attachStdHandled[$k]['GradeID'] = $row['GradeID'];
                     $attachStdHandled[$k]['GradeNum'] = $row['GradeNum'];
                     $attachStdHandled[$k]['GroupNum'] = $row['GroupNum'];
-                    $attachStdHandled[$k]['Degree'] = Model_Students::create()->getDegreeTitle($row['Degree']);
+                    $attachStdHandled[$k]['Degree'] = Model_Grades::getDegreeTitle($row['Degree']);
                 }
                 $n++;
                 $attachStdHandled[$k]['students'][$n]['ID'] = $row['ID'];
@@ -119,7 +119,7 @@ class Controller_Teacher_Discipline extends Controller_UserEnvi {
                     $stdHandled[$i]['GradeID'] = $row['GradeID'];
                     $stdHandled[$i]['GradeNum'] = $row['GradeNum'];
                     $stdHandled[$i]['GroupNum'] = $row['GroupNum'];
-                    $stdHandled[$i]['Degree'] = Model_Students::create()->getDegreeTitle($row['Degree']);
+                    $stdHandled[$i]['Degree'] = Model_Grades::getDegreeTitle($row['Degree']);
                 }
                 $j++;
                 $stdHandled[$i]['students'][$j]['ID'] = $row['ID'];
diff --git a/~dev_rating/application/classes/Controller/Teacher/Index.php b/~dev_rating/application/classes/Controller/Teacher/Index.php
index edd44b8d3..e4202d427 100644
--- a/~dev_rating/application/classes/Controller/Teacher/Index.php
+++ b/~dev_rating/application/classes/Controller/Teacher/Index.php
@@ -11,7 +11,7 @@ class Controller_Teacher_Index extends Controller_UserEnvi {
         $subjID = $discID = $gradeNum = $i = $j = $k = 0; // Combo!!!
         $disciplinesHandled = array();
         $groupsInDiscipline = array();
-        $degrees = array('bachelor' => 'Бакалавриат', 'specialist' => 'Специалитет', 'master' => 'Магистратура');
+        
         foreach ($disciplines as $row) {
             if($subjID != $row['SubjectID'] || $gradeNum != $row['GradeID'])
             {
@@ -20,8 +20,8 @@ class Controller_Teacher_Index extends Controller_UserEnvi {
                 $subjID = $row['SubjectID'];
                 $gradeNum = $row['GradeID'];
                 $disciplinesHandled[$i]['Title'] = $row['SubjectName'];
-                $disciplinesHandled[$i]['GradeNum'] = $row['GradeNum'];                
-                $disciplinesHandled[$i]['Degree'] = $degrees[$row['Degree']];                
+                $disciplinesHandled[$i]['GradeNum'] = $row['GradeNum'];
+                $disciplinesHandled[$i]['Degree'] = Model_Grades::getDegreeTitle($row['Degree']);
                                
             }
             
diff --git a/~dev_rating/application/classes/Controller/UserEnvi.php b/~dev_rating/application/classes/Controller/UserEnvi.php
index 86760fdfd..d90bfd4a0 100644
--- a/~dev_rating/application/classes/Controller/UserEnvi.php
+++ b/~dev_rating/application/classes/Controller/UserEnvi.php
@@ -3,11 +3,7 @@
 class Controller_UserEnvi extends Controller {
     protected $UserInfo;
     protected $SemesterInfo;
-    protected static $degrees = array(  'bachelor' => 'Бакалавриат', 
-                                        'specialist' => 'Специалитет', 
-                                        'master' => 'Магистратура');
-    
-        
+
     public function before()
     {
         $user = User::instance();
@@ -33,8 +29,8 @@ class Controller_UserEnvi extends Controller {
 
         if($this->UserInfo['Type'] == 'student') {
             //unified degree from db
-            $uniDegree = $this->UserInfo['Degree']; 
-            $this->UserInfo['Degree'] = self::$degrees[$uniDegree];
+            $uniDegree = $this->UserInfo['Degree'];
+            $this->UserInfo['Degree'] = Model_Grades::getDegreeTitle($uniDegree);
         }
         // Проверка на доступ к странице
         $route = Route::name($this->request->route());
diff --git a/~dev_rating/application/classes/DataArr/Grades.php b/~dev_rating/application/classes/DataArr/Grades.php
index 39ef30ace..37b7726f7 100644
--- a/~dev_rating/application/classes/DataArr/Grades.php
+++ b/~dev_rating/application/classes/DataArr/Grades.php
@@ -31,7 +31,7 @@ class DataArr_Grades {
         public function structured() {
             $grades = $this->common()->asArray();
             $gradesHandled = array(); $i = $j = 0; $degree = 'null';
-            $degrees = array('bachelor' => 'Бакалавриат', 'specialist' => 'Специалитет', 'master' => 'Магистратура');
+
             foreach($grades as $row)
             {
                 if($degree != $row['Degree'])
@@ -40,7 +40,7 @@ class DataArr_Grades {
                     $i++; $j = 0;
                 }
                 $j++;
-                $gradesHandled[$i]['Title'] = $degrees[$row['Degree']];
+                $gradesHandled[$i]['Title'] = Model_Grades::getDegreeTitle($row['Degree']);
                 $gradesHandled[$i]['Grades'][$j]['ID'] = $row['ID'];
                 $gradesHandled[$i]['Grades'][$j]['Num'] = $row['Num'];
             }
diff --git a/~dev_rating/application/classes/DataArr/Students.php b/~dev_rating/application/classes/DataArr/Students.php
index fb6ebfb0d..69f904e07 100644
--- a/~dev_rating/application/classes/DataArr/Students.php
+++ b/~dev_rating/application/classes/DataArr/Students.php
@@ -38,22 +38,7 @@ class DataArr_Students {
     /** @deprecated */
     public function getDegreeTitle($degree)
     {
-        switch($degree)
-        {
-            case 'bachelor': 
-            {
-                return 'Бакалавриат';
-            }
-            case 'specialist': 
-            {
-                return 'Специалитет';
-            }
-            case 'master': 
-            {
-                return 'Магистратура';
-            }
-                
-        }
+        return Model_Grades::getDegreeTitle($degree);
     }
 
     /** @deprecated */
diff --git a/~dev_rating/application/classes/DataHelper.php b/~dev_rating/application/classes/DataHelper.php
index 8f4f83ea4..2c78c1c5f 100644
--- a/~dev_rating/application/classes/DataHelper.php
+++ b/~dev_rating/application/classes/DataHelper.php
@@ -2,10 +2,6 @@
 
 class DataHelper
 {
-    protected static $dgr_lookup = array(   'bachelor' => 'Бакалавриат',
-                                            'specialist' => 'Специалитет',
-                                            'master' => 'Магистратура');
-
     // take array with (at least) LastName & FirstName keys
     static public function AbbreviateName(&$personInfo) {
         $fullName = $personInfo['LastName'].' '.UTF8::substr($personInfo['FirstName'], 0, 1).'. ';
@@ -31,7 +27,7 @@ class DataHelper
     }
 
     static public function LocalizeDegree($degree) {
-        return self::$dgr_lookup[$degree];
+        return Model_Grades::getDegreeTitle($degree);
     }
 
     static public function DeserializeDisciplines($rawDiscs)
diff --git a/~dev_rating/application/classes/FileParser.php b/~dev_rating/application/classes/FileParser.php
index b5a892ac6..7a80458c8 100644
--- a/~dev_rating/application/classes/FileParser.php
+++ b/~dev_rating/application/classes/FileParser.php
@@ -16,18 +16,7 @@ class FileParser
             // Курс, степень подготовки
             $studentGradeNum = $line[1];
             $studentGroupNum = $line[2];
-            switch($line[3])
-            {
-                case 'Бакалавр':
-                    $studentDegree = 'bachelor';
-                break;
-                case 'Специалист':
-                    $studentDegree = 'specialist';
-                break;
-                case 'Магистр':
-                    $studentDegree = 'master';
-                break;
-            }
+            $studentDegree = Model_Grades::getDegreeTitle($line[3]);
             $studentSpec = $line[4];
             $attempt = Account::instance()->createStudentEx($lastName, $firstName, $secondName, 
                                                 $studentGradeNum, $studentGroupNum, $studentDegree, $studentSpec, $facultyID);
diff --git a/~dev_rating/application/classes/Model/Grades.php b/~dev_rating/application/classes/Model/Grades.php
index 1d330f37f..ba0f1adcc 100644
--- a/~dev_rating/application/classes/Model/Grades.php
+++ b/~dev_rating/application/classes/Model/Grades.php
@@ -26,23 +26,35 @@ class Model_Grades extends Model
         return new DataArray_Result($list);
     }
 
+    public static function getDegreeTitle($degree) {
+        switch ($degree) {
+            case 'bachelor':
+                return 'Бакалавриат';
+            case 'specialist':
+                return 'Специалитет';
+            case 'master':
+                return 'Магистратура';
+            default:
+                return $degree;
+        }
+    }
+
     public function structured() {
         $grades = $this->common()->asArray();
-        $gradesHandled = array();
-        $i = $j = 0;
+        $list = array();
         $degree = 'null';
-        $degrees = array('bachelor' => 'Бакалавриат', 'specialist' => 'Специалитет', 'master' => 'Магистратура');
+        $i = 0;
+
         foreach ($grades as $row) {
             if ($degree != $row['Degree']) {
                 $degree = $row['Degree'];
                 $i++;
-                $j = 0;
             }
-            $j++;
-            $gradesHandled[$i]['Title'] = $degrees[$row['Degree']];
-            $gradesHandled[$i]['Grades'][$j]['ID'] = $row['ID'];
-            $gradesHandled[$i]['Grades'][$j]['Num'] = $row['Num'];  // #KISS!
+
+            $list[$i]['Title'] = self::getDegreeTitle($row['Degree']);
+            $list[$i]['Grades'][] = $row;
         }
-        return new DataArray_Result($gradesHandled);
+
+        return new DataArray_Result($list);
     }
 }
diff --git a/~dev_rating/application/classes/Model/Students.php b/~dev_rating/application/classes/Model/Students.php
index 8e131ffa2..dc7382068 100644
--- a/~dev_rating/application/classes/Model/Students.php
+++ b/~dev_rating/application/classes/Model/Students.php
@@ -17,23 +17,6 @@ class Model_Students extends Model
         return DB::query(Database::SELECT, $sql)->execute()->get('ID');
     }
 
-    /**
-     * @deprecated
-     * todo: move to model_grades
-     */
-    public function getDegreeTitle($degree) {
-        switch ($degree) {
-            case 'bachelor':
-                return 'Бакалавриат';
-            case 'specialist':
-                return 'Специалитет';
-            case 'master':
-                return 'Магистратура';
-            default:
-                return $degree;
-        }
-    }
-
     public function byStudyGroup($groupID) {
         $sql = "CALL `GetStudents`('$groupID'); ";
         $students = DB::query(Database::SELECT, $sql)->execute();
@@ -60,7 +43,7 @@ class Model_Students extends Model
     protected function collect($students) {
         $studentsHandled = array();
         foreach($students as $row) {
-            $row['Degree'] = $this->getDegreeTitle($row['Degree']);
+            $row['Degree'] = Model_Grades::getDegreeTitle($row['Degree']);
             $studentsHandled[] = $row;
         }
         return $studentsHandled;
-- 
GitLab