@@ -146,6 +146,16 @@ public function index() {
146
146
147
147
public function startTimer ($ name ) {
148
148
//$this->endTimer();
149
+ $ projectId = null ;
150
+ if (isset ($ this ->request ->projectId ) && (!empty ($ this ->request ->projectId ))){
151
+ $ projectId = $ this ->request ->projectId ;
152
+ }
153
+
154
+ $ tags = null ;
155
+ if (isset ($ this ->request ->tags ) && (!empty ($ this ->request ->tags ))){
156
+ $ tags = $ this ->request ->tags ;
157
+ }
158
+
149
159
if (strlen ($ name ) > 255 ){
150
160
return new JSONResponse (["Error " => "Name too long " ]);
151
161
}
@@ -154,15 +164,22 @@ public function startTimer($name) {
154
164
$ winterval ->setRunning (1 );
155
165
$ winterval ->setName ($ name );
156
166
$ winterval ->setUserUid ($ this ->userId );
167
+
168
+ // first get tags and project ids from the last work item with the same name
157
169
$ lwinterval = $ this ->workIntervalMapper ->findLatestByName ($ this ->userId , $ name );
158
- if ($ lwinterval != null ){
170
+ if ($ projectId == null && $ lwinterval != null ){
159
171
160
172
$ winterval ->setProjectId ($ lwinterval ->projectId );
161
173
}
174
+
175
+ if ($ projectId != null ){
176
+ $ winterval ->setProjectId ($ projectId );
177
+ }
178
+
162
179
$ this ->workIntervalMapper ->insert ($ winterval );
163
- if ($ lwinterval != null ){
164
- $ tags = $ this ->workIntervalToTagMapper ->findAllForWorkInterval ($ lwinterval ->id );
165
- foreach ($ tags as $ t ){
180
+ if ($ tags == null && $ lwinterval != null ){
181
+ $ lastTags = $ this ->workIntervalToTagMapper ->findAllForWorkInterval ($ lwinterval ->id );
182
+ foreach ($ lastTags as $ t ){
166
183
$ wtot = new WorkIntervalToTag ();
167
184
$ wtot ->setWorkIntervalId ($ winterval ->id );
168
185
$ wtot ->setTagId ($ t ->tagId );
@@ -172,6 +189,20 @@ public function startTimer($name) {
172
189
173
190
}
174
191
192
+ if ($ tags != null ){
193
+ $ tagsArray = explode (", " , $ tags );
194
+ foreach ($ tagsArray as $ t ){
195
+ $ wtot = new WorkIntervalToTag ();
196
+ $ wtot ->setWorkIntervalId ($ winterval ->id );
197
+ $ wtot ->setTagId ($ t );
198
+ $ wtot ->setCreatedAt (time ());
199
+ $ this ->workIntervalToTagMapper ->insert ($ wtot );
200
+ }
201
+
202
+ }
203
+
204
+
205
+
175
206
176
207
//echo json_encode((array)$winterval);
177
208
return new JSONResponse (["WorkIntervals " => $ winterval , "running " => 1 ]);
0 commit comments