From 5fd74366848e454712d761b365950ca4a51079fc Mon Sep 17 00:00:00 2001
From: Gundo Sifhufhi <sifhufhisg@gmail.com>
Date: Thu, 22 Dec 2022 14:37:14 +0200
Subject: [PATCH] Add Unit measures to (uafrica magento) extension in Admin
 Panel. get predefined methods.

---
 .../Customshipping/Model/Source/Dropoff.php   | 12 ++++
 .../Customshipping/Model/Source/Generic.php   | 56 +++++++++++++++++++
 .../Customshipping/Model/Source/Method.php    | 12 ++++
 .../Customshipping/Model/Source/Packaging.php | 12 ++++
 .../Model/Source/Unitofmeasure.php            | 12 ++++
 5 files changed, 104 insertions(+)
 create mode 100644 uafrica/Customshipping/Model/Source/Dropoff.php
 create mode 100644 uafrica/Customshipping/Model/Source/Generic.php
 create mode 100644 uafrica/Customshipping/Model/Source/Method.php
 create mode 100644 uafrica/Customshipping/Model/Source/Packaging.php
 create mode 100644 uafrica/Customshipping/Model/Source/Unitofmeasure.php

diff --git a/uafrica/Customshipping/Model/Source/Dropoff.php b/uafrica/Customshipping/Model/Source/Dropoff.php
new file mode 100644
index 0000000..4606fed
--- /dev/null
+++ b/uafrica/Customshipping/Model/Source/Dropoff.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace uafrica\Customshipping\Model\Source;
+
+class Dropoff extends Generic
+{
+    /**
+     * Carrier code
+     * @var string
+     */
+    protected string $_code = 'dropoff';
+}
diff --git a/uafrica/Customshipping/Model/Source/Generic.php b/uafrica/Customshipping/Model/Source/Generic.php
new file mode 100644
index 0000000..f2bbce3
--- /dev/null
+++ b/uafrica/Customshipping/Model/Source/Generic.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace uafrica\customshipping\Model\Source;
+
+
+use uafrica\Customshipping\Model\Carrier\Customshipping;
+
+/**
+ * uAfrica generic source implementation
+ */
+class Generic implements \Magento\Framework\Data\OptionSourceInterface
+{
+    /**
+     * @var Customshipping
+     */
+    protected Customshipping $_shippingCustomshipping;
+
+    /**
+     * Carrier code
+     * @var string
+     */
+    protected string $_code = '';
+
+    /**
+     * @param Customshipping $shippingCustomshipping
+     */
+    public function __construct(Customshipping $shippingCustomshipping)
+    {
+        $this->_shippingCustomshipping = $shippingCustomshipping;
+    }
+
+    /**
+     * Returns array to be used in multiselect on back-end
+     * @return array
+     */
+    public function toOptionArray()
+    {
+        $configData = $this->_shippingCustomshipping->getCode($this->_code);
+        $arr = [];
+        if ($configData) {
+            $arr = array_map(
+                function ($code, $title) {
+                    return [
+                        'value' => $code,
+                        'label' => $title
+                    ];
+                },
+                array_keys($configData),
+                $configData
+            );
+        }
+
+        return $arr;
+    }
+
+}
diff --git a/uafrica/Customshipping/Model/Source/Method.php b/uafrica/Customshipping/Model/Source/Method.php
new file mode 100644
index 0000000..0c958e5
--- /dev/null
+++ b/uafrica/Customshipping/Model/Source/Method.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace uafrica\Customshipping\Model\Source;
+
+class Method extends Generic
+{
+    /**
+     * Carrier code
+     * @var string
+     */
+    protected string $_code = 'method';
+}
diff --git a/uafrica/Customshipping/Model/Source/Packaging.php b/uafrica/Customshipping/Model/Source/Packaging.php
new file mode 100644
index 0000000..969d080
--- /dev/null
+++ b/uafrica/Customshipping/Model/Source/Packaging.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace uafrica\Customshipping\Model\Source;
+
+class Packaging extends Generic
+{
+    /**
+     * Carrier code
+     * @var string
+     */
+    protected string $_code = 'packaging';
+}
diff --git a/uafrica/Customshipping/Model/Source/Unitofmeasure.php b/uafrica/Customshipping/Model/Source/Unitofmeasure.php
new file mode 100644
index 0000000..2fd77f1
--- /dev/null
+++ b/uafrica/Customshipping/Model/Source/Unitofmeasure.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace uafrica\Customshipping\Model\Source;
+
+class Unitofmeasure extends Generic
+{
+    /**
+     * Carrier code
+     * @var string
+     */
+    protected string $_code = 'unit_of_measure';
+}
-- 
GitLab