lfapi

changeset 22:fef5d8aad4aa

Added support for delegating interest
author bsw
date Sun Nov 06 19:46:27 2011 +0100 (2011-11-06)
parents 2fcdef9f0e9c
children c264e566a2d2
files lfapi/main.js
line diff
     1.1 --- a/lfapi/main.js	Sun Nov 06 19:40:56 2011 +0100
     1.2 +++ b/lfapi/main.js	Sun Nov 06 19:46:27 2011 +0100
     1.3 @@ -704,33 +704,42 @@
     1.4    '/interest': function (conn, req, res, params) {
     1.5      requireAccessLevel(conn, req, res, 'pseudonym', function() {
     1.6        var query = new selector.Selector();
     1.7 -      switch (params.snapshot) {
     1.8 -        case 'latest':
     1.9 -          query.from('direct_interest_snapshot', 'interest');
    1.10 -          query.addWhere('interest.event = issue.latest_snapshot_event');
    1.11 -          break;
    1.12 -          
    1.13 -        case 'end_of_admission':
    1.14 -        case 'half_freeze':
    1.15 -        case 'full_freeze':
    1.16 +      if (params.snapshot) {
    1.17 +        if (params.delegating == '1') {
    1.18 +          query.from('delegating_interest_snapshot', 'interest');
    1.19 +          if (params.delegate_member_id) {
    1.20 +            query.addWhere(['interest.delegate_member_ids @> array[?::int]', params.delegate_member_id]);
    1.21 +          }
    1.22 +          if (params.direct_delegate_member_id) {
    1.23 +            query.addWhere(['interest.delegate_member_ids[1] = ?', params.direct_delegate_member_id]);
    1.24 +          }
    1.25 +        } else {
    1.26            query.from('direct_interest_snapshot', 'interest');
    1.27 -          query.addWhere(['interest.event = ?', params.snapshot]);
    1.28 -          break;
    1.29 -          
    1.30 -        case undefined:
    1.31 -          if (! req.current_member_id) {
    1.32 -            respond('json', conn, req, res, 'unprocessable', null, 'No snapshot type given and not beeing member');
    1.33 +        }
    1.34 +        switch (params.snapshot) {
    1.35 +          case 'latest':
    1.36 +            query.addWhere('interest.event = issue.latest_snapshot_event');
    1.37 +            break;
    1.38 +            
    1.39 +          case 'end_of_admission':
    1.40 +          case 'half_freeze':
    1.41 +          case 'full_freeze':
    1.42 +            query.addWhere(['interest.event = ?', params.snapshot]);
    1.43 +            break;
    1.44 +            
    1.45 +          default:
    1.46 +            respond('json', conn, req, res, 'unprocessable', null, 'Invalid snapshot type');
    1.47              return;
    1.48 -          };
    1.49 -          query.from('interest');
    1.50 -          query.addWhere(['interest.member_id = ?', req.current_member_id]);
    1.51 -          break;
    1.52 -          
    1.53 -        default:
    1.54 -          respond('json', conn, req, res, 'unprocessable', null, 'Invalid snapshot type');
    1.55 +
    1.56 +        };
    1.57 +      } else {
    1.58 +        if (! req.current_member_id) {
    1.59 +          respond('json', conn, req, res, 'unprocessable', null, 'No snapshot type given and not beeing member');
    1.60            return;
    1.61 -
    1.62 -      };
    1.63 +        };
    1.64 +        query.from('interest');
    1.65 +        query.addWhere(['interest.member_id = ?', req.current_member_id]);
    1.66 +      }
    1.67        query.addField('interest.*');
    1.68        query.join('member', null, 'member.id = interest.member_id');
    1.69        query.join('issue', null, 'interest.issue_id = issue.id');

Impressum / About Us