Code Duplication    Length = 28-30 lines in 3 locations

src/Eccube/Repository/ClassNameRepository.php 1 location

@@ 132-160 (lines=29) @@
129
     * @param \Eccube\Entity\ClassName $ClassName
130
     * @return boolean 成功した場合 true
131
     */
132
    public function save(\Eccube\Entity\ClassName $ClassName)
133
    {
134
        $em = $this->getEntityManager();
135
        $em->getConnection()->beginTransaction();
136
        try {
137
            if (!$ClassName->getId()) {
138
                $rank = $this->createQueryBuilder('cn')
139
                    ->select('MAX(cn.rank)')
140
                    ->getQuery()
141
                    ->getSingleScalarResult();
142
                if (!$rank) {
143
                    $rank = 0;
144
                }
145
                $ClassName->setRank($rank + 1);
146
                $ClassName->setDelFlg(0);
147
            }
148
149
            $em->persist($ClassName);
150
            $em->flush();
151
152
            $em->getConnection()->commit();
153
        } catch (\Exception $e) {
154
            $em->getConnection()->rollback();
155
156
            return false;
157
        }
158
159
        return true;
160
    }
161
162
    /**
163
     * 規格を削除する.

src/Eccube/Repository/NewsRepository.php 1 location

@@ 115-142 (lines=28) @@
112
     * @param  \Eccube\Entity\News $News
113
     * @return boolean 成功した場合 true
114
     */
115
    public function save(\Eccube\Entity\News $News)
116
    {
117
        $em = $this->getEntityManager();
118
        $em->getConnection()->beginTransaction();
119
        try {
120
            if (!$News->getId()) {
121
                $rank = $this->createQueryBuilder('n')
122
                ->select('MAX(n.rank)')
123
                ->getQuery()
124
                ->getSingleScalarResult();
125
                if (!$rank) {
126
                    $rank = 0;
127
                }
128
                $News
129
                    ->setRank($rank + 1)
130
                    ->setDelFlg(0);
131
            }
132
133
            $em->persist($News);
134
            $em->flush();
135
            $em->getConnection()->commit();
136
        } catch (\Exception $e) {
137
            $em->getConnection()->rollback();
138
            return false;
139
        }
140
141
        return true;
142
    }
143
144
    /**
145
     * News を削除する.

src/Eccube/Repository/MemberRepository.php 1 location

@@ 205-234 (lines=30) @@
202
     * @param  \Eccube\Entity\Member $Member
203
     * @return bool
204
     */
205
    public function save(\Eccube\Entity\Member $Member)
206
    {
207
        $em = $this->getEntityManager();
208
        $em->getConnection()->beginTransaction();
209
        try {
210
            if (!$Member->getId()) {
211
                $rank = $this->createQueryBuilder('m')
212
                    ->select('MAX(m.rank)')
213
                    ->getQuery()
214
                    ->getSingleScalarResult();
215
                if (!$rank) {
216
                    $rank = 0;
217
                }
218
                $Member
219
                    ->setRank($rank + 1)
220
                    ->setDelFlg(Constant::DISABLED);
221
            }
222
223
            $em->persist($Member);
224
            $em->flush();
225
226
            $em->getConnection()->commit();
227
        } catch (\Exception $e) {
228
            $em->getConnection()->rollback();
229
230
            return false;
231
        }
232
233
        return true;
234
    }
235
236
    /**
237
     * @param  \Eccube\Entity\Member $Member