180 lines
6.4 KiB
PHP
180 lines
6.4 KiB
PHP
<?php
|
|
/**
|
|
* Handles the assigning of a ticket to a user. This is being used to make someone responsible for the handling and solving of a ticket.
|
|
* The idea is that someone can easily assign a ticket to himself and by doing that, he makes aware to the other moderators that he will deal with the ticket in the future.
|
|
* @author Daan Janssens, mentored by Matthew Lagoe
|
|
*/
|
|
class Assigned{
|
|
|
|
private $user; /**< The id of the user being assigned */
|
|
private $ticket; /**< The id of the ticket being assigned */
|
|
|
|
|
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* Assigns a ticket to a user or returns an error message.
|
|
* It will first check if the ticket isn't already assigned, if not, it will create a new 'assigned' entry.
|
|
* @param $user_id the id of the user we want to assign to the ticket
|
|
* @param $ticket_id the id of the ticket.
|
|
* @return A string, if assigning succeedded "SUCCESS_ASSIGNED" will be returned, else "ALREADY_ASSIGNED" will be returned.
|
|
*/
|
|
public static function assignTicket( $user_id, $ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
//check if ticket is already assigned, if so return "ALREADY ASSIGNED"
|
|
if(! Assigned::isAssigned($ticket_id)){
|
|
$assignation = new Assigned();
|
|
$assignation->set(array('User' => $user_id, 'Ticket' => $ticket_id));
|
|
$assignation->create();
|
|
return "SUCCESS_ASSIGNED";
|
|
}else{
|
|
return "ALREADY_ASSIGNED";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Unassign a ticket being coupled to a user or return an error message.
|
|
* It will first check if the ticket is assigned, if this is indeed the case it will delete the 'assigned' entry.
|
|
* @param $user_id the id of the user we want to unassign from the ticket
|
|
* @param $ticket_id the id of the ticket.
|
|
* @return A string, if unassigning succeedded "SUCCESS_UNASSIGNED" will be returned, else "NOT_ASSIGNED" will be returned.
|
|
*/
|
|
public static function unAssignTicket( $user_id, $ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
//check if ticket is really assigned to that user
|
|
if( Assigned::isAssigned($ticket_id, $user_id)){
|
|
$assignation = new Assigned();
|
|
$assignation->set(array('User' => $user_id, 'Ticket' => $ticket_id));
|
|
$assignation->delete();
|
|
return "SUCCESS_UNASSIGNED";
|
|
}else{
|
|
return "NOT_ASSIGNED";
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Get the (external) id of the user assigned to a ticket
|
|
* @param $ticket_id the Id of the ticket that's being queried
|
|
* @return The (external)id of the user being assigned to the ticket
|
|
*/
|
|
public static function getUserAssignedToTicket($ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
$statement = $dbl->execute("SELECT ticket_user.ExternId FROM `assigned` JOIN `ticket_user` ON assigned.User = ticket_user.TUserId WHERE `Ticket` = :ticket_id", Array('ticket_id' => $ticket_id));
|
|
$user_id = $statement->fetch();
|
|
return $user_id['ExternId'];
|
|
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* Check if a ticket is already assigned (in case the user_id param is used, it will check if it's assigned to that user)
|
|
* @param $ticket_id the Id of the ticket that's being queried
|
|
* @param $user_id the id of the user, default parameter = 0, by using a user_id, it will check if that user is assigned to the ticket.
|
|
* @return true in case it's assigned, false in case it isn't.
|
|
*/
|
|
public static function isAssigned( $ticket_id, $user_id = 0) {
|
|
$dbl = new DBLayer("lib");
|
|
//check if ticket is already assigned
|
|
|
|
if($user_id == 0 && $dbl->select("`assigned`", array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id")->rowCount() ){
|
|
return true;
|
|
}else if( $dbl->select("`assigned`", array('ticket_id' => $ticket_id, 'user_id' => $user_id), "`Ticket` = :ticket_id and `User` = :user_id")->rowCount() ){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* A constructor.
|
|
* Empty constructor
|
|
*/
|
|
public function __construct() {
|
|
}
|
|
|
|
|
|
/**
|
|
* sets the object's attributes.
|
|
* @param $values should be an array of the form array('User' => user_id, 'Ticket' => ticket_id).
|
|
*/
|
|
public function set($values) {
|
|
$this->setUser($values['User']);
|
|
$this->setTicket($values['Ticket']);
|
|
}
|
|
|
|
|
|
/**
|
|
* creates a new 'assigned' entry.
|
|
* this method will use the object's attributes for creating a new 'assigned' entry in the database.
|
|
*/
|
|
public function create() {
|
|
$dbl = new DBLayer("lib");
|
|
$dbl->insert("`assigned`", Array('User' => $this->getUser(), 'Ticket' => $this->getTicket()));
|
|
}
|
|
|
|
|
|
/**
|
|
* deletes an existing 'assigned' entry.
|
|
* this method will use the object's attributes for deleting an existing 'assigned' entry in the database.
|
|
*/
|
|
public function delete() {
|
|
$dbl = new DBLayer("lib");
|
|
$dbl->delete("`assigned`", array('user_id' => $this->getUser() ,'ticket_id' => $this->getTicket()), "`User` = :user_id and `Ticket` = :ticket_id");
|
|
}
|
|
|
|
/**
|
|
* loads the object's attributes.
|
|
* loads the object's attributes by giving a ticket_id, it will put the matching user_id and the ticket_id into the attributes.
|
|
* @param $ticket_id the id of the ticket that should be loaded
|
|
*/
|
|
public function load($ticket_id) {
|
|
$dbl = new DBLayer("lib");
|
|
$statement = $dbl->select("`assigned`", Array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id");
|
|
$row = $statement->fetch();
|
|
$this->set($row);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* get user attribute of the object.
|
|
*/
|
|
public function getUser(){
|
|
return $this->user;
|
|
}
|
|
|
|
|
|
/**
|
|
* get ticket attribute of the object.
|
|
*/
|
|
public function getTicket(){
|
|
return $this->ticket;
|
|
}
|
|
|
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* set user attribute of the object.
|
|
* @param $u integer id of the user
|
|
*/
|
|
public function setUser($u){
|
|
$this->user = $u;
|
|
}
|
|
|
|
/**
|
|
* set ticket attribute of the object.
|
|
* @param $t integer id of the ticket
|
|
*/
|
|
public function setTicket($t){
|
|
$this->ticket = $t;
|
|
}
|
|
|
|
|
|
}
|