Pārlūkot izejas kodu

wip - pending card processing

abetusk 4 gadi atpakaļ
vecāks
revīzija
9401383521

+ 32 - 1
main/app/routes.py

@@ -288,6 +288,37 @@ def api_add_card_block():
 ###
 ###
 
+@app.route("/api/v1/Pending")
+def api_pending():
+  res = {}
+  args = request.args
+
+  field_names = ["org_card_order_queue", "userid", "logical_card_id",
+                 "created", "processed", "comment" ]
+
+  vals = {}
+  for f in field_names:
+    if f in args:
+      vals[f] = args[f]
+
+  api_req = { "function":"Pending" }
+
+  if "action" in args:
+
+    if args["action"] == "getall":
+      api_req["action"] = "getall"
+      res = api.Request(api_req)
+
+    elif args["action"] == "process":
+      api_req["action"] = "process"
+      api_req["org_card_order_queue_id"] = val["org_card_order_queue"]
+      res = api.Pending(api_req)
+
+  return jsonify(res)
+
+###
+###
+
 @app.route("/api/v1/RecycleCard")
 def api_recycle_card():
   res = {}
@@ -301,7 +332,7 @@ def api_recycle_card():
     if f in args:
       vals[f] = args[f]
 
-  api_req = { "function":"RecycleCard", }
+  api_req = { "function":"RecycleCard" }
 
   if "logical_card_id" in vals: api_req["logical_card_id"] = vals["logical_card_id"]
   if "mag_token" in vals: api_req["mag_token"] = vals["mag_token"]

+ 83 - 1
main/app/static/js/popufare_admin.js

