import re
from datetime import timedelta

from django.db.models import OuterRef, Subquery, Count, F, IntegerField, Value, When, Case, Sum
from django.utils import timezone
from django.utils.timezone import get_current_timezone, make_aware
from django_tables2 import Table, LinkColumn, A, Column, TemplateColumn
from unidecode import unidecode

from accounts.models import PC, FifaAccount, Console, CloseWebAppSnipes
from sbc.consts import translates, RED_STATUS
from sbc.models import SBCOrder, SBCWorker, SBCWorkerDetailsLog, AccountCheckHealthyOrder, AccountCheckHealthyWorker, \
    SBCProcess
from utils import number_convertor_to_milion
from utils.table_fields import CounterColumn


class SbcOrdersTable(Table):
    logs = LinkColumn('sbc-order-excel', text='Download Excel', verbose_name='--', args=[A('pk')],
                      attrs={'a': {'class': 'btn btn-info'}})
    cancel_order = LinkColumn('cancel-sbc-order', text='Cancel Order', verbose_name='--', args=[A('pk')],
                              attrs={'a': {'class': 'btn btn-danger'}})

    sum_accounts = Column(accessor='sum_accounts', verbose_name='Sum Accounts')
    sum_fail = Column(accessor='sum_fail', verbose_name='Sum Fail')
    sum_success = Column(accessor='sum_success', verbose_name='Sum Success')
    # sum_current_credit = Column(accessor='sum_current_credit', verbose_name='Sum Credit')

    # def render_status(self, value):
    #     return SBCOrderStatus[int(value)][1]

    # def render_sum_accounts(self, value):
    #     return SBCWorker.objects.filter(sbc_order__id=value).count()
    #
    # def render_sum_fail(self, value):
    #     return SBCWorker.objects.filter(sbc_order__id=value, has_error=True).count()
    #
    # def render_sum_success(self, value):
    #     return SBCWorker.objects.filter(sbc_order__id=value, is_done=True).count()
    #
    def render_sum_current_credit(self, value):
    #     a = SBCWorker.objects.filter(sbc_order__id=value, is_done=True).aggregate(
    #         sum_credit=Sum('fifa_account__credit')
    #     ).get('sum_credit') or 0
    #     return number_convertor_to_milion(a)
        return number_convertor_to_milion(value)

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCOrder
        fields = ('file_name', 'create_time', 'status', 'sum_accounts', 'sum_fail', 'sum_success',
                  # 'sum_current_credit',
                  'cancel_order')
        attrs = {'class': 'table table-stripped'}


class SbcWorkerReportsListTable(Table):
    cal_time = Column(accessor='id', verbose_name='Cal Time')

    def render_cal_time(self, value):
        sbc_worker_report = SBCWorkerDetailsLog.objects.filter(id=value).first()
        return str((sbc_worker_report.end_time - sbc_worker_report.start_time))

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCWorkerDetailsLog
        fields = ('title', 'start_time', 'end_time', 'cal_time', 'account_user_name')
        attrs = {'class': 'table table-stripped'}

        row_attrs = {
            "data-status": lambda record: "bold" if record.main_job else "",
        }


# class SbcWorkerReports(Table):
#     status = Column(accessor='status')
#     time = Column(accessor='time')
#
#     class Meta:
#         fields = ('status', 'time',)
#         attrs = {'class': 'table table-stripped'}


