Implement BantuanFormActivity API
This commit is contained in:
		
							parent
							
								
									ddf76d2540
								
							
						
					
					
						commit
						9dac55d07a
					
				@ -37,23 +37,17 @@ import java.util.concurrent.Executors;
 | 
				
			|||||||
public class BantuanFormActivity extends AppCompatActivity {
 | 
					public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // UI Components
 | 
					    // UI Components
 | 
				
			||||||
    private EditText etTerminalId, etNomorTelepon, etDeskripsiMasalah;
 | 
					    private EditText etTicketCode;
 | 
				
			||||||
    private Spinner spinnerTanggalKejadian, spinnerJenisMasalah;
 | 
					    private Spinner spinnerSource, spinnerIssue, spinnerMerchant, spinnerAssign, spinnerResolvedDate;
 | 
				
			||||||
    private LinearLayout uploadContainer;
 | 
					    private TextView tvStatus;
 | 
				
			||||||
    private TextView uploadText;
 | 
					 | 
				
			||||||
    private Button btnKirim;
 | 
					    private Button btnKirim;
 | 
				
			||||||
    private LinearLayout backNavigation;
 | 
					    private LinearLayout backNavigation;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Data
 | 
					    // Data
 | 
				
			||||||
    private String selectedDate = "";
 | 
					    private String selectedResolvedDate = "";
 | 
				
			||||||
    private String selectedFileName = "";
 | 
					 | 
				
			||||||
    private Uri selectedFileUri = null;
 | 
					 | 
				
			||||||
    private ExecutorService executor = Executors.newSingleThreadExecutor();
 | 
					    private ExecutorService executor = Executors.newSingleThreadExecutor();
 | 
				
			||||||
    private Handler mainHandler = new Handler(Looper.getMainLooper());
 | 
					    private Handler mainHandler = new Handler(Looper.getMainLooper());
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // File picker launcher
 | 
					 | 
				
			||||||
    private ActivityResultLauncher<Intent> filePickerLauncher;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
        super.onCreate(savedInstanceState);
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
@ -69,8 +63,6 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
        initViews();
 | 
					        initViews();
 | 
				
			||||||
        setupSpinners();
 | 
					        setupSpinners();
 | 
				
			||||||
        setupListeners();
 | 
					        setupListeners();
 | 
				
			||||||
        setupFilePicker();
 | 
					 | 
				
			||||||
        loadUserData();
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Initialize button state
 | 
					        // Initialize button state
 | 
				
			||||||
        updateButtonState();
 | 
					        updateButtonState();
 | 
				
