def save_seat(cls, user_id, projection_id, row, col):
        if UserController.check_id(user_id) is False:
            raise UserError('There is no user with id = {}!'.format(user_id))

        if ProjectionController.check_id(projection_id) is False:
            raise ProjectionException(
                'There is no projection with id = {}!'.format(projection_id))

        if cls.check_if_seat_is_taken(projection_id, row, col):
            raise SeatError('The seat is taken!')

        session.add(
            Reservation(user_id=user_id,
                        projection_id=projection_id,
                        row=row,
                        col=col))