Skip to content
Snippets Groups Projects
Commit 9ff6cd59 authored by PavelBegunkov's avatar PavelBegunkov
Browse files

Merge branch 'develop' of http://itlab.mmcs.sfedu.ru/git/grade-rating into develop

parents bbacf187 0d8a602a
Branches
Tags
No related merge requests found
Showing
with 97 additions and 110 deletions
......@@ -1382,7 +1382,6 @@ END //
DROP FUNCTION IF EXISTS RestrictAfterMilestone//
CREATE FUNCTION `RestrictAfterMilestone` (
`pTeacherID` INT,
`pDisciplineID` INT,
`pMilestone` INT
) RETURNS int(11)
......@@ -1399,7 +1398,6 @@ END //
DROP FUNCTION IF EXISTS RestrictAfterMilestoneForCredits//
CREATE FUNCTION `RestrictAfterMilestoneForCredits` (
`pTeacherID` INT,
`pFacultyID` INT,
`pMilestone` INT,
`pSemesterID` INT
......
......@@ -10,7 +10,7 @@ class Controller_DeanOffice_Credits extends Controller_Environment_DeanOffice
}
public function action_index() {
$disciplines = Model_Faculty::with($this->user->FacultyID)->getDisciplines();
$disciplines = $this->user->Faculty->getDisciplines();
$list = array();
foreach ($disciplines as $dis) {
......@@ -18,8 +18,7 @@ class Controller_DeanOffice_Credits extends Controller_Environment_DeanOffice
$list[] = $dis;
}
// todo: check, does ->execute()[0] && ->execute()['Num'] have same behaviour
$milestone = Model_Discipline::getMilestone($this->user->FacultyID, $this->user->SemesterID)[0];
$milestone = $this->user->Faculty->getMilestone($this->user->SemesterID);
$this->twig->set([
'DisciplinesList' => $list,
......
......@@ -11,9 +11,9 @@ class Controller_Handler_AdmAccounts extends Controller_Handler
public function action_getActivationForTeachers()
{
$facultyID = $this->post['facultyID'];
$faculty = Model_Faculty::with($this->post['facultyID']);
$departmentsHandled = array(); $i = 0;
$departments = Model_Departments::ofFaculty($facultyID);
$departments = $faculty->getDepartments();
foreach ($departments as $department)
{
$i++; $j = 0;
......@@ -52,7 +52,7 @@ class Controller_Handler_AdmAccounts extends Controller_Handler
'Version' => ASSEMBLY_VERSION
)
));
$Headers = PDFCreator::GetHeaders($File, 'ActivationTeachers'.$facultyID);
$Headers = PDFCreator::GetHeaders($File, 'ActivationTeachers'.$faculty->ID);
foreach ($Headers as $key => $value) {
$this->response->headers($key, $value);
}
......
......@@ -73,8 +73,8 @@ class Controller_Handler_AdmTeachers extends Controller_Handler {
}
public function action_getDepartmentsList() {
$facultyID = $this->post['facultyID'];
$departments = Model_Departments::byFaculty($facultyID);
$faculty = Model_Faculty::with($this->post['facultyID']);
$departments = $faculty->getDepartments();
$this->response->body(json_encode($departments));
}
}
\ No newline at end of file
......@@ -12,8 +12,8 @@ class Controller_Handler_Credits extends Controller_Handler
}
public function action_getMilestone() {
$Milestone = Model_Discipline::getMilestone($this->user->FacultyID, $this->user->SemesterID)[0];
$this->response->body($Milestone['Num']);
$milestone = $this->user->Faculty->getMilestone();
$this->response->body($milestone);
}
public function action_getInfo() {
......@@ -24,18 +24,16 @@ class Controller_Handler_Credits extends Controller_Handler
}
public function action_setCreditMilestone() {
$id = (int)$this->request->param("param1");
$stage = (int)$this->request->param("param2");
$id = (int) $this->request->param("param1");
$stage = (int) $this->request->param("param2");
if ($stage >= 0 && $stage <= 3)
Model_Discipline::setMilestone(0, $id, $stage)[0];
Model_Discipline::load($id)->setMilestone($stage);
$this->response->body('');
}
public function action_setMilestone() {
$stage = (int)$this->request->param("param1");
if ($stage >= 0 && $stage <= 3)
Model_Discipline::setMilestoneForCredits(0, $this->user->FacultyID, $stage);
$stage = (int) $this->request->param("param1");
$this->user->Faculty->setMilestoneForCredits($stage);
$this->response->body('');
}
}
\ No newline at end of file
......@@ -12,11 +12,10 @@ class Controller_Handler_GetData extends Controller_Handler
$data['success'] = false;
$this->post -> rule('GradeID', 'not_empty')
-> rule('GradeID', 'digit');
if($this->post->check()) {
$data['data'] = Model_Faculty::with($this->user->FacultyID)
->getGroups($this->post['GradeID']);
$data['success'] = true;
if ($this->post->check()) {
$data['data'] = $this->user->Faculty->getGroups($this->post['GradeID']);
$data['success'] = true;
}
$this->response->body(json_encode($data));
}
......
......@@ -414,8 +414,8 @@ class Controller_Handler_Map extends Controller_Handler {
$this->post -> rule('FacultyID', 'not_empty')
-> rule('FacultyID', 'digit');
if($this->post->check()) {
$faculty = $this->post['FacultyID'];
$departments = Model_Departments::byFaculty($faculty);
$faculty = Model_Faculty::with($this->post['FacultyID']);
$departments = $faculty->getDepartments();
}
$this->response->body(json_encode($departments));
}
......
......@@ -79,11 +79,12 @@ class Controller_Handler_Settings extends Controller_Handler {
User::instance()->changeProfile($this->post->data());
}
}
# todo: duplicate at handler/AdmTeachers
public function action_getDepartmentsList()
{
$facultyID = $this->post['facultyID'];
$departments = Model_Departments::byFaculty($facultyID);
$faculty = Model_Faculty::with($this->post['facultyID']);
$departments = $faculty->getDepartments();
$this->response->body(json_encode($departments));
}
......
......@@ -5,7 +5,7 @@ class Controller_Teacher_Discipline_Create extends Controller_Environment_Teache
public function action_create_discipline() {
$this->twig->set([
'FacultiesList' => Model_Faculties::load(),
'SubjectsList' => Model_Faculty::with($this->user->FacultyID)->getSubjects(),
'SubjectsList' => $this->user->Faculty->getSubjects(),
'GradesList' => Model_Grades::loadAll(),
])->set_filename('teacher/discipline/create');
}
......@@ -15,7 +15,7 @@ class Controller_Teacher_Discipline_Create extends Controller_Environment_Teache
public function action_create_coursework() {
$this->twig->set([
'FacultiesList' => Model_Faculties::load(),
'SubjectsList' => Model_Faculty::with($this->user->FacultyID)->getSubjects(),
'SubjectsList' => $this->user->Faculty->getSubjects(),
'GradesList' => Model_Grades::loadAll(),
])->set_filename('teacher/coursework/create');
}
......
......@@ -23,7 +23,7 @@ class Controller_Teacher_Discipline_Edit extends Controller_Environment_Teacher
public function action_edit_settings() {
$this->twig->SubjectsList = Model_Faculty::with($this->user->FacultyID)->getSubjects();
$this->twig->SubjectsList = $this->user->Faculty->getSubjects();
$this->twig->GradesList = Model_Grades::loadAll();
}
......@@ -35,8 +35,7 @@ class Controller_Teacher_Discipline_Edit extends Controller_Environment_Teacher
public function action_edit_groups() {
$this->twig->set([
'GroupsForDiscipline' => $this->discipline->getGroups(),
'Groups' => Model_Faculty::with($this->discipline->FacultyID)
->getGroups($this->discipline->GradeID),
'Groups' => $this->user->Faculty->getGroups($this->discipline->GradeID),
]);
}
......@@ -55,7 +54,7 @@ class Controller_Teacher_Discipline_Edit extends Controller_Environment_Teacher
public function action_edit_teachers() {
$this->twig->set([
'FacultiesList' => Model_Faculties::load(),
'Departments' => Model_Departments::byFaculty($this->user->FacultyID),
'Departments' => $this->user->Faculty->getDepartments(),
'BindTeachersList' => Model_Teachers::getNamesForDiscipline($this->discipline->ID),
]);
}
......
......@@ -6,7 +6,7 @@ class Controller_Teacher_Profile extends Controller_Environment_Teacher
$this->twig->set([
'JobPositions' => Model_Teachers::getJobPositions(),
'Faculties' => Model_Teachers::getFaculties(),
'Departments' => Model_Departments::byFaculty($this->user->FacultyID),
'Departments' => $this->user->Faculty->getDepartments(),
])->set_filename('profile/settings');
}
}
......@@ -2,26 +2,4 @@
class Model_Departments extends Model
{
/**
* @param $faculty int faculty id
* @return Database_Result
*/
public static function ofFaculty($faculty) { // todo: move to Model_Faculty
$sql = "CALL `GetDepartments`(:faculty)";
return DB::query(Database::SELECT, $sql)
->param(':faculty', $faculty)->execute();
}
public static function byFaculty($facultyID) { // fixme: how this differs with ofFaculty method?
$list = [];
if ($facultyID > 0) {
$departments = self::ofFaculty($facultyID);
foreach ($departments as $row) {
if ($row['Name'] == null)
$row['Name'] = '<служебная кафедра>';
$list[] = $row;
}
}
return $list;
}
}
......@@ -131,52 +131,20 @@ class Model_Discipline extends Model_Container
}
/**
* @param $teacherID int
* @param $disciplineID int
* @param $milestone int
* @return Database_Result
* Time machine for discipline.
* @param $stage int number from 0 to 3
*/
public static function setMilestone($teacherID, $disciplineID, $milestone) {
$sql = "SELECT `RestrictAfterMilestone`(:teacher, :discipline, milestone) AS `Num`";
return DB::query(Database::SELECT, $sql)
->parameters([
':teacher' => $teacherID,
':discipline' => $disciplineID,
':milestone' => $milestone,
])->execute();
}
public function setMilestone($stage) {
if ($stage >= 0 && $stage <= 3)
throw new LogicException('Milestone argument is incorrect!');
/**
* @param $facultyID int
* @param $semesterID int
* @return Database_Result
*/
public static function getMilestone($facultyID, $semesterID) {
$sql = "SELECT `GetMilestone`(:faculty, :semester) AS `Num`";
return DB::query(Database::SELECT, $sql)
->param(':faculty', $facultyID)
->param(':semester', $semesterID)
->execute();
}
$this->Milestone = $stage;
/**
* @param $teacherID int
* @param $facultyID int
* @param $milestone int
* @param $semesterID int
* @return Database_Result
*/
public static function setMilestoneForCredits($teacherID, $facultyID, $milestone, $semesterID = null) {
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = "SELECT `RestrictAfterMilestoneForCredits`(:teacherID, :facultyID, :milestone, :semesterID) AS `Num`";
return DB::query(Database::SELECT, $sql)
$sql = "SELECT `RestrictAfterMilestone`(:discipline, milestone)";
DB::query(Database::SELECT, $sql)
->parameters([
':teacherID' => $teacherID,
':facultyID' => $facultyID,
':milestone' => $milestone,
':semesterID' => $semesterID,
':discipline' => $this->ID,
':milestone' => $stage,
])->execute();
}
}
\ No newline at end of file
......@@ -22,6 +22,39 @@ class Model_Faculty extends Model
return $f;
}
/**
* @param $semesterID int
* @return Database_Result
*/
public function getMilestone($semesterID = null) {
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = "SELECT `GetMilestone`(:faculty, :semester) AS `Num`";
return DB::query(Database::SELECT, $sql)
->param(':faculty', $this->ID)
->param(':semester', $semesterID)
->execute()[0]['Num'];
}
/**
* @param $stage int
* @param $semesterID int
*/
public function setMilestoneForCredits($stage, $semesterID = null) {
if ($stage >= 0 && $stage <= 3)
throw new LogicException('Milestone argument is incorrect!');
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = "SELECT `RestrictAfterMilestoneForCredits`(:facultyID, :milestone, :semesterID)";
DB::query(Database::SELECT, $sql)
->parameters([
':facultyID' => $this->ID,
':milestone' => $stage,
':semesterID' => $semesterID,
])->execute();
}
/** @return Model_Discipline[] */
public function getDisciplines($semesterID = null) {
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
......@@ -68,4 +101,11 @@ class Model_Faculty extends Model
->param(':faculty', $this->ID)
->execute()->as_array();
}
public function getDepartments() {
$sql = "CALL `GetDepartments`(:faculty)";
return DB::query(Database::SELECT, $sql)
->param(':faculty', $this->ID)
->execute()->as_array();
}
}
......@@ -51,13 +51,9 @@ class Model_Student extends Model_Container
->execute();
$list = [];
// TODO: use TeacherID. Split fullName?
foreach ($result as $row) {
$names =& $list[$row['DisciplineID']];
$fullName = $row['LastName'] .' '. $row['FirstName'] .' '. $row['SecondName'];
if (!$names)
$names = [];
array_push($names, $fullName);
$id = $row['DisciplineID'];
$list[$id][] = $row;
}
return $list;
}
......
......@@ -5,7 +5,7 @@
* @property $LastName string
* @property $FirstName string
* @property $SecondName string
* @property $FacultyID int
* @property Model_Faculty $Faculty
* @property $FacultyName string
* @property $FacultyAbbr string
*
......@@ -257,6 +257,7 @@ class User implements ArrayAccess
return ( $res === 0 );
}
# todo: move to account
public function changeLogin($login) {
if (!$this->isSignedIn())
return false;
......@@ -269,6 +270,7 @@ class User implements ArrayAccess
return false;
}
# todo: move to account
public function changeMail($email) {
if (!$this->isSignedIn() || Account::isMailValid($email))
return false;
......@@ -290,6 +292,7 @@ class User implements ArrayAccess
// return ( $res === 0 );
// }
# todo: move to account
public function changeProfile($data) {
if ($this->Type != 'teacher')
return false;
......@@ -329,6 +332,10 @@ class User implements ArrayAccess
}
function __get($name) {
# todo: move to $_SESSION
if ($name == 'Faculty')
return Model_Faculty::with($this->_session['FacultyID']);
return $this->offsetGet($name);
}
......
......@@ -34,7 +34,7 @@
</select>
<select class="defaultForm" id="departmentSelect">
{% for row in Departments %}
<option value="{{ row.ID }}" {% if User.DepID == row.ID %}selected="selected"{% endif %}>{{ row.Name }}</option>
<option value="{{ row.ID }}" {% if User.DepID == row.ID %}selected="selected"{% endif %}>{{ row.Name | default('Служебная кафедра') }}</option>
{% endfor %}
</select>
</div>
......
......@@ -35,7 +35,7 @@
<select class="SelectDepartment defaultForm">
<option value="0">Выберите кафедру (не обязательно)</option>
{% for Dep in Departments %}
<option value="{{ Dep.ID }}">{{ Dep.Name }}</option>
<option value="{{ Dep.ID }}">{{ Dep.Name|default('Служебная кафедра') }}</option>
{% endfor %}
</select>
<input type="text" class="InputTeacherName defaultForm P1Width" placeholder="Фамилия Имя Отчество" value="">
......
......@@ -27,7 +27,9 @@ $(function()
$("#departmentSelect").html('<option value="0">--- Кафедра ---</option>');
$.post(URLdir + 'handler/admTeachers/getDepartmentsList', {'facultyID': $('#facultySelect option:selected').val()}, function(data){
$.each(data, function(i){
$("#departmentSelect").append('<option value="'+data[i].ID+'">'+data[i].Name+'</option>');
var dep = data[i];
if (!dep.Name) dep.Name = 'Служебная кафедра';
$("#departmentSelect").append('<option value="'+dep.ID+'">'+dep.Name+'</option>');
});
$("#departmentSelect").removeAttr("disabled");
}, "json");
......
......@@ -12,7 +12,9 @@ $(function()
$('#departmentSelect').attr('disabled', 'disabled');
$.post(URLdir + 'handler/admTeachers/getDepartmentsList', {'facultyID': $('#facultySelect option:selected').val()}, function(data){
$.each(data, function(i){
$("#departmentSelect").append('<option value="'+data[i].ID+'">'+data[i].Name+'</option>');
var dep = data[i];
if (!dep.Name) dep.Name = 'Служебная кафедра';
$("#departmentSelect").append('<option value="'+dep.ID+'">'+dep.Name+'</option>');
});
$("#departmentSelect").removeAttr("disabled");
}, "json");
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment