From 686560cd256d1c136611e366318689c4b0661c74 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Sun, 15 Dec 2019 23:06:32 +0100 Subject: [PATCH 01/15] History view (?) --- bugtracker/src/main/resources/templates/historys.html | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 bugtracker/src/main/resources/templates/historys.html diff --git a/bugtracker/src/main/resources/templates/historys.html b/bugtracker/src/main/resources/templates/historys.html new file mode 100644 index 0000000..566549b --- /dev/null +++ b/bugtracker/src/main/resources/templates/historys.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file From 34b3242c7713bbd5ebc6e5f29577040bec4c9647 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Sun, 15 Dec 2019 23:07:19 +0100 Subject: [PATCH 02/15] Comment backend stuff --- .../main/java/bugtracker/SecurityConfig.java | 1 + .../bugtracker/comment/CommentController.java | 39 ++++++++++++ .../bugtracker/comment/CommentEntity.java | 61 +++++++++++++++++++ .../bugtracker/comment/CommentRepository.java | 9 +++ .../bugtracker/comment/CommentService.java | 21 +++++++ 5 files changed, 131 insertions(+) create mode 100644 bugtracker/src/main/java/bugtracker/comment/CommentController.java create mode 100644 bugtracker/src/main/java/bugtracker/comment/CommentEntity.java create mode 100644 bugtracker/src/main/java/bugtracker/comment/CommentRepository.java create mode 100644 bugtracker/src/main/java/bugtracker/comment/CommentService.java diff --git a/bugtracker/src/main/java/bugtracker/SecurityConfig.java b/bugtracker/src/main/java/bugtracker/SecurityConfig.java index 14e29e0..59ba6fa 100644 --- a/bugtracker/src/main/java/bugtracker/SecurityConfig.java +++ b/bugtracker/src/main/java/bugtracker/SecurityConfig.java @@ -42,6 +42,7 @@ protected void configure(HttpSecurity httpSecurity) throws Exception { .antMatchers("/api/user/current/**").permitAll() .antMatchers("/api/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN') or hasRole('ROLE_DEVELOPER') or hasRole('ROLE_APPROVER')") .antMatchers("/ticket/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN') or hasRole('ROLE_DEVELOPER') or hasRole('ROLE_APPROVER')") + .antMatchers("/comment/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN') or hasRole('ROLE_DEVELOPER') or hasRole('ROLE_APPROVER')") .and() .csrf().disable() .formLogin() diff --git a/bugtracker/src/main/java/bugtracker/comment/CommentController.java b/bugtracker/src/main/java/bugtracker/comment/CommentController.java new file mode 100644 index 0000000..fe438bb --- /dev/null +++ b/bugtracker/src/main/java/bugtracker/comment/CommentController.java @@ -0,0 +1,39 @@ +package bugtracker.comment; + +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.inject.Inject; +import java.util.List; + +@RestController +@RequestMapping("/api/comment") +public class CommentController { + + @Inject + CommentService commentService; + + @RequestMapping( + value = "/create", + method = RequestMethod.POST, + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + @ResponseBody() + public ResponseEntity addNewComment(@RequestBody CommentEntity commentEntity) { + try { + commentService.createComment(commentEntity); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/all/{ticketId}") + public ResponseEntity> getAllByTicketID(@PathVariable Long ticketId) { + return new ResponseEntity<>(commentService.getAllByTicketId(ticketId), HttpStatus.OK); + } +} diff --git a/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java b/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java new file mode 100644 index 0000000..70e1de4 --- /dev/null +++ b/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java @@ -0,0 +1,61 @@ +package bugtracker.comment; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDateTime; + +@Entity +@Table(name = "COMMENT") +public class CommentEntity { + @Id + @GeneratedValue + private long id; + + private long ticketId; + private long userId; + + private String commentText; + private LocalDateTime commentTime; + + public long getId() { + return id; + } + + public long getTicketId() { + return ticketId; + } + + public long getUserId() { + return userId; + } + + public String getCommentText() { + return commentText; + } + + public LocalDateTime getCommentTime() { + return commentTime; + } + + public void setId(long id) { + this.id = id; + } + + public void setTicketId(long ticketId) { + this.ticketId = ticketId; + } + + public void setUserId(long userId) { + this.userId = userId; + } + + public void setCommentText(String commentText) { + this.commentText = commentText; + } + + public void setCommentTime(LocalDateTime commentTime) { + this.commentTime = commentTime; + } +} diff --git a/bugtracker/src/main/java/bugtracker/comment/CommentRepository.java b/bugtracker/src/main/java/bugtracker/comment/CommentRepository.java new file mode 100644 index 0000000..46f8dc9 --- /dev/null +++ b/bugtracker/src/main/java/bugtracker/comment/CommentRepository.java @@ -0,0 +1,9 @@ +package bugtracker.comment; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface CommentRepository extends JpaRepository { + List findAllByTicketId(Long ticketId); +} diff --git a/bugtracker/src/main/java/bugtracker/comment/CommentService.java b/bugtracker/src/main/java/bugtracker/comment/CommentService.java new file mode 100644 index 0000000..285e59e --- /dev/null +++ b/bugtracker/src/main/java/bugtracker/comment/CommentService.java @@ -0,0 +1,21 @@ +package bugtracker.comment; + +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import java.util.List; + +@Service +public class CommentService { + + @Inject + CommentRepository commentRepository; + + public CommentEntity createComment(CommentEntity commentEntity) { + return commentRepository.save(commentEntity); + } + + public List getAllByTicketId(Long ticketId) { + return commentRepository.findAllByTicketId(ticketId); + } +} From 42dd1ecabcd948cb032734339033bf0e06c3bc77 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Sun, 15 Dec 2019 23:51:37 +0100 Subject: [PATCH 03/15] Table name change comment -> komment --- bugtracker/src/main/java/bugtracker/comment/CommentEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java b/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java index 70e1de4..58ae7c2 100644 --- a/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java +++ b/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; @Entity -@Table(name = "COMMENT") +@Table(name = "KOMMENT") public class CommentEntity { @Id @GeneratedValue From aaddc85524645941caa3f82fdacd71c5cd33f0ed Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 00:10:14 +0100 Subject: [PATCH 04/15] Fixed main page title --- bugtracker/src/main/resources/templates/main.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bugtracker/src/main/resources/templates/main.html b/bugtracker/src/main/resources/templates/main.html index 883d159..b784891 100644 --- a/bugtracker/src/main/resources/templates/main.html +++ b/bugtracker/src/main/resources/templates/main.html @@ -2,7 +2,7 @@ - Hello World! + BugTracker From 71daa46f2745935a0e860ade7ea264128ee44201 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 06:28:55 +0100 Subject: [PATCH 05/15] Added userName to CommentEntity --- .../src/main/java/bugtracker/comment/CommentEntity.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java b/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java index 58ae7c2..8c96f67 100644 --- a/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java +++ b/bugtracker/src/main/java/bugtracker/comment/CommentEntity.java @@ -17,6 +17,7 @@ public class CommentEntity { private long userId; private String commentText; + private String userName; private LocalDateTime commentTime; public long getId() { @@ -43,6 +44,14 @@ public void setId(long id) { this.id = id; } + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + public void setTicketId(long ticketId) { this.ticketId = ticketId; } From aad56f4d7fc0b0ab7519788a9838bbe41ce2c037 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 06:31:29 +0100 Subject: [PATCH 06/15] Info on current user --- .../src/main/java/bugtracker/user/BTUserDetails.java | 4 ++++ .../main/java/bugtracker/user/UserController.java | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java b/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java index 7f686cf..391d5bd 100644 --- a/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java +++ b/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java @@ -67,4 +67,8 @@ public boolean isCredentialsNonExpired() { public boolean isEnabled() { return true; } + + public Long getId() { + return user.getId(); + } } diff --git a/bugtracker/src/main/java/bugtracker/user/UserController.java b/bugtracker/src/main/java/bugtracker/user/UserController.java index 057ed1b..9c6fb13 100644 --- a/bugtracker/src/main/java/bugtracker/user/UserController.java +++ b/bugtracker/src/main/java/bugtracker/user/UserController.java @@ -101,8 +101,18 @@ public ResponseEntity> getAllSimpleUser(){ return new ResponseEntity<>(userService.getUsersByType(2), HttpStatus.OK); } + @GetMapping("/current/") + public ResponseEntity getCurrentUser(Authentication authentication) { + if (authentication != null) { + BTUserDetails principal = (BTUserDetails) authentication.getPrincipal(); + return new ResponseEntity<>(userService.getUserById(principal.getId()), HttpStatus.OK); + } else { + return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED); + } + } + @GetMapping("/current/roles") - public ResponseEntity> getCurrentUser(Authentication authentication){ + public ResponseEntity> getCurrentUserRoles(Authentication authentication){ if (authentication != null) { BTUserDetails principal = (BTUserDetails) authentication.getPrincipal(); return new ResponseEntity<>(principal.getAuthorities().stream().map(t -> ((GrantedAuthority) t).getAuthority()).collect(toList()), HttpStatus.OK); From 1a294efe1fc911e24142ce2fa5c3b6e217b871b6 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 06:57:43 +0100 Subject: [PATCH 07/15] Implemented comment function --- .../src/main/resources/static/css/style.css | 20 ++- .../src/main/resources/static/js/tickets.js | 151 +++++++++++++++++- 2 files changed, 164 insertions(+), 7 deletions(-) diff --git a/bugtracker/src/main/resources/static/css/style.css b/bugtracker/src/main/resources/static/css/style.css index 2d94625..e3c5324 100644 --- a/bugtracker/src/main/resources/static/css/style.css +++ b/bugtracker/src/main/resources/static/css/style.css @@ -1,6 +1,23 @@ /* Based on ext-6.2.0-gpl/ext-6.2.0/build/examples/classic/responsive-app/resources/ResponsiveApp-all.css * © 2019 Sencha Inc. (under the terms of the GPLv3 license) */ +.x-dataview-item { + border : 1px solid #dadada; + border-radius : 2px; + padding : 2px; + margin : 2px; +} + +.comments .created{ + font-style:italic +} +.comments .user{ + font-weight:bold +} +.comments .content{ + margin-bottom:10px +} + .deleted-user .x-grid-cell { background-color: #ffe2e2; color: #900; @@ -729,7 +746,8 @@ td.x-frame-br { } .x-splitter { - font-size: 1px + font-size: 1px; + background-color: #3892D4 } .x-splitter-horizontal { diff --git a/bugtracker/src/main/resources/static/js/tickets.js b/bugtracker/src/main/resources/static/js/tickets.js index e98522f..8ab37bb 100644 --- a/bugtracker/src/main/resources/static/js/tickets.js +++ b/bugtracker/src/main/resources/static/js/tickets.js @@ -1,3 +1,16 @@ +let fetchUser = function(userId) { + Ext.Ajax.request({ + url: '/api/user/'+userId, + method: 'GET', + success: function (form, action) { + return JSON.parse(form.responseText) + }, + failure: function (form, action) { + alert(form.responseText); + } + }); +}; + let ticketdetails = function() { var ticket = {}; @@ -32,6 +45,10 @@ let ticketdetails = function() { fields: ['id', 'name'] }); + var commentStore = Ext.create('Ext.data.Store', { + fields: ['commentText', 'commentTime', 'commentUser'] + }); + var priorityStore = Ext.create('Ext.data.Store', { fields: ['priority'], data : [ @@ -177,14 +194,11 @@ let ticketdetails = function() { handler: logTime }); - var ticketdetailswindow = Ext.create('Ext.Window', { - width: 1000, - height: 500, - padding: 15, - modal: true, + var ticketdetailspanel = Ext.create('Ext.panel.Panel',{ + width: 400, layout: { type: 'vbox', - padding: 5 + // padding: 5 }, items: [ name, @@ -199,6 +213,131 @@ let ticketdetails = function() { updateButton, logTimeButton ] + }); + + Ext.Ajax.request({ + url: '/api/comment/all/'+localStorage.getItem("ticketId"), + method: 'GET', + async: false, + success: function (form, action) { + let comments = JSON.parse(form.responseText); + for(let i=0; i{commentTime:date("Y-m-d H:i")} - {commentUser}', + '
{commentText}
' + ] + }); + + let createComment = function(user, comment) { + Ext.Ajax.request({ + url: '/api/comment/create', + method: 'POST', + jsonData: { + ticketId: localStorage.getItem("ticketId"), + userId: user.id, + commentText: comment.commentText, + commentTime: comment.commentTime, + userName: user.name + }, + success: function(form, action) {}, + failure: function (form, action) { + alert("Cannot save comment") + } + }); + } + + var commentButton = Ext.create('Ext.button.Button', { + text: 'Send', + handler: function() { + Ext.Ajax.request({ + url: '/api/user/current/', + method: 'GET', + success: function (form, action) { + let currentuser = JSON.parse(form.responseText); + let newcomment = { + commentText: commentTextInput.getValue(), + commentTime: new Date(), + commentUser: currentuser.name + }; + createComment(currentuser, newcomment); + commentStore.add(newcomment); + commentslist.getScrollable().scrollTo(Infinity, Infinity, true); + commentTextInput.setValue(''); + }, + failure: function (form, action) { + alert("Cannot fetch current user") + } + }); + + } + }); + + var commentspanel = Ext.create('Ext.panel.Panel',{ + width: 580, + layout: { + type: 'vbox', + align: 'stretch', + padding: 10 + }, + items: [ + { + xtype: 'component', + html: '

Comments

' + }, + commentslist, + commentTextInput + ], + buttons: [ + commentButton + ] + }); + + var ticketdetailswindow = Ext.create('Ext.Window', { + width: 1030, + height: 500, + padding: 15, + modal: true, + title: "Ticket details", + layout: { + type: 'hbox', + align: 'stretch' + }, + items: [ + ticketdetailspanel, + { + xtype: 'splitter', + }, + commentspanel + ] }).show(); }; From 97d6f7bc37cea75535db1d8edda5b87b0504b46f Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 07:01:24 +0100 Subject: [PATCH 08/15] Fixed date and input limit --- .../src/main/resources/static/js/tickets.js | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/bugtracker/src/main/resources/static/js/tickets.js b/bugtracker/src/main/resources/static/js/tickets.js index 8ab37bb..a9c755c 100644 --- a/bugtracker/src/main/resources/static/js/tickets.js +++ b/bugtracker/src/main/resources/static/js/tickets.js @@ -226,7 +226,7 @@ let ticketdetails = function() { console.log(d) commentStore.add({ commentText: comments[i].commentText, - commentTime: new Date(d[0], d[1], d[2], d[3], d[4], d[5]), + commentTime: new Date(Date(d[0], d[1], d[2], d[3], d[4], d[5])), commentUser: comments[i].userName }); } @@ -238,7 +238,9 @@ let ticketdetails = function() { var commentTextInput = Ext.create('Ext.form.TextArea', { margin: 10, - docked: 'bottom' + docked: 'bottom', + maxLength: 250, + enforceMaxLength: true }); var commentslist = Ext.create('Ext.DataView', { @@ -278,26 +280,27 @@ let ticketdetails = function() { var commentButton = Ext.create('Ext.button.Button', { text: 'Send', handler: function() { - Ext.Ajax.request({ - url: '/api/user/current/', - method: 'GET', - success: function (form, action) { - let currentuser = JSON.parse(form.responseText); - let newcomment = { - commentText: commentTextInput.getValue(), - commentTime: new Date(), - commentUser: currentuser.name - }; - createComment(currentuser, newcomment); - commentStore.add(newcomment); - commentslist.getScrollable().scrollTo(Infinity, Infinity, true); - commentTextInput.setValue(''); - }, - failure: function (form, action) { - alert("Cannot fetch current user") - } - }); - + if (commentTextInput.getValue()) { + Ext.Ajax.request({ + url: '/api/user/current/', + method: 'GET', + success: function (form, action) { + let currentuser = JSON.parse(form.responseText); + let newcomment = { + commentText: commentTextInput.getValue(), + commentTime: new Date(), + commentUser: currentuser.name + }; + createComment(currentuser, newcomment); + commentStore.add(newcomment); + commentslist.getScrollable().scrollTo(Infinity, Infinity, true); + commentTextInput.setValue(''); + }, + failure: function (form, action) { + alert("Cannot fetch current user") + } + }); + } } }); From 7f9711a6e42da92ec09ec79665b1f8e1dcb919cf Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 14:41:38 +0100 Subject: [PATCH 09/15] Comment message gets sent also on pressing --- .../src/main/resources/static/js/tickets.js | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/bugtracker/src/main/resources/static/js/tickets.js b/bugtracker/src/main/resources/static/js/tickets.js index f1b8e7d..f81e8c4 100644 --- a/bugtracker/src/main/resources/static/js/tickets.js +++ b/bugtracker/src/main/resources/static/js/tickets.js @@ -265,11 +265,44 @@ let ticketdetails = function() { } }); + let sendComment = function() { + if (commentTextInput.getValue()) { + Ext.Ajax.request({ + url: '/api/user/current/', + method: 'GET', + success: function (form, action) { + let currentuser = JSON.parse(form.responseText); + let newcomment = { + commentText: commentTextInput.getValue(), + commentTime: new Date(), + commentUser: currentuser.name + }; + createComment(currentuser, newcomment); + commentStore.add(newcomment); + commentslist.getScrollable().scrollTo(Infinity, Infinity, true); + commentTextInput.setValue(''); + }, + failure: function (form, action) { + alert("Cannot fetch current user") + } + }); + } + }; + var commentTextInput = Ext.create('Ext.form.TextArea', { margin: 10, docked: 'bottom', maxLength: 250, - enforceMaxLength: true + enforceMaxLength: true, + enableKeyEvents:true, + listeners: { + keypress: function(field, evt, eOpts) { + if (evt.getKey() == evt.ENTER) { + evt.preventDefault(); + sendComment(); + } + } + } }); var commentslist = Ext.create('Ext.DataView', { @@ -308,29 +341,7 @@ let ticketdetails = function() { var commentButton = Ext.create('Ext.button.Button', { text: 'Send', - handler: function() { - if (commentTextInput.getValue()) { - Ext.Ajax.request({ - url: '/api/user/current/', - method: 'GET', - success: function (form, action) { - let currentuser = JSON.parse(form.responseText); - let newcomment = { - commentText: commentTextInput.getValue(), - commentTime: new Date(), - commentUser: currentuser.name - }; - createComment(currentuser, newcomment); - commentStore.add(newcomment); - commentslist.getScrollable().scrollTo(Infinity, Infinity, true); - commentTextInput.setValue(''); - }, - failure: function (form, action) { - alert("Cannot fetch current user") - } - }); - } - } + handler: sendComment }); var commentspanel = Ext.create('Ext.panel.Panel',{ From ee3a7c7cb9e4bfa6c871fa065a0e5db6d4268917 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 14:53:15 +0100 Subject: [PATCH 10/15] Project details window adjustments --- bugtracker/src/main/resources/static/js/projects.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bugtracker/src/main/resources/static/js/projects.js b/bugtracker/src/main/resources/static/js/projects.js index 40a02ea..e56cea8 100644 --- a/bugtracker/src/main/resources/static/js/projects.js +++ b/bugtracker/src/main/resources/static/js/projects.js @@ -136,8 +136,8 @@ let projectdetails = function() { }; var projectdetailswindow = Ext.create('Ext.Window', { - width: 1000, - height: 500, + width: 560, + height: 380, padding: 15, modal: true, layout: { From d62976e418fe20458c3531caf5439b7cd5791499 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 14:58:56 +0100 Subject: [PATCH 11/15] Sorry, a little comma got lost :P --- bugtracker/src/main/resources/static/js/projects.js | 1 + 1 file changed, 1 insertion(+) diff --git a/bugtracker/src/main/resources/static/js/projects.js b/bugtracker/src/main/resources/static/js/projects.js index e56cea8..a03a055 100644 --- a/bugtracker/src/main/resources/static/js/projects.js +++ b/bugtracker/src/main/resources/static/js/projects.js @@ -140,6 +140,7 @@ let projectdetails = function() { height: 380, padding: 15, modal: true, + title: "Project details", layout: { type: 'vbox', padding: 5 From c7da9b79688ba3fe4e6eef252333a0c192a89a66 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 15:17:52 +0100 Subject: [PATCH 12/15] Soft delete bugfix, no login for deleted user --- .../src/main/java/bugtracker/user/BTUserDetails.java | 2 +- .../src/main/java/bugtracker/user/UserService.java | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java b/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java index 391d5bd..94b623d 100644 --- a/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java +++ b/bugtracker/src/main/java/bugtracker/user/BTUserDetails.java @@ -65,7 +65,7 @@ public boolean isCredentialsNonExpired() { @Override public boolean isEnabled() { - return true; + return user.getDeletedTs() == null; } public Long getId() { diff --git a/bugtracker/src/main/java/bugtracker/user/UserService.java b/bugtracker/src/main/java/bugtracker/user/UserService.java index aa97216..448432b 100644 --- a/bugtracker/src/main/java/bugtracker/user/UserService.java +++ b/bugtracker/src/main/java/bugtracker/user/UserService.java @@ -34,13 +34,15 @@ public UserEntity createUser(UserEntity user){ } public UserEntity deleteUser(UserEntity user){ - user.setDeletedTs(LocalDateTime.now()); - return userRepository.save(user); + UserEntity userEntity = userRepository.findUserEntityById(user.getId()); + userEntity.setDeletedTs(LocalDateTime.now()); + return userRepository.save(userEntity); } public UserEntity undeleteUser(UserEntity user){ - user.setDeletedTs(null); - return userRepository.save(user); + UserEntity userEntity = userRepository.findUserEntityById(user.getId()); + userEntity.setDeletedTs(null); + return userRepository.save(userEntity); } public UserEntity modifyUser(UserEntity user){ From 912bd5ee9cb92389fbdc79b4fe1ec51bea962d81 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 16:23:42 +0100 Subject: [PATCH 13/15] Ticket update bugfix --- bugtracker/src/main/resources/static/js/tickets.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bugtracker/src/main/resources/static/js/tickets.js b/bugtracker/src/main/resources/static/js/tickets.js index f81e8c4..b0cf05e 100644 --- a/bugtracker/src/main/resources/static/js/tickets.js +++ b/bugtracker/src/main/resources/static/js/tickets.js @@ -185,7 +185,8 @@ let ticketdetails = function() { priority: ticketPrio.getValue(), type: ticketType.getValue(), reporterId: reporters.getValue(), - ownerId: owners.getValue() + ownerId: owners.getValue(), + statusId: statuses.getValue() } }; From 0fd5966ea51b21cfede92ca1e14653dcf5accfb7 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 16:48:00 +0100 Subject: [PATCH 14/15] Bugfixes (update and create ticket) --- .../src/main/resources/static/js/tickets.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/bugtracker/src/main/resources/static/js/tickets.js b/bugtracker/src/main/resources/static/js/tickets.js index b0cf05e..20ca497 100644 --- a/bugtracker/src/main/resources/static/js/tickets.js +++ b/bugtracker/src/main/resources/static/js/tickets.js @@ -543,6 +543,10 @@ let newticket = function () { fields: ['id', 'name'] }); + var ownerStore = Ext.create('Ext.data.Store', { + fields: ['id', 'name'] + }); + var reporters = Ext.create('Ext.form.ComboBox', { fieldLabel: 'Reporter', store: reporterStore, @@ -551,9 +555,7 @@ let newticket = function () { valueField: 'id' }); - var ownerStore = Ext.create('Ext.data.Store', { - fields: ['id', 'name'] - }); + var owners = Ext.create('Ext.form.ComboBox', { fieldLabel: 'Owner', @@ -571,14 +573,13 @@ let newticket = function () { for (var i = 0; i < allUser.length; i++) { reporterStore.add({id: allUser[i].id, name: allUser[i].name}); } - reporters.setValue(allUser[0]); + reporters.setValue(allUser[0].id); }, failure: function (form, action) { alert(form.responseText); } }); - Ext.Ajax.request({ url: '/api/user/getAllOwner', method: 'GET', @@ -587,13 +588,17 @@ let newticket = function () { for (var i = 0; i < allUser.length; i++) { ownerStore.add({id: allUser[i].id, name: allUser[i].name}); } - owners.setValue(allUser[0]); + owners.setValue(allUser[0].id); }, failure: function (form, action) { alert(form.responseText); } }); + + + + var newticketwindow = Ext.create('Ext.Window', { width: 1000, height: 500, From 3103db7e48fa77dae19dcd1a58b830850bb75157 Mon Sep 17 00:00:00 2001 From: Istvan Szollosi Date: Mon, 16 Dec 2019 16:51:01 +0100 Subject: [PATCH 15/15] Reduced new ticket window size --- bugtracker/src/main/resources/static/js/tickets.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bugtracker/src/main/resources/static/js/tickets.js b/bugtracker/src/main/resources/static/js/tickets.js index 20ca497..afac059 100644 --- a/bugtracker/src/main/resources/static/js/tickets.js +++ b/bugtracker/src/main/resources/static/js/tickets.js @@ -600,8 +600,8 @@ let newticket = function () { var newticketwindow = Ext.create('Ext.Window', { - width: 1000, - height: 500, + width: 500, + height: 370, modal: true, title: "New ticket", layout: {