Skip to content

Commit

Permalink
#7 getting campaigns (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
MilePrastalo authored Sep 12, 2021
1 parent 83985a8 commit 5378231
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@ public ResponseEntity<List<CampaignDTO>> getAgentsCampaign() {
return new ResponseEntity<>(dto, HttpStatus.OK);
}

@GetMapping(value = "get")
public ResponseEntity<List<CampaignDTO>> getCampaignsForUser() {
List<Campaign> campaigns = campaignService.getCampaignsForUser();
List<CampaignDTO> dto = campaigns.stream().map(CampaignConverter::toDTO).collect(Collectors.toList());
return new ResponseEntity<>(dto, HttpStatus.OK);
}

@DeleteMapping(value = "delete/{id}")
public ResponseEntity<Boolean> deleteCampaign(@PathVariable("id") Long id) {
Boolean status = campaignService.deleteCampaign(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

public interface CampaignRepository extends JpaRepository<Campaign, Long> {

@Query("select c from Campaign c join c.criteria crit where (crit.gender = ?1 or crit.gender = ?2) and crit.minAge >= ?3 and crit.maxAge <= ?3")
@Query("select c from Campaign c join c.criteria crit where (crit.gender = ?1 or crit.gender = ?2) and crit.minAge <= ?3 and crit.maxAge >= ?3")
List<Campaign> findAllCriteria(String gender, String allGender, int age);
List<Campaign> findByAgentUsername(String agentUsername);
}
25 changes: 24 additions & 1 deletion src/main/java/com/nistagram/agent/service/CampaignService.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.web.bind.annotation.*;

import java.util.*;
import java.util.stream.Collectors;

@Service
public class CampaignService {
Expand All @@ -35,7 +36,7 @@ public Campaign createCampaign(@RequestBody CreateCampaignDTO createCampaignDTO)

CreatePostDTO createPostDTO = new CreatePostDTO(createCampaignDTO.getImageUrl(), new ArrayList<>());
ResponseEntity<PostDTO> postDTO = postClient.createPost(createPostDTO, userService.getTokenString());
if(postDTO.getStatusCode().equals(HttpStatus.OK)) {
if (postDTO.getStatusCode().equals(HttpStatus.OK)) {
PostDTO post = postDTO.getBody();
String username = userService.getUsername();
Criteria criteria = criteriaRepository.save(createCampaignDTO.getCriteria());
Expand All @@ -52,6 +53,17 @@ public Campaign createCampaign(@RequestBody CreateCampaignDTO createCampaignDTO)
throw new Exception("Error saving campaign");
}

public List<Campaign> getCampaignsForUser() {
String username = userService.getUsername();
UserInfoDTO userInfoDTO = userService.getUserInfo(username);
int years = getDiffYears(userInfoDTO.getDateOfBirth(), new Date());
String interval = getCurrentInterval();
List<Campaign> campaigns = campaignRepository.findAllCriteria(userInfoDTO.getGender(), "Both", years);
campaigns = campaigns.stream().filter(campaign -> campaign.getIntervals().contains(interval)).collect(Collectors.toList());
campaigns = campaigns.stream().limit(3).collect(Collectors.toList());
return campaigns;
}

public List<Campaign> getAgentsCampaign() {
String username = userService.getUsername();
List<Campaign> campaigns = campaignRepository.findByAgentUsername(username);
Expand All @@ -75,4 +87,15 @@ private int getDiffYears(Date first, Date last) {
}
return diff;
}

private String getCurrentInterval() {
Date date = new Date();
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour < 10) {
return "INTERVAL0" + hour;
}
return "INTERVAL" + hour;
}
}

0 comments on commit 5378231

Please sign in to comment.