77
88namespace OCA \Deck \Controller ;
99
10+ use OCA \Deck \Db \ChangeHelper ;
1011use OCA \Deck \Model \OptionalNullableValue ;
1112use OCA \Deck \Service \AssignmentService ;
1213use OCA \Deck \Service \CardService ;
@@ -37,6 +38,7 @@ public function __construct(
3738 IRequest $ request ,
3839 private CardService $ cardService ,
3940 private AssignmentService $ assignmentService ,
41+ private ChangeHelper $ changeHelper ,
4042 private $ userId ,
4143 ) {
4244 parent ::__construct ($ appName , $ request );
@@ -50,9 +52,14 @@ public function __construct(
5052 * Get a specific card.
5153 */
5254 public function get () {
53- $ card = $ this ->cardService ->find ($ this ->request ->getParam ('cardId ' ));
55+ $ cardId = (int )$ this ->request ->getParam ('cardId ' );
56+ $ card = $ this ->cardService ->find ($ cardId );
5457 $ response = new DataResponse ($ card , HTTP ::STATUS_OK );
55- $ response ->setETag ($ card ->getEtag ());
58+ $ etag = $ this ->changeHelper ->getEtag (ChangeHelper::TYPE_CARD , $ cardId );
59+ if ($ etag === '' ) {
60+ $ etag = $ card ->getEtag ();
61+ }
62+ $ response ->setETag ($ etag );
5663 return $ response ;
5764 }
5865
@@ -89,9 +96,12 @@ public function create($title, $type = 'plain', $order = 999, $description = '',
8996 #[CORS ]
9097 #[NoCSRFRequired]
9198 public function update (string $ title , $ type , string $ owner , string $ description = '' , int $ order = 0 , $ duedate = null , $ startdate = null , $ archived = null ): DataResponse {
99+ $ cardId = (int )$ this ->request ->getParam ('cardId ' );
100+ $ card = $ this ->cardService ->find ($ cardId );
101+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
92102 $ done = array_key_exists ('done ' , $ this ->request ->getParams ()) ? new OptionalNullableValue ($ this ->request ->getParam ('done ' , null )) : null ;
93103 $ color = array_key_exists ('color ' , $ this ->request ->getParams ()) ? new OptionalNullableValue ($ this ->request ->getParam ('color ' , null )) : null ;
94- $ card = $ this ->cardService ->update ($ this -> request -> getParam ( ' cardId ' ) , $ title , $ this ->request ->getParam ('stackId ' ), $ type , $ owner , $ description , $ order , $ duedate , 0 , $ archived , $ done , $ startdate , $ color );
104+ $ card = $ this ->cardService ->update ($ cardId , $ title , $ this ->request ->getParam ('stackId ' ), $ type , $ owner , $ description , $ order , $ duedate , 0 , $ archived , $ done , $ startdate , $ color );
95105 return new DataResponse ($ card , HTTP ::STATUS_OK );
96106 }
97107
@@ -102,7 +112,10 @@ public function update(string $title, $type, string $owner, string $description
102112 #[CORS ]
103113 #[NoCSRFRequired]
104114 public function delete (): DataResponse {
105- $ card = $ this ->cardService ->delete ($ this ->request ->getParam ('cardId ' ));
115+ $ cardId = (int )$ this ->request ->getParam ('cardId ' );
116+ $ card = $ this ->cardService ->find ($ cardId );
117+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
118+ $ card = $ this ->cardService ->delete ($ cardId );
106119 return new DataResponse ($ card , HTTP ::STATUS_OK );
107120 }
108121
@@ -113,7 +126,10 @@ public function delete(): DataResponse {
113126 #[CORS ]
114127 #[NoCSRFRequired]
115128 public function assignLabel (int $ labelId ): DataResponse {
116- $ card = $ this ->cardService ->assignLabel ($ this ->request ->getParam ('cardId ' ), $ labelId );
129+ $ cardId = (int )$ this ->request ->getParam ('cardId ' );
130+ $ card = $ this ->cardService ->find ($ cardId );
131+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
132+ $ card = $ this ->cardService ->assignLabel ($ cardId , $ labelId );
117133 return new DataResponse ($ card , HTTP ::STATUS_OK );
118134 }
119135
@@ -124,7 +140,10 @@ public function assignLabel(int $labelId): DataResponse {
124140 #[CORS ]
125141 #[NoCSRFRequired]
126142 public function removeLabel (int $ labelId ): DataResponse {
127- $ card = $ this ->cardService ->removeLabel ($ this ->request ->getParam ('cardId ' ), $ labelId );
143+ $ cardId = (int )$ this ->request ->getParam ('cardId ' );
144+ $ card = $ this ->cardService ->find ($ cardId );
145+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
146+ $ card = $ this ->cardService ->removeLabel ($ cardId , $ labelId );
128147 return new DataResponse ($ card , HTTP ::STATUS_OK );
129148 }
130149
@@ -135,6 +154,8 @@ public function removeLabel(int $labelId): DataResponse {
135154 #[CORS ]
136155 #[NoCSRFRequired]
137156 public function assignUser (int $ cardId , string $ userId , int $ type = 0 ): DataResponse {
157+ $ card = $ this ->cardService ->find ($ cardId );
158+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
138159 $ card = $ this ->assignmentService ->assignUser ($ cardId , $ userId , $ type );
139160 return new DataResponse ($ card , HTTP ::STATUS_OK );
140161 }
@@ -146,6 +167,8 @@ public function assignUser(int $cardId, string $userId, int $type = 0): DataResp
146167 #[CORS ]
147168 #[NoCSRFRequired]
148169 public function unassignUser (int $ cardId , string $ userId , int $ type = 0 ): DataResponse {
170+ $ card = $ this ->cardService ->find ($ cardId );
171+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
149172 $ card = $ this ->assignmentService ->unassignUser ($ cardId , $ userId , $ type );
150173 return new DataResponse ($ card , HTTP ::STATUS_OK );
151174 }
@@ -179,6 +202,8 @@ public function removeDependentCard(int $cardId, int $dependentCardId): DataResp
179202 #[CORS ]
180203 #[NoCSRFRequired]
181204 public function archive (int $ cardId ): DataResponse {
205+ $ card = $ this ->cardService ->find ($ cardId );
206+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
182207 $ card = $ this ->cardService ->archive ($ cardId );
183208 return new DataResponse ($ card , HTTP ::STATUS_OK );
184209 }
@@ -190,6 +215,8 @@ public function archive(int $cardId): DataResponse {
190215 #[CORS ]
191216 #[NoCSRFRequired]
192217 public function unarchive (int $ cardId ): DataResponse {
218+ $ card = $ this ->cardService ->find ($ cardId );
219+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
193220 $ card = $ this ->cardService ->unarchive ($ cardId );
194221 return new DataResponse ($ card , HTTP ::STATUS_OK );
195222 }
@@ -201,7 +228,10 @@ public function unarchive(int $cardId): DataResponse {
201228 #[CORS ]
202229 #[NoCSRFRequired]
203230 public function reorder (int $ stackId , int $ order ): DataResponse {
204- $ card = $ this ->cardService ->reorder ((int )$ this ->request ->getParam ('cardId ' ), $ stackId , $ order );
231+ $ cardId = (int )$ this ->request ->getParam ('cardId ' );
232+ $ card = $ this ->cardService ->find ($ cardId );
233+ $ this ->changeHelper ->checkIfMatch (ChangeHelper::TYPE_CARD , $ cardId , $ card ->getETag ());
234+ $ card = $ this ->cardService ->reorder ($ cardId , $ stackId , $ order );
205235 return new DataResponse ($ card , HTTP ::STATUS_OK );
206236 }
207237}
0 commit comments