Дипломная работа: Автоматизация рабочего места менеджера отдела продаж для ООО "Сириус"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
127
Приложение. Листинг программного кода (фрагмент)
<?php
namespace app\controllers;
use Yii;
use app\models\Request;
use app\models\RequestSearch;
use app\models\RequestService;
use app\models\RequestServiceSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use yii\base\UserException;
/**
* RequestController implements the CRUD actions for Request model.
*/
class RequestController extends Controller
{
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['index', 'view', 'create', 'delete', 'add-
service', 'request-full'],
'allow' => true,
128
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
return Yii::$app->user->identity-
>IsClient;
}
],
[
'actions' => ['index', 'view', 'create', 'delete', 'add-
service', 'request-select', 'request-paid', 'request-performing', 'request-
performed'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
return Yii::$app->user->identity-
>IsManager;
}
],
[
'actions' => ['index', 'view', 'create', 'update',
'delete', 'add-service', 'request-select', 'request-paid', 'request-performing',
'request-performed'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
return Yii::$app->user->identity-
>IsAdmin;
}
],
],
],
];
}
/**
* Lists all Request models.
* @return mixed
*/
public function actionIndex()
129
{
$searchModel = new RequestSearch();
$dataProvider = $searchModel->search(Yii::$app->request-
>queryParams);
$view_name = '';
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
$view_name = 'client-index';
$dataProvider->query->andWhere(['id_creator' =>
Yii::$app->user->identity->id]);
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
$view_name = 'manager-index';
$dataProvider->query->andWhere(['id_executor' =>
Yii::$app->user->identity->id])->orWhere('id_executor IS NULL')-
>andWhere('id_request_status > ' .
\app\models\Request::REQUEST_STATUS_OPEN);
} break;
case \app\models\User::USER_TYPE_ADMIN :
{
$view_name = 'admin-index';
} break;
}
return $this->render($view_name, [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single Request model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
$view_name = '';
130
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
$view_name = 'client-view';
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
$view_name = 'manager-view';
} break;
case \app\models\User::USER_TYPE_ADMIN :
{
$view_name = 'admin-view';
} break;
}
return $this->render($view_name, [
'model' => $this->findModel($id),
'editable' => RequestController::RequestEditable ($id, false),
]);
}
public static function RequestGetCurrent ()
{
$models = Request::find()->andWhere (
['id_request_status' =>
Request::REQUEST_STATUS_OPEN,
'id_creator' => Yii::$app->user->identity->id])->orderby(['id'
=> SORT_ASC])->all();
if (count ($models) == 0)
{
return null;
}
else
{
return $models[0]->id;
}
}
public static function RequestCreate ()
131
{
$model = new Request();
$model->registration_date = date ('Y-m-d H:i:s');
$model->id_creator = Yii::$app->user->identity->id;
$model->id_request_status =
Request::REQUEST_STATUS_OPEN;
$model->save();
return $model->id;
}
public function actionAddService ($id_service)
{
$id = RequestController::RequestGetCurrent ();
if ($id == NULL)
$id = RequestController::RequestCreate ();
$request = RequestController::findModel($id);
$model = RequestService::find()->andWhere (['id_request' =>
$request->id, 'id_service' => $id_service])->one();
if (empty ($model) == true)
{
$model = new RequestService();
$model->id_request = $id;
$model->registration_date = date ('Y-m-d H:i:s');
$model->id_creator = Yii::$app->user->identity->id;
$model->id_service = $id_service;
$model->amount = 1;
$model->cost = $model->idService->cost;
$model->total = $model->cost * $model->amount;
$model->save();
}
else
{
$model->amount += 1;
$model->cost = $model->idService->cost;
$model->total = $model->cost * $model->amount;
$model->save();
}
$request->RecalculateCost();
$this->redirect(['request-service/index', 'id_request' => $request-
>id]);
}
Источник: https://baza.diplomsite.ru/previewfile/2180