Création du composant LCD, rajout des écrans de logs et du dashboard

This commit is contained in:
2024-01-19 16:40:28 +01:00
parent b7fe429508
commit 4f3a5bda03
7 changed files with 310 additions and 46 deletions

View File

@ -2,6 +2,7 @@
#include <WiFi.h>
#include <ArduinoJson.h>
#include <iostream>
#include "M5LCD.h"
DolibarrClient::DolibarrClient(struct DolibarrConfig dolibarr_config) : dolibarr(dolibarr_config) {
#if defined(DEBUG)
@ -29,9 +30,11 @@ int DolibarrClient::login() const {
HTTPClient *client = this->build_url(API_LOGIN_URL);
int httpResponseCode = client->GET();
if (httpResponseCode > 0) {
StaticJsonDocument<API_MAX_JSON_SIZE> doc;
DynamicJsonDocument doc(384);
DeserializationError error = deserializeJson(doc, client->getString().c_str());
if (error) {
Serial.println("ERROR: ");
Serial.println(error.c_str());
delete client;
return -1;
}
@ -59,11 +62,11 @@ std::vector<models::Product> *DolibarrClient::list_products() const {
models::Product *DolibarrClient::get_product_by_id(const char* id_product) const {
HTTPClient *client = this->build_url(replace_id(API_GET_PRODUCT_URL, id_product).c_str());
if (client->GET() == HTTP_CODE_OK) {
StaticJsonDocument<API_MAX_JSON_SIZE> doc;
DynamicJsonDocument doc(6144);
DeserializationError error = deserializeJson(doc, client->getString().c_str());
if (error) {
Serial.println("ERROR: ");
Serial.println(error.c_str());
//Serial.println("ERROR: ");
//Serial.println(error.c_str());
delete client;
return nullptr;
}
@ -83,7 +86,7 @@ models::Product *DolibarrClient::get_product_by_id(const char* id_product) const
std::vector<models::Warehouse> *DolibarrClient::list_warehouse() const {
HTTPClient *client = this->build_url(API_LIST_WAREHOUSE_URL);
if (client->GET() == HTTP_CODE_OK) {
StaticJsonDocument<API_MAX_JSON_SIZE> doc;
DynamicJsonDocument doc(8192);
DeserializationError error = deserializeJson(doc, client->getString().c_str());
if (error) {
Serial.println("ERROR: ");
@ -94,7 +97,8 @@ std::vector<models::Warehouse> *DolibarrClient::list_warehouse() const {
auto *warehouses = new std::vector<models::Warehouse>();
for (auto obj : doc.as<JsonArray>()) {
models::Warehouse warehouse = {};
warehouse.id = obj["id"];
warehouse.id = obj["id"].as<std::string>();
warehouse.label = obj["label"].as<std::string>();
warehouses->push_back(warehouse);
}
delete client;
@ -105,8 +109,8 @@ std::vector<models::Warehouse> *DolibarrClient::list_warehouse() const {
}
int DolibarrClient::create_movement(models::CreateProductStock &stock) const {
HTTPClient *client = this->build_url("API_CREATE_STOCKS_MOVEMENTS_URL");
StaticJsonDocument<API_MAX_JSON_SIZE> doc;
HTTPClient *client = this->build_url(API_CREATE_STOCKS_MOVEMENTS_URL);
DynamicJsonDocument doc(4096);
std::string result;
doc["product_id"] = stock.product_id;
doc["warehouse_id"] = stock.warehouse_id;
@ -122,30 +126,5 @@ int DolibarrClient::create_movement(models::CreateProductStock &stock) const {
int DolibarrClient::initialize_http_client() {
this->httpClient = new HTTPClient();
if (this->login() == 0) {
auto* product = this->get_product_by_id("1");
if (product == nullptr) {
Serial.println("Product is nullptr !");
return -1;
}
Serial.println("Product label: ");
Serial.println(product->label);
auto* warehouses = this->list_warehouse();
if (warehouses == nullptr) {
delete product;
Serial.println("Warehouse is nullptr !");
return -1;
}
Serial.println("Warehouses: ");
models::CreateProductStock product_stock = {product->id, warehouses->at(0).id, "1"};
this->create_movement(product_stock);
for (auto warehouse : *warehouses) {
Serial.println(warehouse.id);
}
delete product;
delete warehouses;
} else {
Serial.println("An Error has occurred while trying to login");
}
return 0;
}

View File

@ -20,9 +20,9 @@ namespace models {
};
struct ProductStock {
const char* id;
const char* product_id;
const char* quantity;
std::string id;
std::string product_id;
std::string quantity;
};
struct CreateProductStock {
@ -32,7 +32,8 @@ namespace models {
};
struct Warehouse {
const char* id;
std::string id;
std::string label;
};
}