#include "dbforrmate.h"
#include <QUuid>

ST_PatientMsg variantMapToPatientMsg(QVariantMap vMap)
{
    ST_PatientMsg st_PatientMsg;
    if(vMap.contains("ID"))
        st_PatientMsg.ID = vMap.value("ID").toUInt();
    if(vMap.contains("name"))
        st_PatientMsg.name = vMap.value("name").toString();
    if(vMap.contains("phone"))
        st_PatientMsg.phone = vMap.value("phone").toString();
    if(vMap.contains("sex"))
        st_PatientMsg.sex = vMap.value("sex").toUInt();
    if(vMap.contains("birthday"))
        st_PatientMsg.birthday = vMap.value("birthday").toDate();
    if(vMap.contains("bodyIndex"))
        st_PatientMsg.bodyIndex = vMap.value("bodyIndex").toInt();
    if(vMap.contains("markMsg"))
        st_PatientMsg.markMsg = vMap.value("markMsg").toString();
    if(vMap.contains("age"))
        st_PatientMsg.age = vMap.value("age").toUInt();
    return st_PatientMsg;
}

ST_TrainReport variantMapToTrainReport(QVariantMap vMap)
{
    ST_TrainReport st_TrainReport;
    if(vMap.contains("UUID"))
        st_TrainReport.UUID = vMap.value("UUID").toString();
    if(vMap.contains("ID"))
        st_TrainReport.ID = vMap.value("ID").toInt();
    if(vMap.contains("name"))
        st_TrainReport.name = vMap.value("name").toString();
    if(vMap.contains("sex"))
        st_TrainReport.sex = vMap.value("sex").toInt();
    if(vMap.contains("phone"))
        st_TrainReport.phone = vMap.value("phone").toString();
    if(vMap.contains("age"))
        st_TrainReport.age = vMap.value("age").toUInt();
    if(vMap.contains("trainMode"))
        st_TrainReport.trainMode = vMap.value("trainMode").toInt();
    if(vMap.contains("bodyIndex"))
        st_TrainReport.bodyIndex = vMap.value("bodyIndex").toInt();
    if(vMap.contains("markMsg"))
        st_TrainReport.markMsg = vMap.value("markMsg").toString();
    if(vMap.contains("trainTime"))
        st_TrainReport.trainTime = vMap.value("trainTime").toInt();
    if(vMap.contains("leftBalance"))
        st_TrainReport.leftBalance = vMap.value("leftBalance").toInt();
    if(vMap.contains("rightBalance"))
        st_TrainReport.rightBalance = vMap.value("rightBalance").toInt();
    if(vMap.contains("upLimpLength"))
        st_TrainReport.upLimpLength = vMap.value("upLimpLength").toFloat();
    if(vMap.contains("downLimpLength"))
        st_TrainReport.downLimpLength = vMap.value("downLimpLength").toFloat();
    if(vMap.contains("passiveTime"))
        st_TrainReport.passiveTime = vMap.value("passiveTime").toInt();
    if(vMap.contains("activeTime"))
        st_TrainReport.activeTime = vMap.value("activeTime").toInt();
    if(vMap.contains("spasmTimes"))
        st_TrainReport.spasmTimes = vMap.value("spasmTimes").toInt();
    if(vMap.contains("maxResistance"))
        st_TrainReport.maxResistance = vMap.value("maxResistance").toFloat();
    if(vMap.contains("minResistance"))
        st_TrainReport.minResistance = vMap.value("minResistance").toFloat();
    if(vMap.contains("averangeResistance"))
        st_TrainReport.averangeResistance = vMap.value("averangeResistance").toFloat();
    if(vMap.contains("startTimeStr"))
        st_TrainReport.startTimeStr = vMap.value("startTimeStr").toString();
    if(vMap.contains("averageSpeed"))
        st_TrainReport.averageSpeed = vMap.value("averageSpeed").toInt();
    if(vMap.contains("maxSpeed"))
        st_TrainReport.maxSpeed = vMap.value("maxSpeed").toInt();
    return st_TrainReport;
}

ST_TrainRecord variantMapToTrainRecord(QVariantMap vMap)
{
    ST_TrainRecord st_trainRecord;
    if(vMap.contains("ID"))
        st_trainRecord.ID = vMap.value("ID").toUInt();
    if(vMap.contains("startTime"))
        st_trainRecord.startTime = vMap.value("startTime").toDateTime();
    if(vMap.contains("startTimeStr"))
        st_trainRecord.startTimeStr = vMap.value("startTimeStr").toString();
    if(vMap.contains("trainTime"))
        st_trainRecord.trainTime = vMap.value("trainTime").toInt();
    if(vMap.contains("score"))
        st_trainRecord.score = vMap.value("score").toInt();
    if(vMap.contains("bodyPart"))
        st_trainRecord.bodyPart = vMap.value("bodyPart").toString();
    if(vMap.contains("trainMode"))
        st_trainRecord.trainMode = vMap.value("trainMode").toString();
    return st_trainRecord;
}

ST_BLEDevice variantMapToBLEDevice(QVariantMap vMap)
{
    ST_BLEDevice st_deviceMsg;
    if(vMap.contains("deviceNo"))
        st_deviceMsg.deviceNo = vMap.value("deviceNo").toInt();
    if(vMap.contains("deviceMac"))
        st_deviceMsg.deviceMac = vMap.value("deviceMac").toString();
    return st_deviceMsg;
}

