| rev | 
   line source | 
| 
bsw@10
 | 
     1 local initiative = Initiative:by_id(param.get("initiative_id"))
 | 
| 
bsw@10
 | 
     2 local member = Member:by_id(param.get("member_id"))
 | 
| 
bsw@10
 | 
     3 
 | 
| 
bsw@10
 | 
     4 if not member then
 | 
| 
bsw@10
 | 
     5   slot.put_into("error", _"Please choose a member")
 | 
| 
bsw@10
 | 
     6   return false
 | 
| 
bsw@10
 | 
     7 end
 | 
| 
bsw@10
 | 
     8 
 | 
| 
bsw@10
 | 
     9 local initiator = Initiator:by_pk(initiative.id, app.session.member.id)
 | 
| 
bsw@10
 | 
    10 if not initiator or initiator.accepted ~= true then
 | 
| 
bsw@10
 | 
    11   error("access denied")
 | 
| 
bsw@10
 | 
    12 end
 | 
| 
bsw@10
 | 
    13 
 | 
| 
bsw@10
 | 
    14 -- TODO important m1 selectors returning result _SET_!
 | 
| 
bsw@10
 | 
    15 local issue = initiative:get_reference_selector("issue"):for_share():single_object_mode():exec()
 | 
| 
bsw@10
 | 
    16 
 | 
| 
bsw@10
 | 
    17 if issue.closed then
 | 
| 
bsw@10
 | 
    18   slot.put_into("error", _"This issue is already closed.")
 | 
| 
bsw@10
 | 
    19   return false
 | 
| 
bsw@10
 | 
    20 elseif issue.half_frozen then 
 | 
| 
bsw@10
 | 
    21   slot.put_into("error", _"This issue is already frozen.")
 | 
| 
bsw@10
 | 
    22   return false
 | 
| 
bsw@10
 | 
    23 end
 | 
| 
bsw@10
 | 
    24 
 | 
| 
bsw@10
 | 
    25 if initiative.revoked then
 | 
| 
bsw@10
 | 
    26   slot.put_into("error", _"This initiative is revoked")
 | 
| 
bsw@10
 | 
    27   return false
 | 
| 
bsw@10
 | 
    28 end
 | 
| 
bsw@10
 | 
    29 
 | 
| 
bsw@10
 | 
    30 local initiator = Initiator:by_pk(initiative.id, member.id)
 | 
| 
bsw@10
 | 
    31 if initiator then
 | 
| 
bsw@10
 | 
    32   if initiator.accepted == true then
 | 
| 
bsw@10
 | 
    33     slot.put_into("error", _"This member is already initiator of this initiative")
 | 
| 
bsw@10
 | 
    34   elseif initiator.accepted == false then
 | 
| 
bsw@10
 | 
    35     slot.put_into("error", _"This member has rejected to become initiator of this initiative")
 | 
| 
bsw@10
 | 
    36   elseif initiator.accepted == nil then
 | 
| 
bsw@10
 | 
    37     slot.put_into("error", _"This member is already invited to become initiator of this initiative")
 | 
| 
bsw@10
 | 
    38   end
 | 
| 
bsw@10
 | 
    39   return false
 | 
| 
bsw@10
 | 
    40 end
 | 
| 
bsw@10
 | 
    41 
 | 
| 
bsw@10
 | 
    42 local initiator = Initiator:new()
 | 
| 
bsw@10
 | 
    43 initiator.initiative_id = initiative.id
 | 
| 
bsw@10
 | 
    44 initiator.member_id = member.id
 | 
| 
bsw@10
 | 
    45 initiator.accepted = nil
 | 
| 
bsw@10
 | 
    46 initiator:save()
 | 
| 
bsw@10
 | 
    47 
 | 
| 
bsw@10
 | 
    48 slot.put_into("notice", _"Member is now invited to be initiator")
 | 
| 
bsw@10
 | 
    49 
 |