Subversion Repositories SmartDukaan

Rev

Rev 35268 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<!-- offer_scratch.vm -->
<style>
    .gift-row td {
        vertical-align: top !important;
    }

    .dynamic-table {
        margin-top: 15px;
    }

    .date-picker {
        background: white !important;
        cursor: pointer;
    }

    body.modal-open {
        overflow: hidden;
    }

</style>

<style>
    /* The switch container */
    .switch-small {
        position: relative;
        display: inline-block;
        width: 40px;
        height: 20px;
    }

    /* Hide default HTML checkbox */
    .switch-small input {
        opacity: 0;
        width: 0;
        height: 0;
    }

    /* The slider */
    .slider-small {
        position: absolute;
        cursor: pointer;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: #ccc;
        transition: .4s;
    }

    /* The slider knob */
    .slider-small:before {
        position: absolute;
        content: "";
        height: 16px;
        width: 16px;
        left: 2px;
        bottom: 2px;
        background-color: white;
        transition: .4s;
    }

    /* Change background when checked (blue by default) */
    .switch-small input:checked + .slider-small {
        background-color: #2196F3;
    }

    /* Focus effect */
    .switch-small input:focus + .slider-small {
        box-shadow: 0 0 1px #2196F3;
    }

    /* Move the slider knob when checked */
    .switch-small input:checked + .slider-small:before {
        transform: translateX(20px);
    }

    /* Rounded slider */
    .slider-small.round {
        border-radius: 20px;
    }

    .slider-small.round:before {
        border-radius: 50%;
    }

    .switch-small input:checked + .slider-small {
        background-color: #28a745; /* Bright green for active */
    }

    .switch-small input:not(:checked) + .slider-small {
        background-color: #dc3545; /* Bright red for inactive */
    }

</style>

<section class="wrapper">
    <div class="row">
        <div class="col-lg-12">
            <h3 class="page-header"><i class="fa fa-gift"></i> Scratch Offers</h3>
            <ol class="breadcrumb">
                <li><i class="fa fa-home"></i><a href="${rc.contextPath}/dashboard">Home</a></li>
                <li><i class="fa fa-gift"></i>Offers</li>
                <li class="pull-right">
                    <button class="btn btn-primary new-offer-btn" data-toggle="modal" data-target="#offerModal">
                        <i class="fa fa-plus-circle"></i> Create New Offer
                    </button>
                </li>
            </ol>
        </div>
    </div>
    <div class="table-responsive">
        <table class="table table-striped table-bordered" id="scratchOfferTable">
            <thead>
            <tr>
                <th>Offer Name</th>
                <th>Offer Type</th>
                <th>Scratch Validity</th>
                <th>Offer Duration</th>
                <th>Offer Classification</th>
                <th>Offer Image</th>
                <th>Active</th>
                <th>Action</th>
            </tr>
            </thead>
            <tbody>
                #foreach($offer in $offerList)
                <tr>
                    <td>$offer.name</td>
                    <td>$offer.offerType</td>
                    <td>$offer.scratchValidity Days</td>
                    <td>$offer.startDate - $offer.endDate</td>
                    <td>$offer.classification</td>
                    <td>
                        #foreach($imageId in $offer.offerImage.split(","))
                            <img src="/document/$imageId" width="50" style="margin: 2px;">
                        #end
                    </td>
                    <td>
                        <label class="switch-small" data-offer-id="$offer.id">
                            <input type="checkbox" name="isActive" #if($offer.active) checked #end>
                            <span class="slider-small round"></span>
                        </label>
                    </td>

                    <td class="text-center align-middle">
                        <button class="delete-offer btn btn-sm btn-danger" value="$offer.id">
                            <i class="fa fa-trash"></i>
                        </button>
                        <button class="edit-offer btn btn-sm btn-primary" data-toggle="modal"
                                data-target="#editOfferModal" value="$offer.id"><i class="fa fa-pencil-square-o"></i>
                        </button>
                    </td>
                </tr>
                #end
            </tbody>
        </table>
    </div>
