<?php
namespace app\models;
use app\core\base\Model;
use PDOStatement;
/**
* Class Tasks
* @package app\models
*/
class Tasks extends Model
{
const SHOW_BY_DEFAULT = 3;
/**
* Правила валидации
*
* @return array
*/
public function rules()
{
return [
'name' => [
'required',
'minLen' => 3,
'maxLen' => 30
],
'email' => [
'required',
'email'
],
'text' => [
'required'
]
];
}
/**
* Атрибуты полей
*
* @return string[]
*/
public function attribute()
{
return [
'name' => 'Имя',
'email' => 'E-mail',
'text' => 'Текст задачи'
];
}
/**
* Метод возвращает массив определенной задачи
*
* @param $id
* @return mixed
*/
public function getTask($id)
{
return $this->db->fetch('SELECT id, nameUser, emailUser, text FROM tasks WHERE id = :id LIMIT 1', [
'id' => $id
]);
}
/**
* Метод возвращает список задач
*
* @param $page
* @return array
*/
public function getTasks($page)
{
return $this->getTasksLimit($page);
}
/**
* Метод возвращаем количество задач
*
* @return mixed
*/
public function getTasksCount()
{
return $this->db->count('SELECT COUNT(*) as count FROM tasks');
}
/**
* Метод возвращает список задач по лимиту
*
* @param int $page
* @return array
*/
public function getTasksLimit($page = 1)
{
$limit = self::SHOW_BY_DEFAULT;
$offset = ($page - 1) * self::SHOW_BY_DEFAULT;
return $this->db->row('SELECT id, nameUser, emailUser, text, status FROM tasks ORDER BY id DESC LIMIT :limit OFFSET :offset', [
'limit' => $limit,
'offset' => $offset
]);
}
/**
* Метод добавляет задачу
*
* @param $data
* @return bool|PDOStatement
*/
public function setTasks($data)
{
return $this->db->query('INSERT INTO tasks (nameUser, emailUser, text) VALUES (:nameUser, :emailUser, :text)', [
'nameUser' => $data['name'],
'emailUser' => $data['email'],
'text' => $data['text']
]);
}
}