Project

General

Profile

1
package eu.dnetlib.uoaadmintools.controllers;
2

    
3
import eu.dnetlib.uoaadmintools.dao.CommunityDAO;
4
import eu.dnetlib.uoaadmintools.dao.CommunitySubscribersDAO;
5
import eu.dnetlib.uoaadmintools.dao.SubscriberDAO;
6
import eu.dnetlib.uoaadmintools.entities.Community;
7
import eu.dnetlib.uoaadmintools.entities.CommunitySubscribers;
8
import eu.dnetlib.uoaadmintools.entities.Subscriber;
9
import eu.dnetlib.uoaadmintools.handlers.NotFoundException;
10
import org.apache.log4j.Logger;
11
import org.springframework.beans.factory.annotation.Autowired;
12
import org.springframework.web.bind.annotation.*;
13

    
14
import java.util.ArrayList;
15
import java.util.List;
16

    
17
/**
18
 * Created by argirok on 2/3/2018.
19
 */
20
@RestController
21
@CrossOrigin(origins = "*")
22
public class CommunitySubscribersController {
23
    @Autowired
24
    CommunitySubscribersDAO communitySubscriberDAO;
25
    @Autowired
26
    SubscriberDAO subscriberDAO;
27
    @Autowired
28
    CommunityDAO communityDAO;
29

    
30
    private final Logger log = Logger.getLogger(this.getClass());
31
    @RequestMapping(value = "/community/subscribers", method = RequestMethod.GET)
32
    public List<CommunitySubscribers> getAllCommunitySubscribers(){
33
        return communitySubscriberDAO.findAll();
34
    }
35
    @RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.GET)
36
    public CommunitySubscribers getSubscribersPerCommunity(@PathVariable(value="pid", required = true) String pid) throws NotFoundException {
37
        CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
38
        if(communitySubscribers != null){
39
            return communitySubscribers;
40
        }else{
41
            throw new NotFoundException("Community Subscribers not found");
42

    
43
        }
44

    
45
    }
46
    @RequestMapping(value = "/community/{pid}/subscribers", method = RequestMethod.POST)
47
    public CommunitySubscribers addSubscriberInCommunity(@PathVariable(value="pid", required = true) String pid, @RequestBody Subscriber subscriber) throws NotFoundException {
48
        CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
49
        if(communitySubscribers == null){
50
            throw new NotFoundException("Community Subscribers not found");
51
        }
52

    
53
        Subscriber savedSubscriber = subscriberDAO.findByEmail(subscriber.getEmail());
54
        if(savedSubscriber==null){
55
            savedSubscriber = subscriberDAO.save(subscriber);
56
        }
57
        for(Subscriber sub:communitySubscribers.getSubscribers()){
58
            if(sub.getEmail().equals(subscriber.getEmail())){
59
                //already subscribed
60
                return communitySubscribers;
61
            }
62
        }
63
        //not subscribed yet
64
        communitySubscribers.getSubscribers().add(savedSubscriber);
65
        return communitySubscriberDAO.save(communitySubscribers);
66

    
67
    }
68
    @RequestMapping(value = "/community/{pid}/subscribers/delete", method = RequestMethod.POST)
69
    public CommunitySubscribers deleteSubscriberFromCommunity(@PathVariable(value="pid", required = true) String pid, @RequestBody List<String> emails) throws NotFoundException {
70
        CommunitySubscribers communitySubscribers = communitySubscriberDAO.findByPid(pid);
71
        if(communitySubscribers == null){
72
            throw new NotFoundException("Community Subscribers not found");
73
        }
74
        List<Subscriber> list = new ArrayList<>();
75
        for(Subscriber s:communitySubscribers.getSubscribers()){
76
            if(emails.indexOf(s.getEmail())==-1){
77
             list.add(s);
78
            }
79
        }
80
        communitySubscribers.setSubscribers(list);
81
        return communitySubscriberDAO.save(communitySubscribers);
82
    }
83

    
84
    @RequestMapping(value = "/subscriber/{email}/communities", method = RequestMethod.GET)
85
    public List<Community> getCommunitiesPerSubcriber(@PathVariable(value="email", required = true) String email) {
86
        List<CommunitySubscribers> communitySubscribers = communitySubscriberDAO.findAll();
87

    
88
        List<Community> list = new ArrayList<>();
89

    
90
        for(CommunitySubscribers s:communitySubscribers){
91
            if(s.getSubscribers().indexOf(email)!=-1){
92
                list.add(communityDAO.findByPid(s.getPid()));
93
            }
94
        }
95

    
96
        return list;
97
    }
98
}
(2-2/15)