diff --git a/frontend/modules/api/controllers/ReportsController.php b/frontend/modules/api/controllers/ReportsController.php index 37411e4..dab0e8d 100755 --- a/frontend/modules/api/controllers/ReportsController.php +++ b/frontend/modules/api/controllers/ReportsController.php @@ -7,66 +7,28 @@ use common\models\ReportsTask; use common\models\UserCard; use DateTime; use frontend\modules\api\models\ReportSearchForm; -use JsonException; use Yii; -use yii\filters\auth\CompositeAuth; -use yii\filters\auth\HttpBearerAuth; -use yii\filters\ContentNegotiator; use yii\helpers\ArrayHelper; use yii\web\BadRequestHttpException; use yii\web\NotFoundHttpException; -use yii\web\Response; class ReportsController extends ApiController { - public function init() - { - parent::init(); // TODO: Change the autogenerated stub - } - - public function behaviors() - { - $parent = parent::behaviors(); - $b = [ - [ - 'class' => ContentNegotiator::className(), - 'formats' => [ - 'application/json' => Response::FORMAT_JSON, - ], - ], - 'authenticator' => [ - 'class' => CompositeAuth::class, - 'authMethods' => [ - HttpBearerAuth::class, - ], - ] - ]; - - return array_merge($parent, $b); - } - - public function actionIndex(): array + public function actionIndex($user_card_id) { $reportsModel = new ReportSearchForm(); $params = Yii::$app->request->get(); - if(!isset($params['user_card_id'])){ - $userCard = UserCard::find()->where(['id_user' => Yii::$app->user->id])->one(); - if($userCard){ - $params['user_card_id'] = $userCard->id; - } - } $reportsModel->attributes = $params; + $reportsModel->limit = $params['limit'] ?? $reportsModel->limit; + $reportsModel->offset = $params['offset'] ?? $reportsModel->offset; + if(!$reportsModel->validate()){ return $reportsModel->errors; } - return $reportsModel->byParams(); - } - public function actionView($id): array{ - $report = Reports::findOne($id); - return array_merge($report->toArray(), ['tasks' => $report->_task]); + return $reportsModel->byParams(); } /** @@ -88,9 +50,6 @@ class ReportsController extends ApiController throw new BadRequestHttpException('Wrong date format'); } -// return $reportsModel->date; -// return $reportsModel->user_card_id; - if(!$reportsModel->validate()){ return $reportsModel->errors; } @@ -145,7 +104,7 @@ class ReportsController extends ApiController } if(false === ($report->delete())) { - throw new JsonException('Report not deleted'); + throw new \RuntimeException('Report not deleted'); } return true; @@ -161,7 +120,7 @@ class ReportsController extends ApiController } if(isset($params['user_card_id'])) { - throw new JsonException('constraint by user_card_id'); + throw new \RuntimeException('constraint by user_card_id'); } $reportsModel->attributes = $params; @@ -197,7 +156,9 @@ class ReportsController extends ApiController $reportsModel->attributes = $params; $reportsModel->user_card_id = $userCard->id; - $reports = $reportsModel->findByDate(); +// return $reportsModel; + + $reports = $reportsModel->reportsByDate(); return ArrayHelper::toArray($reports , [ 'common\models\Reports' => [ 'date' => 'created_at', diff --git a/frontend/modules/api/models/ReportSearchForm.php b/frontend/modules/api/models/ReportSearchForm.php index 60e1832..9379663 100755 --- a/frontend/modules/api/models/ReportSearchForm.php +++ b/frontend/modules/api/models/ReportSearchForm.php @@ -4,21 +4,18 @@ namespace frontend\modules\api\models; use common\models\Reports; -use common\models\ReportsTask; use yii\base\Model; +/** */ class ReportSearchForm extends Model { + public $user_card_id; public $limit; public $offset; + /** @var string */ + public $date; public $fromDate; public $toDate; - public $user_card_id; - /** - * @var false - */ - public $byDate; - public $date; public function __construct($config = []) { @@ -26,10 +23,9 @@ class ReportSearchForm extends Model $this->offset = 0; $this->user_card_id = null; - $this->toDate = date('Y-m-d', time()); - $this->fromDate = date('Y-m-d', time()); + $this->toDate = date('Y-m-d'); + $this->fromDate = date('Y-m-d'); $this->date = date('Y-m-d'); - $this->byDate = false; parent::__construct($config); } @@ -38,41 +34,44 @@ class ReportSearchForm extends Model { return [ [['byDate'], 'safe'], -// [['fromDate', 'toDate', 'date'], 'date', 'format' => 'Y-m-d'], - [['limit', 'offset', 'user_card_id'], 'integer', 'min' => 0], + [['fromDate', 'toDate', 'date'], 'string'], +// [['fromDate', 'toDate', 'date'], 'date', 'format' => 'php:Y-m-d'], + [[ 'user_card_id'], 'integer', 'min' => 0], ]; } public function byParams() { - $queryBuilder = Reports::find() - ->with('task'); + $queryBuilder = Reports::find()->with('task'); - if ($this->byDate) { - $queryBuilder->andWhere(['reports.created_at' => $this->date]); - } else { + if ($this->fromDate && $this->toDate) { $queryBuilder->andWhere(['between', 'reports.created_at', $this->fromDate, $this->toDate]); } + if (isset($this->user_card_id)) { + $queryBuilder->andWhere(['reports.user_card_id' => $this->user_card_id]); + } + $queryBuilder->limit($this->limit) ->offset($this->offset); - if (isset($this->user_card_id)) { - $queryBuilder->andWhere(['user_card_id' => $this->user_card_id]); - } - - $data = $queryBuilder->asArray()->all(); - - return $data; + return $queryBuilder->asArray()->all(); } - public function findByDate(): array + public function findByDate() { - return Reports::find() -// ->joinWith('task') - ->with('task') - ->where(['user_card_id' => $this->user_card_id]) - ->andWhere(['created_at' => $this->date]) - ->all(); + return Reports::find()->with('task') + ->where(['reports.user_card_id' => $this->user_card_id]) +// ->where(['between', 'reports.created_at', $this->fromDate, $this->toDate]) + ->andWhere(['reports.created_at' => $this->date]) + ->asArray()->all(); + } + + public function reportsByDate() + { + return Reports::find()->with('task') + ->where(['reports.user_card_id' => $this->user_card_id]) + ->where(['between', 'reports.created_at', $this->fromDate, $this->toDate]) + ->asArray()->all(); } } \ No newline at end of file diff --git a/frontend/modules/api/models/Reports.php b/frontend/modules/api/models/Reports.php deleted file mode 100644 index f289fac..0000000 --- a/frontend/modules/api/models/Reports.php +++ /dev/null @@ -1,83 +0,0 @@ - function () { - return (int)$this->getCommentsCount(); - }, - 'photo' => function () { - return $this->getPhotoLink(); - }, - 'news_body', - 'like' => function () { - return (int)$this->getLikesCount(); - }, - 'category' => function () { - return $this->category; - }, - ]; - } - - public function getPhotoLink() - { - if (empty($this->photo)) { - return 'N/A'; - } - return '/uploads/news-image/' . $this->photo; - } - - public function getTags(): ActiveQuery - { - return $this->hasMany(Tag::className(), ['id' => 'tag_id']) - ->via('newsTags'); - } - - public function getCategory() - { - return $this->hasMany(Category::className(), ['id' => 'category_id']) - ->via('categoryNews'); - } - - public function getComments(): ActiveQuery - { - return $this->hasMany(Comment::className(), ['news_id' => 'id']); - } - - public function getLinks(): array - { - $string = str_replace('+', ',', Url::to(['news/news', 'expand' => 'tags comments photo news_body like', 'news_id' => $this->id], true)); - - return [ - 'self' => $string, - ]; - } - - public function getEvent() - { - return $this->hasOne(EventType::class, ['id' => 'event_type_id']); - } -}