<?php
namespace App\Controller;
use \App\Models\Groups;
use \App\Entity\Session;
use \App\Entity\Group;
class GroupsController {
public function create() {
list($title) = get_expected_vars($_GET, ["title"]);
$title = sanitize_input($title);
$session = get_current_session();
$groups = new Groups();
$group = $groups -> create_group(
$session -> user() -> get_id(),
$title,
"user"
);
if(!$group) {
return error_response("create_group", "Something wrong");
}
return success_response([
"group_id" => $group -> get_id(),
]);
}
public function get_list() {
$session = get_current_session();
$groups = $session -> user() -> get_groups();
$groups = array_map(function($group){
return $group -> to_array();
}, $groups);
return success_response([
"groups" => $groups
]);
}
public function remove() {
$session = get_current_session();
list($group_id) = get_expected_vars($_GET, ["group_id"]);
$group_id = intval($group_id);
$group = new Group();
if(!$group -> init_by_id($group_id)) {
return error_response("group_remove", "Invalid group_id");
}
if(!$group -> remove()) {
return error_response("group_remove", "Something wrong");
}
$groups_model = new Groups();
$groups_model -> normalizing_groups_position($session -> user_id);
return success_response();
}
public function change_position() {
$session = get_current_session();
list($group_id, $position) = get_expected_vars($_GET, ["group_id", "position"]);
$position = intval($position);
$group_id = intval($group_id);
$groups = new Groups();
if(!$groups -> change_group_position($group_id, $position)) {
return error_response("group_change_position", "Something wrong");
}
return success_response();
}
public function change_title() {
$session = get_current_session();
list($group_id, $title) = get_expected_vars($_GET, ["group_id", "title"]);
$group_id = intval($group_id);
$new_title = sanitize_input($title);
$group = new Group();
if(!$group -> init_by_id($group_id)) {
return error_response("change_group_title", "Wrong group_id");
}
if($group -> user_id != $session -> user_id) {
return error_response("change_group_title", "Access denied");
}
$group -> title = $new_title;
if(!$group -> update()) {
return error_response("change_group_title", "Something wrong");
}
return success_response();
}
}