#!/usr/bin/env python
# -*- coding: utf-8 -*-
import simplejson as json

from alipay.aop.api.constant.ParamConstants import *
from alipay.aop.api.domain.AvailableTimeInfo import AvailableTimeInfo
from alipay.aop.api.domain.KoubeiItemDescription import KoubeiItemDescription
from alipay.aop.api.domain.UnAvailableTimeInfo import UnAvailableTimeInfo


class KoubeiTradeVoucherItemTemplete(object):

    def __init__(self):
        self._available_time_info_list = None
        self._buyer_notes = None
        self._support_book = None
        self._un_available_time_info_list = None
        self._validity_period = None
        self._validity_period_range_from = None
        self._validity_period_range_to = None
        self._validity_period_type = None
        self._verify_enable_times = None
        self._verify_frequency = None

    @property
    def available_time_info_list(self):
        return self._available_time_info_list

    @available_time_info_list.setter
    def available_time_info_list(self, value):
        if isinstance(value, list):
            self._available_time_info_list = list()
            for i in value:
                if isinstance(i, AvailableTimeInfo):
                    self._available_time_info_list.append(i)
                else:
                    self._available_time_info_list.append(AvailableTimeInfo.from_alipay_dict(i))
    @property
    def buyer_notes(self):
        return self._buyer_notes

    @buyer_notes.setter
    def buyer_notes(self, value):
        if isinstance(value, list):
            self._buyer_notes = list()
            for i in value:
                if isinstance(i, KoubeiItemDescription):
                    self._buyer_notes.append(i)
                else:
                    self._buyer_notes.append(KoubeiItemDescription.from_alipay_dict(i))
    @property
    def support_book(self):
        return self._support_book

    @support_book.setter
    def support_book(self, value):
        self._support_book = value
    @property
    def un_available_time_info_list(self):
        return self._un_available_time_info_list

    @un_available_time_info_list.setter
    def un_available_time_info_list(self, value):
        if isinstance(value, list):
            self._un_available_time_info_list = list()
            for i in value:
                if isinstance(i, UnAvailableTimeInfo):
                    self._un_available_time_info_list.append(i)
                else:
                    self._un_available_time_info_list.append(UnAvailableTimeInfo.from_alipay_dict(i))
    @property
    def validity_period(self):
        return self._validity_period

    @validity_period.setter
    def validity_period(self, value):
        self._validity_period = value
    @property
    def validity_period_range_from(self):
        return self._validity_period_range_from

    @validity_period_range_from.setter
    def validity_period_range_from(self, value):
        self._validity_period_range_from = value
    @property
    def validity_period_range_to(self):
        return self._validity_period_range_to

    @validity_period_range_to.setter
    def validity_period_range_to(self, value):
        self._validity_period_range_to = value
    @property
    def validity_period_type(self):
        return self._validity_period_type

    @validity_period_type.setter
    def validity_period_type(self, value):
        self._validity_period_type = value
    @property
    def verify_enable_times(self):
        return self._verify_enable_times

    @verify_enable_times.setter
    def verify_enable_times(self, value):
        self._verify_enable_times = value
    @property
    def verify_frequency(self):
        return self._verify_frequency

    @verify_frequency.setter
    def verify_frequency(self, value):
        self._verify_frequency = value


    def to_alipay_dict(self):
        params = dict()
        if self.available_time_info_list:
            if isinstance(self.available_time_info_list, list):
                for i in range(0, len(self.available_time_info_list)):
                    element = self.available_time_info_list[i]
                    if hasattr(element, 'to_alipay_dict'):
                        self.available_time_info_list[i] = element.to_alipay_dict()
            if hasattr(self.available_time_info_list, 'to_alipay_dict'):
                params['available_time_info_list'] = self.available_time_info_list.to_alipay_dict()
            else:
                params['available_time_info_list'] = self.available_time_info_list
        if self.buyer_notes:
            if isinstance(self.buyer_notes, list):
                for i in range(0, len(self.buyer_notes)):
                    element = self.buyer_notes[i]
                    if hasattr(element, 'to_alipay_dict'):
                        self.buyer_notes[i] = element.to_alipay_dict()
            if hasattr(self.buyer_notes, 'to_alipay_dict'):
                params['buyer_notes'] = self.buyer_notes.to_alipay_dict()
            else:
                params['buyer_notes'] = self.buyer_notes
        if self.support_book:
            if hasattr(self.support_book, 'to_alipay_dict'):
                params['support_book'] = self.support_book.to_alipay_dict()
            else:
                params['support_book'] = self.support_book
        if self.un_available_time_info_list:
            if isinstance(self.un_available_time_info_list, list):
                for i in range(0, len(self.un_available_time_info_list)):
                    element = self.un_available_time_info_list[i]
                    if hasattr(element, 'to_alipay_dict'):
                        self.un_available_time_info_list[i] = element.to_alipay_dict()
            if hasattr(self.un_available_time_info_list, 'to_alipay_dict'):
                params['un_available_time_info_list'] = self.un_available_time_info_list.to_alipay_dict()
            else:
                params['un_available_time_info_list'] = self.un_available_time_info_list
        if self.validity_period:
            if hasattr(self.validity_period, 'to_alipay_dict'):
                params['validity_period'] = self.validity_period.to_alipay_dict()
            else:
                params['validity_period'] = self.validity_period
        if self.validity_period_range_from:
            if hasattr(self.validity_period_range_from, 'to_alipay_dict'):
                params['validity_period_range_from'] = self.validity_period_range_from.to_alipay_dict()
            else:
                params['validity_period_range_from'] = self.validity_period_range_from
        if self.validity_period_range_to:
            if hasattr(self.validity_period_range_to, 'to_alipay_dict'):
                params['validity_period_range_to'] = self.validity_period_range_to.to_alipay_dict()
            else:
                params['validity_period_range_to'] = self.validity_period_range_to
        if self.validity_period_type:
            if hasattr(self.validity_period_type, 'to_alipay_dict'):
                params['validity_period_type'] = self.validity_period_type.to_alipay_dict()
            else:
                params['validity_period_type'] = self.validity_period_type
        if self.verify_enable_times:
            if hasattr(self.verify_enable_times, 'to_alipay_dict'):
                params['verify_enable_times'] = self.verify_enable_times.to_alipay_dict()
            else:
                params['verify_enable_times'] = self.verify_enable_times
        if self.verify_frequency:
            if hasattr(self.verify_frequency, 'to_alipay_dict'):
                params['verify_frequency'] = self.verify_frequency.to_alipay_dict()
            else:
                params['verify_frequency'] = self.verify_frequency
        return params

    @staticmethod
    def from_alipay_dict(d):
        if not d:
            return None
        o = KoubeiTradeVoucherItemTemplete()
        if 'available_time_info_list' in d:
            o.available_time_info_list = d['available_time_info_list']
        if 'buyer_notes' in d:
            o.buyer_notes = d['buyer_notes']
        if 'support_book' in d:
            o.support_book = d['support_book']
        if 'un_available_time_info_list' in d:
            o.un_available_time_info_list = d['un_available_time_info_list']
        if 'validity_period' in d:
            o.validity_period = d['validity_period']
        if 'validity_period_range_from' in d:
            o.validity_period_range_from = d['validity_period_range_from']
        if 'validity_period_range_to' in d:
            o.validity_period_range_to = d['validity_period_range_to']
        if 'validity_period_type' in d:
            o.validity_period_type = d['validity_period_type']
        if 'verify_enable_times' in d:
            o.verify_enable_times = d['verify_enable_times']
        if 'verify_frequency' in d:
            o.verify_frequency = d['verify_frequency']
        return o


