@@ -76,6 +76,21 @@ public function findByParticipant(string $participant, $type = Assignment::TYPE_
7676 return $ this ->findEntities ($ qb );
7777 }
7878
79+ public function deleteByParticipantOnBoard (string $ participant , int $ boardId , $ type = Assignment::TYPE_USER ) {
80+ $ qb = $ this ->db ->getQueryBuilder ();
81+ $ cardIdQuery = $ this ->db ->getQueryBuilder ();
82+ $ cardIdQuery ->select ('a.card_id ' )
83+ ->from ('deck_assigned_users ' , 'a ' )
84+ ->innerJoin ('a ' , 'deck_cards ' , 'c ' , 'c.id = a.card_id ' )
85+ ->innerJoin ('c ' , 'deck_stacks ' , 's ' , 's.id = c.stack_id ' )
86+ ->where ($ cardIdQuery ->expr ()->eq ('a.participant ' , $ qb ->createNamedParameter ($ participant , IQueryBuilder::PARAM_STR )))
87+ ->andWhere ($ cardIdQuery ->expr ()->eq ('s.board_id ' , $ qb ->createNamedParameter ($ boardId , IQueryBuilder::PARAM_INT )))
88+ ->andWhere ($ cardIdQuery ->expr ()->eq ('a.type ' , $ qb ->createNamedParameter ($ type , IQueryBuilder::PARAM_INT )));
89+ $ qb ->delete ('deck_assigned_users ' )
90+ ->where ($ qb ->expr ()->in ('card_id ' , $ qb ->createFunction ($ cardIdQuery ->getSQL ()), IQueryBuilder::PARAM_INT_ARRAY ));
91+ $ qb ->executeStatement ();
92+ }
93+
7994
8095 public function isOwner ($ userId , $ id ): bool {
8196 return $ this ->cardMapper ->isOwner ($ userId , $ id );
0 commit comments