# coding: utf-8

"""
    Soccer v3 Stats

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 1.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class SoccerStatsBoxScore(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'game': 'SoccerStatsGame',
        'away_team_coach': 'SoccerStatsCoach',
        'home_team_coach': 'SoccerStatsCoach',
        'main_referee': 'SoccerStatsReferee',
        'assistant_referee1': 'SoccerStatsReferee',
        'assistant_referee2': 'SoccerStatsReferee',
        'fourth_referee': 'SoccerStatsReferee',
        'additional_assistant_referee1': 'SoccerStatsReferee',
        'additional_assistant_referee2': 'SoccerStatsReferee',
        'lineups': 'list[SoccerStatsLineup]',
        'goals': 'list[SoccerStatsGoal]',
        'bookings': 'list[SoccerStatsBooking]',
        'penalty_shootouts': 'list[SoccerStatsPenaltyShootout]',
        'team_games': 'list[SoccerStatsTeamGame]',
        'player_games': 'list[SoccerStatsPlayerGame]',
        'video_assistant_referee': 'SoccerStatsReferee'
    }

    attribute_map = {
        'game': 'Game',
        'away_team_coach': 'AwayTeamCoach',
        'home_team_coach': 'HomeTeamCoach',
        'main_referee': 'MainReferee',
        'assistant_referee1': 'AssistantReferee1',
        'assistant_referee2': 'AssistantReferee2',
        'fourth_referee': 'FourthReferee',
        'additional_assistant_referee1': 'AdditionalAssistantReferee1',
        'additional_assistant_referee2': 'AdditionalAssistantReferee2',
        'lineups': 'Lineups',
        'goals': 'Goals',
        'bookings': 'Bookings',
        'penalty_shootouts': 'PenaltyShootouts',
        'team_games': 'TeamGames',
        'player_games': 'PlayerGames',
        'video_assistant_referee': 'VideoAssistantReferee'
    }

    def __init__(self, game=None, away_team_coach=None, home_team_coach=None, main_referee=None, assistant_referee1=None, assistant_referee2=None, fourth_referee=None, additional_assistant_referee1=None, additional_assistant_referee2=None, lineups=None, goals=None, bookings=None, penalty_shootouts=None, team_games=None, player_games=None, video_assistant_referee=None):  # noqa: E501
        """SoccerStatsBoxScore - a model defined in Swagger"""  # noqa: E501
        self._game = None
        self._away_team_coach = None
        self._home_team_coach = None
        self._main_referee = None
        self._assistant_referee1 = None
        self._assistant_referee2 = None
        self._fourth_referee = None
        self._additional_assistant_referee1 = None
        self._additional_assistant_referee2 = None
        self._lineups = None
        self._goals = None
        self._bookings = None
        self._penalty_shootouts = None
        self._team_games = None
        self._player_games = None
        self._video_assistant_referee = None
        self.discriminator = None
        if game is not None:
            self.game = game
        if away_team_coach is not None:
            self.away_team_coach = away_team_coach
        if home_team_coach is not None:
            self.home_team_coach = home_team_coach
        if main_referee is not None:
            self.main_referee = main_referee
        if assistant_referee1 is not None:
            self.assistant_referee1 = assistant_referee1
        if assistant_referee2 is not None:
            self.assistant_referee2 = assistant_referee2
        if fourth_referee is not None:
            self.fourth_referee = fourth_referee
        if additional_assistant_referee1 is not None:
            self.additional_assistant_referee1 = additional_assistant_referee1
        if additional_assistant_referee2 is not None:
            self.additional_assistant_referee2 = additional_assistant_referee2
        if lineups is not None:
            self.lineups = lineups
        if goals is not None:
            self.goals = goals
        if bookings is not None:
            self.bookings = bookings
        if penalty_shootouts is not None:
            self.penalty_shootouts = penalty_shootouts
        if team_games is not None:
            self.team_games = team_games
        if player_games is not None:
            self.player_games = player_games
        if video_assistant_referee is not None:
            self.video_assistant_referee = video_assistant_referee

    @property
    def game(self):
        """Gets the game of this SoccerStatsBoxScore.  # noqa: E501


        :return: The game of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsGame
        """
        return self._game

    @game.setter
    def game(self, game):
        """Sets the game of this SoccerStatsBoxScore.


        :param game: The game of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsGame
        """

        self._game = game

    @property
    def away_team_coach(self):
        """Gets the away_team_coach of this SoccerStatsBoxScore.  # noqa: E501


        :return: The away_team_coach of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsCoach
        """
        return self._away_team_coach

    @away_team_coach.setter
    def away_team_coach(self, away_team_coach):
        """Sets the away_team_coach of this SoccerStatsBoxScore.


        :param away_team_coach: The away_team_coach of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsCoach
        """

        self._away_team_coach = away_team_coach

    @property
    def home_team_coach(self):
        """Gets the home_team_coach of this SoccerStatsBoxScore.  # noqa: E501


        :return: The home_team_coach of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsCoach
        """
        return self._home_team_coach

    @home_team_coach.setter
    def home_team_coach(self, home_team_coach):
        """Sets the home_team_coach of this SoccerStatsBoxScore.


        :param home_team_coach: The home_team_coach of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsCoach
        """

        self._home_team_coach = home_team_coach

    @property
    def main_referee(self):
        """Gets the main_referee of this SoccerStatsBoxScore.  # noqa: E501


        :return: The main_referee of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._main_referee

    @main_referee.setter
    def main_referee(self, main_referee):
        """Sets the main_referee of this SoccerStatsBoxScore.


        :param main_referee: The main_referee of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._main_referee = main_referee

    @property
    def assistant_referee1(self):
        """Gets the assistant_referee1 of this SoccerStatsBoxScore.  # noqa: E501


        :return: The assistant_referee1 of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._assistant_referee1

    @assistant_referee1.setter
    def assistant_referee1(self, assistant_referee1):
        """Sets the assistant_referee1 of this SoccerStatsBoxScore.


        :param assistant_referee1: The assistant_referee1 of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._assistant_referee1 = assistant_referee1

    @property
    def assistant_referee2(self):
        """Gets the assistant_referee2 of this SoccerStatsBoxScore.  # noqa: E501


        :return: The assistant_referee2 of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._assistant_referee2

    @assistant_referee2.setter
    def assistant_referee2(self, assistant_referee2):
        """Sets the assistant_referee2 of this SoccerStatsBoxScore.


        :param assistant_referee2: The assistant_referee2 of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._assistant_referee2 = assistant_referee2

    @property
    def fourth_referee(self):
        """Gets the fourth_referee of this SoccerStatsBoxScore.  # noqa: E501


        :return: The fourth_referee of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._fourth_referee

    @fourth_referee.setter
    def fourth_referee(self, fourth_referee):
        """Sets the fourth_referee of this SoccerStatsBoxScore.


        :param fourth_referee: The fourth_referee of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._fourth_referee = fourth_referee

    @property
    def additional_assistant_referee1(self):
        """Gets the additional_assistant_referee1 of this SoccerStatsBoxScore.  # noqa: E501


        :return: The additional_assistant_referee1 of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._additional_assistant_referee1

    @additional_assistant_referee1.setter
    def additional_assistant_referee1(self, additional_assistant_referee1):
        """Sets the additional_assistant_referee1 of this SoccerStatsBoxScore.


        :param additional_assistant_referee1: The additional_assistant_referee1 of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._additional_assistant_referee1 = additional_assistant_referee1

    @property
    def additional_assistant_referee2(self):
        """Gets the additional_assistant_referee2 of this SoccerStatsBoxScore.  # noqa: E501


        :return: The additional_assistant_referee2 of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._additional_assistant_referee2

    @additional_assistant_referee2.setter
    def additional_assistant_referee2(self, additional_assistant_referee2):
        """Sets the additional_assistant_referee2 of this SoccerStatsBoxScore.


        :param additional_assistant_referee2: The additional_assistant_referee2 of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._additional_assistant_referee2 = additional_assistant_referee2

    @property
    def lineups(self):
        """Gets the lineups of this SoccerStatsBoxScore.  # noqa: E501


        :return: The lineups of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: list[SoccerStatsLineup]
        """
        return self._lineups

    @lineups.setter
    def lineups(self, lineups):
        """Sets the lineups of this SoccerStatsBoxScore.


        :param lineups: The lineups of this SoccerStatsBoxScore.  # noqa: E501
        :type: list[SoccerStatsLineup]
        """

        self._lineups = lineups

    @property
    def goals(self):
        """Gets the goals of this SoccerStatsBoxScore.  # noqa: E501


        :return: The goals of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: list[SoccerStatsGoal]
        """
        return self._goals

    @goals.setter
    def goals(self, goals):
        """Sets the goals of this SoccerStatsBoxScore.


        :param goals: The goals of this SoccerStatsBoxScore.  # noqa: E501
        :type: list[SoccerStatsGoal]
        """

        self._goals = goals

    @property
    def bookings(self):
        """Gets the bookings of this SoccerStatsBoxScore.  # noqa: E501


        :return: The bookings of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: list[SoccerStatsBooking]
        """
        return self._bookings

    @bookings.setter
    def bookings(self, bookings):
        """Sets the bookings of this SoccerStatsBoxScore.


        :param bookings: The bookings of this SoccerStatsBoxScore.  # noqa: E501
        :type: list[SoccerStatsBooking]
        """

        self._bookings = bookings

    @property
    def penalty_shootouts(self):
        """Gets the penalty_shootouts of this SoccerStatsBoxScore.  # noqa: E501


        :return: The penalty_shootouts of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: list[SoccerStatsPenaltyShootout]
        """
        return self._penalty_shootouts

    @penalty_shootouts.setter
    def penalty_shootouts(self, penalty_shootouts):
        """Sets the penalty_shootouts of this SoccerStatsBoxScore.


        :param penalty_shootouts: The penalty_shootouts of this SoccerStatsBoxScore.  # noqa: E501
        :type: list[SoccerStatsPenaltyShootout]
        """

        self._penalty_shootouts = penalty_shootouts

    @property
    def team_games(self):
        """Gets the team_games of this SoccerStatsBoxScore.  # noqa: E501


        :return: The team_games of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: list[SoccerStatsTeamGame]
        """
        return self._team_games

    @team_games.setter
    def team_games(self, team_games):
        """Sets the team_games of this SoccerStatsBoxScore.


        :param team_games: The team_games of this SoccerStatsBoxScore.  # noqa: E501
        :type: list[SoccerStatsTeamGame]
        """

        self._team_games = team_games

    @property
    def player_games(self):
        """Gets the player_games of this SoccerStatsBoxScore.  # noqa: E501


        :return: The player_games of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: list[SoccerStatsPlayerGame]
        """
        return self._player_games

    @player_games.setter
    def player_games(self, player_games):
        """Sets the player_games of this SoccerStatsBoxScore.


        :param player_games: The player_games of this SoccerStatsBoxScore.  # noqa: E501
        :type: list[SoccerStatsPlayerGame]
        """

        self._player_games = player_games

    @property
    def video_assistant_referee(self):
        """Gets the video_assistant_referee of this SoccerStatsBoxScore.  # noqa: E501


        :return: The video_assistant_referee of this SoccerStatsBoxScore.  # noqa: E501
        :rtype: SoccerStatsReferee
        """
        return self._video_assistant_referee

    @video_assistant_referee.setter
    def video_assistant_referee(self, video_assistant_referee):
        """Sets the video_assistant_referee of this SoccerStatsBoxScore.


        :param video_assistant_referee: The video_assistant_referee of this SoccerStatsBoxScore.  # noqa: E501
        :type: SoccerStatsReferee
        """

        self._video_assistant_referee = video_assistant_referee

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(SoccerStatsBoxScore, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, SoccerStatsBoxScore):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