			||||||
@ -78,17 +70,17 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    private void initViews() {
 | 
					    private void initViews() {
 | 
				
			||||||
        // Form fields
 | 
					        // Form fields
 | 
				
			||||||
        etTerminalId = findViewById(R.id.et_terminal_id);
 | 
					        etTicketCode = findViewById(R.id.et_ticket_code);
 | 
				
			||||||
        etNomorTelepon = findViewById(R.id.et_nomor_telepon);
 | 
					 | 
				
			||||||
        etDeskripsiMasalah = findViewById(R.id.et_deskripsi_masalah);
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Spinners
 | 
					        // Spinners
 | 
				
			||||||
        spinnerTanggalKejadian = findViewById(R.id.spinner_tanggal_kejadian);
 | 
					        spinnerSource = findViewById(R.id.spinner_source);
 | 
				
			||||||
        spinnerJenisMasalah = findViewById(R.id.spinner_jenis_masalah);
 | 
					        spinnerIssue = findViewById(R.id.spinner_issue);
 | 
				
			||||||
 | 
					        spinnerMerchant = findViewById(R.id.spinner_merchant);
 | 
				
			||||||
 | 
					        spinnerAssign = findViewById(R.id.spinner_assign);
 | 
				
			||||||
 | 
					        spinnerResolvedDate = findViewById(R.id.spinner_resolved_date);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Upload section
 | 
					        // Status (read-only)
 | 
				
			||||||
        uploadContainer = findViewById(R.id.upload_container);
 | 
					        tvStatus = findViewById(R.id.tv_status);
 | 
				
			||||||
        uploadText = findViewById(R.id.upload_text);
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Buttons
 | 
					        // Buttons
 | 
				
			||||||
        btnKirim = findViewById(R.id.btn_kirim);
 | 
					        btnKirim = findViewById(R.id.btn_kirim);
 | 
				
			||||||
@ -96,31 +88,77 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void setupSpinners() {
 | 
					    private void setupSpinners() {
 | 
				
			||||||
        // Setup Date Spinner with date picker
 | 
					        // Setup Source Spinner
 | 
				
			||||||
        String[] dateOptions = {"Pilih Tanggal Kejadian", "Pilih dari kalender"};
 | 
					        String[] sourceOptions = {
 | 
				
			||||||
 | 
					            "Pilih Source",
 | 
				
			||||||
 | 
					            "WhatsApp",
 | 
				
			||||||
 | 
					            "Website Hubungi Kami"
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        ArrayAdapter<String> sourceAdapter = new ArrayAdapter<>(this, 
 | 
				
			||||||
 | 
					            android.R.layout.simple_spinner_item, sourceOptions);
 | 
				
			||||||
 | 
					        sourceAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
 | 
					        spinnerSource.setAdapter(sourceAdapter);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Setup Issue Spinner
 | 
				
			||||||
 | 
					        String[] issueOptions = {
 | 
				
			||||||
 | 
					            "Pilih Issue",
 | 
				
			||||||
 | 
					            "Koneksi EDC Bermasalah",
 | 
				
			||||||
 | 
					            "Permintaan Tambahan EDC",
 | 
				
			||||||
 | 
					            "Pergantian EDC"
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        ArrayAdapter<String> issueAdapter = new ArrayAdapter<>(this,
 | 
				
			||||||
 | 
					            android.R.layout.simple_spinner_item, issueOptions);
 | 
				
			||||||
 | 
					        issueAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
 | 
					        spinnerIssue.setAdapter(issueAdapter);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Setup Merchant Spinner
 | 
				
			||||||
 | 
					        String[] merchantOptions = {
 | 
				
			||||||
 | 
					            "Pilih Merchant",
 | 
				
			||||||
 | 
					            "Surabaya",
 | 
				
			||||||
 | 
					            "Jakarta Selatan",
 | 
				
			||||||
 | 
					            "Jakarta Pusat",
 | 
				
			||||||
 | 
					            "Jakarta Barat",
 | 
				
			||||||
 | 
					            "Palembang",
 | 
				
			||||||
 | 
					            "Bogor Timur",
 | 
				
			||||||
 | 
					            "Bandung Utara",
 | 
				
			||||||
 | 
					            "Yogyakarta Selatan",
 | 
				
			||||||
 | 
					            "Cilacap Barat",
 | 
				
			||||||
 | 
					            "Bekasi Timur",
 | 
				
			||||||
 | 
					            "Tangerang Selatan",
 | 
				
			||||||
 | 
					            "Depok Tengah",
 | 
				
			||||||
 | 
					            "Kediri Kota"
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        ArrayAdapter<String> merchantAdapter = new ArrayAdapter<>(this,
 | 
				
			||||||
 | 
					            android.R.layout.simple_spinner_item, merchantOptions);
 | 
				
			||||||
 | 
					        merchantAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
 | 
					        spinnerMerchant.setAdapter(merchantAdapter);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Setup Assign Spinner
 | 
				
			||||||
 | 
					        String[] assignOptions = {
 | 
				
			||||||
 | 
					            "Pilih Assign",
 | 
				
			||||||
 | 
					            "welno hedi prabowo putro jenaka prima",
 | 
				
			||||||
 | 
					            "rizqika",
 | 
				
			||||||
 | 
					            "budi",
 | 
				
			||||||
 | 
					            "binomo",
 | 
				
			||||||
 | 
					            "budi",
 | 
				
			||||||
 | 
					            "Irfan Muslim Saputra"
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        ArrayAdapter<String> assignAdapter = new ArrayAdapter<>(this,
 | 
				
			||||||
 | 
					            android.R.layout.simple_spinner_item, assignOptions);
 | 
				
			||||||
 | 
					        assignAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
 | 
					        spinnerAssign.setAdapter(assignAdapter);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Setup Resolved Date Spinner with date picker
 | 
				
			||||||
 | 
					        String[] dateOptions = {"Pilih Tanggal Resolved", "Pilih dari kalender"};
 | 
				
			||||||
        ArrayAdapter<String> dateAdapter = new ArrayAdapter<>(this, 
 | 
					        ArrayAdapter<String> dateAdapter = new ArrayAdapter<>(this, 
 | 
				
			||||||
            android.R.layout.simple_spinner_item, dateOptions);
 | 
					            android.R.layout.simple_spinner_item, dateOptions);
 | 
				
			||||||
        dateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
					        dateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
        spinnerTanggalKejadian.setAdapter(dateAdapter);
 | 
					        spinnerResolvedDate.setAdapter(dateAdapter);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Setup Issue Type Spinner
 | 
					        // Set status to fixed value
 | 
				
			||||||
        String[] issueTypes = {
 | 
					        if (tvStatus != null) {
 | 
				
			||||||
            "Pilih Jenis Masalah",
 | 
					            tvStatus.setText("Pengajuan");
 | 
				
			||||||
            "Transaksi gagal tapi saldo terpotong",
 | 
					        }
 | 
				
			||||||
            "QRIS tidak terbaca",
 | 
					 | 
				
			||||||
            "EDC tidak merespon / hang",
 | 
					 | 
				
			||||||
            "Gagal cetak struk",
 | 
					 | 
				
			||||||
            "Masalah koneksi internet",
 | 
					 | 
				
			||||||
            "Error pada aplikasi",
 | 
					 | 
				
			||||||
            "Masalah settlement",
 | 
					 | 
				
			||||||
            "Kartu tidak terbaca",
 | 
					 | 
				
			||||||
            "Printer bermasalah",
 | 
					 | 
				
			||||||
            "Lainnya"
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        ArrayAdapter<String> issueAdapter = new ArrayAdapter<>(this,
 | 
					 | 
				
			||||||
            android.R.layout.simple_spinner_item, issueTypes);
 | 
					 | 
				
			||||||
        issueAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
					 | 
				
			||||||
        spinnerJenisMasalah.setAdapter(issueAdapter);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void setupListeners() {
 | 
					    private void setupListeners() {
 | 
				
			||||||
@ -129,8 +167,52 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
            backNavigation.setOnClickListener(v -> onBackPressed());
 | 
					            backNavigation.setOnClickListener(v -> onBackPressed());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Date spinner listener
 | 
					        // Source spinner listener
 | 
				
			||||||
        spinnerTanggalKejadian.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
					        spinnerSource.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
				
			||||||
 | 
					                updateButtonState();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Issue spinner listener
 | 
				
			||||||
 | 
					        spinnerIssue.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
				
			||||||
 | 
					                updateButtonState();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Merchant spinner listener
 | 
				
			||||||
 | 
					        spinnerMerchant.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
				
			||||||
 | 
					                updateButtonState();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Assign spinner listener
 | 
				
			||||||
 | 
					        spinnerAssign.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
				
			||||||
 | 
					                updateButtonState();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Resolved Date spinner listener
 | 
				
			||||||
 | 
					        spinnerResolvedDate.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
					            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
				
			||||||
                if (position == 1) { // "Pilih dari kalender"
 | 
					                if (position == 1) { // "Pilih dari kalender"
 | 
				
			||||||
@ -143,24 +225,8 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
					            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Issue type spinner listener
 | 
					        // Text watcher for EditText field
 | 
				
			||||||
        spinnerJenisMasalah.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
 | 
					        setupTextWatcher();
 | 
				
			||||||
            @Override
 | 
					 | 
				
			||||||
            public void onItemSelected(android.widget.AdapterView<?> parent, View view, int position, long id) {
 | 
					 | 
				
			||||||
                updateButtonState();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            @Override
 | 
					 | 
				
			||||||
            public void onNothingSelected(android.widget.AdapterView<?> parent) {}
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Text watchers for EditText fields
 | 
					 | 
				
			||||||
        setupTextWatchers();
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Upload container listener
 | 
					 | 
				
			||||||
        if (uploadContainer != null) {
 | 
					 | 
				
			||||||
            uploadContainer.setOnClickListener(v -> openFilePicker());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Submit button listener
 | 
					        // Submit button listener
 | 
				
			||||||
        if (btnKirim != null) {
 | 
					        if (btnKirim != null) {
 | 
				
			||||||
@ -172,7 +238,7 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void setupTextWatchers() {
 | 
					    private void setupTextWatcher() {
 | 
				
			||||||
        android.text.TextWatcher textWatcher = new android.text.TextWatcher() {
 | 
					        android.text.TextWatcher textWatcher = new android.text.TextWatcher() {
 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
 | 
					            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
 | 
				
			||||||
@ -186,14 +252,8 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (etTerminalId != null) {
 | 
					        if (etTicketCode != null) {
 | 
				
			||||||
            etTerminalId.addTextChangedListener(textWatcher);
 | 
					            etTicketCode.addTextChangedListener(textWatcher);
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (etNomorTelepon != null) {
 | 
					 | 
				
			||||||
            etNomorTelepon.addTextChangedListener(textWatcher);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (etDeskripsiMasalah != null) {
 | 
					 | 
				
			||||||
            etDeskripsiMasalah.addTextChangedListener(textWatcher);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@ -204,67 +264,29 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        if (isFormValid) {
 | 
					        if (isFormValid) {
 | 
				
			||||||
            // Active state - Red background
 | 
					            // Active state - Red background
 | 
				
			||||||
            btnKirim.setBackgroundResource(R.drawable.button_active_background);
 | 
					            btnKirim.setBackgroundColor(0xFFDE0701); // Red color matching theme
 | 
				
			||||||
            btnKirim.setTextColor(getResources().getColor(android.R.color.white));
 | 
					            btnKirim.setTextColor(getResources().getColor(android.R.color.white));
 | 
				
			||||||
            btnKirim.setEnabled(true);
 | 
					            btnKirim.setEnabled(true);
 | 
				
			||||||
 | 
					            btnKirim.setAlpha(1.0f);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // Inactive state - Gray background
 | 
					            // Inactive state - Gray background
 | 
				
			||||||
            btnKirim.setBackgroundResource(R.drawable.button_inactive_background);
 | 
					            btnKirim.setBackgroundColor(getResources().getColor(android.R.color.darker_gray));
 | 
				
			||||||
            btnKirim.setTextColor(getResources().getColor(android.R.color.darker_gray));
 | 
					            btnKirim.setTextColor(getResources().getColor(android.R.color.white));
 | 
				
			||||||
            btnKirim.setEnabled(false);
 | 
					            btnKirim.setEnabled(false);
 | 
				
			||||||
 | 
					            btnKirim.setAlpha(0.6f);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private boolean checkFormValidity() {
 | 
					    private boolean checkFormValidity() {
 | 
				
			||||||
        // Check if all required fields have values
 | 
					        // Check if all required fields have values
 | 
				
			||||||
        boolean hasTerminalId = etTerminalId != null && !etTerminalId.getText().toString().trim().isEmpty();
 | 
					        boolean hasTicketCode = etTicketCode != null && !etTicketCode.getText().toString().trim().isEmpty();
 | 
				
			||||||
        boolean hasPhoneNumber = etNomorTelepon != null && !etNomorTelepon.getText().toString().trim().isEmpty();
 | 
					        boolean hasSource = spinnerSource != null && spinnerSource.getSelectedItemPosition() > 0;
 | 
				
			||||||
        boolean hasDate = !selectedDate.isEmpty();
 | 
					        boolean hasIssue = spinnerIssue != null && spinnerIssue.getSelectedItemPosition() > 0;
 | 
				
			||||||
        boolean hasIssueType = spinnerJenisMasalah != null && spinnerJenisMasalah.getSelectedItemPosition() > 0;
 | 
					        boolean hasMerchant = spinnerMerchant != null && spinnerMerchant.getSelectedItemPosition() > 0;
 | 
				
			||||||
        boolean hasDescription = etDeskripsiMasalah != null && !etDeskripsiMasalah.getText().toString().trim().isEmpty();
 | 
					        boolean hasAssign = spinnerAssign != null && spinnerAssign.getSelectedItemPosition() > 0;
 | 
				
			||||||
 | 
					        boolean hasResolvedDate = !selectedResolvedDate.isEmpty();
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        return hasTerminalId && hasPhoneNumber && hasDate && hasIssueType && hasDescription;
 | 
					        return hasTicketCode && hasSource && hasIssue && hasMerchant && hasAssign && hasResolvedDate;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private void setupFilePicker() {
 | 
					 | 
				
			||||||
        filePickerLauncher = registerForActivityResult(
 | 
					 | 
				
			||||||
            new ActivityResultContracts.StartActivityForResult(),
 | 
					 | 
				
			||||||
            result -> {
 | 
					 | 
				
			||||||
                if (result.getResultCode() == RESULT_OK && result.getData() != null) {
 | 
					 | 
				
			||||||
                    selectedFileUri = result.getData().getData();
 | 
					 | 
				
			||||||
                    if (selectedFileUri != null) {
 | 
					 | 
				
			||||||
                        selectedFileName = getFileName(selectedFileUri);
 | 
					 | 
				
			||||||
                        if (uploadText != null) {
 | 
					 | 
				
			||||||
                            uploadText.setText(selectedFileName);
 | 
					 | 
				
			||||||
                            uploadText.setTextColor(getResources().getColor(android.R.color.black));
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private void loadUserData() {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            JSONObject userData = LoginActivity.getUserDataAsJson(this);
 | 
					 | 
				
			||||||
            if (userData != null) {
 | 
					 | 
				
			||||||
                // Auto-fill phone number if available
 | 
					 | 
				
			||||||
                String phone = userData.optString("phone", userData.optString("mobile", ""));
 | 
					 | 
				
			||||||
                if (!phone.isEmpty() && etNomorTelepon != null) {
 | 
					 | 
				
			||||||
                    etNomorTelepon.setText(phone);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                // Auto-fill terminal ID if available
 | 
					 | 
				
			||||||
                String terminalId = userData.optString("terminal_id", userData.optString("tid", ""));
 | 
					 | 
				
			||||||
                if (!terminalId.isEmpty() && etTerminalId != null) {
 | 
					 | 
				
			||||||
                    etTerminalId.setText(terminalId);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            // Silent fail - user can fill manually
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Update button state after loading data
 | 
					 | 
				
			||||||
        updateButtonState();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void showDatePicker() {
 | 
					    private void showDatePicker() {
 | 
				
			||||||
@ -275,16 +297,21 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
                Calendar selectedCalendar = Calendar.getInstance();
 | 
					                Calendar selectedCalendar = Calendar.getInstance();
 | 
				
			||||||
                selectedCalendar.set(year, month, dayOfMonth);
 | 
					                selectedCalendar.set(year, month, dayOfMonth);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
 | 
					                // Format for API (ISO 8601)
 | 
				
			||||||
                selectedDate = dateFormat.format(selectedCalendar.getTime());
 | 
					                SimpleDateFormat apiFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.getDefault());
 | 
				
			||||||
 | 
					                selectedResolvedDate = apiFormat.format(selectedCalendar.getTime());
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                // Format for display
 | 
				
			||||||
 | 
					                SimpleDateFormat displayFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
 | 
				
			||||||
 | 
					                String displayDate = displayFormat.format(selectedCalendar.getTime());
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                // Update spinner to show selected date
 | 
					                // Update spinner to show selected date
 | 
				
			||||||
                String[] updatedOptions = {"Pilih Tanggal Kejadian", selectedDate};
 | 
					                String[] updatedOptions = {"Pilih Tanggal Resolved", displayDate};
 | 
				
			||||||
                ArrayAdapter<String> updatedAdapter = new ArrayAdapter<>(this,
 | 
					                ArrayAdapter<String> updatedAdapter = new ArrayAdapter<>(this,
 | 
				
			||||||
                    android.R.layout.simple_spinner_item, updatedOptions);
 | 
					                    android.R.layout.simple_spinner_item, updatedOptions);
 | 
				
			||||||
                updatedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
					                updatedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | 
				
			||||||
                spinnerTanggalKejadian.setAdapter(updatedAdapter);
 | 
					                spinnerResolvedDate.setAdapter(updatedAdapter);
 | 
				
			||||||
                spinnerTanggalKejadian.setSelection(1);
 | 
					                spinnerResolvedDate.setSelection(1);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                // Update button state after date selection
 | 
					                // Update button state after date selection
 | 
				
			||||||
                updateButtonState();
 | 
					                updateButtonState();
 | 
				
			||||||
@ -294,43 +321,55 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
            calendar.get(Calendar.DAY_OF_MONTH)
 | 
					            calendar.get(Calendar.DAY_OF_MONTH)
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Set max date to today
 | 
					 | 
				
			||||||
        datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
 | 
					 | 
				
			||||||
        datePickerDialog.show();
 | 
					        datePickerDialog.show();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void openFilePicker() {
 | 
					    private int getSourceId(int position) {
 | 
				
			||||||
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
 | 
					        switch (position) {
 | 
				
			||||||
        intent.setType("*/*");
 | 
					            case 1: return 1; // WhatsApp
 | 
				
			||||||
        intent.addCategory(Intent.CATEGORY_OPENABLE);
 | 
					            case 2: return 2; // Website Hubungi Kami
 | 
				
			||||||
        
 | 
					            default: return 0;
 | 
				
			||||||
        // Add multiple MIME types for different file types
 | 
					 | 
				
			||||||
        String[] mimeTypes = {"image/*", "application/pdf", "text/*"};
 | 
					 | 
				
			||||||
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            filePickerLauncher.launch(Intent.createChooser(intent, "Pilih File Pendukung"));
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            Toast.makeText(this, "Error opening file picker: " + e.getMessage(), 
 | 
					 | 
				
			||||||
                Toast.LENGTH_SHORT).show();
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private String getFileName(Uri uri) {
 | 
					    private int getIssueId(int position) {
 | 
				
			||||||
        String fileName = "File terpilih";
 | 
					        switch (position) {
 | 
				
			||||||
        try {
 | 
					            case 1: return 4; // Koneksi EDC Bermasalah
 | 
				
			||||||
            android.database.Cursor cursor = getContentResolver().query(uri, null, null, null, null);
 | 
					            case 2: return 5; // Permintaan Tambahan EDC
 | 
				
			||||||
            if (cursor != null && cursor.moveToFirst()) {
 | 
					            case 3: return 6; // Pergantian EDC
 | 
				
			||||||
                int nameIndex = cursor.getColumnIndex(android.provider.OpenableColumns.DISPLAY_NAME);
 | 
					            default: return 0;
 | 
				
			||||||
                if (nameIndex != -1) {
 | 
					        }
 | 
				
			||||||
                    fileName = cursor.getString(nameIndex);
 | 
					    }
 | 
				
			||||||
                }
 | 
					    
 | 
				
			||||||
                cursor.close();
 | 
					    private int getMerchantId(int position) {
 | 
				
			||||||
            }
 | 
					        switch (position) {
 | 
				
			||||||
        } catch (Exception e) {
 | 
					            case 1: return 1;  // Surabaya
 | 
				
			||||||
            // Return default name if error
 | 
					            case 2: return 2;  // Jakarta Selatan
 | 
				
			||||||
 | 
					            case 3: return 3;  // Jakarta Pusat
 | 
				
			||||||
 | 
					            case 4: return 4;  // Jakarta Barat
 | 
				
			||||||
 | 
					            case 5: return 5;  // Palembang
 | 
				
			||||||
 | 
					            case 6: return 6;  // Bogor Timur
 | 
				
			||||||
 | 
					            case 7: return 7;  // Bandung Utara
 | 
				
			||||||
 | 
					            case 8: return 8;  // Yogyakarta Selatan
 | 
				
			||||||
 | 
					            case 9: return 9;  // Cilacap Barat
 | 
				
			||||||
 | 
					            case 10: return 10; // Bekasi Timur
 | 
				
			||||||
 | 
					            case 11: return 11; // Tangerang Selatan
 | 
				
			||||||
 | 
					            case 12: return 12; // Depok Tengah
 | 
				
			||||||
 | 
					            case 13: return 13; // Kediri Kota
 | 
				
			||||||
 | 
					            default: return 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private int getAssignId(int position) {
 | 
				
			||||||
 | 
					        switch (position) {
 | 
				
			||||||
 | 
					            case 1: return 1; // welno hedi prabowo putro jenaka prima
 | 
				
			||||||
 | 
					            case 2: return 2; // rizqika
 | 
				
			||||||
 | 
					            case 3: return 3; // budi
 | 
				
			||||||
 | 
					            case 4: return 4; // binomo
 | 
				
			||||||
 | 
					            case 5: return 5; // budi
 | 
				
			||||||
 | 
					            case 6: return 6; // Irfan Muslim Saputra
 | 
				
			||||||
 | 
					            default: return 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return fileName;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void submitForm() {
 | 
					    private void submitForm() {
 | 
				
			||||||
@ -343,52 +382,59 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
        btnKirim.setText("Mengirim...");
 | 
					        btnKirim.setText("Mengirim...");
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Prepare form data
 | 
					        // Prepare form data
 | 
				
			||||||
        String terminalId = etTerminalId.getText().toString().trim();
 | 
					        String ticketCode = etTicketCode.getText().toString().trim();
 | 
				
			||||||
        String nomorTelepon = etNomorTelepon.getText().toString().trim();
 | 
					        int sourceId = getSourceId(spinnerSource.getSelectedItemPosition());
 | 
				
			||||||
        String deskripsiMasalah = etDeskripsiMasalah.getText().toString().trim();
 | 
					        int issueId = getIssueId(spinnerIssue.getSelectedItemPosition());
 | 
				
			||||||
        String jenisMasalah = spinnerJenisMasalah.getSelectedItem().toString();
 | 
					        int merchantId = getMerchantId(spinnerMerchant.getSelectedItemPosition());
 | 
				
			||||||
 | 
					        int assignId = getAssignId(spinnerAssign.getSelectedItemPosition());
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        submitToAPI(terminalId, nomorTelepon, selectedDate, jenisMasalah, deskripsiMasalah);
 | 
					        submitToAPI(ticketCode, sourceId, issueId, merchantId, assignId, selectedResolvedDate);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private boolean validateForm() {
 | 
					    private boolean validateForm() {
 | 
				
			||||||
        boolean isValid = true;
 | 
					        boolean isValid = true;
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Validate Terminal ID
 | 
					        // Validate Ticket Code
 | 
				
			||||||
        if (etTerminalId.getText().toString().trim().isEmpty()) {
 | 
					        if (etTicketCode.getText().toString().trim().isEmpty()) {
 | 
				
			||||||
            etTerminalId.setError("Terminal ID wajib diisi");
 | 
					            etTicketCode.setError("Ticket Code wajib diisi");
 | 
				
			||||||
            isValid = false;
 | 
					            isValid = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Validate Phone Number
 | 
					        // Validate Source
 | 
				
			||||||
        if (etNomorTelepon.getText().toString().trim().isEmpty()) {
 | 
					        if (spinnerSource.getSelectedItemPosition() == 0) {
 | 
				
			||||||
            etNomorTelepon.setError("Nomor telepon wajib diisi");
 | 
					            Toast.makeText(this, "Pilih Source", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
            isValid = false;
 | 
					            isValid = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Validate Date
 | 
					        // Validate Issue
 | 
				
			||||||
        if (selectedDate.isEmpty()) {
 | 
					        if (spinnerIssue.getSelectedItemPosition() == 0) {
 | 
				
			||||||
            Toast.makeText(this, "Pilih tanggal kejadian", Toast.LENGTH_SHORT).show();
 | 
					            Toast.makeText(this, "Pilih Issue", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
            isValid = false;
 | 
					            isValid = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Validate Issue Type
 | 
					        // Validate Merchant
 | 
				
			||||||
        if (spinnerJenisMasalah.getSelectedItemPosition() == 0) {
 | 
					        if (spinnerMerchant.getSelectedItemPosition() == 0) {
 | 
				
			||||||
            Toast.makeText(this, "Pilih jenis masalah", Toast.LENGTH_SHORT).show();
 | 
					            Toast.makeText(this, "Pilih Merchant", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
            isValid = false;
 | 
					            isValid = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Validate Description
 | 
					        // Validate Assign
 | 
				
			||||||
        if (etDeskripsiMasalah.getText().toString().trim().isEmpty()) {
 | 
					        if (spinnerAssign.getSelectedItemPosition() == 0) {
 | 
				
			||||||
            etDeskripsiMasalah.setError("Deskripsi masalah wajib diisi");
 | 
					            Toast.makeText(this, "Pilih Assign", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
 | 
					            isValid = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Validate Resolved Date
 | 
				
			||||||
 | 
					        if (selectedResolvedDate.isEmpty()) {
 | 
				
			||||||
 | 
					            Toast.makeText(this, "Pilih tanggal resolved", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
            isValid = false;
 | 
					            isValid = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        return isValid;
 | 
					        return isValid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void submitToAPI(String terminalId, String nomorTelepon, String tanggalKejadian, 
 | 
					    private void submitToAPI(String ticketCode, int sourceId, int issueId, int merchantId, 
 | 
				
			||||||
                           String jenisMasalah, String deskripsiMasalah) {
 | 
					                           int assignId, String resolvedAt) {
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        String authToken = LoginActivity.getToken(this);
 | 
					        String authToken = LoginActivity.getToken(this);
 | 
				
			||||||
        if (authToken == null || authToken.isEmpty()) {
 | 
					        if (authToken == null || authToken.isEmpty()) {
 | 
				
			||||||
@ -403,7 +449,7 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
        executor.execute(() -> {
 | 
					        executor.execute(() -> {
 | 
				
			||||||
            HttpURLConnection connection = null;
 | 
					            HttpURLConnection connection = null;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                URL url = new URL("https://be-edc.msvc.app/tickets/create");
 | 
					                URL url = new URL("https://be-edc.msvc.app/tickets");
 | 
				
			||||||
                connection = (HttpURLConnection) url.openConnection();
 | 
					                connection = (HttpURLConnection) url.openConnection();
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                connection.setRequestMethod("POST");
 | 
					                connection.setRequestMethod("POST");
 | 
				
			||||||
@ -415,22 +461,14 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
                
 | 
					                
 | 
				
			||||||
                // Create JSON payload
 | 
					                // Create JSON payload
 | 
				
			||||||
                JSONObject payload = new JSONObject();
 | 
					                JSONObject payload = new JSONObject();
 | 
				
			||||||
                payload.put("terminal_id", terminalId);
 | 
					                payload.put("ticket_code", ticketCode);
 | 
				
			||||||
                payload.put("phone_number", nomorTelepon);
 | 
					                payload.put("source_id", sourceId);
 | 
				
			||||||
                payload.put("incident_date", tanggalKejadian);
 | 
					                payload.put("issue_id", issueId);
 | 
				
			||||||
                payload.put("issue_type", jenisMasalah);
 | 
					                payload.put("merchant_id", merchantId);
 | 
				
			||||||
                payload.put("description", deskripsiMasalah);
 | 
					                payload.put("status", "new");
 | 
				
			||||||
                
 | 
					                payload.put("is_sla_violated", true);
 | 
				
			||||||
                // Add user info
 | 
					                payload.put("assigned_to", assignId);
 | 
				
			||||||
                try {
 | 
					                payload.put("resolved_at", resolvedAt);
 | 
				
			||||||
                    JSONObject userData = LoginActivity.getUserDataAsJson(this);
 | 
					 | 
				
			||||||
                    if (userData != null) {
 | 
					 | 
				
			||||||
                        payload.put("user_name", userData.optString("name", ""));
 | 
					 | 
				
			||||||
                        payload.put("user_email", userData.optString("email", ""));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                } catch (Exception e) {
 | 
					 | 
				
			||||||
                    // Continue without user info
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                // Send request
 | 
					                // Send request
 | 
				
			||||||
                try (OutputStream os = connection.getOutputStream()) {
 | 
					                try (OutputStream os = connection.getOutputStream()) {
 | 
				
			||||||
@ -471,9 +509,6 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
                            // Clear form
 | 
					                            // Clear form
 | 
				
			||||||
                            clearForm();
 | 
					                            clearForm();
 | 
				
			||||||
                            
 | 
					                            
 | 
				
			||||||
                            // Optionally go back to previous screen
 | 
					 | 
				
			||||||
                            // finish();
 | 
					 | 
				
			||||||
                            
 | 
					 | 
				
			||||||
                        } catch (Exception e) {
 | 
					                        } catch (Exception e) {
 | 
				
			||||||
                            Toast.makeText(this, "Tiket berhasil dikirim!", Toast.LENGTH_LONG).show();
 | 
					                            Toast.makeText(this, "Tiket berhasil dikirim!", Toast.LENGTH_LONG).show();
 | 
				
			||||||
                            clearForm();
 | 
					                            clearForm();
 | 
				
			||||||
@ -511,24 +546,15 @@ public class BantuanFormActivity extends AppCompatActivity {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    private void clearForm() {
 | 
					    private void clearForm() {
 | 
				
			||||||
        if (etTerminalId != null) etTerminalId.setText("");
 | 
					        if (etTicketCode != null) etTicketCode.setText("");
 | 
				
			||||||
        if (etNomorTelepon != null) etNomorTelepon.setText("");
 | 
					 | 
				
			||||||
        if (etDeskripsiMasalah != null) etDeskripsiMasalah.setText("");
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (spinnerTanggalKejadian != null) spinnerTanggalKejadian.setSelection(0);
 | 
					        if (spinnerSource != null) spinnerSource.setSelection(0);
 | 
				
			||||||
        if (spinnerJenisMasalah != null) spinnerJenisMasalah.setSelection(0);
 | 
					        if (spinnerIssue != null) spinnerIssue.setSelection(0);
 | 
				
			||||||
 | 
					        if (spinnerMerchant != null) spinnerMerchant.setSelection(0);
 | 
				
			||||||
 | 
					        if (spinnerAssign != null) spinnerAssign.setSelection(0);
 | 
				
			||||||
 | 
					        if (spinnerResolvedDate != null) spinnerResolvedDate.setSelection(0);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        selectedDate = "";
 | 
					        selectedResolvedDate = "";
 | 
				
			||||||
        selectedFileName = "";
 | 
					 | 
				
			||||||
        selectedFileUri = null;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        if (uploadText != null) {
 | 
					 | 
				
			||||||
            uploadText.setText("Pilih di sini");
 | 
					 | 
				
			||||||
            uploadText.setTextColor(getResources().getColor(android.R.color.darker_gray));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Reload user data for next form
 | 
					 | 
				
			||||||
        loadUserData();
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // Update button state after clearing form
 | 
					        // Update button state after clearing form
 | 
				
			||||||
        updateButtonState();
 | 
					        updateButtonState();
 | 
				
			||||||
 | 
				
			|||||||
@ -1,188 +1,234 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
					<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
				
			||||||
    android:layout_width="match_parent"
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
    android:layout_height="match_parent"
 | 
					    android:layout_height="match_parent"
 | 
				
			||||||
    android:orientation="vertical"
 | 
					    android:orientation="vertical"
 | 
				
			||||||
    android:background="#f5f5f5">
 | 
					    android:background="#F5F5F5">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Custom AppBar -->
 | 
					    <!-- Custom AppBar -->
 | 
				
			||||||
    <include layout="@layout/component_appbar_small" />
 | 
					    <include layout="@layout/component_appbar_small" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Form Content -->
 | 
					    <!-- Main Content -->
 | 
				
			||||||
    <ScrollView
 | 
					    <ScrollView
 | 
				
			||||||
        android:layout_width="match_parent"
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
        android:layout_height="0dp"
 | 
					        android:layout_height="0dp"
 | 
				
			||||||
        android:layout_weight="1">
 | 
					        android:layout_weight="1"
 | 
				
			||||||
 | 
					        android:paddingHorizontal="16dp"
 | 
				
			||||||
 | 
					        android:paddingTop="16dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <LinearLayout
 | 
					        <LinearLayout
 | 
				
			||||||
            android:layout_width="match_parent"
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
            android:layout_height="wrap_content"
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
            android:orientation="vertical"
 | 
					            android:orientation="vertical">
 | 
				
			||||||
            android:padding="16dp"
 | 
					 | 
				
			||||||
            android:background="@android:color/white">
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <TextView
 | 
					            <!-- Form Card -->
 | 
				
			||||||
 | 
					            <androidx.cardview.widget.CardView
 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
                android:text="Formulir Helpdesk untuk Merchant"
 | 
					                android:layout_marginBottom="16dp"
 | 
				
			||||||
                android:textSize="20sp"
 | 
					                app:cardCornerRadius="12dp"
 | 
				
			||||||
                android:textStyle="bold"
 | 
					                app:cardElevation="2dp"
 | 
				
			||||||
                android:textColor="@android:color/black"
 | 
					                app:cardBackgroundColor="@android:color/white">
 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <TextView
 | 
					                <LinearLayout
 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Mohon isi data Anda pada formulir di bawah ini untuk melaporkan masalah yang terjadi."
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="24dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!-- Terminal ID -->
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Terminal ID (TID)"
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <EditText
 | 
					 | 
				
			||||||
                android:id="@+id/et_terminal_id"
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:hint="123456789011"
 | 
					 | 
				
			||||||
                android:padding="16dp"
 | 
					 | 
				
			||||||
                android:background="@android:drawable/editbox_background"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="16dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!-- Nomor Telepon -->
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Nomor Telepon"
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <EditText
 | 
					 | 
				
			||||||
                android:id="@+id/et_nomor_telepon"
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:hint="+62 8xxxxxxxxx"
 | 
					 | 
				
			||||||
                android:inputType="phone"
 | 
					 | 
				
			||||||
                android:padding="16dp"
 | 
					 | 
				
			||||||
                android:background="@android:drawable/editbox_background"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="16dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!-- Tanggal Kejadian -->
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Tanggal Kejadian"
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <Spinner
 | 
					 | 
				
			||||||
                android:id="@+id/spinner_tanggal_kejadian"
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:padding="16dp"
 | 
					 | 
				
			||||||
                android:background="@android:drawable/editbox_background"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="16dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!-- Jenis Masalah -->
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Jenis Masalah"
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <Spinner
 | 
					 | 
				
			||||||
                android:id="@+id/spinner_jenis_masalah"
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:padding="16dp"
 | 
					 | 
				
			||||||
                android:background="@android:drawable/editbox_background"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="16dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!-- Deskripsi Masalah -->
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Deskripsi Masalah"
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <EditText
 | 
					 | 
				
			||||||
                android:id="@+id/et_deskripsi_masalah"
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="120dp"
 | 
					 | 
				
			||||||
                android:hint="Tulis di sini..."
 | 
					 | 
				
			||||||
                android:inputType="textMultiLine"
 | 
					 | 
				
			||||||
                android:gravity="top"
 | 
					 | 
				
			||||||
                android:padding="16dp"
 | 
					 | 
				
			||||||
                android:background="@android:drawable/editbox_background"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="16dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <!-- Upload Dokumen -->
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Upload Dokumen Pendukung"
 | 
					 | 
				
			||||||
                android:textSize="14sp"
 | 
					 | 
				
			||||||
                android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                android:layout_marginBottom="8dp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <LinearLayout
 | 
					 | 
				
			||||||
                android:id="@+id/upload_container"
 | 
					 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:orientation="horizontal"
 | 
					 | 
				
			||||||
                android:padding="16dp"
 | 
					 | 
				
			||||||
                android:background="@android:drawable/editbox_background"
 | 
					 | 
				
			||||||
                android:gravity="center_vertical"
 | 
					 | 
				
			||||||
                android:clickable="true"
 | 
					 | 
				
			||||||
                android:focusable="true">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                <TextView
 | 
					 | 
				
			||||||
                    android:id="@+id/upload_text"
 | 
					 | 
				
			||||||
                    android:layout_width="0dp"
 | 
					 | 
				
			||||||
                    android:layout_height="wrap_content"
 | 
					                    android:layout_height="wrap_content"
 | 
				
			||||||
                    android:layout_weight="1"
 | 
					                    android:orientation="vertical"
 | 
				
			||||||
                    android:text="Pilih di sini"
 | 
					                    android:padding="20dp">
 | 
				
			||||||
                    android:textColor="@android:color/darker_gray"
 | 
					 | 
				
			||||||
                    android:textSize="14sp"/>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <TextView
 | 
					                    <!-- Form Title -->
 | 
				
			||||||
                    android:layout_width="wrap_content"
 | 
					                    <TextView
 | 
				
			||||||
                    android:layout_height="wrap_content"
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
                    android:text="+"
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
                    android:textSize="24sp"
 | 
					                        android:text="Formulir Helpdesk untuk Merchant"
 | 
				
			||||||
                    android:textColor="@android:color/darker_gray"/>
 | 
					                        android:textSize="18sp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold"
 | 
				
			||||||
 | 
					                        android:textColor="#DE0701"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            </LinearLayout>
 | 
					                    <!-- Form Subtitle -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Mohon isi data Anda pada formulir di bawah ini untuk melaporkan masalah yang terjadi."
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#666666"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="24dp"
 | 
				
			||||||
 | 
					                        android:lineSpacingExtra="2dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Ticket Code Field -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Ticket Code"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <EditText
 | 
				
			||||||
 | 
					                        android:id="@+id/et_ticket_code"
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:hint="Masukkan kode tiket (contoh: #20240312)"
 | 
				
			||||||
 | 
					                        android:padding="16dp"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColorHint="#AAAAAA"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="20dp"
 | 
				
			||||||
 | 
					                        android:singleLine="true" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Source Field -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Source"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <Spinner
 | 
				
			||||||
 | 
					                        android:id="@+id/spinner_source"
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="20dp"
 | 
				
			||||||
 | 
					                        android:padding="16dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Issue Field -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Issue"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <Spinner
 | 
				
			||||||
 | 
					                        android:id="@+id/spinner_issue"
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="20dp"
 | 
				
			||||||
 | 
					                        android:padding="16dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Merchant Field -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Merchant"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <Spinner
 | 
				
			||||||
 | 
					                        android:id="@+id/spinner_merchant"
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="20dp"
 | 
				
			||||||
 | 
					                        android:padding="16dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Status Field (Read-only) -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Status"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <LinearLayout
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:orientation="horizontal"
 | 
				
			||||||
 | 
					                        android:gravity="center_vertical"
 | 
				
			||||||
 | 
					                        android:padding="16dp"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="20dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        <TextView
 | 
				
			||||||
 | 
					                            android:id="@+id/tv_status"
 | 
				
			||||||
 | 
					                            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                            android:text="Pengajuan"
 | 
				
			||||||
 | 
					                            android:textSize="14sp"
 | 
				
			||||||
 | 
					                            android:textColor="#666666" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Assign Field -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Assign To"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <Spinner
 | 
				
			||||||
 | 
					                        android:id="@+id/spinner_assign"
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="20dp"
 | 
				
			||||||
 | 
					                        android:padding="16dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <!-- Resolved Date Field -->
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:text="Resolved Date"
 | 
				
			||||||
 | 
					                        android:textSize="14sp"
 | 
				
			||||||
 | 
					                        android:textColor="#333333"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					                        android:textStyle="bold" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <Spinner
 | 
				
			||||||
 | 
					                        android:id="@+id/spinner_resolved_date"
 | 
				
			||||||
 | 
					                        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:background="@android:drawable/editbox_background"
 | 
				
			||||||
 | 
					                        android:layout_marginBottom="12dp"
 | 
				
			||||||
 | 
					                        android:padding="16dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </androidx.cardview.widget.CardView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        </LinearLayout>
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </ScrollView>
 | 
					    </ScrollView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Submit Button -->
 | 
					    <!-- Submit Button -->
 | 
				
			||||||
    <Button
 | 
					    <LinearLayout
 | 
				
			||||||
        android:id="@+id/btn_kirim"
 | 
					 | 
				
			||||||
        android:layout_width="match_parent"
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
        android:layout_height="56dp"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
        android:layout_margin="16dp"
 | 
					        android:orientation="vertical"
 | 
				
			||||||
        android:text="Kirim Sekarang"
 | 
					        android:padding="16dp"
 | 
				
			||||||
        android:textColor="@android:color/white"
 | 
					        android:background="@android:color/white"
 | 
				
			||||||
        android:textSize="16sp"
 | 
					        android:elevation="4dp">
 | 
				
			||||||
        android:textStyle="bold"
 | 
					
 | 
				
			||||||
        android:background="@drawable/button_inactive_background"
 | 
					        <Button
 | 
				
			||||||
        android:elevation="2dp"
 | 
					            android:id="@+id/btn_kirim"
 | 
				
			||||||
        android:enabled="false"/>
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="52dp"
 | 
				
			||||||
 | 
					            android:text="Kirim Sekarang"
 | 
				
			||||||
 | 
					            android:textSize="16sp"
 | 
				
			||||||
 | 
					            android:textStyle="bold"
 | 
				
			||||||
 | 
					            android:textAllCaps="false"
 | 
				
			||||||
 | 
					            android:background="@android:color/darker_gray"
 | 
				
			||||||
 | 
					            android:textColor="@android:color/white"
 | 
				
			||||||
 | 
					            android:enabled="false"
 | 
				
			||||||
 | 
					            android:stateListAnimator="@null"
 | 
				
			||||||
 | 
					            android:elevation="0dp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</LinearLayout>
 | 
					</LinearLayout>
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user