From 44e40d96e65bb090dd20550f22d646f57732fdf4 Mon Sep 17 00:00:00 2001
From: Luke Miller <millerluke1364@gmail.com>
Date: Wed, 21 Apr 2021 16:17:41 -0400
Subject: [PATCH] added support for making requests to an org (first step of
 processes)

---
 modpol/orgs/orgs.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/modpol/orgs/orgs.lua b/modpol/orgs/orgs.lua
index fbc6668..52a8dee 100644
--- a/modpol/orgs/orgs.lua
+++ b/modpol/orgs/orgs.lua
@@ -13,12 +13,20 @@ function temp_org()
         name = nil,
         policies = {},
         processes = {},
+        requests = {},
         members = {},
         parent = nil,
         children = {}
     }
 end
 
+modpol.orgs.request_params = {
+    add_org = 1,
+    delete = 0,
+    add_member = 1,
+    remove_member = 1
+}
+
 -- ==================================================
 -- returns org when given its id or name
 function modpol.orgs.get_org(arg)
@@ -249,3 +257,43 @@ function modpol.orgs:list_member()
     end
     return str
 end
+
+-- ===========================
+-- compares to requests to see if they are identical
+function modpol.orgs.comp_req(req1, req2)
+    if req1.type ~= req2.type then
+        return false
+    else
+        for k, v in ipairs(req1.params) do
+            if v ~= req2.params[k] then
+                return false
+            end
+        end
+    end
+    return true
+end
+
+-- ================================
+-- tries to make a request to the org
+function modpol.orgs:make_request(request)
+    -- makes sure the request has the valid number of parameters
+    local num_params = modpol.orgs.request_params[request.type]
+
+    if num_params == nil then return false end
+   
+    for k, v in ipairs(request.params) do
+        num_params = num_params - 1
+    end 
+    if num_params ~= 0 then return false end
+
+    -- checking to see if identical request already exists
+    for k, v in ipairs(self.requests) do
+        if self.comp_req(request, v) == true then
+            return false
+        end
+    end
+
+    table.insert(self.requests, request)
+    return true
+
+end
\ No newline at end of file