def sualenh(request, current_user):
    if request.method == 'PUT':
        data = json.loads(json.dumps(request.data))

        if 'id' not in data:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        if data['fromtypecoin'] == data['totypecoin'] or not data['id']:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        try:
            lenh = Exchange.objects.get(id=data['id'])
        except:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        if lenh.userid.id != current_user.id:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        #kiem tra fromcoin
        usrfrom = UserCoin.objects.filter(userid=current_user.id,
                                          coinid=data['fromtypecoin'])
        if float(data['fromcoin']) > float(usrfrom[0].value):
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        data['id'] = lenh.id
        data['status'] = False
        data['time'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        data['userid'] = current_user.id

        serializer = ExchangeSerializer(lenh, data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse({'data': 'OK', 'status': 'success'})
        else:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })
def datlenh(request, current_user):
    if request.method == 'POST':
        data = json.loads(json.dumps(request.data))
        if 'fromtypecoin' not in data or 'fromcoin' not in data or 'totypecoin' not in data or 'tocoin' not in data:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        if data['fromtypecoin'] == data['totypecoin'] or data[
                'fromcoin'] == 0 or data['tocoin'] == 0 or data[
                    'fromcoin'] == "0" or data['tocoin'] == "0":
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })

        #kiem tra fromcoin
        #coin con lai o tai khoan
        usrfrom = UserCoin.objects.filter(userid=current_user.id,
                                          coinid=data['fromtypecoin'])
        #coin da dung de dat lenh
        coinfalse = Exchange.objects.filter(userid=current_user.id,
                                            fromtypecoin=data['fromtypecoin'],
                                            status=0)
        total = 0
        for i in coinfalse:
            t = i.fromcoin
            total = total + t

        #import pdb; pdb.set_trace();
        #kiem tra dieu kien
        coin = float(usrfrom[0].value - total)
        if float(data['fromcoin']) > coin:
            return JsonResponse({
                'message': 'Du lieu khong hop le nhe',
                'status': 'error'
            })

        data['time'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        data['userid'] = current_user.id

        serializer = ExchangeSerializer(data=data)
        if serializer.is_valid():
            serializer.save()

            return JsonResponse({'data': 'OK', 'status': 'success'})
        else:
            return JsonResponse({
                'message': 'Du lieu khong hop le',
                'status': 'error'
            })
def xemlenhdakhop(request, current_user):
    if request.META['REQUEST_METHOD'] == 'GET':

        lenhdakhop = Exchange.objects.filter(userid=current_user.id,
                                             status=True)
        serializer = ExchangeSerializer(lenhdakhop, many=True)
        return JsonResponse({'data': serializer.data, 'status': 'success'})
def khoplenh(request, current_user):
    if request.method == 'POST':
        data = json.loads(json.dumps(request.data))
        #gia hien tai cua cac loai tien
        giahientai = laygiatienhientai()
        #return JsonResponse({'d': giahientai})

        ex = Exchange.objects.filter(status=False).order_by('time')
        serializer = ExchangeSerializer(ex, many=True)
        total = serializer.data
        total = loaichenhlech(total, giahientai)
        #return JsonResponse({'data':total, 'len': len(total)})

        listsosanh = []
        for t in total:
            for t1 in total:
                lai = 0
                if t1['id'] > t['id'] and t['userid'] != t1['userid'] and t[
                        'fromtypecoin'] == t1['totypecoin'] and t[
                            'totypecoin'] == t1['fromtypecoin'] and (
                                (t['fromcoin'] == t1['tocoin']
                                 and t['tocoin'] < t1['fromcoin']) or
                                (t['tocoin'] == t1['fromcoin']
                                 and t1['tocoin'] < t['fromcoin'])):
                    if t['tocoin'] < t1['fromcoin']:
                        lai = (t1['fromcoin'] - t['tocoin']) * giatien(
                            t['fromtypecoin'], giahientai)
                        tienlai = t1['fromcoin'] - t['tocoin']
                        loaitienlai = t['totypecoin']

                    if t1['tocoin'] < t['fromcoin']:
                        lai = (t['fromcoin'] - t1['tocoin']) * giatien(
                            t['fromtypecoin'], giahientai)
                        tienlai = t['fromcoin'] - t1['tocoin']
                        loaitienlai = t['fromtypecoin']

                    l = {
                        'tienlai': lai,
                        'from': t['id'],
                        'to': t1['id'],
                        'lai': tienlai,
                        'loaitienlai': loaitienlai
                    }
                    listsosanh.append(l)

        listsosanh = sorted(listsosanh)  #, reverse=True
        #return JsonResponse({'data': listsosanh})

        for li in listsosanh:
            if checktrangthai(li['from']) == False and checktrangthai(
                    li['to']) == False:
                #import pdb; pdb.set_trace();
                chuyenexchange(li['from'], li['lai'], li['loaitienlai'])
                chuyenexchange(li['to'], li['lai'], li['loaitienlai'])
                chuyenmatchexchange(li['from'], li['to'])

        return JsonResponse({'status': 'success'})
Exemple #5
0
def danhsachgiaodichdangcho(request, current_admin):
	if request.META['REQUEST_METHOD'] == 'GET':
		danhsach = Exchange.objects.filter(status=False).order_by('-time')
		serializer = ExchangeSerializer(danhsach, many=True)
		data = []
		for i in serializer.data:
			k = {}
			k['id'] = i['id']
			k['fromcoin'] = i['fromcoin']
			k['namefromtypecoin'] = str(TypeCoin.objects.get(id=i['fromtypecoin']).name)
			k['tocoin'] = i['tocoin']
			k['nametotypecoin'] = str(TypeCoin.objects.get(id=i['totypecoin']).name)
			k['userid'] = i['userid']
			k['time'] = i['time']
			k['status'] = i['status']
			data.append(k)
		return JsonResponse({'data': data, 'status': 'success'})
def xemdanhsachgiaodich(request):
    if request.META['REQUEST_METHOD'] == 'GET':
        danhsachgiaodich = Exchange.objects.filter(
            status=False).order_by('-time')
        serializer = ExchangeSerializer(danhsachgiaodich, many=True)
        return JsonResponse({'data': serializer.data, 'status': 'success'})
def chuyenexchange(exchangeid, tienlai, loaitienlai):
    giachenhlech = 0.01
    ex = Exchange.objects.filter(id=exchangeid)
    data = {}
    data['id'] = ex[0].id
    data['fromcoin'] = ex[0].fromcoin
    data['tocoin'] = ex[0].tocoin
    data['time'] = ex[0].time
    data['fromtypecoin'] = ex[0].fromtypecoin.id
    data['totypecoin'] = ex[0].totypecoin.id
    data['userid'] = ex[0].userid.id
    data['status'] = True

    serializer = ExchangeSerializer(ex[0], data=data)
    if serializer.is_valid():
        serializer.save()

    #xac dinh gia chenh lech
    chenhlech = ChenhLech.objects.filter(fromtypecoin=ex[0].fromtypecoin.id,
                                         totypecoin=ex[0].totypecoin.id)
    giachenhlech = chenhlech[0].value

    #trutien
    if ex[0].fromtypecoin == loaitienlai:

        usercoin = UserCoin.objects.filter(userid=ex[0].userid.id,
                                           coinid=ex[0].fromtypecoin.id)
        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value - float(ex[0].fromcoin)

        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

        usercoin = UserCoin.objects.filter(userid=ex[0].userid.id,
                                           coinid=ex[0].totypecoin.id)
        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value + float(
            float(ex[0].tocoin) * (1 - giachenhlech))
        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

        #admin + tienlai + 0.01 tocoin
        usercoin = UserCoin.objects.filter(userid='D4AD333121',
                                           coinid=ex[0].totypecoin.id)
        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value + float(
            float(ex[0].tocoin) * giachenhlech)
        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

        #admin + tienlai
        usercoin = UserCoin.objects.filter(userid='D4AD333121',
                                           coinid=ex[0].fromtypecoin.id)
        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value + float(tienlai)
        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

    else:
        usercoin = UserCoin.objects.filter(userid=ex[0].userid.id,
                                           coinid=ex[0].fromtypecoin.id)

        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value - float(ex[0].fromcoin)
        #import pdb; pdb.set_trace();
        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

        usercoin = UserCoin.objects.filter(userid=ex[0].userid.id,
                                           coinid=ex[0].totypecoin.id)
        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value + float(
            float(ex[0].tocoin) * (1 - giachenhlech))
        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

        #admin + 0.01 tocoin
        usercoin = UserCoin.objects.filter(userid='D4AD333121',
                                           coinid=ex[0].totypecoin.id)
        data = {}
        data['id'] = usercoin[0].id
        data['userid'] = usercoin[0].userid.id
        data['coinid'] = usercoin[0].coinid.id
        data['value'] = usercoin[0].value + float(
            float(ex[0].tocoin) * giachenhlech)
        serializer = UserCoinSerializer(usercoin[0], data=data)
        if serializer.is_valid():
            serializer.save()

    return 0