BiawakBakar

Base konfig instansi

Dec 9th, 2024
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.97 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Config;
  4.  
  5. use App\Services\ConfigService;
  6. use Jagr\Exceptions\AppException;
  7.  
  8. abstract class InstansiConfig
  9. {
  10.     /**
  11.      * Kode instansi
  12.      *
  13.      * @var int
  14.      */
  15.     public int $kode;
  16.  
  17.     /**
  18.      * Domain instansi
  19.      *
  20.      * @var string
  21.      */
  22.     public string $domain;
  23.  
  24.     /**
  25.      * Kode propinsi dan kota instansi
  26.      * Jika lingkup propinsi maka kotanya null
  27.      * Jika lingkup nasional maka propinsinya juga null
  28.      */
  29.     public int|null $kPropinsi;
  30.     public int|null $kKota;
  31.  
  32.     public string $timezonaSuffix;
  33.     public string $timezonaName;
  34.     public int    $timezonaOffset;
  35.  
  36.     /**
  37.      * Konfigurasi jenjang seleksi yang berisi jenjang asalnya dan tujuannya
  38.      * <jenjang_id> => [
  39.      *     'asal'   => <k_jenjang>,
  40.      *     'tujuan' => [<k_jenjang>,<k_jenjang>],
  41.      * ]
  42.      *
  43.      * @var array<int, array{
  44.      *     asal: int,
  45.      *     tujuan: array<int>,
  46.      * }>
  47.      */
  48.     public array $jenjangs;
  49.  
  50.     /**
  51.      * Daftar jalur dijenjang
  52.      * <jenjang_id> => [
  53.      *     <jalur_id>,
  54.      *     <jalur_id>,
  55.      * ]
  56.      *
  57.      * @var array<int, array<int>>
  58.      */
  59.     public array $jalurs;
  60.  
  61.     /**
  62.      * Daftar label tahap
  63.      * <jenjang_id> => [
  64.      *     <jalur_id> => [
  65.      *         <tahap> => '<label>',
  66.      *         <tahap> => '<label>',
  67.      *     ],
  68.      *     <jalur_id> => [
  69.      *         <tahap> => '<label>',
  70.      *     ],
  71.      *  ]
  72.      *
  73.      * @var array<int, array<int, array<int, string>>>
  74.      */
  75.     public array $labelTahaps;
  76.  
  77.     /**
  78.      * Daftar urutan seleksi
  79.      * [
  80.      *     [<jenjangId>, <jalurId>, <tahap>],
  81.      * ]
  82.      *
  83.      * @var array<int, array{0: int, 1: int, 2: int}>
  84.      */
  85.     public array $urutanSeleksi;
  86.  
  87.     /**
  88.      * Daftar limpahan kuota
  89.      * <jenjang_id_sumber> => [
  90.      *     <jalur_id_sumber> => [
  91.      *         <tahap_sumber> => [
  92.      *             'jalur_id'     => <jalur_id_tujuan>,
  93.      *             'tahap'        => <jalur_id_tujuan>,
  94.      *             'kapasitas_id' => <kapasitas_id_tujuan,
  95.      *             'is_realtime'  => <bool>,
  96.      *             'is_tambah'    => <bool>,
  97.      *             'is_simpan'    => <bool>,
  98.      *         ]
  99.      *     ]
  100.      * ]
  101.      *
  102.      * @var array<int, array<int, array<int, array{
  103.      *     jalur_id: int,
  104.      *     tahap: int,
  105.      *     kapasitas_id: int,
  106.      *     is_realtime: bool,
  107.      *     is_tambah: bool,
  108.      *     is_simpan: bool,
  109.      * }>>>
  110.      */
  111.     public array $limpahanKuota;
  112.  
  113.     /**
  114.      * Mmode update status seleksi di engine
  115.      * null  = ikut konfigurasi default
  116.      * true  = menggunakan update select
  117.      * false = menggunakan loop update
  118.      * mengoverride di default
  119.      */
  120.     public bool|null $batchUpdateStatusSeleksi;
  121.  
  122.     public int $tahun;
  123.  
  124.     /**
  125.      * @var array<int, array{
  126.      *     k_jenjang: int,
  127.      *     jalur_id: int,
  128.      *     tahap: int,
  129.      * }>
  130.      */
  131.     public array $urutanJalur = [];
  132.  
  133.     /**
  134.      * Konfigurasi instansi yang sedang aktif
  135.      *
  136.      * @throws AppException
  137.      */
  138.     public static function current(): InstansiConfig
  139.     {
  140.         if (!app()->resolved(InstansiConfig::class)) {
  141.             throw new AppException('Instansi belum disetup/aktifkan');
  142.         }
  143.  
  144.         return app(InstansiConfig::class);
  145.     }
  146.  
  147.     /**
  148.      * Konfigurasi jalur berdasarkan kode/label jenjang, jalur dan tahap
  149.      *
  150.      * @throws AppException
  151.      */
  152.     public function jalurConfig(string|int $jenjang, string|int $jalur, int $tahap = 1): JalurConfig
  153.     {
  154.         return app(ConfigService::class)->jalur($this->domain, $jenjang, $jalur, $tahap);
  155.     }
  156.  
  157.     /**
  158.      * Konfigurasi jenjang berdasarkan kode/label jenjang
  159.      *
  160.      * @throws AppException
  161.      */
  162.     public function jenjangConfig(string|int $jenjangSekolah): JenjangConfig
  163.     {
  164.         return app(ConfigService::class)->jenjang($this->domain, $jenjangSekolah);
  165.     }
  166. }
  167.  
Advertisement
Add Comment
Please, Sign In to add comment