yii2-test-1/common/services/UserService.php

107 lines
2.6 KiB
PHP
Raw Permalink Normal View History

2023-05-06 20:40:02 +03:00
<?php
namespace common\services;
use common\models\Text;
use common\models\User;
use yii\web\UploadedFile;
class UserService
{
2023-05-08 14:20:48 +03:00
/**
* Метод для сохранения текстов профиля
* @param $post
* @param $profile_id
* @param $texts
* @return void
*/
2023-05-06 20:40:02 +03:00
public function saveTexts($post, $profile_id, $texts)
{
foreach ($texts as $text) {
$text->text = $post['text'][$text->language];
$text->title = $post['title'][$text->language];
$text->profile_id = $profile_id;
$text->save();
}
}
2023-05-08 14:20:48 +03:00
/**
* Метод для сохранения профиля
* @param $post
* @param $model
* @return bool
*/
2023-05-06 20:40:02 +03:00
public function saveProfile($post, $model)
{
$model->load($post);
$model->created_at = date('Y-d-m h:i:s');
$model->file = UploadedFile::getInstance($model, 'file');
if ($model->file) {
$model->image = $model->file->baseName . '.' . $model->file->extension;
$model->file->saveAs('@frontend/web/uploads/' . $model->file->baseName . '.' . $model->file->extension);
$model->file = null;
}
if ($model->save()) {
return true;
} else
return false;
}
2023-05-08 14:20:48 +03:00
/**
* Метод для получения всех юзеров
* @return array|\yii\db\ActiveRecord[]
*/
2023-05-06 20:40:02 +03:00
public function getAllUsers()
{
return $users = User::find()->all();
}
2023-05-08 14:20:48 +03:00
/**
* Метод создает 5 моделей текста, для actionCreate
* @return array
*/
2023-05-06 20:40:02 +03:00
public function newTexts()
{
$texts = [];
foreach (Text::getLanguages() as $lang) {
$text = new Text();
$text->language = $lang;
$texts[] = $text;
}
return $texts;
}
2023-05-08 14:20:48 +03:00
/**
* Метод для получения текстов по профилю
* @param $id
* @return array|\yii\db\ActiveRecord[]
*/
2023-05-06 20:40:02 +03:00
public function getTexts($id)
{
$textModels = Text::find()->where(['profile_id' => $id])->all();
2023-05-08 14:20:48 +03:00
2023-05-06 20:40:02 +03:00
return $textModels;
}
2023-05-08 14:20:48 +03:00
/**
* Метод для получения текста по профилю и языку
* @param $id
* @param $slug
* @return array|\yii\db\ActiveRecord[]
*/
2023-05-06 20:40:02 +03:00
public function getTextByLanguage($id, $slug)
{
return Text::find()->where(['language' => $slug, 'profile_id' => $id])->all();
}
2023-05-08 14:20:48 +03:00
/**
* @return self
*/
2023-05-06 20:40:02 +03:00
public static function run()
{
return new self();
}
}