Failed Conditions
Pull Request — master (#1227)
by NOBU
17:03
created

MasterdataController::index()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 40
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 2 Features 0
Metric Value
c 4
b 2
f 0
dl 0
loc 40
rs 8.439
cc 5
eloc 23
nc 4
nop 2
1
<?php
2
/*
3
 * This file is part of EC-CUBE
4
 *
5
 * Copyright(c) 2000-2015 LOCKON CO.,LTD. All Rights Reserved.
6
 *
7
 * http://www.lockon.co.jp/
8
 *
9
 * This program is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation; either version 2
12
 * of the License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
 */
23
24
25
namespace Eccube\Controller\Admin\Setting\System;
26
27
use Eccube\Application;
28
use Eccube\Controller\AbstractController;
29
use Eccube\Form\Type\Admin\MasterdataDataType;
30
use Symfony\Component\HttpFoundation\Request;
31
use Symfony\Component\Form\FormEvent;
32
use Symfony\Component\Form\FormEvents;
33
34
class MasterdataController extends AbstractController
0 ignored issues
show
introduced by
Missing class doc comment
Loading history...
35
{
36
    public function index(Application $app, Request $request)
0 ignored issues
show
introduced by
Missing function doc comment
Loading history...
37
    {
38
        $data = array();
39
40
        $builder = $app['form.factory']->createBuilder('admin_system_masterdata');
41
        $form = $builder->getForm();
42
43
        if ('POST' === $request->getMethod()) {
44
            $form->handleRequest($request);
45
            if ($form->isValid()) {
46
                $data = $form->getData();
47
48
                if ($data['masterdata']) {
49
                    $masterdata = $app['orm.em']->getRepository($data['masterdata'])->findBy(array(), array('rank' => 'ASC'));
50
51
                    $line = 0;
52
                    foreach ($masterdata as $value) {
53
                        $data['data'][$line]['id'] = $value['id'];
54
                        $data['data'][$line]['name'] = $value['name'];
55
                        $line++;
56
                    }
57
58
                    // 新規登録様に空のデータを追加する。
59
                    $data['data'][$line]['id'] = '';
60
                    $data['data'][$line]['name'] = '';
61
62
                    // hidden値
63
                    $data['masterdata_name'] = $data['masterdata'];
64
                }
65
            }
66
        }
67
68
        $builder2 = $app['form.factory']->createBuilder('admin_system_masterdata_edit', $data);
69
        $form2 = $builder2->getForm();
70
71
        return $app->render('Setting/System/masterdata.twig', array(
72
            'form' => $form->createView(),
73
            'form2' => $form2->createView(),
74
        ));
75
    }
76
77
    public function edit(Application $app, Request $request)
0 ignored issues
show
introduced by
Missing function doc comment
Loading history...
78
    {
79
        $builder2 = $app['form.factory']->createBuilder('admin_system_masterdata_edit');
80
        $form2 = $builder2->getForm();
81
82
        if ('POST' === $request->getMethod()) {
83
            $form2->handleRequest($request);
84
85
            if ($form2->isValid()) {
86
                $data = $form2->getData();
87
88
                $entity = new $data['masterdata_name']();
0 ignored issues
show
introduced by
Use parentheses when instantiating classes
Loading history...
89
                $rank = 0;
90
                foreach ($data['data'] as $key => $value) {
91
                    if ($value['id'] !== null && $value['name'] !== null) {
92
                        $entity->setId($value['id']);
93
                        $entity->setName($value['name']);
94
                        $entity->setRank($rank);
95
                        $app['orm.em']->merge($entity);
96
                        $rank++;
97
                    } else {
98
                        // remove
99
                        $delKey = $app['orm.em']->getRepository($data['masterdata_name'])->findOneBy(array('rank' => $key));
100
                        if ($delKey) {
101
                            $app['orm.em']->remove($delKey);
102
                        }
103
                    }
104
                }
105
106
                try {
107
                    $app['orm.em']->flush();
108
                    $app->addSuccess('admin.register.complete', 'admin');
109
                } catch (\Exception $e) {
110
                    // 外部キー制約などで削除できない場合に例外エラーになる
111
                    $app->addError('admin.register.failed', 'admin');
112
                }
113
114
                return $app->redirect($app->url('admin_setting_system_masterdata'));
115
            }
116
        }
117
118
        $builder = $app['form.factory']->createBuilder('admin_system_masterdata');
119
        $form = $builder->getForm();
120
121
        return $app->render('Setting/System/masterdata.twig', array(
122
            'form' => $form->createView(),
123
            'form2' => $form2->createView(),
124
        ));
125
    }
126
}
127