Files
eletter/src/app/spengesahan/controller.php

381 lines
19 KiB
PHP

<?php
include('../koneksi.php');
$key = isset($_POST['key']) ? $_POST['key'] : 'gagal';
switch ($key) {
case 'verif_kirim':
$surat_id = $_POST['surat_id'];
$satuan_kerja_id = $_POST['satuan_kerja_id'];
$query = "SELECT
(SELECT COUNT(*) FROM kirim k
INNER JOIN surat s ON k.surat_id = s.id
LEFT JOIN teruskan t ON k.id = t.kirim_id_untuk
WHERE k.kepada IS NOT NULL AND k.surat_id = $surat_id
AND t.jabatan_dari IS NULL AND k.satuan_kerja_penginput = $satuan_kerja_id) AS kpd,
(SELECT COUNT(*) FROM scan k
INNER JOIN surat s ON k.surat_id = s.id
WHERE k.surat_id = $surat_id AND LOWER(k.file) LIKE '%jpg'
AND k.file NOT IN ('')) AS tj,
(SELECT COUNT(*) FROM scan k
INNER JOIN surat s ON k.surat_id = s.id
WHERE k.surat_id = $surat_id AND LOWER(k.file) NOT LIKE '%jpg'
AND k.file NOT IN ('')) AS tm
";
$result = pg_query($koneksi, $query);
$row = pg_fetch_assoc($result);
$response = array(
'tj' => $row['tj'],
'tm' => $row['tm'],
'kpd' => $row['kpd']
);
echo json_encode($response);
// echo $row['tj'] . '$%^' . $row['tm'] . '$%^' . $row['kpd'];
break;
case 'delete_kepada_tl':
$id = $_POST['id'];
$surat_id = $_POST['surat_id'];
$jabatan_pegawai_id = $_POST['jabatan_pegawai_id'];
pg_query($koneksi, "DELETE FROM teruskan WHERE kirim_id_untuk = $id");
pg_query($koneksi, "DELETE FROM kirim WHERE id = '$id'");
pg_query($koneksi, "UPDATE kirim SET isi = NULL
WHERE id = (
SELECT MIN(k.id)
FROM kirim k
INNER JOIN surat s ON k.surat_id = s.id
INNER JOIN data_user u ON u.satuan_kerja_id = k.satuan_kerja_penginput
WHERE k.kepada IS NOT NULL AND k.surat_id = $surat_id
AND u.jabatan_pegawai_id = $jabatan_pegawai_id
AND k.satuan_kerja_tujuan IS NULL
)
");
break;
case 'delete_kepada_kr':
$kirim_id = $_POST['id'];
$result = pg_query($koneksi, "SELECT surat_id, isi FROM kirim WHERE id = $kirim_id");
$row = pg_fetch_assoc($result);
$surat_id = $row['surat_id'];
$isi = $row['isi'];
if ($isi == 'SM') {
pg_query($koneksi, "DELETE FROM teruskan WHERE kirim_id_untuk IN (SELECT id FROM kirim WHERE surat_id = $surat_id AND id = $kirim_id)");
pg_query($koneksi, "DELETE FROM kirim WHERE surat_id = $surat_id AND id = $kirim_id");
} else {
pg_query($koneksi, "DELETE FROM scan_komen WHERE komen_id IN (SELECT komen_id FROM teruskan WHERE kirim_id_untuk IN (SELECT id FROM kirim WHERE surat_id = $surat_id AND id >= $kirim_id))");
pg_query($koneksi, "DELETE FROM komen WHERE surat_id = $surat_id AND id IN (SELECT komen_id FROM teruskan WHERE kirim_id_untuk IN (SELECT id FROM kirim WHERE surat_id = $surat_id AND id >= $kirim_id))");
pg_query($koneksi, "DELETE FROM teruskan WHERE kirim_id_untuk IN (SELECT id FROM kirim WHERE surat_id = $surat_id AND id >= $kirim_id)");
$satuan_kerja_id = $_POST['satuan_kerja_id'];
$result = pg_query($koneksi, "SELECT MIN(k.id) AS kirimidmn
FROM kirim k
INNER JOIN surat s ON k.surat_id = s.id
LEFT JOIN teruskan t ON k.id = t.kirim_id_untuk
WHERE k.kepada IS NOT NULL AND k.surat_id = $surat_id
AND t.jabatan_dari IS NULL AND k.satuan_kerja_penginput = $satuan_kerja_id
");
$row = pg_fetch_assoc($result);
$kirimidmn = $row['kirimidmn'];
pg_query($koneksi, "DELETE FROM kirim WHERE surat_id = $surat_id AND id = $kirimidmn");
pg_query($koneksi, "DELETE FROM kirim WHERE surat_id = $surat_id AND satuan_kerja_penginput <> $satuan_kerja_id");
$result = pg_query($koneksi, "SELECT MIN(k.id) AS kirimid
FROM kirim k
INNER JOIN surat s ON k.surat_id = s.id
LEFT JOIN teruskan t ON k.id = t.kirim_id_untuk
WHERE k.kepada IS NOT NULL AND k.surat_id = $surat_id
AND t.jabatan_dari IS NULL AND k.satuan_kerja_penginput = $satuan_kerja_id
");
$row = pg_fetch_assoc($result);
$kirimid = $row['kirimid'];
pg_query($koneksi, "UPDATE kirim SET isi = NULL, dis_baca = NULL, proses_tu = NULL, tgl_diterima = NULL WHERE id = $kirimid");
}
break;
case 'simpan_kirim':
$surat_id = $_POST['surat_id'];
$satuan_kerja_id = $_POST['satuan_kerja_id'];
$perihal = $_POST['perihal'];
$no_reg = $_POST['no_register'];
$jns_naskah = $_POST['jns_naskah'];
$sif_naskah = $_POST['sif_naskah'];
$kd_surat = $_POST['kd_surat'];
$penandatangan_id = $_POST['penandatangan_id'];
// Check if the surat exists
$query = "SELECT id FROM surat WHERE id=$1";
$result = pg_query_params($koneksi, $query, array($surat_id));
if (pg_num_rows($result) > 0) {
// Update surat if it exists
$update_query = "UPDATE surat SET perihal=$1 WHERE id=$2";
pg_query_params($koneksi, $update_query, array($perihal, $surat_id));
} else {
// Insert new surat if it does not exist
$setNo_register = pg_query($koneksi, "SELECT
CONCAT(
TO_CHAR(CURRENT_DATE, 'YYMMDD'),
LPAD(
CAST(
COALESCE(
MAX(CAST(RIGHT(no_register, 3) AS NUMERIC)) + 1,
1
) AS TEXT
),
3,
'0'
)
) AS new_no_register
FROM surat
WHERE LEFT(no_register, 6) = TO_CHAR(CURRENT_DATE, 'YYMMDD');
");
$no_register = pg_fetch_array($setNo_register);
$insert_query = "INSERT INTO surat (satuan_kerja_id, perihal, tgl_surat_keluar, jenis_surat_id, jenis_disposisi_id, no_register, sifat_surat_id, kode_id, pengesahan,penandatangan_id)
VALUES ($1, $2, NOW(), $3, 3, $4, $5, $6, 1,$7)";
pg_query_params($koneksi, $insert_query, array($satuan_kerja_id, $perihal, $jns_naskah, $no_register['new_no_register'], $sif_naskah, $kd_surat, $penandatangan_id));
}
// Retrieve the latest surat id
$select_query = "SELECT id,no_register FROM surat WHERE satuan_kerja_id=$1 AND no_register=$2 AND perihal=$3 ORDER BY id DESC LIMIT 1";
$result = pg_query_params($koneksi, $select_query, array($satuan_kerja_id, $no_register['new_no_register'], $perihal));
if ($row = pg_fetch_array($result)) {
echo json_encode(['no_surat' => $row['id'], 'no_register' => $row['no_register']]);
} else {
echo json_encode(['no_surat' => $surat_id, 'no_register' => $no_reg]);;
}
break;
case 'simpan_kepada_tl':
$surat_id = $_POST['surat_id'];
$kepada = $_POST['kepada'];
$satuan_kerja_penginput = $_POST['satuan_kerja_penginput'];
$cek_satker = pg_query($koneksi, "SELECT id FROM kirim WHERE surat_id='$surat_id' AND kepada='$kepada' AND satuan_kerja_penginput='$satuan_kerja_penginput' AND satuan_kerja_tujuan IS NULL");
$row_satker = pg_fetch_row($cek_satker);
if ($row_satker[0] == 0) {
$cdata = pg_query($koneksi, "SELECT COUNT(*) FROM kirim WHERE surat_id='$surat_id' AND satuan_kerja_penginput='$satuan_kerja_penginput' AND satuan_kerja_tujuan IS NULL");
$rcdata = pg_fetch_array($cdata);
$jdata = $rcdata[0];
if ($jdata == 0) {
$inp = pg_query($koneksi, "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput) VALUES ('$surat_id', '$kepada', NOW(), NOW(), '$satuan_kerja_penginput')");
} else {
$inp = pg_query($koneksi, "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput, isi) VALUES ('$surat_id', '$kepada', NOW(), NOW(), '$satuan_kerja_penginput', 'SM')");
}
}
echo json_encode(['icon' => 'success', 'message' => 'Kirim Tujuan sudah Ditambahkan']);
break;
case 'simpan_kepada_kr':
$surat_id = (int)$_POST['surat_id'];
$kepada = (int)$_POST['kepada'];
$satuan_kerja_penginput = (int)$_POST['satuan_kerja_penginput'];
// Cek apakah sudah ada kirim untuk surat_id, kepada, dan satuan_kerja_penginput yang sama
$cek_satker = pg_query($koneksi, "SELECT id FROM kirim WHERE surat_id=$surat_id AND kepada=$kepada AND satuan_kerja_penginput=$satuan_kerja_penginput AND satuan_kerja_tujuan IS NULL");
$row_satker = pg_fetch_row($cek_satker);
if (empty($row_satker)) {
// Menggabungkan penghitungan jdata dan jdata1 menjadi satu kueri
$cdata = pg_query(
$koneksi,
"SELECT
(SELECT COUNT(*) FROM kirim WHERE surat_id=$surat_id AND satuan_kerja_penginput=$satuan_kerja_penginput AND kepada=$kepada) AS jdata,
(SELECT COUNT(*) FROM kirim WHERE surat_id=$surat_id AND satuan_kerja_penginput=$satuan_kerja_penginput AND isi='SM') AS jdata1"
);
$rcdata = pg_fetch_assoc($cdata);
$jdata = $rcdata['jdata'];
$jdata1 = $rcdata['jdata1'];
// Memilih kueri INSERT yang sesuai berdasarkan kondisi jdata dan jdata1
if ($jdata == 0 && $jdata1 == 0) {
$query = "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput)
VALUES ($surat_id, $kepada, NOW(), NOW(), $satuan_kerja_penginput)";
pg_query($koneksi, $query);
} else {
// $query = "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput, isi)
// VALUES ($surat_id, $kepada, NOW(), NOW(), $satuan_kerja_penginput, 'SM')";
}
}
break;
case 'jumlah_kepada':
$surat_id = $_POST['surat_id'];
$satuan_kerja_id = $_POST['satuan_kerja_id'];
$k = pg_query($koneksi, "SELECT COUNT(*)
FROM kirim k INNER JOIN surat s ON (k.surat_id=s.id)
LEFT OUTER JOIN teruskan t ON (k.id=t.kirim_id_untuk)
WHERE k.kepada IS NOT NULL AND k.surat_id=$surat_id AND t.jabatan_dari IS NULL AND k.satuan_kerja_penginput=$satuan_kerja_id");
while ($rk = pg_fetch_array($k)) {
echo $rk[0];
}
break;
case 'jumlah_jpg':
$surat_id = $_POST['surat_id'];
$k = pg_query($koneksi, "SELECT COUNT(*)
FROM scan k INNER JOIN surat s ON (k.surat_id=s.id)
WHERE k.surat_id=$surat_id AND LOWER(file) NOT IN ('%.jpg', '%.jpeg', '%.png') AND k.file NOT IN ('')
");
while ($rk = pg_fetch_array($k)) {
echo $rk[0];
}
break;
case 'jumlah_nonjpg':
$surat_id = $_POST['surat_id'];
$k = pg_query($koneksi, "SELECT COUNT(*)
FROM scan k INNER JOIN surat s ON (k.surat_id=s.id)
WHERE k.surat_id='$surat_id' AND LOWER(k.file) NOT LIKE '%.jpg' AND k.file NOT IN ('')");
while ($rk = pg_fetch_array($k)) {
echo $rk[0];
}
break;
case 'hapus_kirim':
$id = $_POST['id'];
$surat = pg_query($koneksi, "SELECT tgl_kirim FROM surat WHERE id = $id");
$result = pg_fetch_array($surat);
if (!empty($result['tgl_kirim'])) {
echo json_encode(['icon' => 'error', 'message' => 'Surat sudah terkirim, <br>tidak boleh dihapus...!!']);
} else {
pg_query($koneksi, "UPDATE surat SET tahun='batal' WHERE id=$id");
echo json_encode(['icon' => 'success', 'message' => 'Data berhasil dihapus...!!']);
}
break;
case 'start_kirim':
$id = $_POST['id'];
$satuan_kerja_id = $_POST['satuan_kerja_id'];
// Query untuk mendapatkan data kirim yang memenuhi kondisi
$result = pg_query($koneksi, "SELECT id, kepada FROM kirim WHERE surat_id='$id' AND satuan_kerja_penginput=$satuan_kerja_id AND satuan_kerja_tujuan IS NULL AND lama IS NULL");
if (!$result) {
// Jika query pertama gagal
$error_message = pg_last_error($koneksi);
echo "Error: Query failed. " . $error_message;
} else {
while ($r = pg_fetch_array($result)) {
$kirim_id = $r['id'];
$kepada = $r['kepada'];
// Query untuk mendapatkan satuan_kerja_tujuan dari data_user
$result_sat = pg_query($koneksi, "SELECT satuan_kerja_id FROM data_user WHERE jabatan_pegawai_id='$kepada'");
if (!$result_sat) {
// Jika query kedua gagal
$error_message = pg_last_error($koneksi);
echo "Error: Query failed. " . $error_message;
} else {
$r_sat = pg_fetch_array($result_sat);
$satuan_kerja_tujuan = $r_sat['satuan_kerja_id'];
// Update kirim dengan satuan_kerja_tujuan dan waktu lama
$update_kirim = pg_query($koneksi, "UPDATE kirim SET satuan_kerja_tujuan='$satuan_kerja_tujuan', lama=NOW() WHERE id='$kirim_id'");
if (!$update_kirim) {
// Jika query update gagal
$error_message = pg_last_error($koneksi);
echo "Error: Query failed. " . $error_message;
}
}
}
// Update surat dengan tgl_kirim saat semua kirim berhasil diupdate
$update_surat = pg_query($koneksi, "UPDATE surat SET tgl_kirim=NOW(), stts_kendali=0 WHERE id='$id'");
if (!$update_surat) {
// Jika query update surat gagal
$error_message = pg_last_error($koneksi);
echo "Error: Query failed. " . $error_message;
}
}
break;
case 'kirim_semua':
$userpeg = pg_query($koneksi, "SELECT DISTINCT j.id,
SPLIT_PART(CASE WHEN s.kode_satker='' THEN '999.0' ELSE s.kode_satker END,'.',1),
CAST(SPLIT_PART(CASE WHEN s.kode_satker='' THEN '999.0' ELSE s.kode_satker END,'.',2) AS INTEGER)
FROM data_user k
INNER JOIN jabatan_pegawai j ON (j.id=k.jabatan_pegawai_id)
INNER JOIN satuan_kerja s ON (s.id=k.satuan_kerja_id) WHERE LOWER(j.nama) NOT LIKE '%akun lama%' AND k.aktif='t'
ORDER BY SPLIT_PART(CASE WHEN s.kode_satker='' THEN '999.0' ELSE s.kode_satker END,'.',1) ASC,
CAST(SPLIT_PART(CASE WHEN s.kode_satker='' THEN '999.0' ELSE s.kode_satker END,'.',2) AS INTEGER) ASC
");
while (($rows = pg_fetch_array($userpeg)) !== FALSE) {
$kpd = $rows[0];
$surat_id = $_POST['surat_id'];
$kepada = $kpd;
$satuan_kerja_penginput = $_POST['satuan_kerja_penginput'];
$cek_satker = pg_query($koneksi, "SELECT id FROM kirim WHERE surat_id='$surat_id' AND kepada='$kepada' AND satuan_kerja_penginput='$satuan_kerja_penginput' AND satuan_kerja_tujuan IS NULL");
$row_satker = pg_fetch_row($cek_satker);
if ($row_satker[0] > 0) {
} else {
$cdata = pg_query($koneksi, "SELECT COUNT(*) FROM kirim WHERE surat_id='$surat_id' AND satuan_kerja_penginput='$satuan_kerja_penginput' AND satuan_kerja_tujuan IS NULL");
while ($rcdata = pg_fetch_array($cdata)) {
$jdata = $rcdata[0];
}
if ($jdata == 0) {
$inp = pg_query($koneksi, "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput)
VALUES ('$surat_id', '$kepada', NOW(), NOW(), '$satuan_kerja_penginput')");
} else {
$inp = pg_query($koneksi, "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput, isi)
VALUES ('$surat_id', '$kepada', NOW(), NOW(), '$satuan_kerja_penginput', 'SM')");
}
}
}
break;
case 'clear_kepada':
$surat_id = $_POST['surat_id'];
$satuan_kerja_penginput = $_POST['satuan_kerja_penginput'];
pg_query($koneksi, "DELETE FROM kirim WHERE surat_id='$surat_id' AND satuan_kerja_penginput='$satuan_kerja_penginput'");
break;
case 'cek_no_surat':
$no_surat = $_POST['no_surat'];
$satuan_kerja_id = $_POST['satuan_kerja_id'];
$cek = pg_query($koneksi, "SELECT no_surat FROM surat WHERE no_surat='$no_surat' AND jenis_surat_id=3 AND jenis_disposisi_id=3 AND satuan_kerja_id=$satuan_kerja_id AND tahun IS NULL");
while ($rcek = pg_fetch_array($cek)) {
$hsl = $rcek[0];
}
echo $hsl;
break;
// case 'pengajuan_ulang':
// $surat_id = $_POST['surat_id'];
// var_dump($surat_id);
// pg_query($koneksi, "UPDATE surat SET stts_kendali =98 WHERE id=$surat_id ");
// break;
case 'selesai_kepada_tl':
$surat_id = $_POST['surat_id'];
$kepada = $_POST['kepada'];
$satuan_kerja_penginput = $_POST['satuan_kerja_penginput'];
foreach ($kepada as $kpd) {
$cek_satker = pg_query($koneksi, "SELECT id FROM kirim WHERE surat_id='$surat_id' AND kepada='$kpd' AND satuan_kerja_penginput='$satuan_kerja_penginput' AND satuan_kerja_tujuan IS NULL");
$row_satker = pg_fetch_row($cek_satker);
// var_dump($kpd);
// die();
if ($row_satker[0] == 0) {
$cdata = pg_query($koneksi, "SELECT COUNT(*) FROM kirim WHERE surat_id='$surat_id' AND satuan_kerja_penginput='$satuan_kerja_penginput' AND satuan_kerja_tujuan IS NULL");
$rcdata = pg_fetch_array($cdata);
$jdata = $rcdata[0];
if ($jdata == 0) {
$inp = pg_query($koneksi, "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput) VALUES ('$surat_id', '$kpd', NOW(), NOW(), '$satuan_kerja_penginput')");
} else {
$inp = pg_query($koneksi, "INSERT INTO kirim (surat_id, kepada, tgl_input, jam_input, satuan_kerja_penginput, isi) VALUES ('$surat_id', '$kpd', NOW(), NOW(), '$satuan_kerja_penginput', 'SM')");
}
}
}
echo json_encode(['icon' => 'success', 'message' => 'Kirim Tujuan sudah Ditambahkan']);
break;
break;
case "gagal":
echo 'gagaaaaaal';
break;
}