diff --git a/src/main/java/org/example/visacasemanagementsystem/comment/mapper/CommentMapper.java b/src/main/java/org/example/visacasemanagementsystem/comment/mapper/CommentMapper.java index 65e4139..4782f90 100644 --- a/src/main/java/org/example/visacasemanagementsystem/comment/mapper/CommentMapper.java +++ b/src/main/java/org/example/visacasemanagementsystem/comment/mapper/CommentMapper.java @@ -21,7 +21,6 @@ public CommentDTO toDTO(Comment comment) { ); } - // Todo: Service layer must set visa and author before persisting public Comment toEntity(CreateCommentDTO dto) { if (dto == null) return null; diff --git a/src/main/java/org/example/visacasemanagementsystem/comment/service/CommentService.java b/src/main/java/org/example/visacasemanagementsystem/comment/service/CommentService.java index 616799a..b75e8dc 100644 --- a/src/main/java/org/example/visacasemanagementsystem/comment/service/CommentService.java +++ b/src/main/java/org/example/visacasemanagementsystem/comment/service/CommentService.java @@ -1,5 +1,7 @@ package org.example.visacasemanagementsystem.comment.service; +import org.example.visacasemanagementsystem.audit.AuditEventType; +import org.example.visacasemanagementsystem.audit.service.AuditService; import org.example.visacasemanagementsystem.comment.dto.CommentDTO; import org.example.visacasemanagementsystem.comment.dto.CreateCommentDTO; import org.example.visacasemanagementsystem.comment.entity.Comment; @@ -22,12 +24,14 @@ public class CommentService { private final CommentMapper commentMapper; private final UserRepository userRepository; private final VisaRepository visaRepository; + private final AuditService auditService; - public CommentService(CommentRepository commentRepository, CommentMapper commentMapper , UserRepository userRepository, VisaRepository visaRepository) { + public CommentService(CommentRepository commentRepository, CommentMapper commentMapper , UserRepository userRepository, VisaRepository visaRepository, AuditService auditService) { this.commentRepository = commentRepository; this.commentMapper = commentMapper; this.userRepository = userRepository; this.visaRepository = visaRepository; + this.auditService = auditService; } @@ -60,6 +64,16 @@ public CommentDTO createComment(CreateCommentDTO dto) { // Save and return Comment savedComment = commentRepository.save(comment); + + // Create log in database + auditService.createAuditLog( + author.getId (), + visa.getId (), + AuditEventType.UPDATED, + "Comment added by " + author.getFullName() + + ); + return commentMapper.toDTO(savedComment); } diff --git a/src/main/java/org/example/visacasemanagementsystem/config/SecurityConfig.java b/src/main/java/org/example/visacasemanagementsystem/config/SecurityConfig.java index 0e18789..0ed23c5 100644 --- a/src/main/java/org/example/visacasemanagementsystem/config/SecurityConfig.java +++ b/src/main/java/org/example/visacasemanagementsystem/config/SecurityConfig.java @@ -14,7 +14,6 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti .authorizeHttpRequests(auth -> auth .anyRequest().permitAll() ) - .csrf(csrf -> csrf.disable()) .headers(headers -> headers.frameOptions(frame -> frame.disable())); return http.build(); } diff --git a/src/main/resources/templates/visa/details.html b/src/main/resources/templates/visa/details.html index 3479dd2..ea250f5 100644 --- a/src/main/resources/templates/visa/details.html +++ b/src/main/resources/templates/visa/details.html @@ -27,8 +27,8 @@ } .back-link:hover { color: #fff; } - header { border-bottom: 1px solid #222; padding-bottom: 20px; margin-bottom: 30px; } - h1 { font-size: 28px; font-weight: 500; margin: 0; color: #fff; } + header { border-bottom: 1px solid #222; padding-bottom: 20px; margin-bottom: 30px;} + h1 { font-size: 38px; font-weight: 500; margin: 0; color: #fff; } .user-info { color: #666; font-size: 14px; margin-top: 5px; } /* Grid för info */ @@ -39,14 +39,14 @@ border-radius: 8px; background: #111; } - .label { font-size: 11px; text-transform: uppercase; color: #666; display: block; margin-bottom: 5px; letter-spacing: 0.5px; } - .value { font-size: 16px; font-weight: 500; color: #ccc; } + .label { font-size: 12px; text-transform: uppercase; color: #666; display: block; margin-bottom: 5px; letter-spacing: 0.5px; } + .value { font-size: 18px; font-weight: 500; color: #ccc; } /* Admin Actions & Buttons */ .admin-actions { background: #111; padding: 20px; - border-radius: 12px; + border-radius: 8px; border: 1px solid #222; margin-bottom: 40px; } @@ -55,9 +55,12 @@ color: #fff; border: 1px solid #333; padding: 10px 20px; - border-radius: 6px; + border-radius: 8px; cursor: pointer; transition: 0.2s; + font-weight: 600; + font-size: 12px; + } .btn-assign:hover, .btn-approve:hover, button:hover { background: #fff; @@ -70,11 +73,18 @@ background: #181818; color: #fff; border: 1px solid #333 !important; + width: 100%; + box-sizing: border-box; + display: block; + border-radius: 8px; + font-size: 12px; } #infoReason:focus { outline: none; border-color: #666 !important; } + .action-group{ display: flex; gap: 10px; } + /* Kommentar-sektion */ - .comments-section { margin-top: 50px; border-top: 1px solid #222; padding-top: 30px; } + .comments-section { border-top: 1px solid #222; padding-top: 10px; font-size: 20px; font-weight: 600; } .comment-card { padding: 15px 0; border-bottom: 1px solid #111; } .comment-meta { font-size: 12px; color: #666; margin-bottom: 5px; } .comment-text { font-size: 14px; color: #ccc; } @@ -86,6 +96,7 @@ padding: 20px; border-radius: 8px; border: 1px solid #222; + } textarea { width: 100%; @@ -93,14 +104,15 @@ color: #fff; border: 1px solid #333; padding: 10px; - border-radius: 4px; + border-radius: 8px; resize: vertical; min-height: 80px; margin-bottom: 10px; box-sizing: border-box; + font-size: 12px; } textarea:focus { outline: none; border-color: #666; } - .btn-submit { background: #fff; color: #000; font-weight: 600; border: none; } + .btn-submit { background: #fff; color: #000; font-weight: 600; border: none; transition: 0.2s ease; } .btn-submit:hover { background: #ccc; } @@ -127,9 +139,10 @@
Comments
-