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 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