# -*- coding: utf-8 -*-
from odoo import http, _
from odoo.http import request


class HelpdeskRating(http.Controller):

    @http.route(
        ['/helpdesk/rate/<int:ticket_id>/<string:token>'],
        type='http',
        auth='public',
        website=True,
        methods=['GET', 'POST'],
        csrf=True,
    )
    def helpdesk_rate_ticket(self, ticket_id, token, **post):
        ticket = request.env['so.helpdesk.ticket'].sudo().browse(ticket_id)
        if not ticket.exists() or ticket.access_token != token:
            return request.render('so_helpdesk.rating_invalid', {})
        if request.httprequest.method == 'POST':
            score = post.get('rating')
            feedback = post.get('feedback', '')
            try:
                ticket.submit_rating(score, feedback)
            except Exception:
                return request.render('so_helpdesk.rating_invalid', {'ticket': ticket})
            return request.render('so_helpdesk.rating_thanks', {'ticket': ticket, 'score': score})
        return request.render('so_helpdesk.rating_form', {
            'ticket': ticket,
            'token': token,
        })