</section>
<div class="modal fade" id="offerModal" tabindex="-1" role="dialog" style="height: auto; overflow-y: scroll">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Create New Scratch Offer</h4>
            </div>
            <div class="modal-body">
                <form id="offerForm">
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <label>Offer Name <span class="text-danger">*</span> </label>
                                <input type="text" class="form-control" name="name" required placeholder="Offer Name">
                            </div>
                            <div class="form-group">
                                <label>Description <span class="text-danger">*</span></label>
                                <textarea class="form-control" name="description" rows="3"
                                          placeholder="Short description visible to customers"></textarea>
                            </div>
                            <div class="form-group">
                                <label>Offer Images <span class="text-danger">*</span></label>
                                <small class="text-danger text-small"> Multiple Images Accepted</small>
                                <div class="offer-images-container">
                                    <div class="offer-image-entry">
                                        <input type="file" class="form-control offer-image-file"
                                               accept="image/*" multiple required>
                                        <input type="hidden" class="offer-image-id" name="offerImageIds[]">
                                    </div>
                                </div>

                            </div>
                        </div>

                        <div class="col-md-6">
                            <div class="form-group">
                                <label>Offer Period <span class="text-danger">*</span></label>
                                <div class="input-daterange input-group">
                                    <input type="date" class="form-control date-picker" name="start_date" required>
                                    <span class="input-group-addon">to</span>
                                    <input type="date" class="form-control date-picker" name="end_date" required>
                                </div>
                            </div>
                            <div class="form-group">
                                <label>Product Category <span class="text-danger">*</span></label>
                                <select class="form-control" name="productCategory" multiple required>
                                    #foreach($category in $categoryList)
                                        <option value="$category.id">$category.displayName</option>
                                    #end
                                </select>
                            </div>
                            <div class="form-group">
                                <label>Payment Method <span class="text-danger">*</span></label>
                                <select class="form-control" name="paymentMethod" required multiple>
                                    #foreach($paymentMethod in $paymentMethods)
                                        <option value="$paymentMethod">$paymentMethod</option>
                                    #end
                                </select>
                            </div>
                            <div class="form-group">
                                <label>Offer Classification <span class="text-danger">*</span></label>
                                <select class="form-control classification" name="classification" required>
                                    <option selected disabled value="">Select Classification</option>
                                    #foreach($classification in $classifications)
                                        <option value="$classification">$classification</option>
                                    #end
                                </select>
                            </div>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <label>User Limit <span class="text-danger">*</span></label>
                                <input type="number" class="form-control" name="userLimit"
                                       placeholder="Max redemptions per day">
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <label>Scratch Validity (Days) <span class="text-danger">*</span></label>
                                <input type="number" class="form-control" name="scratchValidity"
                                       placeholder="Scratch Validity">
                            </div>
                        </div>
                    </div>
                    <div class="form-check form-switch hidden">
                        <p class="">Offer Status</p>
                        <input
                                class="form-check-input"
                                type="checkbox"
                                id="flexSwitchCheckActive"
                                name="isActive"
                                checked>
                        <label class="form-check-label" for="flexSwitchCheckActive">
                            Active
                        </label>
                    </div>


                    <div class="table-responsive">
                        <table class="table dynamic-table">
                            <thead>
                            <tr>
                                <th colspan="2">Gift Configuration</th>
                                <th colspan="3" class="text-end">
                                    <button type="button" class="btn btn-sm btn-success add-gift">
                                        <i class="fa fa-plus"></i> Add Gift
                                    </button>
                                </th>
                            </tr>
                            <tr>
                                <th colspan="2">Basic Information</th>
                                <th colspan="3">Additional Details</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr class="gift-row">
                                <!-- First Column -->
                                <td colspan="2">
                                    <div class="mb-3">
                                        <label class="fw-bold"> <strong class="text-black">Default</strong></label>
                                        <input type="radio" name="defaultGift" class="default-gift-radio" checked>
                                    </div>
                                    <div class="row">
                                        <div class="col-md-12 mb-3">
                                            <label>Gift Name <span class="text-danger">*</span></label>
                                            <input type="text" class="form-control gift-name" name="name"
                                                   placeholder="Gift Name" required>
                                        </div>
                                    </div>
                                    <div class="row">
                                        <div class="col-md-6 mb-3">
                                            <label>Min Cart Value <span class="text-danger">*</span></label>
                                            <input type="number" step="0.01" class="form-control gift-min-cart"
                                                   name="minCartValue" placeholder="Min Cart Value" required>
                                        </div>
                                        <div class="col-md-6 mb-3">
                                            <label>Max Cart Value <span class="text-danger">*</span></label>
                                            <input type="number" step="0.01" class="form-control gift-max-cart"
                                                   name="maxCartValue" placeholder="Max Cart Value" required>
                                        </div>
                                    </div>
                                    <div class="row">

                                        <div class="col-md-6 mb-3">
                                            <label>Gift Quantity <span class="text-danger">*</span></label>
                                            <input type="number" class="form-control gift-redemptions"
                                                   name="maxRedemptions" placeholder="Gift Quantity" required>
                                        </div>
                                        <div class="mb-3 col-md-6">
                                            <label> Select Partner Store OR <span class="text-danger">*</span></label>
                                            <select class="form-control partnerInfo mb-2" name="partnerInfo" multiple>
                                                #foreach($retailer in $retailerInfo)
                                                    <option value="$retailer.getPartnerId()">$retailer.getBusinessName()</option>
                                                #end
                                            </select>
                                        </div>
                                    </div>
                                </td>
                                <!-- Second Column -->
                                <td colspan="3">
                                    <div class="mb-3">
                                        <label>Gift Image <span class="text-danger">*</span></label>
                                        <input type="file" class="form-control gift-thumbnail-file" accept="image/*"
                                               required>
                                        <input type="hidden" class="gift-thumbnail-id" name="thumbnailDocumentId">
                                    </div>
                                    <div class="mb-3">
                                        <label>Product Category <span class="text-danger ">*</span></label>
                                        <select class="form-control gift-product-category" name="productCategory"
                                                multiple required>

                                            #foreach($category in $categoryList)
                                                <option value="$category.id">$category.displayName</option>
                                            #end
                                        </select>
                                    </div>
                                    <div class="mb-3 ">
                                        <label for="fofo-store-id" class="text-center">Upload CSV</label>
                                        <input type="file" class="form-control fofo-store-file mt-2" accept=".csv">
                                        <input type="hidden" class="fofo-store-id" name="fofoStore">
                                        <small class="text-muted">CSV format: S.No,Partner Name,FofoId,Code</small>
                                    </div>
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </div>

                    <div class="form-group">
                        <label>Terms & Conditions <span class="text-danger">*</span></label>
                        <textarea class="form-control" name="termsCondition" rows="3"
                                  placeholder="Terms & Conditions"></textarea>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary submit-offer">Save Offer</button>
            </div>
        </div>
    </div>
