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/MemberRepository.php 1 location

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

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 を削除する.