class SbcWorkersLogsListTable(Table):
    counter = CounterColumn()
    in_this_status_time = Column(accessor='status_change_time', verbose_name='in_this_status_time')
    fifa_account_admin = LinkColumn('admin:accounts_fifaaccount_change', args=[A('fifa_account.id')],
                                    verbose_name='Fifa Account', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    fifa_account_logs = LinkColumn('fifa-account-log', args=[A('fifa_account.id')],
                                   text='LOG', verbose_name='Fifa Account Log', attrs={'a': {'class': 'btn btn-info'}})

    sbc_worker_admin = LinkColumn('admin:sbc_sbcworker_change', args=[A('id')],
                                  verbose_name='Sbc Worker', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    sbc_worker_logs = LinkColumn('sbc-worker-report', args=[A('id')],
                                 text='LOG', verbose_name='Sbc Worker Log', attrs={'a': {'class': 'btn btn-info'}})
    description = TemplateColumn(template_code='''
    <form action="{% url "sbc-worker-description" sbc_worker_id=record.id %}" method="POST" >
        {% csrf_token %}
        <input name="record_id" value="{{record.id}}" hidden=true>
        <textarea name="record_description">{{record.description}}</textarea>
        <button>submit</button>
    </form>
    ''')

    # color = Column(accessor='id', verbose_name='color')

    # def render_color(self, value):
    #     sbc_worker = SBCWorker.objects.filter(id=value).first()
    #     if sbc_worker.status == 'captcha':
    #         return 'red'
    #     diff = int((timezone.localtime() - sbc_worker.status_change_time).total_seconds() / 60)
    #     if diff > 45:
    #         return 'blue'
    #     return 'white'

    def render_in_this_status_time(self, value):
        diff = int((timezone.localtime() - value).total_seconds() / 60)
        # print(diff)
        return str(diff) + ' mins'

    def render_status(self, value):
        return translates.get(value, value)

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCWorker
        fields = ('counter', 'sbc_worker_admin', 'sbc_worker_logs',
                  'fifa_account_admin', 'fifa_account_logs', 'fifa_account.user_name', 'fifa_account.console.name',
                  'fifa_account.name_in_console',
                  'status', 'status_change_time', 'in_this_status_time', 'fifa_account.pc.any_desk_code')
        attrs = {'class': 'table table-stripped'}
        row_attrs = {
            "data-status": lambda record: "red" if record.status in RED_STATUS else 'gray' if (
                    record.status_color == 'gray'
            ) else 'red2' if (
                    timezone.localtime() - timedelta(minutes=40) > record.status_change_time
            ) else "blue" if (
                    timezone.localtime() - timedelta(minutes=25) > record.status_change_time
            ) else "",
        }


class ConsoleWorkersLogsTable(Table):
    counter = CounterColumn()
    sbc_worker = TemplateColumn(template_code='''
    <div class="btn-group">
      {# <a href="{% url "sbc-worker-update" pk=record.id %}" class="btn btn-warning">admin</a> #}
      <a href="{% url "console-last-main-detail" pk=record.fifa_account_id %}" class="btn btn-info">console</a>
      <a href="{% url "account-last-main-detail" pk=record.fifa_account_id %}" class="btn btn-success">account</a>
      <a href="{% url "sbc-worker-report" sbc_worker_id=record.id %}" class="btn btn-info">worker</a>
      <a href="{% url "account-last-workers" pk=record.fifa_account_id %}" class="btn btn-success">detail</a>
    </div>
    ''', verbose_name='Worker Detail')
    # sbc_worker_admin = LinkColumn('admin:sbc_sbcworker_change', args=[A('id')],
    #                               verbose_name='Worker', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    # sbc_worker_logs = LinkColumn('sbc-worker-report', args=[A('id')],
    #                              text='LOG', verbose_name='Worker', attrs={'a': {'class': 'btn btn-info'}})
    fifa_account = TemplateColumn(template_code='''
        <div class="btn-group">
          <a href="{% url "fifa-account-update" pk=record.fifa_account_id %}"
           class="btn btn-warning">admin</a>
          <a href="{% url "fifa-account-log" email=record.fifa_account_id %}" class="btn btn-info">log</a>
        </div>
        ''', verbose_name='Account')
    # fifa_account_admin = LinkColumn('admin:accounts_fifaaccount_change', args=[A('fifa_account.id')],
    #                                 verbose_name='Account', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    # fifa_account_logs = LinkColumn('fifa-account-log', args=[A('fifa_account.id')],
    #                                text='LOG', verbose_name='Account', attrs={'a': {'class': 'btn btn-info'}})
    fifa_account_user_name = Column(
        accessor='fifa_account_user_name', verbose_name='UserName',
        attrs={'td': {'onclick': 'window.getSelection().selectAllChildren(this)'}})
    console_name = Column(accessor='console_name', verbose_name='Console')
    name_in_console = Column(accessor='name_in_console', verbose_name='Name')
    in_this_status_time = Column(accessor='status_change_time', verbose_name='status_time')
    location_code = Column(accessor='location_code', verbose_name='Loc')
    # any_desk = Column(
    #     accessor='any_desk', verbose_name='AnyDesk',
    #     attrs={'td': {'onclick': 'window.getSelection().selectAllChildren(this);document.execCommand("copy")'}})
    any_desk = TemplateColumn(
        accessor='any_desk', verbose_name='AnyDesk',
        template_code='''
            <div class="row">
            <div class="col" onclick="window.getSelection().selectAllChildren(this);document.execCommand(&quot;copy&quot;)" title="{{record.any_desk}}" style="width: 50px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{record.any_desk}}</div>
            <div class="col" onclick="window.getSelection().selectAllChildren(this);document.execCommand(&quot;copy&quot;)" title="{{record.any_desk_2}}" style="width: 50px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{record.any_desk_2}}</div>
            </div>
            ''')
    description = TemplateColumn(template_code='''
    <form action="{% url "sbc-worker-description" sbc_worker_id=record.id %}" method="POST" >
        {% csrf_token %}
        <input name="record_id" value="{{record.id}}" hidden=true>
        <textarea name="record_description">{{record.description}}</textarea>
        <button>submit</button>
        <a href="{% url "sbc-worker-description" sbc_worker_id=record.id %}?clear=True&sbc_worker_id=record.id">clear</a>
    </form>
    ''', attrs={'td': {'style': 'width: 10%;'}})

    # def render_name_in_console(self, value, record):
    #     return f'{value} - {record.get("fifa_account").platform}'

    def render_in_this_status_time(self, value):
        diff = int((timezone.localtime() - value).total_seconds() / 60)
        # print(diff)
        return str(diff) + ' mins'

    def render_status(self, value, record):
        translate_value = value
        if value in translates:
            translate_value = translates.get(value)
        else:
            for key, translation in translates.items():
                if '{id}' in key:
                    pattern = re.escape(key).replace(r'\{id\}', r'(\d+)')
                    match = re.match(pattern, value)
                    if match:
                        translate_value = translation.format(id=match.group(1))
                        break
        return record['running_platform'] + ' - ' + translate_value

    # def render_any_desk(self, value, record):
    #     any_desk_2_value = record.get('any_desk_2')
    #     if any_desk_2_value:
    #         return any_desk_2_value
    #     else:
    #         return value
    # def render_console_name(self, value, record):
    #     if record.get('fifa_account') and record.get('fifa_account').run_console_invest_trade_one:
    #         return f'{value}*'
    #     return value

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = Console
        fields = ('counter', 'sbc_worker', 'fifa_account', 'fifa_account_user_name', 'console_name',
                  'name_in_console', 'status', 'location_code', 'in_this_status_time', 'any_desk')
        attrs = {'class': 'table table-stripped'}
        row_attrs = {
            "data-status": lambda record: "red" if (
                    record['status'] in RED_STATUS
                # ) else record['status_color'] if (
                #         record['status'] == 'resting ...'
            ) else '' if (
                    record['status'].startswith('Trade bidding') and
                    timezone.localtime() - timedelta(minutes=200) < record['status_change_time']
            ) else '' if (
                    record['status'].startswith('bid waiting') and
                    timezone.localtime() - timedelta(minutes=70) < record['status_change_time']
            ) else '' if (
                    (record['status'].startswith('sbc id') or record['status'].startswith('Trade selling')) and
                    timezone.localtime() - timedelta(minutes=45) < record['status_change_time']
            ) else 'blue' if (
                    (record['status'].startswith('sbc id') or record['status'].startswith('Trade selling')) and
                    timezone.localtime() - timedelta(minutes=60) < record['status_change_time']
            ) else record['status_color'] if (
                    record['status_color'] in ['light-green', 'light-green2', 'gray', 'red', 'yellow', 'gray-blue']
            ) else 'dark-gray' if (
                    record['status_color'] == 'dark-gray' or record['status'] == 'all account is done'
            ) else 'red2' if (
                    timezone.localtime() - timedelta(minutes=40) > record['status_change_time']
            ) else "blue" if (
                    timezone.localtime() - timedelta(minutes=25) > record['status_change_time']
            ) else "",
        }


class TemporarySbcWorkersLogs(Table):
    counter = CounterColumn()
    in_this_status_time = Column(accessor='id', verbose_name='in_this_status_time')
    fifa_account_admin = LinkColumn('admin:accounts_fifaaccount_change', args=[A('fifa_account.id')],
                                    verbose_name='Fifa Account', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    fifa_account_logs = LinkColumn('fifa-account-log', args=[A('fifa_account.id')],
                                   text='LOG', verbose_name='Fifa Account Log', attrs={'a': {'class': 'btn btn-info'}})

    sbc_worker_admin = LinkColumn('admin:sbc_sbcworker_change', args=[A('id')],
                                  verbose_name='Sbc Worker', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    sbc_worker_logs = LinkColumn('sbc-worker-report', args=[A('id')],
                                 text='LOG', verbose_name='Sbc Worker Log', attrs={'a': {'class': 'btn btn-info'}})
    description = TemplateColumn(template_code='''
        <form action="{% url "sbc-worker-description" sbc_worker_id=record.id %}" method="POST" >
            {% csrf_token %}
            <input name="record_id" value="{{record.id}}" hidden=true>
            <textarea name="record_description">{{record.description}}</textarea>
            <button>submit</button>
        </form>
        ''')

    # color = Column(accessor='id', verbose_name='color')

    # def render_color(self, value):
    #     sbc_worker = SBCWorker.objects.filter(id=value).first()
    #     if sbc_worker.status == 'captcha':
    #         return 'red'
    #     diff = int((timezone.localtime() - sbc_worker.status_change_time).total_seconds() / 60)
    #     if diff > 45:
    #         return 'blue'
    #     return 'white'

    def render_in_this_status_time(self, value):
        sbc_worker = SBCWorker.objects.filter(id=value).first()
        diff = int((timezone.localtime() - sbc_worker.status_change_time).total_seconds() / 60)
        # print(diff)
        return str(diff) + ' mins'

    def render_status(self, value):
        return translates.get(value, value)

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCWorker
        fields = ('counter', 'sbc_worker_admin', 'sbc_worker_logs',
                  'fifa_account_admin', 'fifa_account_logs', 'fifa_account.user_name', 'fifa_account.console.name',
                  'fifa_account.name_in_console',
                  'status', 'status_change_time', 'in_this_status_time', 'fifa_account.pc.any_desk_code')
        attrs = {'class': 'table table-stripped'}


class SbcWorkersLastsListTable(Table):
    counter = CounterColumn()
    fifa_account_admin = LinkColumn('admin:accounts_fifaaccount_change', args=[A('fifa_account.id')],
                                    verbose_name='Fifa Account', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    fifa_account_logs = LinkColumn('fifa-account-log', args=[A('fifa_account.id')],
                                   text='LOG', verbose_name='Fifa Account Log', attrs={'a': {'class': 'btn btn-info'}})

    sbc_worker_admin = LinkColumn('admin:sbc_sbcworker_change', args=[A('id')],
                                  verbose_name='Sbc Worker', attrs={'a': {'class': 'btn btn-info'}}, text='admin')
    sbc_worker_logs = LinkColumn('sbc-worker-report', args=[A('id')],
                                 text='LOG', verbose_name='Sbc Worker Log', attrs={'a': {'class': 'btn btn-info'}})

    produced_coins_normed = Column(accessor='id', verbose_name='produced_coins')

    def render_produced_coins_normed(self, value):
        sbc_worker = SBCWorker.objects.filter(id=value).first()
        return number_convertor_to_milion(sbc_worker.produced_coins)

    done_time = Column(accessor='id', verbose_name='done_time')

    def render_done_time(self, value):
        sbc_worker = SBCWorker.objects.filter(id=value).first()
        return sbc_worker.end_time - sbc_worker.start_time

    current_worker_time = Column(accessor='id', verbose_name='current_worker_time')

    def render_current_worker_time(self, value):
        sbc_worker = SBCWorker.objects.filter(id=value).first()
        fifa_accounts = FifaAccount.objects.filter(console=sbc_worker.fifa_account.console).all()
        current_worker = '-'
        for fifa_account in fifa_accounts:
            existed_sbc_worker = SBCWorker.objects.filter(
                is_done=False, has_error=False, running_platform='console', fifa_account=fifa_account,
                manual_loyal=True).first()
            if existed_sbc_worker:
                current_worker = timezone.localtime() - existed_sbc_worker.start_time.astimezone(get_current_timezone())
                break
        return current_worker

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCWorker
        fields = ('counter', 'sbc_worker_admin', 'sbc_worker_logs',
                  'fifa_account_admin', 'fifa_account_logs', 'fifa_account.user_name', 'fifa_account.console.name',
                  'fifa_account.name_in_console', 'produced_coins_normed', 'end_time', 'done_time',
                  'current_worker_time')
        attrs = {'class': 'table table-stripped'}


class PCListTable(Table):
    counter = CounterColumn()
    # count_done_in_24_hours = Column(accessor='id', verbose_name='count_done_in_24_hours')
    # count_done_in_12_hours = Column(accessor='id', verbose_name='count_done_in_12_hours')
    # uncompleted_worker = Column(accessor='id', verbose_name='uncompleted_worker')
    # count_done_in_48_hours = Column(accessor='id', verbose_name='count_done_in_48_hours')

    def render_count_done_in_12_hours(self, value):
        pc = PC.objects.filter(id=value).first()
        count_sbc_done = SBCWorker.objects.filter(end_time__gt=timezone.localtime() - timedelta(hours=12),
                                                  produced_coins__gt=2000, is_done=True, fifa_account__pc=pc).count()
        return count_sbc_done

    def render_count_done_in_24_hours(self, value):
        pc = PC.objects.filter(id=value).first()
        count_sbc_done = SBCWorker.objects.filter(end_time__gt=timezone.localtime() - timedelta(hours=24),
                                                  produced_coins__gt=2000, is_done=True, fifa_account__pc=pc).count()
        return count_sbc_done

    def render_uncompleted_worker(self, value):
        exist = False
        pc = PC.objects.filter(id=value).first()
        fifa_accounts = FifaAccount.objects.filter(pc=pc).all()
        for fifa_account in fifa_accounts:
            existed_sbc_worker = SBCWorker.objects.filter(
                is_done=False, has_error=False, running_platform='console', fifa_account=fifa_account,
                manual_loyal=True).first()
            if existed_sbc_worker:
                exist = True
                break
        return exist

    def render_count_done_in_48_hours(self, value):
        pc = PC.objects.filter(id=value).first()
        count_sbc_done = SBCWorker.objects.filter(end_time__gt=timezone.localtime() - timedelta(hours=48),
                                                  produced_coins__gt=2000, is_done=True, fifa_account__pc=pc).count()
        return count_sbc_done

    def order_count_done_in_48_hours(self, queryset, is_descending):
        workers = SBCWorker.objects.annotate(pc=F('fifa_account__pc')).filter(
            end_time__gt=timezone.localtime() - timedelta(hours=48),
            produced_coins__gt=2000, is_done=True, pc=OuterRef('pk')
        ).order_by().values('pc').annotate(pc_sum=Count('pc', output_field=IntegerField())).values('pc_sum')
        query = queryset.annotate(
            counter=Subquery(workers),
            counter_num=Case(When(counter=None, then=Value(0)), default=F('counter')),
        ).order_by('counter_num' if is_descending else '-counter_num')
        return (query, True)

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = PC
        fields = ('counter', 'name', 'any_desk_code',
                  # 'count_done_in_12_hours', 'count_done_in_24_hours',
                  # 'count_done_in_48_hours', 'uncompleted_worker'
                  )
        attrs = {'class': 'table table-stripped'}


class NationsListTable(Table):
    counter = CounterColumn()

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = PC
        fields = ('counter', 'id', 'name')
        attrs = {'class': 'table table-stripped'}


class PacksListTable(Table):
    counter = CounterColumn()

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = PC
        fields = ('counter', 'id', 'pack_name', 'pack_desc')
        attrs = {'class': 'table table-stripped'}


class ActiveSBCTasksTable(Table):
    cancel_task = LinkColumn('cancel-sbc-task', text='Cancel Task', verbose_name='--', args=[A('id')],
                             attrs={'a': {'class': 'btn btn-danger'}})

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCWorker
        fields = ('fifa_account.user_name', 'cancel_task',)
        attrs = {'class': 'table table-stripped'}


class CeleryActiveTasksTable(Table):
    task_id = Column(accessor='id')

    cancel_task = LinkColumn('force-stop-celery-task', text='Cancel Task', verbose_name='--', args=[A('id')],
                             attrs={'a': {'class': 'btn btn-danger'}})

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        fields = ('task_id', 'cancel_task',)
        attrs = {'class': 'table table-stripped'}


class CheckHealthyListTable(Table):
    logs = LinkColumn('check-healthy-excel', text='Download Excel', verbose_name='--', args=[A('pk')],
                      attrs={'a': {'class': 'btn btn-info'}})
    cancel_order = LinkColumn('cancel-check-healthy-order', text='Cancel Order', verbose_name='--', args=[A('pk')],
                              attrs={'a': {'class': 'btn btn-danger'}})

    sum_accounts = Column(accessor='id', verbose_name='Sum Accounts')
    sum_fail = Column(accessor='id', verbose_name='Sum Fail')
    sum_success = Column(accessor='id', verbose_name='Sum Success')

    def render_sum_accounts(self, value):
        return AccountCheckHealthyWorker.objects.filter(request_order__id=value).count()

    def render_sum_fail(self, value):
        return AccountCheckHealthyWorker.objects.filter(request_order__id=value, has_error=True).count()

    def render_sum_success(self, value):
        return AccountCheckHealthyWorker.objects.filter(request_order__id=value, is_done=True, has_error=False).count()

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = AccountCheckHealthyOrder
        fields = ('file_name', 'create_time', 'status', 'sum_accounts', 'sum_fail', 'sum_success', 'cancel_order')
        attrs = {'class': 'table table-stripped'}


class InvestorConsolesListTable(ConsoleWorkersLogsTable):
    console_credit = Column(accessor='console_credit', verbose_name='Console Credit',
                            attrs={"td": {"class": "fw-bold"}})
    success_discharge = Column(accessor='id', verbose_name='Success Discharge',
                               attrs={"td": {"class": "fw-bold"}})

    def render_console_credit(self, value):
        return number_convertor_to_milion(value)

    def render_success_discharge(self, value, record):
        if record['start_date'] and record['end_date']:
            start_date_time = make_aware(timezone.localtime().strptime(
                unidecode(record['start_date']), '%Y-%m-%d %H:%M'))
            end_date_time = make_aware(timezone.localtime().strptime(unidecode(record['end_date']), '%Y-%m-%d %H:%M'))
            discharge_query = CloseWebAppSnipes.objects.filter(
                first_account__previous_console__name=record['console_name'],
                insert_time__gt=start_date_time,
                insert_time__lt=end_date_time,
            ).exclude(
                winner_account=None
            )
        else:
            discharge_query = CloseWebAppSnipes.objects.filter(
                first_account__previous_console__name=record['console_name'],
            ).exclude(
                winner_account=None
            )

        success_discharge = discharge_query.annotate(
            transfer_coin=(F('player_price') - F('player_min_price_from_futbin')) - (
                    (F('player_price') + F('player_min_price_from_futbin')) * .05)
        ).aggregate(
            sum_success_discharge=Sum('transfer_coin')
        ).get('sum_success_discharge') or 0
        return number_convertor_to_milion(success_discharge)

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = Console
        fields = ('counter', 'fifa_account_user_name', 'console_name',
                  'name_in_console', 'status', 'in_this_status_time', 'console_credit')
        exclude = ('sbc_worker', 'fifa_account', 'description', 'any_desk')
        attrs = {'class': 'table table-stripped'}
        # row_attrs = {
        #     "data-status": lambda record: "red" if record['status'] in RED_STATUS
        #     else record['status_color'] if (
        #             record['status'] == 'resting ...'
        #     ) else 'dark-gray' if (
        #             record['status_color'] == 'gray' or record['status'] == 'all account is done'
        #     ) else 'red2' if (
        #             timezone.localtime() - timedelta(minutes=40) > record['status_change_time']
        #     ) else "blue" if (
        #             timezone.localtime() - timedelta(minutes=25) > record['status_change_time']
        #     ) else "",
        # }


class SBCProcessDoneListTable(Table):
    counter = CounterColumn()

    class Meta:
        template_name = "django_tables2/bootstrap.html"
        model = SBCProcess
        fields = ('counter', 'sbc_number', 'sbc_name', 'expire_time', 'done_process')
        attrs = {'class': 'table table-stripped'}
