Add missing files.
This commit is contained in:
74
src/jsonio.cpp
Normal file
74
src/jsonio.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (C) 2020 <Kevin Whitakerr> <eyecreate@eyecreate.org>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "jsonio.h"
|
||||
#include <qfile.h>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
#include <QSqlRecord>
|
||||
#include <QSqlQuery>
|
||||
#include <QUrl>
|
||||
|
||||
JsonIO::JsonIO(SqlVehicle* vehicles, SqlServiceRecord* records, QObject* parent)
|
||||
{
|
||||
this->vehicles = vehicles;
|
||||
this->records = records;
|
||||
}
|
||||
|
||||
bool JsonIO::importCarfaxJsonToDB(QString fileLocation)
|
||||
{
|
||||
QFile file(QUrl(fileLocation).toLocalFile());
|
||||
file.open(QIODevice::ReadOnly);
|
||||
QString jsonContent;
|
||||
jsonContent = file.readAll();
|
||||
file.close();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(jsonContent.toUtf8());
|
||||
QJsonObject root = doc.object();
|
||||
if(root.contains("vehicle")) {
|
||||
QJsonObject vehicle = root["vehicle"].toObject();
|
||||
QString make = vehicle["make"].toString();
|
||||
QString model = vehicle["model"].toString();
|
||||
QString year = vehicle["year"].toString();
|
||||
QString name = vehicle["nickname"].toString(make+" "+model);
|
||||
QString vin = vehicle["vin"].toString();
|
||||
this->vehicles->addNewVehicle(name, make, model, year.toInt(), nullptr, vin); //TODO: image source?
|
||||
int vehicleId = vehicles->query().lastInsertId().toInt();
|
||||
if(vehicle.contains("serviceRecords")) {
|
||||
QJsonArray records = vehicle["serviceRecords"].toArray();
|
||||
foreach(const QJsonValue & record,records) {
|
||||
QJsonObject recordObj = record.toObject();
|
||||
QString date = recordObj["date"].toString();
|
||||
int miles = recordObj["odometer"].toString().replace(",","").toInt();
|
||||
QString serviceProvider = recordObj["source"].toArray()[0].toObject()["text"].toString();
|
||||
QString notes = recordObj["comments"].toString("");
|
||||
QJsonArray details = recordObj["details"].toArray();
|
||||
foreach(const QJsonValue & detail, details) {
|
||||
QString service = detail.toObject()["text"].toString();
|
||||
int serviceType = -1;
|
||||
//Detect some common types
|
||||
if(service == "Tires rotated") serviceType = 3;
|
||||
if(service == "Oil and filter changed") serviceType = 0;
|
||||
this->records->addNewRecord(vehicleId, serviceProvider, serviceType, service, date, miles, notes);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
41
src/jsonio.h
Normal file
41
src/jsonio.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2020 <Kevin Whitaker> <eyecreate@eyecreate.org>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef JSONIO_H
|
||||
#define JSONIO_H
|
||||
|
||||
#include <qobject.h>
|
||||
#include "db/sqlvehicle.h"
|
||||
#include "db/sqlservicerecord.h"
|
||||
|
||||
/**
|
||||
* Utility class to handle reading/writing json to/from DB.
|
||||
*/
|
||||
class JsonIO : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
JsonIO(SqlVehicle *vehicles, SqlServiceRecord *records, QObject *parent = nullptr);
|
||||
Q_INVOKABLE bool importCarfaxJsonToDB(QString fileLocation);
|
||||
|
||||
private:
|
||||
SqlVehicle* vehicles;
|
||||
SqlServiceRecord* records;
|
||||
|
||||
};
|
||||
|
||||
#endif // JSONIO_H
|
||||
Reference in New Issue
Block a user