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}
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}
def fetch_deposit_info_response(request): check_card_response = check_card.fetch_check_card_response(request) if not check_card_response.get('success'): return check_card_response data = json.loads(request.body.decode("utf-8")) card_type = data.get("card_type") card = data.get("card") team = check_card.get_team_by_card(card_type, card) deposit_info = get_deposit_info(team) return deposit_info
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}
def get_share_info(data): team = check_card.get_team_by_card(data) share_info = { 'team_name': team.name, 'team_owner': team.owner, 'team_money_amount': team.card.money_amount, 'team_bank': { 'bank_id': team.bank.id, 'bank_name': team.bank.name, }, 'team_shares': None } team_shares = get_team_shares(team) if team_shares: share_info['team_shares'] = team_shares return share_info
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_confirm_transaction_response(request): check_card_response = check_card.fetch_check_card_response(request) if not check_card_response.get('success'): return check_card_response data = json.loads(request.body.decode("utf-8")) card_type = data.get('card_type') card = data.get('card') team = check_card.get_team_by_card(card_type, card) team_card = check_card.get_team_card(team) won_money_amount = get_team_won_money(team) if not won_money_amount: return {'success': False, 'won_money_amount': 0} transfer_won_money_to_card(team_card, won_money_amount) return {'success': True, 'won_money_amount': won_money_amount}
def get_credit_info(card_type, card): team = check_card.get_team_by_card(card_type, card) credit_info = { 'team_name': team.name, 'team_owner': team.owner, 'team_money_amount': team.card.money_amount, 'team_bank': { 'bank_id': team.bank.id, 'bank_name': team.bank.name, }, 'team_credit': None } team_credit = get_team_credit(team) if team_credit: credit_info['team_credit'] = { 'debt_amount': team_credit.debt_amount, 'term': team_credit.term, 'last_change': team_credit.last_change } return credit_info
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
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}
def fetch_share_info_response(request): check_card_response = check_card.fetch_check_card_response(request) if not check_card_response.get('success'): return check_card_response data = json.loads(request.body.decode("utf-8")) card_type = data.get('card_type') card = data.get('card') team = check_card.get_team_by_card(card_type, card) share_info = { 'team_name': team.name, 'team_owner': team.owner, 'team_money_amount': team.card.money_amount, 'team_bank': { 'bank_id': team.bank.id, 'bank_name': team.bank.name, }, 'team_shares': None } team_shares = get_team_shares(team) if team_shares: share_info['team_shares'] = team_shares return share_info