Skip to content

Commit

Permalink
Merge branch 'dev' into feature/victim_request
Browse files Browse the repository at this point in the history
  • Loading branch information
ilgazer authored Nov 26, 2023
2 parents 3673782 + a3163ae commit 0b1e98d
Show file tree
Hide file tree
Showing 78 changed files with 2,652 additions and 601 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Deploy to AWS

on:
push:
branches:
- dev

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/[email protected]

- name: Decrypt and Extract project_env_prod
env:
RESQ_PASSPHRASE: ${{ secrets.RESQ_PASSPHRASE }}
run: |
cd ./resq/backend/resq/
gpg --quiet --batch --yes --decrypt --passphrase="$RESQ_PASSPHRASE" --output project_env_prod.tar.gz project_env_prod.tar.gz.gpg
tar xzvf project_env_prod.tar.gz
- name: Set up Docker
uses: docker/[email protected]
with:
dockerfile: Dockerfile.remote

- name: Build and Push Docker Image
run: |
ls
cd ./resq/backend/resq/
docker build -t alitpc2525/resq:latest -f Dockerfile.remote .
docker login -u alitpc2525 -p ${{ secrets.DOCKER_PASSWORD }}
docker tag alitpc2525/resq:latest alitpc2525/resq:latest
docker push alitpc2525/resq:latest
- name: SSH into AWS EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.AWS_EC2_HOST }}
username: ec2-user
key: ${{ secrets.AWS_PRIVATE_KEY }}
script: |
sudo service docker start
sudo docker rm -f $(sudo docker ps -q)
sudo docker pull alitpc2525/resq:latest
sudo docker run -d -p 443:8081 -v /home/ec2-user/certbot/keystore.p12:/app/keystore.p12 -v $(pwd)/project_env_prod:/app/project_env_prod alitpc2525/resq:latest
sudo docker ps
5 changes: 5 additions & 0 deletions resq/backend/resq/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@
<version>0.12.3</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>

<build>
Expand Down
Binary file added resq/backend/resq/project_env_prod.tar.gz.gpg
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.groupa1.resq.controller;

