Ignore:
Timestamp:
09/04/21 12:17:17 (3 years ago)
Author:
KostaFortumanov <kfortumanov@…>
Branches:
master
Children:
0f4f552
Parents:
5306751
Message:

Dodadeno prijavuvanje na objavi

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/it/finki/charitable/controller/ModeratorController.java

    r5306751 rab49338  
    11package it.finki.charitable.controller;
    22
    3 import it.finki.charitable.entities.AppUser;
    4 import it.finki.charitable.entities.DonationPost;
     3import it.finki.charitable.entities.*;
    54import it.finki.charitable.services.DonationPostService;
    65import it.finki.charitable.services.EmailService;
     6import it.finki.charitable.services.ReasonService;
     7import it.finki.charitable.services.ReportPostService;
    78import org.springframework.security.core.context.SecurityContextHolder;
    89import org.springframework.stereotype.Controller;
     
    1314
    1415import java.io.File;
     16import java.util.ArrayList;
    1517import java.util.List;
    1618
     
    2022    private final DonationPostService donationPostService;
    2123    private final EmailService emailService;
     24    private final ReportPostService reportPostService;
     25    private final ReasonService reasonService;
    2226
    23     public ModeratorController(DonationPostService donationPostService, EmailService emailService) {
     27    public ModeratorController(DonationPostService donationPostService, EmailService emailService, ReportPostService reportPostService, ReasonService reasonService) {
    2428        this.donationPostService = donationPostService;
    2529        this.emailService = emailService;
     30        this.reportPostService = reportPostService;
     31        this.reasonService = reasonService;
    2632    }
    2733
     
    4854        model.addAttribute("createdByFirstName", user.getFirstName());
    4955        model.addAttribute("createdByLastName", user.getLastName());
     56        if (post.getApproved()) {
     57            model.addAttribute("approved", true);
     58        }
    5059        return "moderatorPost";
    5160    }
     
    5564        DonationPost post = donationPostService.getById(postid);
    5665        post.setApproved(true);
     66        post.setModerator((Moderator) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
    5767        donationPostService.save(post);
    58         emailService.sendApprovalEmail(post.getUser().getEmail(),"CharitAbleMk: " + post.getTitle() + " has been approved", postid);
     68        emailService.sendApprovalEmail(post.getUser().getEmail(), "CharitAbleMk: " + post.getTitle() + " has been approved", postid);
    5969        return "redirect:/moderator/approval";
    6070    }
     
    6575        DonationPost post = donationPostService.getById(postid);
    6676        emailService.sendNoApprovalEmail(post.getUser().getEmail(), "CharitAbleMk: " + post.getTitle() + " has not been approved", description);
    67         List<String> fileForDeletion = post.getPhotosForDeletion();
     77        deleteDonationPost(post);
     78        return "redirect:/moderator/approval";
     79    }
     80
     81    @RequestMapping("/moderator/myApprovedPosts")
     82    public String myApprovedPosts(Model model) {
     83        Moderator moderator = (Moderator) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
     84        List<DonationPost> postList = donationPostService.findAllByModerator(moderator);
     85        if (postList.size() == 0) {
     86            model.addAttribute("noPosts", true);
     87            return "postApproval";
     88        }
     89        model.addAttribute("postList", postList);
     90        return "postApproval";
     91    }
     92
     93    @RequestMapping("/moderator/report")
     94    public String reportedPosts(Model model) {
     95        List<ReportPost> postList = reportPostService.findAll();
     96        if (postList.size() == 0) {
     97            model.addAttribute("noPosts", true);
     98            return "reportedPosts";
     99        }
     100        model.addAttribute("postList", postList);
     101        return "reportedPosts";
     102    }
     103
     104    @RequestMapping("/moderator/reportPost")
     105    public String report(@RequestParam Long postid, Model model) {
     106        ReportPost post = reportPostService.findById(postid);
     107        model.addAttribute("post", post);
     108        DonationPost donationPost = post.getDonationPost();
     109        AppUser user = donationPost.getUser();
     110        model.addAttribute("createdByFirstName", user.getFirstName());
     111        model.addAttribute("createdByLastName", user.getLastName());
     112        model.addAttribute("report", true);
     113        Moderator moderator = post.getDonationPost().getModerator();
     114        model.addAttribute("moderatorFirstName", moderator.getFirstName());
     115        model.addAttribute("moderatorLastName", moderator.getLastName());
     116
     117        return "reportPost";
     118    }
     119
     120    @RequestMapping("/moderator/dismiss")
     121    public String dismiss(@RequestParam Long postid) {
     122        ReportPost post = reportPostService.findById(postid);
     123        deleteReportPost(post);
     124        return "redirect:/moderator/reportedPosts";
     125    }
     126
     127    @RequestMapping("/moderator/deletePost")
     128    public String deletePost(@RequestParam Long postid,
     129                             @RequestParam String description) {
     130        ReportPost post = reportPostService.findById(postid);
     131        DonationPost donationPost = post.getDonationPost();
     132        emailService.sendDeletionEmail(donationPost.getUser().getEmail(), "CharitAbleMk: " + donationPost.getTitle() + " has been deleted", description);
     133        deleteReportPost(post);
     134        deleteDonationPost(donationPost);
     135        return "redirect:/moderator/approval";
     136    }
     137
     138    public void deleteDonationPost(DonationPost donationPost) {
     139        List<String> fileForDeletion = donationPost.getPhotosForDeletion();
    68140        for (String f : fileForDeletion) {
    69141            File file = new File(f);
    70142            file.delete();
    71143        }
    72         donationPostService.delete(post);
    73         return "redirect:/moderator/approval";
     144        donationPostService.delete(donationPost);
     145    }
     146
     147    public void deleteReportPost(ReportPost reportPost) {
     148        List<Reason> reasons = new ArrayList<>(reportPost.getReasons());
     149        if (reportPost.getReasons().size() > 0) {
     150            reportPost.getReasons().subList(0, reportPost.getReasons().size()).clear();
     151        }
     152        reportPostService.save(reportPost);
     153        for(Reason r: reasons) {
     154            reasonService.delete(r);
     155        }
     156        reportPostService.delete(reportPost);
    74157    }
    75158
Note: See TracChangeset for help on using the changeset viewer.