diff --git a/src/controllers/FilmController.php b/src/controllers/FilmController.php
index 6dc01522e2cd85b5bd4d2270dba6c802e700c158..3c71274bda1e31efe85cde2787f545677cf40259 100644
--- a/src/controllers/FilmController.php
+++ b/src/controllers/FilmController.php
@@ -5,6 +5,7 @@ namespace app\controllers;
 use app\base\BaseController;
 use app\controllers\utils\response;
 use app\Request;
+use app\services\FavoriteService;
 use app\services\FilmService;
 use app\services\ReviewService;
 use app\services\UserService;
@@ -13,12 +14,14 @@ class FilmController extends BaseController
 {
     protected $review_handler;
     protected $user_handler;
+    protected $favorite_handler;
 
     public function __construct()
     {
         parent::__construct(FilmService::getInstance());
         $this->review_handler = ReviewService::getInstance();
         $this->user_handler = UserService::getInstance();
+        $this->favorite_handler = FavoriteService::getInstance();
     }
 
     protected function get($urlParams)
@@ -39,6 +42,7 @@ class FilmController extends BaseController
             parent::render($data, 'films', "layouts/base");
         } elseif ($uri == '/film-details') {
             $data['film'] = $this->service->getById($_GET['film_id']);
+            $data['isFavorite'] = $this->favorite_handler->isUserFavorite($_SESSION['user_id'], $_GET['film_id']);
 
             parent::render($data, 'film-details', "layouts/base");
         } else {
@@ -52,4 +56,25 @@ class FilmController extends BaseController
             response::send_json_response($data);
         }
     }
+
+    protected function post($urlParams)
+    {
+        if (!isset($_SESSION['user_id'])) {
+            parent::redirect("/login");
+        }
+        $film_id = $urlParams['film_id'];
+        if (isset($_POST['add_favorite'])) {
+            $data['film'] = $this->service->getById($film_id);
+            if ($_POST['add_favorite'] == 'yes') {
+                $this->favorite_handler->addToFavorite($_SESSION['user_id'], $film_id);
+                $data['isFavorite'] = true;
+                parent::render($data, 'film-details', "layouts/base");
+            }
+            else {
+                $this->favorite_handler->removeFromFavorite($_SESSION['user_id'], $film_id);
+                $data['isFavorite'] = false;
+                parent::render($data, 'film-details', "layouts/base");
+            }
+        }
+    }
 }
diff --git a/src/repositories/FavoriteRepository.php b/src/repositories/FavoriteRepository.php
index 0a20e1609d3f3847bb1adf38a2a4361768a00184..12e0ae41064b4ea32b976da715347e654c156857 100644
--- a/src/repositories/FavoriteRepository.php
+++ b/src/repositories/FavoriteRepository.php
@@ -20,8 +20,25 @@ class FavoriteRepository extends BaseRepository {
         return self::$instance;
     }
 
+    public function getById($user_id, $film_id) {
+        return $this->findAll(['user_id' => [$user_id, PDO::PARAM_INT], 'film_id' => [$film_id, PDO::PARAM_INT]]);
+    }
+
     public function getUserFavorites($user_id) {
         return $this->findAll(['user_id' => [$user_id, PDO::PARAM_INT]]);
     }
 
+    public function insertFavorite($favorite)
+    {
+        $this->insert($favorite, array(
+            'user_id' => PDO::PARAM_INT,
+            'film_id' => PDO::PARAM_INT
+        ));
+    }
+
+    public function deleteFavorite($favorite)
+    {
+        $this->delete($favorite);
+    }
+
 }
\ No newline at end of file
diff --git a/src/services/FavoriteService.php b/src/services/FavoriteService.php
index 687c0cf5dcf5565312f18e2c4c97e416c7e39d25..5fb8a3499676c165eecd2cf0555bfff77b5d343f 100644
--- a/src/services/FavoriteService.php
+++ b/src/services/FavoriteService.php
@@ -5,6 +5,7 @@ namespace app\services;
 use app\base\BaseService;
 use app\controllers\FilmController;
 use app\exceptions\BadRequestException;
+use app\models\FavoriteModel;
 use app\models\ReviewModel;
 use app\repositories\FavoriteRepository;
 use app\repositories\ReviewRepository;
@@ -32,4 +33,24 @@ class FavoriteService extends BaseService {
         return $this->repository->getUserFavorites($user_id);
     }
 
+    public function addToFavorite($user_id, $film_id) {
+        $favorite = new FavoriteModel();
+        $favorite->set('user_id', $user_id)->set('film_id', $film_id);
+        return $this->repository->insertFavorite($favorite);
+    }
+
+    public  function removeFromFavorite($user_id, $film_id) {
+        $favorite = new FavoriteModel();
+        $favorite->set('user_id', $user_id)->set('film_id', $film_id);
+        return $this->repository->deleteFavorite($favorite);
+    }
+
+    public function isUserFavorite($user_id, $film_id) {
+        $favorite = $this->repository->getById($user_id, $film_id);
+        if (count($favorite) == 0) {
+            return false;
+        }
+        return true;
+    }
+
 }
\ No newline at end of file
diff --git a/views/film-details.php b/views/film-details.php
index 649fd9966fb45998742fc3f6fcfab03db4d3b966..99777d8a6b65ae607c10be06b6bf791838a931ab 100644
--- a/views/film-details.php
+++ b/views/film-details.php
@@ -18,11 +18,22 @@
                         echo "<a href='/update-film?film_id=$film->film_id '><button class='button'>Edit</button></a>";
                     }
                     ?>
+                    <?php if (isset($isFavorite) and $isFavorite): ?>
+                        <form method='post' enctype="multipart/form-data">
+                            <input type='hidden' name='add_favorite' value='no'>
+                            <button type="submit">
+                                <image src="/public/assets/favorite.svg"></image>
+                            </button>
+                        </form>
+                    <?php else: ?>
+                        <form method='post' enctype="multipart/form-data">
+                            <input type='hidden' name='add_favorite' value='yes'>
+                            <button type="submit">
+                                <image src="/public/assets/no-favorite.svg"></image>
+                            </button>
+                        </form>
+                    <?php endif; ?>
 
-
-                    <button>
-                        <image id='fav' src="/public/assets/favorite.svg"></image>
-                    </button>
                 </div>
 
             </div>