</div>
<div class="modal fade" id="editOfferModal" tabindex="-1" role="dialog" style="height: auto; overflow-y: scroll">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content modal-dialog-scrollable" id="edit-modal-content">

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

<script>
    $(function () {
        initMultiselect('select[name="productCategory"]', 'Categories')
        initMultiselect('select[name="partnerInfo"]', 'Partner')
        initMultiselect('select[name="paymentMethod"]', 'Payment method')
    })
    $(document).on('change', '.partnerInfo', function () {
        const partnerSelect = $(this);
        const csvInput = partnerSelect.closest('tr').find('.fofo-store-file');

        if (partnerSelect.val() && partnerSelect.val().length > 0) {
            // Partner selected → disable CSV
            csvInput.prop('disabled', true).val('');
        } else {
            // No partner selected → enable CSV
            csvInput.prop('disabled', false);
        }
    });

</script>
<script>
    $(function () {
        $('#scratchOfferTable').DataTable({
            "bPaginate": true,
            "bLengthChange": true,
            "bFilter": true,
            "bInfo": false,
            "bAutoWidth": false,
            "pageLength": 20,
        });
    });

    $(document).on('change', '.default-gift-radio', function () {
        if ($(this).is(':checked')) {
            $('.default-gift-radio').not(this).prop('checked', false);
        }
    });

</script>