Вход Регистрация
Файл: upload/pages/feedback/new-feedback.php
Строк: 80
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');

if (!isset(
$user['id'])) {
    
showAlert('Ошибка''fail''Сперва необходимо авторизоваться');
    
RedirectToPage('/');
    exit();
}

$id abs((int)($_GET['id'] ?? 0));
$work_prc FetchAssoc(dbquery("SELECT * FROM `work_processed` WHERE `id` = ?", [$id]));

if (empty(
$work_prc['id'])) {
    
header("HTTP/1.0 404 Not Found");
    include (
$_SERVER['DOCUMENT_ROOT'] . '/pages/err_pages/404.php'); 
    exit();
}

$work_rating FetchAssoc(dbquery("SELECT * FROM `rating` WHERE `k_work` = ?", [$work_prc['k_work']]));
$work FetchAssoc(dbquery("SELECT * FROM `works` WHERE `id` = ?", [$work_prc['k_work']]));
$worker FetchAssoc(dbquery("SELECT * FROM `users` WHERE `id` = ?", [$work_prc['creator']]));
$us_worker FetchAssoc(dbquery("SELECT * FROM `users` WHERE `id` = ?", [$work_prc['worker']]));
$HashNull CryptorHash('0'$work['salt']);
$rating_feedback FetchAssoc(dbquery("SELECT * FROM `rating` WHERE `deal` = ? AND `us` = ? AND `del` = ?", [$id$user['id'], $HashNull]));

if (isset(
$rating_feedback['id'])) {
    
RedirectToPage('/');
    exit();
}

if (
$work_prc['worker'] != $user['id']) {
    
RedirectToPage('/');
    exit();
}

$breadcrumbs generateBreadcrumbs([
    [
'/''Главная'],
    [
'#''Отзыв о заказе']
]);

$page_html $view->render('pages/feedback/new.html', [
    
'breadcrumbs_html' => $breadcrumbs['html'],
    
'breadcrumbs_json' => $breadcrumbs['json_ld'],

    
'csrf' => $_SESSION['csrf_token'],

    
'work' => [
        
'name' => $work['name_work'],
        
'desc' => $work['desc_work']
    ],

    
'worker' => nick($worker['id']),
    
'order_id' => $id,
    
'closed' => vremja($work_prc['time_work'])
]);

if(isset(
$_POST['set'])) {
    
check_csrf();
    
$rating intval($_POST['rating']);
    
$feedback chars($_POST['feedback']);
    
$del CryptorHash('0'$work['salt']);
    
    if(
$work_prc['creator'] == $user['id']) {
        
showAlert('Ошибка''fail''Нельзя оставить отзыв самому себе');
        
ReloadPage();
        exit();
    } else {
        if (
$work_prc['worker'] != $user['id']) {
            
showAlert('Ошибка''fail''Вы не приобретали эту работу');
            
ReloadPage();
            exit();
        } else {
            if (isset(
$rating_feedback['id'])) {
                
showAlert('Ошибка''fail''Вы уже оставили отзыв на эту работу');
                
ReloadPage();
                exit();
            } else {

                
// === 1. Создаём отзыв ===
                
dbquery("INSERT INTO `rating` 
                    SET `worker` = ?, `us` = ?, `rating` = ?, `k_work` = ?, `k_comment` = ?, `deal` = ?, `del` = ?, `salt` = ?"

                    [
$work_prc['creator'], $user['id'], $rating$work['id'], $feedback$id$del$work['salt']]
                );

                
// === 2. Получаем ID созданного отзыва ===
                
$rating_id InGetLastInsertId();

                
// === 3. Сохраняем в историю ===
                
dbquery("
                    INSERT INTO `rating_history`
                    (rating_id, deal, us, worker, rating, k_work, k_comment, created_at, deleted_at)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, NULL)
                "
, [
                    
$rating_id,
                    
$id,
                    
$user['id'],
                    
$work_prc['creator'],
                    
$rating,
                    
$work['id'],
                    
$feedback,
                    
time()
                ]);

                
// === 4. Уведомление исполнителю ===
                
$text =  "[QUOTEMESSAGEROOT][BMESSAGEROOT]Оценил выполнение заказа на {$rating} звезд![/BMESSAGEROOT][/QUOTEMESSAGEROOT]";
                
insertMessage($user['id'], $work_prc['creator'], $text);

                
RedirectToPage('/deal' $id);
            }
        }
    }
}

require_once (
$_SERVER['DOCUMENT_ROOT'] . '/layout.php');
?>

<script>
var labels = document.querySelectorAll("label.star");

labels.forEach(function(label, idx){
    label.addEventListener("click", function(e){
        e.preventDefault();
        let radioButton = document.querySelector(`input[name="rating"][value="${idx + 1}"]`);
        radioButton.checked = true;

        labels.forEach(function(lb, lidx){
            if(lidx <= idx) lb.classList.add("active");
            else lb.classList.remove("active");
        });
    });
});

labels.forEach(function(label, idx){
    label.addEventListener("mouseover", function(){
        labels.forEach(function(lb, lidx){
            if(lidx <= idx) lb.classList.add("active");
            else lb.classList.remove("active");
        });
    });
});

labels.forEach(function(label, idx){
    label.addEventListener("mouseout", function(){
        let currentRating = parseInt(document.querySelector('input[name="rating"]:checked')?.value || 0);
        labels.forEach(function(lb, lidx){
            if(lidx < currentRating) lb.classList.add("active");
            else lb.classList.remove("active");
        });
    });
});
</script>
Онлайн: 0
Реклама