<?php

/**
 * OpenKM, Open Knowledge Management System S.L.  (http://www.openkm.com)
 * Copyright (c) 2006-2023
 *
 * No bytes were intentionally harmed during the development of this application.
 *
 * This program is commercial software; you can use it under the terms of the
 * EULA - OpenKM SDK End User License Agreement as published by OpenKM Knowledge Management System S.L.
 *
 * 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
 * EULA - OpenKM SDK End User License Agreement for more details:
 * http://docs.openkm.com/kcenter/view/licenses/eula-openkm-sdk-end-user-license-agreement.html
 */

namespace openkm\definition;

/**
 * BaseWorkflow
 *
 * @author sochoa
 */
interface BaseTask {

    public function getAssignedTasks($projectId, $typeId, $statusId, $orderColumn, $orderAsc, $offset,
                                     $limit, $from, $to, $subject);

    public function getActiveTasks($projectId, $typeId, $statusId, $orderColumn, $orderAsc, $offset,
                                   $limit, $from, $to, $subject);

    public function getFinishedTasks($projectId, $typeId, $statusId, $orderColumn, $orderAsc, $offset,
                                     $limit, $from, $to, $subject);

    public function getNotifiedTasks($projectId, $typeId, $statusId, $orderColumn, $orderAsc, $offset,
                                     $limit, $from, $to, $subject);

    public function getTaskStatuses();

    public function getTaskProjects($filterActive);

    public function getTaskTypes($filterActive);

    public function getAssignedTasksCount($statusId, $projectId, $typeId);

    public function getActiveTasksCount($statusId, $projectId, $typeId);

    public function getFinishedTasksCount($statusId, $projectId, $typeId);

    public function getNotifiedTasksCount($statusId, $projectId, $typeId);

    public function createTask($subject, $start, $end, $description, $statusId, $projectId,
                               $typeId, $user, $notificationUsers, $externalUsers, $relatedDocuments,
                               $relatedFolders, $relatedRecords, $relatedMails, $repeatExpression,
                               $repeatUntil, $formatDate, $repeatTimes, $reminderStartUnit, $reminderStartValue,
                               $reminderEndUnit, $reminderEndValue);

    public function updateTask($taskId, $subject, $start, $end, $description, $statusId,
                               $projectId, $typeId, $user, $notificationUsers, $externalUsers,
                               $relatedDocuments, $relatedFolders, $relatedRecords, $relatedMails,
                               $owner, $repeatExpression, $repeatUntil, $formatDate, $repeatTimes, $progress,
                               $reminderStartUnit, $reminderStartValue, $reminderEndUnit, $reminderEndValue);

    public function getTask($taskId);

    public function deleteTask($taskId);

    public function createTaskProject($name, $active, $description);

    public function updateTaskProject($projectId, $active, $name, $description);

    public function deleteTaskProject($projectId);

    public function getTaskProject($projectId);

    public function createTaskType($name, $active, $description);

    public function updateTaskType($typeId, $active, $name, $description);

    public function deleteTaskType($typeId);

    public function getTaskType($typeId);

    public function createTaskStatus($name, $finish);

    public function updateTaskStatus($statusId, $name, $finish);

    public function deleteTaskStatus($statusId);

    public function getTaskStatus($statusId);

    public function getTaskNotes($taskId);

    public function createTaskNote($taskId, $text);

    public function updateTaskNote($noteId, $text);


    public function deleteTaskNote($noteId);
}

?>