ST_TrainParam variantMapToTrainParam(QVariantMap vMap)
{
    ST_TrainParam st_trainParam;
    if(vMap.contains("ID"))
        st_trainParam.ID = vMap.value("ID").toInt();
    if(vMap.contains("trainLimp"))
        st_trainParam.trainLimp = vMap.value("trainLimp").toInt();
    if(vMap.contains("trainMode"))
        st_trainParam.trainMode = vMap.value("trainMode").toInt();
    if(vMap.contains("trainTime"))
        st_trainParam.trainTime = vMap.value("trainTime").toInt();

    if(vMap.contains("trainResistance"))
        st_trainParam.trainResistance = vMap.value("trainResistance").toInt();
    if(vMap.contains("trainSpeed"))
        st_trainParam.trainSpeed = vMap.value("trainSpeed").toInt();
    if(vMap.contains("trainDirection"))
        st_trainParam.trainDirection = vMap.value("trainDirection").toInt();
    if(vMap.contains("spasmProtect"))
        st_trainParam.spasmProtect = vMap.value("spasmProtect").toInt();

    if(vMap.contains("spasmLevel"))
        st_trainParam.spasmLevel = vMap.value("spasmLevel").toInt();
    if(vMap.contains("gameID"))
        st_trainParam.gameID = vMap.value("gameID").toInt();
    return st_trainParam;
}

QVariantMap patientMsgToVariantMap(const ST_PatientMsg& st_PatientMsg)
{
    QVariantMap vMap;
    vMap.insert("ID",st_PatientMsg.ID);
    vMap.insert("name",st_PatientMsg.name);
    vMap.insert("phone",st_PatientMsg.phone);
    vMap.insert("birthday",st_PatientMsg.birthday);
    vMap.insert("sex",st_PatientMsg.sex);
    vMap.insert("bodyIndex",st_PatientMsg.bodyIndex);
    vMap.insert("markMsg",st_PatientMsg.markMsg);
    vMap.insert("age",st_PatientMsg.age);
    return vMap;
}

QVariantMap trainReportToVariantMap(const ST_TrainReport& st_TrainReport)
{
    QVariantMap vMap;
    //添加UUID
    QUuid id = QUuid::createUuid();
    QString strId = id.toString(QUuid::Id128);
    vMap.insert("UUID",strId);
    vMap.insert("ID",st_TrainReport.ID);
    vMap.insert("name",st_TrainReport.name);
    vMap.insert("sex",st_TrainReport.sex);
    vMap.insert("phone",st_TrainReport.phone);
    vMap.insert("age",st_TrainReport.age);
    vMap.insert("trainMode",st_TrainReport.trainMode);
    vMap.insert("bodyIndex",st_TrainReport.bodyIndex);
    vMap.insert("markMsg",st_TrainReport.markMsg);
    vMap.insert("trainTime",st_TrainReport.trainTime);
    vMap.insert("leftBalance",st_TrainReport.leftBalance);
    vMap.insert("rightBalance",st_TrainReport.rightBalance);
    vMap.insert("upLimpLength",st_TrainReport.upLimpLength);
    vMap.insert("downLimpLength",st_TrainReport.downLimpLength);
    vMap.insert("activeTime",st_TrainReport.activeTime);
    vMap.insert("passiveTime",(int)st_TrainReport.passiveTime);
    vMap.insert("spasmTimes",st_TrainReport.spasmTimes);
    vMap.insert("maxResistance",st_TrainReport.maxResistance);
    vMap.insert("averangeResistance",st_TrainReport.averangeResistance);
    vMap.insert("minResistance",st_TrainReport.minResistance);
    vMap.insert("startTimeStr",st_TrainReport.startTimeStr);
    vMap.insert("averageSpeed",st_TrainReport.averageSpeed);
    vMap.insert("maxSpeed",st_TrainReport.maxSpeed);
    return vMap;
}

QVariantMap trainRecordToVariantMap(const ST_TrainRecord& st_trainRecord)
{
    QVariantMap vMap;
    //添加UUID
    QUuid id = QUuid::createUuid();
    QString strId = id.toString(QUuid::Id128);
    vMap.insert("UUID",strId);
    vMap.insert("ID",st_trainRecord.ID);
    vMap.insert("startTime",st_trainRecord.startTime);
    vMap.insert("startTimeStr",st_trainRecord.startTimeStr);
    vMap.insert("trainTime",st_trainRecord.trainTime);
    vMap.insert("score",st_trainRecord.score);
    vMap.insert("bodyPart",st_trainRecord.bodyPart);
    vMap.insert("trainMode",st_trainRecord.trainMode);
    return vMap;
}

QVariantMap BLEDeviceToVariantMap(const ST_BLEDevice& st_bleDevice)
{
    QVariantMap vMap;
    vMap.insert("deviceNo",st_bleDevice.deviceNo);
    vMap.insert("deviceMac",st_bleDevice.deviceMac);
    return vMap;
}


QVariantMap TrainParamToVariantMap(const ST_TrainParam &st_trainParam)
{
    QVariantMap vMap;
    vMap.insert("ID",st_trainParam.ID);
    vMap.insert("trainLimp",st_trainParam.trainLimp);
    vMap.insert("trainMode",st_trainParam.trainMode);
    vMap.insert("trainTime",st_trainParam.trainTime);
    vMap.insert("trainResistance",st_trainParam.trainResistance);
    vMap.insert("trainSpeed",st_trainParam.trainSpeed);
    vMap.insert("trainDirection",st_trainParam.trainDirection);
    vMap.insert("spasmProtect",st_trainParam.spasmProtect);
    vMap.insert("spasmLevel",st_trainParam.spasmLevel);
    vMap.insert("gameID",st_trainParam.gameID);
    return vMap;
}