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
        communitySubscribers.getSubscribers().add(savedSubscriber);
58
        return communitySubscriberDAO.save(communitySubscribers);
59

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

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

    
81
        List<Community> list = new ArrayList<>();
82

    
83
        for(CommunitySubscribers s:communitySubscribers){
84
            if(s.getSubscribers().indexOf(email)!=-1){
85
                list.add(communityDAO.findByPid(s.getPid()));
86
            }
87
        }
88

    
89
        return list;
90
    }
91
}
(2-2/12)