content: package com.nonononoki.alovoa.rest;
  
  import com.nonononoki.alovoa.model.AdminAccountDeleteDto;
  import com.nonononoki.alovoa.model.AlovoaException;
  import com.nonononoki.alovoa.model.MailDto;
  import com.nonononoki.alovoa.model.UserDto;
  import com.nonononoki.alovoa.service.AdminService;
  import jakarta.mail.MessagingException;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.http.MediaType;
  import org.springframework.web.bind.annotation.*;
  import org.springframework.web.multipart.MultipartFile;
  
  import javax.crypto.BadPaddingException;
  import javax.crypto.IllegalBlockSizeException;
  import javax.crypto.NoSuchPaddingException;
  import java.io.IOException;
  import java.io.UnsupportedEncodingException;
  import java.security.InvalidAlgorithmParameterException;
  import java.security.InvalidKeyException;
  import java.security.NoSuchAlgorithmException;
  import java.util.List;
  import java.util.UUID;
  
  @RestController
  @RequestMapping("/admin")
  public class AdminController {
  
      @Autowired
      private AdminService adminService;
  
      @PostMapping("/report/delete/{id}")
      public void deleteReport(@PathVariable long id) throws AlovoaException {
          adminService.deleteReport(id);
      }
  
      @PostMapping("/ban-user/{uuid}")
      public void banUser(@PathVariable UUID uuid)
              throws NumberFormatException, AlovoaException {
          adminService.banUser(uuid);
      }
  
      @PostMapping("/remove-images/{uuid}")
      public void removeImages(@PathVariable UUID uuid)
              throws NumberFormatException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException,
              NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, AlovoaException {
          adminService.removeImages(uuid);
      }
  
      @PostMapping("/remove-description/{uuid}")
      public void removeDescription(@PathVariable UUID uuid)
              throws NumberFormatException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException,
              NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, AlovoaException {
          adminService.removeDescription(uuid);
      }
  
      @PostMapping(value = "/mail/single", consumes = "application/json")
      public void sendMailSingle(@RequestBody MailDto dto) throws AlovoaException, MessagingException, IOException {
          adminService.sendMailSingle(dto);
      }
  
      @PostMapping(value = "/mail/all", consumes = "application/json")
      public void sendMailAll(@RequestBody MailDto dto) throws AlovoaException, MessagingException, IOException {
          adminService.sendMailAll(dto);
      }
  
      @PostMapping(value = "/delete-account", consumes = "application/json")
      public void deleteAccount(@RequestBody AdminAccountDeleteDto dto) throws AlovoaException {
          adminService.deleteAccount(dto);
      }
  
      @PostMapping("/user-exists/{email}")
      public boolean userExists(@PathVariable String email) throws AlovoaException {
          return adminService.userExists(email);
      }
  
      @PostMapping("/donation/add/{email}/{amount}")
      public void addDonation(@PathVariable String email, @PathVariable double amount) throws AlovoaException {
          adminService.addDonation(email, amount);
      }
  
      @PostMapping("/user-verification/verify/{uuid}")
      public void userVerificationVerify(@PathVariable UUID uuid)
              throws AlovoaException, InvalidAlgorithmParameterException,
              IllegalBlockSizeException, NoSuchPaddingException, BadPaddingException, NoSuchAlgorithmException, InvalidKeyException {
          adminService.verifyVerificationPicture(uuid);
      }
  
      @PostMapping("/user-verification/delete/{uuid}")
      public void userVerificationDelete(@PathVariable UUID uuid)
              throws AlovoaException, InvalidAlgorithmParameterException,
              IllegalBlockSizeException, NoSuchPaddingException, BadPaddingException, NoSuchAlgorithmException, InvalidKeyException {
          adminService.deleteVerificationPicture(uuid);
      }
  
      @GetMapping(path ="/profile/view/{uuid}", produces= MediaType.APPLICATION_JSON_VALUE)
      public UserDto viewProfile(@PathVariable UUID uuid) throws AlovoaException, InvalidAlgorithmParameterException,
              IllegalBlockSizeException, NoSuchPaddingException, UnsupportedEncodingException, BadPaddingException,
              NoSuchAlgorithmException, InvalidKeyException {
          return adminService.viewProfile(uuid);
      }
  
      @PostMapping("/delete-invalid-users")
      public AdminService.DeleteInvalidUsersResult deleteInvalidUsers() throws AlovoaException, IOException {
          return adminService.deleteInvalidUsers();
      }
  
  }
  