Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/ApplicationController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/ApplicationController.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/ApplicationController.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
@@ -0,0 +1,68 @@
+package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers;
+
+import lombok.AllArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationStatusDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api")
+@AllArgsConstructor
+@CrossOrigin(origins = "*")
+public class ApplicationController {
+    private final ApplicationService applicationService;
+
+    @GetMapping("/my-applications/{id}")
+    public ResponseEntity<?> findAllApplicationsByJobSeekerId(@PathVariable Long id) {
+        List<ApplicationDetailsDTO> applicationList = applicationService.findAllByJobSeekerId(id);
+        return new ResponseEntity<>(applicationList, HttpStatus.OK);
+    }
+
+    @GetMapping("/job-advertisements/{advertisement_id}/applications")
+    public ResponseEntity<?> findAllApplicationsByJobAdvertisementId(@PathVariable("advertisement_id") Long advertisementId) {
+        List<ApplicationDetailsDTO> applicationList = applicationService.findAllByJobAdvertisementId(advertisementId);
+        return new ResponseEntity<>(applicationList, HttpStatus.OK);
+    }
+
+    @PostMapping("/applications/{id}/update")
+    public ResponseEntity<?> updateApplicationStatus(@PathVariable("id") Long applicaitonId, @RequestBody ApplicationStatusDTO appStatusDTO) {
+        ApplicationStatusDTO applicationStatusDTO = applicationService.updateApplicationStatus(applicaitonId,appStatusDTO.getStatus());
+        return new ResponseEntity<>(applicationStatusDTO, HttpStatus.OK);
+    }
+
+    @GetMapping("/resume/{fileName:.+}")
+    public ResponseEntity<Resource> downloadResume(@PathVariable("fileName") String fileName) {
+        Resource resource = applicationService.loadResumeAsResource(fileName);
+        return ResponseEntity.ok()
+                .contentType(MediaType.APPLICATION_PDF)
+                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
+                .body(resource);
+    }
+
+    @PostMapping("/job-advertisements/apply")
+    public ResponseEntity<ApplicationDetailsDTO> submitApplication(
+            @RequestParam("jobSeekerId") Long jobSeekerId,
+            @RequestParam("jobAdId") Long jobAdId,
+            @RequestParam("resumeFile") MultipartFile resumeFile,
+            @RequestParam("answerOne") String answerOne,
+            @RequestParam("answerTwo") String answerTwo,
+            @RequestParam("answerThree") String answerThree,
+            @RequestParam("messageToRecruiter") String messageToRecruiter) {
+
+        ApplicationDTO applicationDTO = new ApplicationDTO(jobSeekerId, jobAdId, resumeFile, answerOne, answerTwo, answerThree, messageToRecruiter);
+        ApplicationDetailsDTO applicationDetailsDTO = applicationService.submitApplication(applicationDTO);
+        return new ResponseEntity<>(applicationDetailsDTO, HttpStatus.OK);
+    }
+
+}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobAdvertisementController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobAdvertisementController.java	(revision 19398adb44637736271a04ab58b1f528cc33908f)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobAdvertisementController.java	(revision 28b3398dcd7f9cfd044c2cb7923434b06037fee2)
@@ -3,11 +3,16 @@
 
 import lombok.AllArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdFilterDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdvertisementDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobAdvertisementService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -20,4 +25,5 @@
 
     private final JobAdvertisementService jobAdvertisementService;
+    private final ApplicationService applicationService;
 
     @PostMapping("/add")
@@ -45,4 +51,10 @@
     }
 
+    @PostMapping("/recruiter/{id}/filtered")
+    public ResponseEntity<?> filterJobAdvertisementsByRecruiterId(@PathVariable Long id, @RequestBody JobAdFilterDTO jobAdFilterDTO) {
+        List<JobAdDetailsDTO> jobAdDetailsDTOS = jobAdvertisementService.filterJobAdvertisementsByRecruiterId(id, jobAdFilterDTO);
+        return new ResponseEntity<>(jobAdDetailsDTOS, HttpStatus.OK);
+    }
+
     @GetMapping("/all")
     public ResponseEntity<?> findAllJobAdvertisements() {
@@ -51,8 +63,17 @@
     }
 
-    @GetMapping("/view/{id}")
+    @PostMapping("/filtered")
+    public ResponseEntity<?> filterJobAdvertisements(@RequestBody JobAdFilterDTO jobAdFilterDTO) {
+        List<JobAdDetailsDTO> jobAdDetailsDTOS = jobAdvertisementService.filterJobAdvertisements(jobAdFilterDTO);
+        return new ResponseEntity<>(jobAdDetailsDTOS, HttpStatus.OK);
+    }
+
+    @GetMapping("/{id}")
     public ResponseEntity<?> findJobAdvertisementById(@PathVariable Long id) {
         JobAdDetailsDTO jobAdDetailsDTO = jobAdvertisementService.findJobAdvertisementById(id);
         return new ResponseEntity<>(jobAdDetailsDTO, HttpStatus.OK);
     }
+
+
+
 }