import com.groupa1.resq.config.ResqAppProperties;
import com.groupa1.resq.entity.Need;
import com.groupa1.resq.dto.NeedDto;
import com.groupa1.resq.request.CreateNeedRequest;
import com.groupa1.resq.request.UpdateNeedRequest;
import com.groupa1.resq.service.NeedService;
Expand All @@ -28,39 +28,39 @@ public class NeedController {

@GetMapping("/viewNeedsByFilter")
@PreAuthorize("hasRole('FACILITATOR') or hasRole('COORDINATOR')")
public ResponseEntity<List<Need>> viewNeedsByFilter(@RequestParam(required = false) BigDecimal longitude,
@RequestParam(required = false) BigDecimal latitude,
@RequestParam(required = false) String categoryTreeId,
@RequestParam(required = false) Long userId) {
public ResponseEntity<List<NeedDto>> viewNeedsByFilter(@RequestParam(required = false) BigDecimal longitude,
@RequestParam(required = false) BigDecimal latitude,
@RequestParam(required = false) String categoryTreeId,
@RequestParam(required = false) Long userId) {
log.info("Viewing needs for location: {}, {}, category: {}, user: {}", longitude, latitude, categoryTreeId, userId);
return needService.viewNeedsByFilter(longitude, latitude, categoryTreeId, userId);
}

@PostMapping("/createNeed")
@PreAuthorize("hasRole('VICTIM') or hasRole('FACILITATOR')")
public ResponseEntity<String> createNeed(@RequestParam Long userId, @RequestBody CreateNeedRequest createNeedRequest) {
public Long createNeed(@RequestParam Long userId, @RequestBody CreateNeedRequest createNeedRequest) {
log.info("Creating need for user: {}", userId);
return needService.save(userId, createNeedRequest);

}

@GetMapping("/viewAllNeeds")
@PreAuthorize("hasRole('FACILITATOR')")
public ResponseEntity<List<Need>> viewAllNeeds() {
public ResponseEntity<List<NeedDto>> viewAllNeeds() {
log.info("Viewing all needs");
return needService.viewAllNeeds();
}

@GetMapping("/viewNeed")
@PreAuthorize("hasRole('VICTIM') or hasRole('FACILITATOR')")
public ResponseEntity<Need> viewNeed(@RequestParam Long userId, @RequestParam Long needId) {
public ResponseEntity<NeedDto> viewNeed(@RequestParam Long userId, @RequestParam Long needId) {
log.info("Viewing need with id: {}", needId);
return needService.viewNeed(userId, needId);
}

@GetMapping("/viewNeedsByUserId")
@PreAuthorize("hasRole('VICTIM') or hasRole('FACILITATOR')")
public ResponseEntity<List<Need>> viewNeedsByUserId(@RequestParam Long userId) {
public ResponseEntity<List<NeedDto>> viewNeedsByUserId(@RequestParam Long userId) {
log.info("Viewing needs for user: {}", userId);
return needService.viewNeedsByUserId(userId);
}
Expand Down Expand Up @@ -88,9 +88,9 @@ public ResponseEntity<String> cancelNeed(@RequestParam Long needId) {
return needService.cancelNeed(needId);
}

@GetMapping("filterByDistance")
@GetMapping("/filterByDistance")
@PreAuthorize("hasRole('FACILITATOR') or hasRole('COORDINATOR')")
public ResponseEntity<List<Need>> filterByDistance(@RequestParam BigDecimal longitude,
public ResponseEntity<List<NeedDto>> filterByDistance(@RequestParam BigDecimal longitude,
@RequestParam BigDecimal latitude,
@RequestParam BigDecimal distance) {
log.info("Filtering needs by distance");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.groupa1.resq.controller;

import com.groupa1.resq.entity.Need;
import com.groupa1.resq.entity.Notification;
import com.groupa1.resq.service.NotificationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.List;

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@Slf4j
@RequestMapping("/notification")
public class NotificationController {

@Autowired
private NotificationService notificationService;

@GetMapping("/viewAllNotifications")
@PreAuthorize("hasRole('FACILITATOR') or hasRole('VICTIM') or hasRole('RESPONDER')")
public List<Notification> viewAllNotifications(@RequestParam Long userId) {
log.info("Viewing all notifications");
return notificationService.viewAllNotifications(userId);
}

@GetMapping("/viewNotificationById")
@PreAuthorize("hasRole('FACILITATOR') or hasRole('VICTIM') or hasRole('RESPONDER')")
public Notification viewNotificationById(@RequestParam Long notificationId, @RequestParam Long userId) {
log.info("Viewing notification with id: {}, user id: {}", notificationId, userId);
return notificationService.viewNotificationById(userId, notificationId);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.groupa1.resq.controller;

import com.groupa1.resq.config.ResqAppProperties;
import com.groupa1.resq.dto.RequestDto;
import com.groupa1.resq.entity.Need;
import com.groupa1.resq.entity.Request;
import com.groupa1.resq.entity.enums.EStatus;
Expand Down Expand Up @@ -30,27 +31,27 @@ public class RequestController {

@GetMapping("/viewRequestsByFilter")
@PreAuthorize("hasRole('FACILITATOR')")
public List<Request> viewRequestsByFilter(@RequestParam(required = false) BigDecimal longitude,
@RequestParam(required = false) BigDecimal latitude,
@RequestParam(required = false) EStatus status,
@RequestParam(required = false) EUrgency urgency,
@RequestParam(required = false) Long userId) {
public List<RequestDto> viewRequestsByFilter(@RequestParam(required = false) BigDecimal longitude,
@RequestParam(required = false) BigDecimal latitude,
@RequestParam(required = false) EStatus status,
@RequestParam(required = false) EUrgency urgency,
@RequestParam(required = false) Long userId) {
log.info("Viewing requests for location: {}, {}, status: {}, urgency: {}, user: {}", longitude, latitude, status, urgency, userId);
return requestService.viewRequestsByFilter(longitude, latitude, status, urgency, userId);
}


@PostMapping("/createRequest")
@PreAuthorize("hasRole('FACILITATOR')")
public String createRequest(@RequestParam Long userId, @RequestBody CreateReqRequest createReqRequest) {
public Long createRequest(@RequestParam Long userId, @RequestBody CreateReqRequest createReqRequest) {
log.info("Creating request for user: {}", userId);
requestService.save(userId, createReqRequest);
return "Request successfully created.";
return requestService.save(userId, createReqRequest);

}

@GetMapping("/viewAllRequests")
@PreAuthorize("hasRole('FACILITATOR')")
public List<Request> viewAllRequests() {
@PreAuthorize("hasRole('FACILITATOR') or hasRole('COORDINATOR')")
public List<RequestDto> viewAllRequests() {
log.info("Viewing all requests");
return requestService.viewAllRequests();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.groupa1.resq.controller;

import com.groupa1.resq.dto.ResourceDto;
import com.groupa1.resq.request.CreateResourceRequest;
import com.groupa1.resq.service.ResourceService;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -8,6 +9,9 @@
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.List;

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@Slf4j
Expand All @@ -19,8 +23,48 @@ public class ResourceController {

@PreAuthorize("hasRole('RESPONDER')")
@PostMapping("/createResource")
public ResponseEntity<String> createResource(@RequestBody CreateResourceRequest createResourceRequest) {
public ResponseEntity<Object> createResource(@RequestBody CreateResourceRequest createResourceRequest) {
log.info("Creating resource with request: " + createResourceRequest.toString());
return resourceService.createResource(createResourceRequest);
}

@PreAuthorize("hasRole('RESPONDER') or hasRole('COORDINATOR')")
@GetMapping("/viewResource")
public ResponseEntity<ResourceDto> viewResource(@RequestParam Long resourceId) {
log.info("Viewing resource with id: " + resourceId);
return resourceService.viewResource(resourceId);
}


@PreAuthorize("hasRole('RESPONDER')")
@PostMapping("/updateResource")
public ResponseEntity<String> updateResource(@RequestBody CreateResourceRequest createResourceRequest, @RequestParam Long resourceId ) {
log.info("Updating resource with request: " + createResourceRequest.toString());
return resourceService.updateResource(createResourceRequest, resourceId);
}
@PreAuthorize("hasRole('COORDINATOR') or hasRole('RESPONDER')")
@PostMapping("/deleteResource")
public ResponseEntity<String> deleteResource(@RequestParam Long resourceId) {
log.info("Deleting resource with id: " + resourceId);
return resourceService.deleteResource(resourceId);
}


@PreAuthorize("hasRole('COORDINATOR')")
@GetMapping("/filterByDistance")
public ResponseEntity<List<ResourceDto>> filterByDistance(@RequestParam
BigDecimal longitude, @RequestParam BigDecimal latitude, @RequestParam BigDecimal distance) {
log.info("Filtering resources by distance");
return resourceService.filterByDistance(latitude, longitude, distance);
}

@PreAuthorize("hasRole('COORDINATOR')")
@GetMapping("/filterByCategory")
public ResponseEntity<List<ResourceDto>> filterByCategory(@RequestParam(required = false) String categoryTreeId,
@RequestParam(required = false) BigDecimal longitude,
@RequestParam(required = false) BigDecimal latitude,
@RequestParam(required = false) Long userId) {
log.info("Filtering resources by category");
return resourceService.filterResource(latitude, longitude, categoryTreeId, userId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
import com.groupa1.resq.entity.User;
import com.groupa1.resq.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;


@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@Slf4j
Expand Down Expand Up @@ -81,4 +81,5 @@ public String victimAccess() {
public String coordinatorAccess() {
return "Coordinator Board.";
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.groupa1.resq.controller;

import com.groupa1.resq.converter.ProfileConverter;
import com.groupa1.resq.dto.ProfileDto;
import com.groupa1.resq.service.UserProfileService;
import com.groupa1.resq.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.lang.reflect.InvocationTargetException;


@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@Slf4j
@RequestMapping("/profile")
public class UserProfileController {

@Autowired
private UserProfileService userProfileService;

@Autowired
private ProfileConverter profileConverter;

@Autowired
private UserService userService;


@GetMapping("/getProfileInfo")
@PreAuthorize("hasRole('FACILITATOR') or hasRole('COORDINATOR') or hasRole('RESPONDER') or hasRole('VICTIM')")
public ProfileDto getProfileInfo(@RequestParam Long userId) {
log.info("Get profile info requested for userId : {}", userId);
return profileConverter.convertToDto(userService.findById(userId).getUserProfile());
}


@PostMapping("/updateProfile")
@PreAuthorize("hasRole('FACILITATOR') or hasRole('COORDINATOR') or hasRole('RESPONDER') or hasRole('VICTIM')")
public String updateProfile(@RequestParam Long userId, @RequestBody
ProfileDto profileDto) throws InvocationTargetException, IllegalAccessException{
log.info("Updating profile for user: {}", userId);
return userProfileService.updateProfile(userId, profileDto);

}

}
Loading

0 comments on commit 0b1e98d

Please sign in to comment.