Esempio n. 1
0
def fetch_exclude_deposit_money_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'exclude_amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    exclude_amount = data.get("exclude_amount")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    operator = take_credit_helpers.get_operator(request)
    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)
    team_deposit = get_team_deposit(team)

    error_response = get_error_response(team, team_deposit, exclude_amount,
                                        operator)
    if error_response:
        error_response['success'] = False
        return error_response

    increase_card_money_amount_to_exclude_amount(team_card, exclude_amount)
    decrease_deposit_invest_amount_to_exclude_amount(team_deposit,
                                                     exclude_amount)
    return {"success": True}
Esempio n. 2
0
def fetch_transfer_money_response(request, give_money):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ("card_type", "card", "money_amount")
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields
    )
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get('card_type')
    card = data.get('card')
    money_amount = data.get('money_amount')

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response:
        card_error_response['success'] = False
        return card_error_response

    error_response = get_error_response(money_amount)
    if error_response:
        error_response['success'] = False
        return error_response

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    if give_money:
        team_card.money_amount += money_amount
    else:
        team_card.money_amount -= money_amount

    team_card.save()
    return {"success": True}
Esempio n. 3
0
def fetch_buy_share_response(request):
    current_half_year = Timing.objects.all()[0].current_half_year
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'share_type', 'amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get('card_type')
    card = data.get('card')

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response:
        card_error_response['success'] = False
        return card_error_response

    share_type_to_buy = data.get('share_type')
    amount_to_buy = data.get('amount')

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)
    share_type = ShareType.objects.filter(name=share_type_to_buy)
    if not share_type:
        return {'success': False, 'error': 'Такого типа акций нет'}
    share_type = share_type[0]

    stock_price = share_type.stock_price.filter(half_year=current_half_year)
    if not stock_price:
        return {'success': False, 'error': 'У акций не заполнены расценки'}
    current_price = stock_price[0].buy_price

    error_response = get_error_response(share_type, amount_to_buy,
                                        current_price, team_card)
    if error_response:
        error_response['success'] = False
        return error_response

    decrease_card_money_amount_to_buyed_shares_price(team_card, current_price,
                                                     amount_to_buy)

    deal = ShareDeal.objects.filter(team=team, share_type=share_type)
    if deal:
        deal[0].amount += amount_to_buy
        deal[0].save()
    else:
        deal = create_new_deal(team, share_type, amount_to_buy)

    return {'success': True}
def fetch_sell_share_response(request):
    current_half_year = Timing.objects.all()[0].current_half_year
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'share_type', 'amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get('card_type')
    card = data.get('card')

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response:
        card_error_response['success'] = False
        return card_error_response

    share_type_to_sell = data.get("share_type")
    amount_to_sell = data.get('amount')

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    share_type = ShareType.objects.filter(name=share_type_to_sell)
    if not share_type:
        return {'success': False, 'error': 'Такого типа акций нет'}
    share_type = share_type[0]

    stock_price = share_type.stock_price.filter(half_year=current_half_year)
    if not stock_price:
        return {'success': False, 'error': 'У акций не заполнены расценки'}
    current_price = stock_price[0].sell_price

    deal = ShareDeal.objects.filter(team=team, share_type=share_type)
    if not deal:
        return {'success': False, 'error': 'Команда не покупала таких акций'}
    deal = deal[0]

    error_response = get_error_response(amount_to_sell, deal)
    if error_response:
        error_response['success'] = False
        return error_response

    increase_card_money_amount_to_sold_shares_price(team_card, current_price,
                                                    amount_to_sell)
    decrease_deal_share_type_amount(deal, amount_to_sell)

    return {'success': True}
Esempio n. 5
0
def fetch_invest_money_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'invest_amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields
    )
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    invest_amount = data.get("invest_amount")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    operator = take_credit.get_operator(request)
    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    error_response = get_error_response(team, invest_amount, operator)
    if error_response:
        error_response['success'] = False
        return error_response

    decrease_team_card_money_amount_to_invest_amount(team_card, invest_amount)

    team_deposit = get_team_deposit(team)
    if not team_deposit:
        team_deposit = create_new_deposit(team, invest_amount)
    else:
        team_deposit.invest_amount += invest_amount
        team_deposit.save()

    if not team_deposit._state.db:
        return {
            "success": False,
            "error": "Депозит не был добавлен в базу данных"
        }

    return {"success": True}
def fetch_credit_info_response(request):
    data = json.loads(request.body.decode("utf-8"))
    card_type = data.get("card_type")
    card = data.get("card")

    expected_fields = ("card_type", "card")
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    credit_info = get_credit_info(card_type, card)
    return credit_info
Esempio n. 7
0
def get_error_response(name, owner, faculty, group, bank, card_type, card):
    card_error_response = check_card.get_card_error_response(
        card_type, card, check_has_card_team=False)
    if card_error_response.get('error'):
        return card_error_response

    response = {}
    if not helpers.is_unique_field('name', name, Team):
        response['error'] = 'Команда с именем "%s" уже существует' % name

    elif not helpers.is_value_positive_integer(bank):
        response['error'] = 'Неверный формат банка'

    elif not is_object_exist(object_id=bank, object_model=Bank):
        response['error'] = 'Такого банка не существует'

    if check_card.get_team_by_card(card_type, card):
        response['error'] = 'Команда с такой картой уже существует'

    return response
Esempio n. 8
0
def fetch_make_bet_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'bet_amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    bet_amount = data.get("bet_amount")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    station_admin = get_station_admin(request)
    station = station_admin.station
    team = check_card.get_team_by_card(card_type, card)

    error_response = get_error_response(team, station, bet_amount)
    if error_response:
        error_response['success'] = False
        return error_response

    team_card = check_card.get_team_card(team)
    exclude_bet_amount_from_card(team_card, bet_amount)

    transaction = create_new_transaction(team, station, bet_amount)
    if not transaction._state.db:
        return JsonResponse({
            "success":
            False,
            "error":
            "Транзакция не была добавлена в базу данных"
        })

    return {"success": True}
def fetch_take_credit_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'credit_amount', 'term')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    credit_amount = data.get("credit_amount")
    term = data.get("term")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    operator = get_operator(request)
    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    error_response = get_error_response(team, team_card, credit_amount, term,
                                        operator)
    if error_response:
        error_response['success'] = False
        return error_response

    transfer_credit_amount_to_team_card(team_card, credit_amount)
    credit = create_new_credit(team, credit_amount, term)
    if not credit._state.db:
        return {
            "success": False,
            "error": "Кредит не был добавлен в базу данных"
        }

    return {"success": True}
def fetch_victory_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'victory')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    victory = data.get("victory")

    error_response = get_error_response(victory)
    if error_response:
        error_response['success'] = False
        return error_response

    team = check_card.get_team_by_card(card_type, card)
    station_admin = get_station_admin(request)
    station = station_admin.station
    current_transaction = get_current_transaction(team, station)

    if not victory:
        current_transaction.victory = False
        current_transaction.processed = True
    else:
        current_transaction.victory = True
        current_transaction.processed = False

    current_transaction.save()
    return {"success": True}