diff --git a/logs_collector/collector/static/collector/js/jq.ticket.detail.js b/logs_collector/collector/static/collector/js/jq.ticket.detail.js
index abf74bd..036aef1 100644
--- a/logs_collector/collector/static/collector/js/jq.ticket.detail.js
+++ b/logs_collector/collector/static/collector/js/jq.ticket.detail.js
@@ -32,15 +32,20 @@ $(function () {
     $("#ticket-state").click(function () { 
         console.log('Press');
         let resolved = false;
-        if ($(this).attr("checked")) {
+        let ticket_state_url = $(this).attr("ticket-state-url")
+        if ($(this).attr("ticket-state-switch") === "1") {
             console.log('Find it!!!')
-            resolved = true;   
+            resolved = true;
+            $(this).attr("ticket-state-switch", "0");  // disable
+
         } else {
             resolved = false;
+            $(this).attr("ticket-state-switch", "1");  // enable
         }
+        console.log(resolved)
         $.ajax({
             type: "post",
-            url: $(this).attr("ticket-state-url"),
+            url: ticket_state_url,
             headers: {
                 "X-CSRFToken":CSRF,
                 "Content-Type":"application/json"
diff --git a/logs_collector/collector/templates/collector/ticket.html b/logs_collector/collector/templates/collector/ticket.html
index 9a66987..0138d0c 100644
--- a/logs_collector/collector/templates/collector/ticket.html
+++ b/logs_collector/collector/templates/collector/ticket.html
@@ -20,7 +20,8 @@
                 type="checkbox"
                 role="switch"
                 id="ticket-state"
-                ticket-state-url="{% url 'ticket' ticket.platform ticket.number %}"
+                ticket-state-url="{% url 'ajax_update_state_ticket' ticket.platform ticket.number %}"
+                {% if ticket.resolved %} ticket-state-switch="1" {% endif %}
                 {% if ticket.resolved %} checked {% endif %}>
             </div>
             <div class="col-xl-6 mb-2">
@@ -156,7 +157,7 @@
                 >Cancel</button>
                 <a
                   type="button"
-                  href="{% url 'delete' ticket.number %}"
+                  href="{% url 'ajax_delete_ticket' ticket.number %}"
                   class="btn btn-danger btn-ticket-del"
                   data-bs-dismiss="modal"
                   data-jq-ticket-del-redirect="{% url 'tickets' %}"
diff --git a/logs_collector/collector/urls.py b/logs_collector/collector/urls.py
index 4c21d87..38b4784 100644
--- a/logs_collector/collector/urls.py
+++ b/logs_collector/collector/urls.py
@@ -4,6 +4,12 @@ from . import views
 
 
 urlpatterns = [
+
+    # █░█░█ █▀▀ █▄▄
+    # ▀▄▀▄▀ ██▄ █▄█
+    # -- -- -- -- --
+
+    # READ:
     path(
         '',
         views.ListAllTickets.as_view(),
@@ -24,14 +30,26 @@ urlpatterns = [
         views.DetailTicket.as_view(),
         name='ticket'
     ),
-    path(
-        'tickets/delete/<int:ticket>/',
-        views.AjaxDeleteTicketHandler.as_view(),
-        name='delete'
-    ),
     path(
         'archives/<path:path>',
         views.ArchiveHandlerView.as_view(),
         name="download"
     ),
+
+    # ▄▀█ ░░█ ▄▀█ ▀▄▀
+    # █▀█ █▄█ █▀█ █░█
+    # -- -- -- -- --
+
+    # UPDATE:
+    path(
+        'ajax/tickets/update/<slug:platform>/<int:ticket>/',
+        views.UpdateTicketStateHandler.as_view(),
+        name='ajax_update_state_ticket'
+    ),
+    # DELETE:
+    path(
+        'ajax/tickets/delete/<int:ticket>/',
+        views.DeleteTicketHandler.as_view(),
+        name='ajax_delete_ticket'
+    ),
 ]
diff --git a/logs_collector/collector/utils.py b/logs_collector/collector/utils.py
index 1a10837..9ac6bcd 100644
--- a/logs_collector/collector/utils.py
+++ b/logs_collector/collector/utils.py
@@ -19,5 +19,5 @@ def get_file_size(file_path, unit='bytes'):
 
 
 def is_ajax(request):
-    if request.headers.get('x-requested-with') == 'XMLHttpRequest':
+    if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
         return True
diff --git a/logs_collector/collector/views.py b/logs_collector/collector/views.py
index 8a0e4a1..4375e06 100644
--- a/logs_collector/collector/views.py
+++ b/logs_collector/collector/views.py
@@ -1,9 +1,8 @@
 import json
-# from django.shortcuts import render, redirect
 from django.contrib.auth.mixins import LoginRequiredMixin
-from django.http import FileResponse, HttpResponseNotAllowed, JsonResponse
+from django.http import FileResponse, JsonResponse
 from django.views import generic
-from django.shortcuts import get_object_or_404
+from django.views.generic.detail import SingleObjectMixin
 from django.urls import reverse_lazy
 
 from rest_framework import status
@@ -13,30 +12,20 @@ from .models import Archive, Ticket, Platform
 from .utils import is_ajax
 
 
-class ArchiveHandlerView(LoginRequiredMixin, generic.View):
+class ArchiveHandlerView(LoginRequiredMixin, SingleObjectMixin, generic.View):
+    model = Archive
+    slug_field = 'file'
+    slug_url_kwarg = 'path'
+
     def get(self, request, path):
-        file = get_object_or_404(Archive, file=path)
-        return FileResponse(file.file)
+        self.object = self.get_object()
+        return FileResponse(self.object.file)
 
     def delete(self, request, path):
-        try:
-            file = Archive.objects.get(file=path)
-            file.delete()
-            return JsonResponse(
-                {
-                    'file': path,
-                    'status': status.HTTP_200_OK
-                },
-                status=status.HTTP_200_OK
-            )
-        except Archive.DoesNotExist:
-            return JsonResponse(
-                {
-                    'file': path,
-                    'status': status.HTTP_204_NO_CONTENT
-                },
-                status=status.HTTP_204_NO_CONTENT
-            )
+        if is_ajax(request):
+            self.object = self.get_object()
+            self.object.delete()
+            return JsonResponse({'file': path}, status=status.HTTP_200_OK)
 
 
 class ListAllTickets(generic.ListView):
@@ -76,25 +65,6 @@ class DetailTicket(generic.DetailView):
     slug_field = 'number'
     slug_url_kwarg = 'ticket'
 
-    def post(self, request, **kwargs):
-        if is_ajax(request):
-            model = self.get_object()
-            if request.body:
-                data = json.loads(request.body)
-                resolved_field = data.get('resolved')
-                if isinstance(resolved_field, bool):
-                    model.resolved = not resolved_field
-                    model.save()
-                    return JsonResponse(
-                        {'resolved': not resolved_field},
-                        status=status.HTTP_201_CREATED
-                    )
-                return JsonResponse(
-                    {'resolved': 'must be a boolean'},
-                    status=status.HTTP_400_BAD_REQUEST
-                )
-        return HttpResponseNotAllowed(permitted_methods=['GET'])
-
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context['platforms'] = Platform.objects.all()
@@ -109,27 +79,49 @@ class DeleteTicket(generic.DeleteView):
     slug_url_kwarg = 'ticket'
     success_url = reverse_lazy('tickets')
 
-    def delete(self, request, *args, **kwargs):
+
+class UpdateTicketStateHandler(SingleObjectMixin, generic.View):
+    model = Ticket
+    slug_field = 'number'
+    slug_url_kwarg = 'ticket'
+
+    def post(self, request, **kwargs):
+        if is_ajax(request):
+            self.object = self.get_object()
+            if request.body:
+                data = json.loads(request.body)
+                resolved_field = data.get('resolved')
+                if isinstance(resolved_field, bool):
+                    self.object.resolved = not resolved_field
+                    self.object.save()
+                    return JsonResponse(
+                        {'resolved': not resolved_field},
+                        status=status.HTTP_201_CREATED
+                    )
+                return JsonResponse(
+                    {'resolved': 'must be a boolean'},
+                    status=status.HTTP_400_BAD_REQUEST
+                )
+        return JsonResponse(
+            {'error': 'header XMLHttpRequest is required'},
+            status=status.HTTP_406_NOT_ACCEPTABLE
+        )
+
+
+class DeleteTicketHandler(SingleObjectMixin, generic.View):
+    model = Ticket
+    slug_field = 'number'
+    slug_url_kwarg = 'ticket'
+
+    def delete(self, request, ticket):
         if is_ajax(request):
-            print("HELLO FROM AJAX")
             self.object = self.get_object()
             self.object.delete()
             return JsonResponse(
                 {'status': status.HTTP_200_OK},
                 status=status.HTTP_200_OK
             )
-        response = super().delete(self, request, *args, **kwargs)
-        return response
-
-
-class AjaxDeleteTicketHandler(generic.View):
-
-    def delete(self, request, ticket):
-        if is_ajax(request):
-            print("HELLO FROM AJAX")
-            obj = Ticket.objects.get(number=ticket)
-            obj.delete()
-            return JsonResponse(
-                {'status': status.HTTP_200_OK},
-                status=status.HTTP_200_OK
-            )
+        return JsonResponse(
+            {'error': 'header XMLHttpRequest is required'},
+            status=status.HTTP_406_NOT_ACCEPTABLE
+        )