Ignore:
Timestamp:
02/22/26 22:32:07 (7 months ago)
Author:
Klimentina Efremova <klimentina08642@…>
Branches:
finki-main, main
Children:
6fea37e, 81bc7da
Parents:
4dff800
Message:

Improved employee logging in and changing password

File:
1 edited

Legend:

Unmodified
Added
Removed
  • interfejs/store-employee.html

    r4dff800 r79fff4f  
    1818            <li><a href="products.html">Products</a></li>
    1919            <li><a href="#" id="dashboard-link" class="active">Employee</a></li>
     20            <li><a href="change-password.html" class="change-password-btn">🔑 Change Password</a></li>
     21            <li><a href="#" id="logout-link">Logout</a></li>
    2022        </ul>
    2123    </nav>
    … …  
    170172</main>
    171173
     174<!-- Respond to Request Modal -->
    172175<div id="respond-request-modal" class="modal" style="display: none;">
    173176    <div class="modal-content">
    … …  
    176179        <form id="respond-request-form" class="form">
    177180            <input type="hidden" id="respond-request-num">
    178 
    179181            <div class="form-group">
    180182                <label for="request-response">Your Response</label>
    181183                <textarea id="request-response" rows="4" required></textarea>
    182184            </div>
    183 
    184185            <div class="form-group">
    185186                <label for="request-status">Update Status</label>
    … …  
    190191                </select>
    191192            </div>
    192 
    193193            <button type="submit" class="btn-primary">Submit Response</button>
    194194        </form>
    … …  
    196196</div>
    197197
     198<!-- Process Refund Modal -->
    198199<div id="process-refund-modal" class="modal" style="display: none;">
    199200    <div class="modal-content">
    … …  
    202203        <form id="process-refund-form" class="form">
    203204            <input type="hidden" id="process-refund-id">
    204 
    205205            <div class="form-group">
    206206                <label for="refund-action">Action</label>
    … …  
    210210                </select>
    211211            </div>
    212 
    213212            <div class="form-group">
    214213                <label for="refund-notes">Notes</label>
    215214                <textarea id="refund-notes" rows="3"></textarea>
    216215            </div>
    217 
    218216            <button type="submit" class="btn-primary">Process Refund</button>
    219217        </form>
    … …  
    244242    document.addEventListener('DOMContentLoaded', async () => {
    245243        const user = await loadUserData();
     244
    246245        if (!user || user.userType !== 'store_employee') {
    247246            window.location.href = 'index.html';
    … …  
    250249
    251250        document.getElementById('employee-name').textContent = `${user.firstName} ${user.lastName || ''}`;
     251
     252        // Logout functionality
     253        document.getElementById('logout-link').addEventListener('click', async (e) => {
     254            e.preventDefault();
     255            await logout();
     256        });
    252257
    253258        // Load stores
    … …  
    277282                document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
    278283                document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
     284
    279285                btn.classList.add('active');
    280286                document.getElementById(`${btn.dataset.tab}-tab`).classList.add('active');
    … …  
    316322                // Display tasks
    317323                const tasksList = document.getElementById('tasks-list');
     324
    318325                if (data.tasks.pending_orders.length > 0 || data.tasks.pending_requests.length > 0 || data.tasks.pending_refunds.length > 0) {
    319326                    let tasksHtml = '<div class="task-items">';
    … …  
    323330                        data.tasks.pending_orders.forEach(order => {
    324331                            tasksHtml += `
    325                                     <div class="task-item">
    326                                         <p><strong>Order #${order.order_num}</strong> - ${order.first_name} ${order.last_name}</p>
    327                                         <button class="btn-small" onclick="updateOrderStatus('${order.order_num}')">Update Status</button>
    328                                     </div>
    329                                 `;
     332                                <div class="task-item">
     333                                    <p><strong>Order #${order.order_num}</strong> - ${order.first_name} ${order.last_name}</p>
     334                                    <button class="btn-small" onclick="updateOrderStatus('${order.order_num}')">Update Status</button>
     335                                </div>
     336                            `;
    330337                        });
    331338                    }
    … …  
    335342                        data.tasks.pending_requests.forEach(request => {
    336343                            tasksHtml += `
    337                                     <div class="task-item">
    338                                         <p><strong>Request #${request.request_num}</strong> - ${request.first_name} ${request.last_name}</p>
    339                                         <p>${request.problem.substring(0, 50)}${request.problem.length > 50 ? '...' : ''}</p>
    340                                         <button class="btn-small" onclick="respondToRequest('${request.request_num}')">Respond</button>
    341                                     </div>
    342                                 `;
     344                                <div class="task-item">
     345                                    <p><strong>Request #${request.request_num}</strong> - ${request.first_name} ${request.last_name}</p>
     346                                    <p>${request.problem.substring(0, 50)}${request.problem.length > 50 ? '...' : ''}</p>
     347                                    <button class="btn-small" onclick="respondToRequest('${request.request_num}')">Respond</button>
     348                                </div>
     349                            `;
    343350                        });
    344351                    }
    … …  
    348355                        data.tasks.pending_refunds.forEach(refund => {
    349356                            tasksHtml += `
    350                                     <div class="task-item">
    351                                         <p><strong>Refund #${refund.refund_id}</strong> - Order #${refund.order_num}</p>
    352                                         <p>Amount: $${parseFloat(refund.amount).toFixed(2)}</p>
    353                                         <button class="btn-small" onclick="processRefund('${refund.refund_id}')">Process</button>
    354                                     </div>
    355                                 `;
     357                                <div class="task-item">
     358                                    <p><strong>Refund #${refund.refund_id}</strong> - Order #${refund.order_num}</p>
     359                                    <p>Amount: $${parseFloat(refund.amount).toFixed(2)}</p>
     360                                    <button class="btn-small" onclick="processRefund('${refund.refund_id}')">Process</button>
     361                                </div>
     362                            `;
    356363                        });
    357364                    }
    … …  
    374381
    375382            const tbody = document.getElementById('orders-list');
     383
    376384            if (data.success && data.orders.length > 0) {
    377385                tbody.innerHTML = data.orders.map(order => {
    378386                    const total = order.items ? order.items.reduce((sum, item) =>
    379387                        sum + (item.price * item.quantity), 0) : 0;
     388
    380389                    return `
    381                             <tr>
    382                                 <td>${order.order_num}</td>
    383                                 <td>${order.first_name} ${order.last_name}</td>
    384                                 <td>${new Date(order.order_date).toLocaleDateString()}</td>
    385                                 <td><span class="status-badge status-${order.status}">${order.status}</span></td>
    386                                 <td>$${total.toFixed(2)}</td>
    387                                 <td>
    388                                     <button class="btn-small" onclick="updateOrderStatus('${order.order_num}')">Update</button>
    389                                     <button class="btn-small" onclick="viewOrderDetails('${order.order_num}')">View</button>
    390                                 </td>
    391                             </tr>
    392                         `;
     390                        <tr>
     391                            <td>${order.order_num}</td>
     392                            <td>${order.first_name} ${order.last_name}</td>
     393                            <td>${new Date(order.order_date).toLocaleDateString()}</td>
     394                            <td><span class="status-badge status-${order.status}">${order.status}</span></td>
     395                            <td>$${total.toFixed(2)}</td>
     396                            <td>
     397                                <button class="btn-small" onclick="updateOrderStatus('${order.order_num}')">Update</button>
     398                                <button class="btn-small" onclick="viewOrderDetails('${order.order_num}')">View</button>
     399                            </td>
     400                        </tr>
     401                    `;
    393402                }).join('');
    394403            } else {
    … …  
    417426
    418427            const tbody = document.getElementById('products-list');
     428
    419429            if (data.success && data.products.length > 0) {
    420430                tbody.innerHTML = data.products.map(product => `
    421                         <tr>
    422                             <td>${product.code}</td>
    423                             <td>${product.description.substring(0, 30)}${product.description.length > 30 ? '...' : ''}</td>
    424                             <td>$${parseFloat(product.price).toFixed(2)}</td>
    425                             <td>${product.availability}</td>
    426                             <td>
    427                                 <button class="btn-small" onclick="viewProduct('${product.code}')">View</button>
    428                             </td>
    429                         </tr>
    430                     `).join('');
     431                    <tr>
     432                        <td>${product.code}</td>
     433                        <td>${product.description.substring(0, 30)}${product.description.length > 30 ? '...' : ''}</td>
     434                        <td>$${parseFloat(product.price).toFixed(2)}</td>
     435                        <td>${product.availability}</td>
     436                        <td>
     437                            <button class="btn-small" onclick="viewProduct('${product.code}')">View</button>
     438                        </td>
     439                    </tr>
     440                `).join('');
    431441            } else {
    432442                tbody.innerHTML = '<tr><td colspan="5">No products found</td></tr>';
Note: See TracChangeset for help on using the changeset viewer.