HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: /home/workzeni/agency-erp-05.workzenix.com/resources/views/payment/edit.blade copy.php
@extends('layouts.master')
@section('title', 'Payments')
@section('content')

    <div class="card">
        <div class="card-header d-flex justify-content-between align-items-center">
            <h5 class="mb-0">Edit Payment</h5>
            <a href="{{ route(
                ([
                    1 => 'admin',
                    2 => 'manager',
                    3 => 'account',
                    4 => 'user',
                ][auth()->user()->role] ??
                    'user') .
                    '.payment.list',
            ) }}"
                class="btn btn-danger btn-sm">Manage Payment</a>

            @if ($errors->any())
                <div class="alert alert-danger alert-dismissible fade show" role="alert">
                    <ul class="mb-0">
                        @foreach ($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                </div>
            @endif
        </div>

        <div class="card-body">
            <form action="{{ route('payment.update', $payment->id) }}" method="POST" enctype="multipart/form-data"
                class="form">
                @csrf
                @method('PUT')

                @if (in_array(auth()->user()->role, [1, 2, 3]))
                    <div class="row row-cols-md-2">
                        <div class="form-group">
                            <label for="agency_id">Select Agency <span class="text-danger">*</span></label>
                            <select name="agency_id" id="agency_id" class="form-control" required>
                                <option value="" disabled>Select Agency</option>
                                @foreach ($agencies as $agency)
                                    <option value="{{ $agency->id }}"
                                        {{ $payment->agency_id == $agency->id ? 'selected' : '' }}>
                                        {{ $agency->name }}
                                    </option>
                                @endforeach
                            </select>
                        </div>

                        <div class="form-group">
                            <label for="user_id">Select User <span class="text-danger">*</span></label>
                            <select name="user_id" id="user_id" class="form-control" required>
                                <option value="" disabled>Select User</option>
                                @if ($payment->user)
                                    <option value="{{ $payment->user->id }}" selected>
                                        {{ $payment->user->name }} ({{ $payment->user->phone ?? '' }})
                                    </option>
                                @endif
                            </select>
                        </div>
                    </div>
                @endif

                <div class="row row-cols-md-2">
                    <div class="form-group">
                        <label for="payment_type">Payment Type <span class="text-danger">*</span></label>
                        <select class="form-control" name="type" id="payment_type" required>
                            <option disabled>-- Select Payment Type --</option>
                            <option value="cash" {{ $payment->type == 'cash' ? 'selected' : '' }}>Bank Cash</option>
                            <option value="check" {{ $payment->type == 'check' ? 'selected' : '' }}>Bank Check</option>
                            <option value="iban" {{ $payment->type == 'iban' ? 'selected' : '' }}>Bank IBAN</option>
                        </select>
                    </div>

                    <div class="form-group">
                        <label for="">Bank Name</label>
                        <input type="text" name="bank_name" class="form-control" value="{{ $payment->bank_name }}">
                    </div>
                </div>

                <div class="row row-cols-md-2">
                    <div class="form-group">
                        <label for="">Amount (BDT) <span class="text-danger">*</span></label>
                        <input type="number" name="amount" class="form-control" step="0.01"
                            value="{{ $payment->amount }}" required>
                    </div>

                    <div class="form-group">
                        <label for="currency">Currency <span class="text-danger">*</span></label>
                        <select class="form-control" name="currency" required>
                            <option value="BDT" {{ $payment->currency == 'BDT' ? 'selected' : '' }}>BDT</option>
                            <option value="SAR" {{ $payment->currency == 'SAR' ? 'selected' : '' }}>SAR</option>
                        </select>
                    </div>

                    <div class="form-group">
                        <label for="">Transaction id / Check Number <span class="text-danger">*</span></label>
                        <input type="text" name="transaction_id" class="form-control"
                            value="{{ $payment->transaction_id }}">
                    </div>

                    <div class="form-group">
                        <label for="">Payment Date <span class="text-danger">*</span></label>
                        <input type="date" name="paid" class="form-control"
                            value="{{ $payment->paid ? $payment->paid->format('Y-m-d') : '' }}" required>
                    </div>

                    <div class="form-group" style="display: none;">
                        <label for="">Currency rate <span class="text-danger">*</span></label>
                        <input type="number" name="currency_rate" class="form-control" step="0.01"
                            value="{{ $payment->currency_rate }}">
                    </div>

                    <div class="form-group" style="display: none;">
                        <label for="">Total Amount</label>
                        <input type="number" name="total_amount" id="total_amount" class="form-control" step="0.01"
                            value="{{ $payment->total_amount }}" readonly>
                    </div>
                </div>

                <div class="form-group">
                    <label for="">Proof of Payment</label>
                    <input type="file" name="proof" class="form-control">
                    @if ($payment->proof)
                        <small class="text-muted">Current: <a href="{{ asset('storage/' . $payment->proof) }}"
                                target="_blank">View Proof</a></small>
                    @endif
                </div>

                <div class="form-group">
                    <label for="">Additional Info</label>
                    <textarea name="additional" class="form-control" rows="5">{{ $payment->additional }}</textarea>
                </div>

                @if (in_array(auth()->user()->role, [1, 2, 3]))
                    <div class="form-group">
                    <label for="status">Status <span class="text-danger">*</span></label>
                    <select class="form-control" name="status" required>
                        <option value="0" {{ $payment->status == 0 ? 'selected' : '' }}>Pending</option>
                        <option value="1" {{ $payment->status == 1 ? 'selected' : '' }}>Approved</option>
                        <option value="2" {{ $payment->status == 2 ? 'selected' : '' }}>Rejected</option>
                        <option value="3" {{ $payment->status == 3 ? 'selected' : '' }}>Cancelled</option>
                        <option value="4" {{ $payment->status == 4 ? 'selected' : '' }}>Enable Edit</option>
                    </select>
                </div>
                @endif
            
                <button type="submit" class="btn btn-primary mt-3">Update</button>
            </form>
        </div>
    </div>

    <script>
        const paymentType = document.getElementById('payment_type');
        const currencyRate = document.querySelector('input[name="currency_rate"]');
        const amountInput = document.querySelector('input[name="amount"]');
        const totalAmount = document.querySelector('input[name="total_amount"]');
        const currencyRateGroup = currencyRate.closest('.form-group');
        const totalAmountGroup = totalAmount.closest('.form-group');

        function toggleFields() {
            if (paymentType.value === 'iban') {
                currencyRateGroup.style.display = 'block';
                totalAmountGroup.style.display = 'block';
                currencyRate.setAttribute('required', 'required');
            } else {
                currencyRateGroup.style.display = 'none';
                currencyRate.removeAttribute('required');
                currencyRate.value = '';
            }
            calculateTotalAmount(); // Always calculate on toggle
        }

        function calculateTotalAmount() {
            const amount = parseFloat(amountInput.value) || 0;
            const rate = parseFloat(currencyRate.value) || 0;

            if (paymentType.value === 'iban') {
                if (rate > 0) {
                    totalAmount.value = (amount / rate).toFixed(2);
                } else {
                    totalAmount.value = '';
                }
            } else {
                totalAmount.value = amount.toFixed(2);
            }

            // Always show total amount field if there's any amount
            if (amount > 0) {
                totalAmountGroup.style.display = 'block';
            } else {
                totalAmountGroup.style.display = paymentType.value === 'iban' ? 'block' : 'none';
            }
        }

        // Event listeners
        paymentType.addEventListener('change', toggleFields);
        amountInput.addEventListener('input', calculateTotalAmount);
        currencyRate.addEventListener('input', calculateTotalAmount);

        window.addEventListener('DOMContentLoaded', () => {
            toggleFields();
        });
    </script>

    <script>
        const agencySelect = document.getElementById('agency_id');
        const userSelect = document.getElementById('user_id');
        const selectedUserId = "{{ $payment->user_id }}";

        agencySelect.addEventListener('change', function() {
            const agencyId = this.value;
            userSelect.innerHTML = '<option>Loading...</option>';

            fetch(`/admin/payment/get-users/${agencyId}`)
                .then(response => response.json())
                .then(users => {
                    userSelect.innerHTML = '';
                    if (users.length > 0) {
                        userSelect.innerHTML = '<option value="">Select User</option>';
                        users.forEach(user => {
                            const isSelected = user.id == selectedUserId ? 'selected' : '';
                            userSelect.innerHTML += `<option value="${user.id}" ${isSelected}>
                            ${user.name} (${user.phone ?? ''})
                        </option>`;
                        });
                    } else {
                        userSelect.innerHTML = '<option>No users found</option>';
                    }
                })
                .catch(() => {
                    userSelect.innerHTML = '<option>Error loading users</option>';
                });
        });

        // Trigger initial load if agency is already selected
        if (agencySelect.value) {
            agencySelect.dispatchEvent(new Event('change'));
        }
    </script>

@endsection