<?php echo $__env->make('admin.layouts.header', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>
<?php echo $__env->make('admin.layouts.sidebar', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>
<div class="m-grid__item m-grid__item--fluid m-wrapper">
    <div class="m-subheader ">
        <div class="d-flex align-items-center">
            <div class="mr-auto">
                <h3 class="m-subheader__title m-subheader__title--separator">
                    Odoo JVs
                </h3>
            </div>
        </div>
    </div>
    <div class="m-content">
        <?php if(Session::has('success')): ?>
            <div class="alert alert-success alert-dismissible fade show" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close"></button>
                <?php echo e(Session::get('success')); ?>

            </div>
        <?php endif; ?>
        <?php if(Session::has('error')): ?>
            <div class="alert alert-danger alert-dismissible fade show" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close"></button>
                <?php echo e(Session::get('error')); ?>

            </div>
        <?php endif; ?>

        <div class="m-portlet m-portlet--mobile">
            <div class="m-portlet__head">
                <div class="m-portlet__head-caption">
                    <div class="m-portlet__head-title">
                        <h3 class="m-portlet__head-text">
                            Disbursed Applications
                        </h3>
                    </div>
                </div>
            </div>
            <div class="m-portlet__body">
                <!-- Date Filters -->
                <form method="GET" action="<?php echo e(url('/admin/odoo/jvs')); ?>" class="mb-4">
                    <div class="row">
                        <div class="col-md-3">
                            <label>From Date</label>
                            <input type="date" class="form-control" name="from_date" value="<?php echo e($fromDate ?? ''); ?>">
                        </div>
                        <div class="col-md-3">
                            <label>To Date</label>
                            <input type="date" class="form-control" name="to_date" value="<?php echo e($toDate ?? ''); ?>">
                        </div>
                        <div class="col-md-4" style="margin-top: 28px;">
                            <button type="submit" class="btn btn-primary">Filter</button>
                            <a href="<?php echo e(url('/admin/odoo/jvs')); ?>" class="btn btn-secondary">Reset</a>
                        </div>
                    </div>
                </form>

                <!-- Data Table -->
                <div class="table-responsive">
                    <table class="table table-bordered table-hover">
                        <thead>
                            <tr>
                                <th style="width: 40px;"></th>
                                <th>Loan No.</th>
                                <th>Member Name</th>
                                <th>Partner Name</th>
                            </tr>
                        </thead>
                        <tbody id="jvs-accordion">
                            
                            <?php $__empty_1 = true; $__currentLoopData = $applications; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $app): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
                                <!-- Main Row -->
                                <tr class="accordion-toggle" style="cursor: pointer;" data-toggle="collapse" data-target="#collapse-<?php echo e($app->id); ?>" aria-expanded="false">
                                    <td class="text-center align-middle">
                                        <i class="la la-plus-circle toggle-icon text-primary" style="font-size: 1.3rem;"></i>
                                    </td>
                                    <td class="align-middle font-weight-bold"><?php echo e($app->loan_no ?? $app->id); ?></td>
                                    <td class="align-middle"><?php echo e($app->member_name ?? '—'); ?></td>
                                    <td class="align-middle"><?php echo e($app->partner->name ?? $app->partner_id ?? '—'); ?></td>
                                </tr>

                                <!-- Collapsible Detail Row -->
                                <tr>
                                    <td colspan="4" class="p-0 border-0">
                                        <div id="collapse-<?php echo e($app->id); ?>" class="collapse jv-collapse" data-app-id="<?php echo e($app->id); ?>" data-parent="#jvs-accordion">
                                            <div class="p-4" style="background-color: #f8f9fa;">
                                                <div class="card border shadow-sm mb-0">
                                                    <div class="card-header bg-light py-2 d-flex justify-content-between align-items-center">
                                                        <strong class="text-dark"><i class="la la-tasks"></i> JV Steps Summary &mdash; Loan No: <?php echo e($app->loan_no ?? $app->id); ?></strong>
                                                        <div class="d-flex align-items-center">
                                                            <select class="form-control form-control-sm mr-2 jv-month-filter" style="width: 130px; height: 30px; padding: 2px 8px;">
                                                                <option value="">Select Month</option>
                                                                <option value="01">January</option>
                                                                <option value="02">February</option>
                                                                <option value="03">March</option>
                                                                <option value="04">April</option>
                                                                <option value="05">May</option>
                                                                <option value="06">June</option>
                                                                <option value="07">July</option>
                                                                <option value="08">August</option>
                                                                <option value="09">September</option>
                                                                <option value="10">October</option>
                                                                <option value="11">November</option>
                                                                <option value="12">December</option>
                                                            </select>
                                                            <select class="form-control form-control-sm jv-year-filter" style="width: 100px; height: 30px; padding: 2px 8px;">
                                                                <option value="">Select Year</option>
                                                                <option value="2024">2024</option>
                                                                <option value="2025">2025</option>
                                                                <option value="2026">2026</option>
                                                                <option value="2027">2027</option>
                                                                <option value="2028">2028</option>
                                                            </select>
                                                        </div>
                                                    </div>
                                                    <div class="card-body p-0 jv-steps-container" style="overflow-y: scroll;height: 310px;">
                                                        <div class="d-flex justify-content-center align-items-center" style="height: 100%; min-height: 200px;">
                                                            <div class="text-center py-4">
                                                                <div class="spinner-border text-primary" role="status">
                                                                    <span class="sr-only">Loading...</span>
                                                                </div>
                                                                <p class="mt-2 text-muted">Loading JV steps...</p>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </td>
                                </tr>
                            <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
                                <tr>
                                    <td colspan="4" class="text-center">No disbursed applications found.</td>
                                </tr>
                            <?php endif; ?>
                        </tbody>
                    </table>
                </div>

                <div class="mt-3">
                    <?php echo e($applications->appends(request()->query())->links()); ?>

                </div>
            </div>
        </div>

    </div>
</div>

<?php echo $__env->make("admin.layouts.footer", array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>

<script>
    $(document).ready(function() {
        // Enforce only one open row at a time by hiding all other open collapse drawers
        $('#jvs-accordion').on('click', '.accordion-toggle', function() {
            var targetId = $(this).data('target');
            $('#jvs-accordion .collapse').not(targetId).collapse('hide');
        });

        // Handle accordion icon state changes when rows expand/collapse and load steps via AJAX
        $('#jvs-accordion').on('show.bs.collapse', '.collapse', function() {
            // Reset all toggle icons in accordion to plus-circle
            $('#jvs-accordion .toggle-icon').removeClass('la-minus-circle text-danger').addClass('la-plus-circle text-primary');
            // Change current expanding row toggle icon to minus-circle
            var targetId = $(this).attr('id');
            $('tr[data-target="#' + targetId + '"]').find('.toggle-icon').removeClass('la-plus-circle text-primary').addClass('la-minus-circle text-danger');

            var collapseDiv = $(this);
            if (collapseDiv.data('loaded') === true) {
                return;
            }
            loadJvSteps(collapseDiv);
        }).on('hide.bs.collapse', '.collapse', function() {
            var targetId = $(this).attr('id');
            $('tr[data-target="#' + targetId + '"]').find('.toggle-icon').removeClass('la-minus-circle text-danger').addClass('la-plus-circle text-primary');
        });

        function loadJvSteps(collapseDiv) {
            var appId = collapseDiv.data('app-id');
            var container = collapseDiv.find('.jv-steps-container');
            var monthVal = collapseDiv.find('.jv-month-filter').val();
            var yearVal = collapseDiv.find('.jv-year-filter').val();

            if (collapseDiv.data('loading') === true) {
                return;
            }

            collapseDiv.data('loading', true);
            container.html(`
                <div class="d-flex justify-content-center align-items-center" style="height: 100%; min-height: 200px;">
                    <div class="text-center py-4">
                        <div class="spinner-border text-primary" role="status">
                            <span class="sr-only">Loading...</span>
                        </div>
                        <p class="mt-2 text-muted">Loading JV steps...</p>
                    </div>
                </div>
            `);

            $.ajax({
                url: '/admin/odoo/get_jv_steps',
                type: 'GET',
                data: {
                    application_id: appId,
                    month: monthVal,
                    year: yearVal
                },
                success: function(response) {
                    collapseDiv.data('loading', false);
                    if (response.status === 'success') {
                        collapseDiv.data('loaded', true);
                        renderJvSteps(container, response.data, appId);
                    } else {
                        container.html('<div class="p-3 text-danger">Failed to load JV steps.</div>');
                    }
                },
                error: function(xhr) {
                    collapseDiv.data('loading', false);
                    var errorMsg = 'Failed to load JV steps';
                    if (xhr.responseJSON && xhr.responseJSON.message) {
                        errorMsg = xhr.responseJSON.message;
                    }
                    container.html('<div class="p-3 text-danger">Error: ' + errorMsg + '</div>');
                }
            });
        }

        // Handle filter selection change inside the collapsible title bar
        $('#jvs-accordion').on('change', '.jv-month-filter, .jv-year-filter', function(e) {
            e.stopPropagation();
            var collapseDiv = $(this).closest('.collapse');
            collapseDiv.data('loaded', false);
            loadJvSteps(collapseDiv);
        });

        // Prevent collapse state toggle when clicking on select filters inside the card header
        $('#jvs-accordion').on('click', '.jv-month-filter, .jv-year-filter', function(e) {
            e.stopPropagation();
        });

        function renderJvSteps(container, data, appId) {
            let html = '';
            
            if (!data || data.length === 0) {
                container.html('<div class="p-3 text-muted">No JV steps found.</div>');
                return;
            }
            
            data.forEach(function(section) {
                html += `
                    <div class="px-3 pt-3 pb-1">
                        <h6 class="text-uppercase font-weight-bold text-primary mb-2" style="letter-spacing: .05em; font-size: .8rem;">
                            <i class="la la-folder-open mr-1"></i>${section.section}
                        </h6>
                    </div>
                `;
                
                section.steps.forEach(function(step) {
                    let btnClass = 'btn-info';
                    let btnText = '<i class="la la-play"></i> Initiate';
                    let btnDisabled = '';
                    let errorHtml = '';
                    let statusBadgeClass = 'm-badge--secondary';
                    let statusBadgeText = 'Pending';
                    
                    if (step.is_completed) {
                        btnClass = 'btn-success';
                        btnText = '<i class="la la-check"></i> Completed';
                        btnDisabled = 'disabled';
                        statusBadgeClass = 'm-badge--success';
                        statusBadgeText = 'Completed';
                    } else if (step.is_mismatch) {
                        btnClass = 'btn-danger';
                        btnDisabled = 'disabled';
                        errorHtml = `<span class="text-danger font-weight-bold mr-3" style="font-size: 0.85rem;"><i class="la la-exclamation-triangle"></i> Amount mismatch</span>`;
                    }
                    
                    html += `
                        <div class="px-3 pb-3">
                            <div class="d-flex justify-content-between align-items-center mb-1">
                                <span class="badge badge-secondary" style="font-size: .78rem;">${step.voucher_type}</span>
                                <div class="d-flex align-items-center">
                                    ${errorHtml}
                                    <span class="m-badge ${statusBadgeClass} m-badge--wide mr-2 jv-status-badge">${statusBadgeText}</span>
                                    <button class="btn btn-sm ${btnClass} btn-initiate-jv"
                                            data-id="${appId}"
                                            data-step="${step.id}"
                                            data-jvid="${step.id}"
                                            ${btnDisabled}>
                                        ${btnText}
                                    </button>
                                </div>
                            </div>
                            
                            <table class="table table-sm table-bordered mb-0" style="font-size: .85rem;">
                                <tbody>
                    `;
                    
                    step.entries.forEach(function(entry) {
                        let typeColor = entry.type === 'Dr' ? '#1a6fc4' : '#c41a1a';
                        let debitFormatted = entry.debit > 0 ? entry.debit.toLocaleString('en-IN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : '-';
                        let creditFormatted = entry.credit > 0 ? entry.credit.toLocaleString('en-IN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : '-';
                        let summaryHtml = entry.summary ? `<i class="la la-info-circle text-info ml-1" data-toggle="tooltip" data-placement="top" title="${entry.summary}" style="cursor: pointer;"></i>` : '';
                        
                        html += `
                                    <tr>
                                        <td class="text-center font-weight-bold" style="width: 36px; color: ${typeColor};">
                                            ${entry.type}
                                        </td>
                                        <td>${entry.account}${summaryHtml}</td>
                                        <td class="text-right" style="width: 140px;">${debitFormatted}</td>
                                        <td class="text-right" style="width: 140px;">${creditFormatted}</td>
                                    </tr>
                        `;
                    });
                    
                    html += `
                                </tbody>
                            </table>
                        </div>
                    `;
                });
            });
            
            container.html(html);
            container.find('[data-toggle="tooltip"]').tooltip();
        }

        // Handle Initiate button click to trigger JV API call with jv id
        // Uses event delegation so buttons added dynamically are also captured
        $('#jvs-accordion').on('click', '.btn-initiate-jv', function(e) {
            e.preventDefault();
            e.stopPropagation(); // prevent row collapse toggle when clicking initiate
            var btn = $(this);
            var appId  = btn.data('id');
            var stepKey = btn.data('step');
            var jvId   = btn.data('jvid');
            var statusBadge = btn.closest('.d-flex').find('.jv-status-badge');
            
            var monthVal = btn.closest('.collapse').find('.jv-month-filter').val();
            var yearVal = btn.closest('.collapse').find('.jv-year-filter').val();

            btn.addClass('m-loader m-loader--right m-loader--light').attr('disabled', true);

            $.ajax({
                url: '/admin/odoo/create_jv',
                type: 'POST',
                data: {
                    _token: '<?php echo e(csrf_token()); ?>',
                    application_id: appId,
                    step_key: stepKey,
                    jv_id: jvId,
                    month: monthVal,
                    year: yearVal
                },
                success: function(response) {
                    alert('JV created successfully (ID: ' + jvId + ')\nMessage: ' + (response.message || 'Success'));
                    btn.removeClass('btn-info btn-danger m-loader m-loader--right m-loader--light')
                       .addClass('btn-success')
                       .html('<i class="la la-check"></i> Completed')
                       .attr('disabled', true);
                    if (statusBadge.length) {
                        statusBadge.removeClass('m-badge--secondary m-badge--danger')
                                   .addClass('m-badge--success')
                                   .text('Completed');
                    }
                },
                error: function(xhr) {
                    var errorMsg = 'Failed to create JV';
                    if (xhr.responseJSON && xhr.responseJSON.message) {
                        errorMsg = xhr.responseJSON.message;
                    } else if (xhr.responseJSON && xhr.responseJSON.error) {
                        errorMsg = typeof xhr.responseJSON.error === 'string' ? xhr.responseJSON.error : JSON.stringify(xhr.responseJSON.error);
                    }
                    alert('Error: ' + errorMsg);
                    btn.removeClass('m-loader m-loader--right m-loader--light').attr('disabled', false);
                }
            });
        });
    });
</script>
