Completed
Push — master ( 56265b...886536 )
by Thomas
09:04
created

DomainTraitGenerator::generateDelete()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 14
rs 9.4285
cc 1
eloc 10
nc 1
nop 2
1
<?php
2
namespace keeko\tools\generator\domain;
3
4
use gossi\codegen\model\PhpTrait;
5
use gossi\codegen\model\PhpMethod;
6
use gossi\codegen\model\PhpParameter;
7
use keeko\framework\utils\NameUtils;
8
use Propel\Generator\Model\Table;
9
10
class DomainTraitGenerator extends ReadOnlyDomainTraitGenerator {
11
	
12
	public function generate(Table $model) {
13
		$trait = parent::generate($model);
14
		
15
		$this->generateCreate($trait, $model);
16
		$this->generateUpdate($trait, $model);
17
		$this->generateDelete($trait, $model);
18
19
		return $trait;
20
	}
21
	
22
	protected function generateCreate(PhpTrait $trait, Table $model) {
23
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\Created');
24
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\NotFound');
25
	
26
		$trait->setMethod(PhpMethod::create('create')
27
			->addParameter(PhpParameter::create('data'))
28
			->setBody($this->twig->render('create.twig', [
29
				'model' => NameUtils::toCamelCase($model->getOriginCommonName()),
30
				'class' => $model->getPhpName()
31
			]))
32
			->setDescription('Creates a new ' . $model->getPhpName() . ' with the provided data')
33
		);
34
	}
35
	
36
	protected function generateUpdate(PhpTrait $trait, Table $model) {
37
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\Updated');
38
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\NotUpdated');
39
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\NotFound');
40
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\NotValid');
41
		
42
		$trait->setMethod(PhpMethod::create('update')
43
			->addParameter(PhpParameter::create('id'))
44
			->addParameter(PhpParameter::create('data'))
45
			->setBody($this->twig->render('update.twig', [
46
				'model' => NameUtils::toCamelCase($model->getOriginCommonName()),
47
				'class' => $model->getPhpName()
48
			]))
49
			->setDescription('Updates a ' . $model->getPhpName() . ' with the given id' .
50
				'and the provided data')
51
		);
52
	}
53
	
54
	protected function generateDelete(PhpTrait $trait, Table $model) {
55
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\Deleted');
56
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\NotDeleted');
57
		$trait->addUseStatement('keeko\\framework\\domain\\payload\\NotFound');
58
		
59
		$trait->setMethod(PhpMethod::create('delete')
60
			->addParameter(PhpParameter::create('id'))
61
			->setBody($this->twig->render('delete.twig', [
62
				'model' => NameUtils::toCamelCase($model->getOriginCommonName()),
63
				'class' => $model->getPhpName()
64
			]))
65
			->setDescription('Deletes a ' . $model->getPhpName() . ' with the given id')
66
		);
67
	}
68
69
}