Movimentação


(Kt23lc91) #1

gostaria de criar um historico de movimentação para o sistema que estou criando, como faço isso ?


(Marcelo de Andrade) #2

Sua pergunta é muita ampla e não há como te responder de forma rápida e direta. No que você tem dúvida? O que você conseguiu fazer?


(Gugoan) #3

Realmente sua pergunta é bem ampla, mas vamos la, tentarei responder com um exemplo que uso e que talvez de ajude.

Crie uma tabela e model "historic" por exemplo, e em cada action que você deseja armazenar a movimentação, você pode fazer conforme abaixo:


	public function actionCreate()

	{

    	$model = new Solicitation();


    	if ($model->load(Yii::$app->request->post()) && $model->save()) {


        	$modelHistoric = new Historic;

        	$modelHistoric->solicitation_id = $model->id;

        	$modelHistoric->datetime = date('Y-m-d H:i:s');

        	$modelHistoric->user_id = Yii::$app->user->id;

        	$modelHistoric->mod_status_id = $model->status_id;

        	$modelHistoric->observation = '';

        	$modelHistoric->save();

        	return $this->redirect(['view', 'id' => $model->id]);

    	} else {

        	return $this->render('create', [

            	'model' => $model,

        	]);

    	}

	}  

Aí depois é só você recuperar os dados do histórico de acordo com o usuário, id, status, etc… por exemplo.


(Kt23lc91) #4

Cara é o seguinte, comecei a usar o yii a pouco tempo, estou desenvolvendo um sistema de protocolo, onde as pessoas do setor receberão documentos, a movimentação que quero fazer é tipo saber quem encaminhou tal documento, pra onde foi, o que foi feito, a situação dele esses tipos de coisas. Como vc pode me ajudar nisso ? Se quiser posso disponibilizar pra vc o código


(Gugoan) #5

Entendi.

Acho que posso te ajudar, fiz um sistema que possui um módulo de PROTOCOLOS e parece ser bem próximo do que você precisa:

Vou te mostrar o MODEL e CONTROLLER dos protocolos pra vc ter uma idéia de quais informações armazeno, como funciona, etc.

MODEL


	public function attributeLabels()

	{

    	return [

        	'id' => 'Nº Protocolo',

        	'sender_user_id' => 'Usuário Remetente',

        	'sender_department_id' => 'Departamento Remetente',

        	'sender_location_id' => 'Unidade Remetente',

        	'recipient_user_id' => 'Usuário Destinatário',

        	'recipient_department_id' => 'Departamento Destinatário',

        	'recipient_location_id' => 'Unidade Destinatário',

        	'description' => 'Descrição',

        	'status_id' => 'Situação',

        	'created' => 'Criado em',

        	'updated' => 'Alterado em',

        	'file' => 'Anexo',

        	'attachment' => 'Anexo',

        	'recipient_date' => 'Recebido em',

        	'recipient_by' => 'Recebido por',

        	'recipient_text' => 'Observação sobre o Recebimento',

        	'completed_date' => 'Concluído em',

        	'completed_by' => 'Concluído por',

        	'completed_text' => 'Observação sobre a Conclusão',

    	];

	}

CONTROLLER


	public function actionCreate()

	{

    	$model = new registros();


    	$model->sender_user_id      	= Yii::$app->user->id;

    	$model->sender_department_id	= Yii::$app->user->identity->department_id;

    	$model->sender_location_id  	= Yii::$app->user->identity->location_id;

    	$model->sender_department_id	= Yii::$app->user->identity->department_id;


    	$model->status_id   = 0;   

    	$model->created 	= date('Y-m-d H:i:s');   

    	//$model->updated 	= date('Y-m-d');	


    	if ($model->load(Yii::$app->request->post())) {


        	$file = $model->uploadImage();

 

        	if ($model->save()) {


            	if ($file !== false) {


                	if(!is_dir(\Yii::$app->getModule('protocolos')->params['uploadPath'])){

                	mkdir(\Yii::$app->getModule('protocolos')->params['uploadPath'], 0777, true);

                	}

                	$path = $model->getImageFile();

                	$file->saveAs($path);

            	}

            	Yii::$app->session->setFlash("protocolos-success", "Protocolo incluído com sucesso!");

            	return $this->redirect(['index']);

        	} else {

            	// error in saving model

        	}

    	}

    	return $this->render('create', [

        	'model' => $model,

    	]);

	}

Vê se te da uma luz e qualquer dúvida diz ae

Valeu


(Newerton Araujo) #6

Olá ton,

Você já trabalhou com algum framework? Para criar um histórico de movimentação, é simples!

Você só precisa salvar qualquer movimentação no banco de dados.


(Kt23lc91) #7

Teria como me dar um exemplo de como fazer Newerton ? É a primeira vez que estou usando um framework.