@@ -28,7 +28,6 @@ function api_req(ctx) {
 
 
 function update_message(ui_id, msg_type, msg_text) {
-
   var ele = document.getElementById(ui_id);
 
   if (msg_type === "error") { ele.style.color = "#f00"; }
@@ -225,6 +224,21 @@ function api_resp(xhr,extra) {
         }
       }
 
+      else if (extra["ui_function"] === "pending.list") {
+
+        if (dat["result"] === "success") {
+
+          console.log(dat);
+
+          update_message("ui.pending.message", "success", "loaded");
+          ui_pending_list(dat);
+        }
+        else {
+          update_message("ui.pending.message", "error", dat.api_comment);
+        }
+
+      }
+
       else if (extra["ui_function"] === "group") {
       }
 
@@ -883,6 +897,61 @@ function reissue_card_fill(card_data) {
 // --------------------------------------
 // --------------------------------------
 
+function _html_pending_card(qid, cardid, magid, rfid, idx) {
+  idx = ((typeof idx === "undefined") ? 0 : idx);
+  magid = ((typeof magid === "undeifned") ? "" : (magid ? magid : ""))
+  rfid = ((typeof rfid === "undeifned") ? "" : (rfid ? rfid : ""))
+  var row, cell;
+
+  row = document.createElement("div");
+  row.classList.add("row");
+  row.classList.add("rowpop");
+  if ((idx % 2) == 0) {
+    row.classList.add("row-shade");
+  }
+
+  cell = document.createElement("div");
+  cell.innerHTML = "<a href='/process_pending_card?org_card_order_queue_id=" + qid+ "'>" + cardid + "</a>";
+  cell.classList.add("col-4");
+  row.appendChild(cell);
+
+  cell = document.createElement("div");
+  cell.innerHTML = "<a href='/process_pending_card?org_card_order_queue_id=" + qid + "'>" + magid + "</a>";
+  cell.classList.add("col-4");
+  row.appendChild(cell);
+
+  cell = document.createElement("div");
+  cell.innerHTML = "<a href='/process_pending_card?org_card_order_queue_id=" + qid + "'>" + rfid + "</a>";
+  cell.classList.add("col-4");
+  row.appendChild(cell);
+
+  return row;
+}
+
+
+function ui_pending_list(data) {
+  console.log("pending", data);
+
+  var div_card_list = document.getElementById("ui.pending.cards");
+  while (div_card_list.firstChild) {
+    div_card_list.removeChild(div_card_list.lastChild);
+  }
+
+  var pending_cards = data.data;
+  for (var idx=0; idx<pending_cards.length; idx++) {
+    var card = pending_cards[idx];
+    row = _html_pending_card(card["org_card_order_queue_id"], card["logical_card_id"], card["mag_token"], card["rfid_token"], idx);
+    div_card_list.appendChild(row);
+  }
+
+}
+
+// --------------------------------------
+// --------------------------------------
+// --------------------------------------
+// --------------------------------------
+// --------------------------------------
+
 function ui_search(search_type) {
   var txt = _get_input_field( "ui.search." + search_type);
 
@@ -1450,6 +1519,19 @@ function admin_api_init() {
     _attach_button( "ui.search.find_admin", (function() { return ui_search("admin"); }) );
   }
 
+  else if (_func === "process_pending_card") {
+    _attach_button( "ui.process.", (function() { return ui_pending("xxx"); }) );
+
+    api_req({
+      "api_function":"Pending",
+      "ui_function":"pending.list",
+      "data": [
+        ["action","getall"]
+      ]
+    });
+
+  }
+
 
 }
 

+ 81 - 63
main/app/templates/process_pending_card.html

@@ -2,7 +2,15 @@
 
 {% block content %}
 
-  <h1 class="mt-4">Process Pending Card</h1>
+  <div class='row'>
+    <div class='col-6'>
+      <h1 class="mt-4">Process Pending Card</h1>
+    </div>
+
+    <div class='col-6'>
+      <h2 class="mt-4" id='ui.pending.message'>..</h2>
+    </div>
+  </div>
 
   <div class='container'>
 
@@ -25,94 +33,94 @@
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> Queue Id </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.queue_id'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> MagStripe </div>
-              <div class='col-8'> <input type='text' class='form-control form-control-sm' placeholder=''> </div>
+              <div class='col-8'> <input type='text' id='ui.pending.mag_token' class='form-control form-control-sm' placeholder=''> </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> RFID </div>
               <div class='col-3'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' class='form-control form-control-sm' placeholder='' id='ui.pending.rf_site'>
               </div>
 
               <div class='col-5'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' class='form-control form-control-sm' placeholder='' id='ui.pending.rf_id'>
               </div>
 
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> User Name </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.username'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> First Name </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.first_name'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> Last Name </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.last_name'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> E-Mail </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.email'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> Phone </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.phone'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> Address </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.address'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> City </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.city'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> State </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.state'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> ZIP </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.zip'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> Shipping Name </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.shipping_name'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> Shipping Address </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.shipping_address'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> Shipping City </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.shipping_city'> ...  </div>
             </div>
 
             <div class='row rowpop'>
               <div class='col-4'> Shipping State </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.shipping_state'> ...  </div>
             </div>
 
             <div class='row rowpop row-shade'>
               <div class='col-4'> Shipping ZIP </div>
-              <div class='col-8'> ...  </div>
+              <div class='col-8' id='ui.pending.shipping_zip'> ...  </div>
             </div>
 
             <div class='row rowpop'>
@@ -120,7 +128,7 @@
               <div class='col-8'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.pending.group'>
                     {% for g in groups %}
                     <option id='{{ g.group_id }}'>{{ g.group_name }}</option>
                     {% endfor %}
@@ -143,30 +151,33 @@
               <div class='col-12'><h3> Passes on Card </h3></div>
             </div>
 
-            <div class='row rowpop row-shade'>
-              <div class='col-2'>Type</div>
-              <div class='col-1'>Rem.</div>
-              <div class='col-3'>Exp.</div>
-              <div class='col-3'>Issued</div>
-              <div class='col-3'>Last Used</div>
-            </div>
+            <div class='col-12'>
 
-            <div class='row rowpop'>
-              <div class='col-2'>NRide</div>
-              <div class='col-1'>2</div>
-              <div class='col-3'> - </div>
-              <div class='col-3'>2020-01-03</div>
-              <div class='col-3'>2020-02-05</div>
-            </div>
+              <div class='row rowpop row-shade'>
+                <div class='col-4'>Type</div>
+                <div class='col-4'>Value</div>
+                <div class='col-4'>Rule</div>
+              </div>
+
+              <div class='row rowpop'>
+                <div class='col-2'>NRide</div>
+                <div class='col-1'>2</div>
+                <div class='col-3'> - </div>
+                <div class='col-3'>2020-01-03</div>
+                <div class='col-3'>2020-02-05</div>
+              </div>
+
+              <div class='row rowpop row-shade'>
+                <div class='col-2'>NDay</div>
+                <div class='col-1'>2</div>
+                <div class='col-3'> - </div>
+                <div class='col-3'>2020-01-03</div>
+                <div class='col-3'> - </div>
+              </div>
 
-            <div class='row rowpop row-shade'>
-              <div class='col-2'>NDay</div>
-              <div class='col-1'>2</div>
-              <div class='col-3'> - </div>
-              <div class='col-3'>2020-01-03</div>
-              <div class='col-3'> - </div>
             </div>
 
+
           </div>
 
         <!-- two column row end -->
@@ -180,33 +191,40 @@
           <div class='col-12'> <h3> Pending Card Requests</h3> </div>
         </div>
 
-        <div class='row rowpop row-shade'>
-          <div class='col-2'> </div>
-          <div class='col-2'> Card Id </div>
-          <div class='col-4'> Mag Stripe</div>
-          <div class='col-2'> RF Site </div>
-          <div class='col-2'> RFID </div>
-        </div>
+        <div class='row'>
+          <div class='col-12' id='ui.pending.cards'>
 
-        <div class='row rowpop'>
-          <div class='col-2'>
-            <button type='button' class='btn btn-secondary btn-sm'>Load</button>
-          </div>
-          <div class='col-2'> 1234 </div>
-          <div class='col-4'> 12300000000000001 </div>
-          <div class='col-2'> 35 </div>
-          <div class='col-2'> 60535 </div>
-        </div>
 
+            <div class='row rowpop row-shade'>
+              <div class='col-2'> </div>
+              <div class='col-2'> Card Id </div>
+              <div class='col-4'> Mag Stripe</div>
+              <div class='col-2'> RF Site </div>
+              <div class='col-2'> RFID </div>
+            </div>
+
+            <div class='row rowpop'>
+              <div class='col-2'>
+                <button type='button' class='btn btn-secondary btn-sm'>Load</button>
+              </div>
+              <div class='col-2'> 1234 </div>
+              <div class='col-4'> 12300000000000001 </div>
+              <div class='col-2'> 35 </div>
+              <div class='col-2'> 60535 </div>
+            </div>
+
+
+            <div class='row rowpop row-shade'>
+              <div class='col-2'>
+                <button type='button' class='btn btn-secondary btn-sm'>Load</button>
+              </div>
+              <div class='col-2'> 1234 </div>
+              <div class='col-4'> 12300000000000001 </div>
+              <div class='col-2'> 35 </div>
+              <div class='col-2'> 60535 </div>
+            </div>
 
-        <div class='row rowpop row-shade'>
-          <div class='col-2'>
-            <button type='button' class='btn btn-secondary btn-sm'>Load</button>
           </div>
-          <div class='col-2'> 1234 </div>
-          <div class='col-4'> 12300000000000001 </div>
-          <div class='col-2'> 35 </div>
-          <div class='col-2'> 60535 </div>
         </div>