added backend implementation

This commit is contained in:
2024-02-02 10:53:48 +01:00
parent c18ec3084e
commit 6094ab6df3
43 changed files with 4360 additions and 61 deletions

View File

@ -0,0 +1,79 @@
//import functions from checklist solutions model
import {
insertChecklistSolutionTodo,
getChecklistSolutionTodosById,
getChecklistSolutionTodosByAsset,
updateChecklistSolutionTodoById,
deleteAllChecklistSolutionTodosSolutionID,
deleteChecklistSolutionTodo,
} from "../models/checklistSolutionsModel.js";
//create new checklist solution todo
export const createChecklistSolutionTodos = (req, res) => {
const data = req.body;
insertChecklistSolutionTodo(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single checklist solution todos by id
export const showChecklistSolutionTodosById = (req, res) => {
getChecklistSolutionTodosById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single checklist solution todos by asset
export const showChecklistSolutionTodosByAsset = (req, res) => {
getChecklistSolutionTodosByAsset(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update checklist solution todo
export const updateChecklistSolutionTodo = (req, res) => {
const data = req.body;
updateChecklistSolutionTodoById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete checklist solution todos by solution ID
export const deleteChecklistSolutionTodosSolutionID = (req, res) => {
const id = req.params.id;
deleteAllChecklistSolutionTodosSolutionID(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete checklist solution todos by primaryID
export const deleteChecklistSolutionTodos = (req, res) => {
const id = req.params.id;
deleteChecklistSolutionTodo(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,113 @@
import {
getConfigItems,
getConfigItemById,
getConfigItemByName,
getConfigItemByCustomerId,
updateConfigItemById,
insertConfigItem,
getSelectedConfigItemsByCustomer,
getSelectedConfigItemsByAssetName,
deleteConfigItemById,
} from "../models/configItemsModel.js";
//get all configItems
export const showConfigItems = (req, res) => {
getConfigItems((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single config item by id
export const showConfigItemById = (req, res) => {
getConfigItemById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single config item by name
export const showConfigItemByName = (req, res) => {
getConfigItemByName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get config items by customer id
export const showConfigItemByCustomerId = (req, res) => {
getConfigItemByCustomerId(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update config item
export const updateConfigItem = (req, res) => {
const data = req.body;
updateConfigItemById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new config item
export const createConfigItem = (req, res) => {
const data = req.body;
insertConfigItem(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected config items by customer
export const showSelectedConfigItemsByCustomer = (req, res) => {
getSelectedConfigItemsByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected config items by assetname
export const showSelectedConfigItemsByAssetName = (req, res) => {
getSelectedConfigItemsByAssetName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete config item
export const deleteConfigItem = (req, res) => {
const id = req.params.id;
deleteConfigItemById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,114 @@
//import functions from customers model
import {
getCustomers,
getSelectedCustomers,
getCustomerByProductionOrderId,
getCustomerByMaintenanceVisitId,
insertCustomer,
getCustomerByCustomerId,
getCustomerByName,
updateCustomerById,
deleteCustomerById,
} from "../models/customerModel.js";
//get all customers
export const showCustomers = (req, res) => {
getCustomers((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new customer
export const createCustomer = (req, res) => {
const data = req.body;
insertCustomer(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected customers
export const showSelectedCustomers = (req, res) => {
getSelectedCustomers(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single customer by production order id
export const showCustomerByProductionOrderId = (req, res) => {
getCustomerByProductionOrderId(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single customer by maintenance visit id
export const showCustomerByMaintenanceVisitId = (req, res) => {
getCustomerByMaintenanceVisitId(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single customer by customer id
export const showCustomerByCustomerId = (req, res) => {
getCustomerByCustomerId(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single customer by name
export const showCustomerByName = (req, res) => {
getCustomerByName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update customer
export const updateCustomer = (req, res) => {
const data = req.body;
updateCustomerById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete customer
export const deleteCustomer = (req, res) => {
const id = req.params.id;
deleteCustomerById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,127 @@
//import functions from issue slips model
import {
getIssueSlips,
getSelectedIssueSlipsByTicketnumber,
getSelectedIssueSlipsByCustomer,
getSelectedIssueSlipsByDate,
deleteIssueSlipById,
deleteIssueSlipByTicketNo,
insertIssueSlip,
getIssueSlipByTicketNo,
getIssueSlipById,
updateIssueSlipById,
} from "../models/issueSlipsModel.js";
//get all issue slips
export const showIssueSlips = (req, res) => {
getIssueSlips((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected issue slips by customer
export const showSelectedIssueSlipsByCustomer = (req, res) => {
getSelectedIssueSlipsByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected issue slips by ticketnumber
export const showSelectedIssueSlipsByTicketnumber = (req, res) => {
getSelectedIssueSlipsByTicketnumber(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected issue slips by date
export const showSelectedIssueSlipsByDate = (req, res) => {
getSelectedIssueSlipsByDate(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete issue slip
export const deleteIssueSlip = (req, res) => {
const id = req.params.id;
deleteIssueSlipById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete issue slips by ticketnumber
export const deleteIssueSlipByTicketnumber = (req, res) => {
const id = req.params.id;
deleteIssueSlipByTicketNo(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new issue slip
export const createIssueSlip = (req, res) => {
const data = req.body;
insertIssueSlip(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single issue slip by ticketNo
export const showIssueSlipByTicketNo = (req, res) => {
getIssueSlipByTicketNo(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single issue slip by id
export const showIssueSlipById = (req, res) => {
getIssueSlipById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update issue slip
export const updateIssueSlip = (req, res) => {
const data = req.body;
updateIssueSlipById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,103 @@
//import functions from issue variants model
import {
getAllIssueVariants,
getIssueVariantById,
getSelectedIssueVariantsByIssueId,
getSelectedIssueVariantsByName,
updateIssueVariantById,
deleteIssueVariantById,
deleteIssueVariantByIssueSlipId,
insertIssueVariant,
} from "../models/issuesModel.js";
//get all issue variants
export const showIssueVariants = (req, res) => {
getAllIssueVariants((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete issue variant
export const deleteIssueVariant = (req, res) => {
const id = req.params.id;
deleteIssueVariantById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete issue variant by issue slip id
export const deleteIssueVariantByIssueSlipIds = (req, res) => {
const id = req.params.id;
deleteIssueVariantByIssueSlipId(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new issue variant
export const createIssueVariant = (req, res) => {
const data = req.body;
insertIssueVariant(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single issue variant by id
export const showIssueVariantById = (req, res) => {
getIssueVariantById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update issue variant
export const updateIssueVariant = (req, res) => {
const data = req.body;
updateIssueVariantById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected issue variants by issueID
export const showSelectedIssueVariantsByIssueId = (req, res) => {
getSelectedIssueVariantsByIssueId(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected issue variants by name
export const showSelectedIssueVariantsByName = (req, res) => {
getSelectedIssueVariantsByName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,66 @@
//import functions from issues model
import {
getIssueById,
updateIssueById,
deleteIssueById,
insertIssue,
getAllIssues,
} from "../models/issuesModel.js";
//get all issues
export const showIssues = (req, res) => {
getAllIssues((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete issue
export const deleteIssue = (req, res) => {
const id = req.params.id;
deleteIssueById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new issue
export const createIssue = (req, res) => {
const data = req.body;
insertIssue(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single issue by id
export const showIssueById = (req, res) => {
getIssueById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update issue
export const updateIssue = (req, res) => {
const data = req.body;
updateIssueById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,66 @@
//import functions from maintenance visit todo model
import {
insertMaintenanceVisitTodo,
getMaintenanceVisitTodosById,
getMaintenanceVisitTodosByAsset,
updateMaintenanceVisitTodoById,
deleteMaintenanceVisitTodosByPrimaryID,
} from "../models/maintenanceVisitsTodosModel.js";
//create new maintenance visit todo
export const createMaintenanceVisitTodos = (req, res) => {
const data = req.body;
insertMaintenanceVisitTodo(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single maintenance visit todos by id
export const showMaintenanceVisitTodosById = (req, res) => {
getMaintenanceVisitTodosById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single maintenance visit todos by assetname
export const showMaintenanceVisitTodosByAsset = (req, res) => {
getMaintenanceVisitTodosByAsset(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update maintenance visit todo
export const updateMaintenanceVisitTodo = (req, res) => {
const data = req.body;
updateMaintenanceVisitTodoById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete maintenance visit
export const deleteMaintenanceVisitTodos = (req, res) => {
const id = req.params.id;
deleteMaintenanceVisitTodosByPrimaryID(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,126 @@
//import functions from maintenance visits model
import {
getMaintenanceVisits,
getSelectedMaintenanceVisitsByChecklistname,
getSelectedMaintenanceVisitsByDate,
getSelectedMaintenanceVisitsByState,
getSelectedMaintenanceVisitsByCustomer,
deleteMaintenanceVisitById,
insertMaintenanceVisit,
getMaintenanceVisitByName,
getMaintenanceVisitById,
updateMaintenanceVisitStateById,
} from "../models/maintenanceVisitsModel.js";
//get all maintenance visits
export const showMaintenanceVisits = (req, res) => {
getMaintenanceVisits((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected maintenance visits by checklistname
export const showSelectedMaintenanceVisitsByChecklistname = (req, res) => {
getSelectedMaintenanceVisitsByChecklistname(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected maintenance visits by customer
export const showSelectedMaintenanceVisitsByCustomer = (req, res) => {
getSelectedMaintenanceVisitsByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected maintenance visits by state
export const showSelectedMaintenanceVisitsByState = (req, res) => {
getSelectedMaintenanceVisitsByState(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected maintenance visits by date
export const showSelectedMaintenanceVisitsByDate = (req, res) => {
getSelectedMaintenanceVisitsByDate(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete maintenance visit
export const deleteMaintenanceVisit = (req, res) => {
const id = req.params.id;
deleteMaintenanceVisitById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new maintenance visit
export const createMaintenanceVisit = (req, res) => {
const data = req.body;
insertMaintenanceVisit(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single maintenance visit by name
export const showMaintenanceVisitByName = (req, res) => {
getMaintenanceVisitByName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single maintenance visit by id
export const showMaintenanceVisitById = (req, res) => {
getMaintenanceVisitById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update maintenance visit
export const updateMaintenanceVisitState = (req, res) => {
const data = req.body;
updateMaintenanceVisitStateById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,89 @@
import {
getMasterMaintenanceVisits,
getSelectedMasterMaintenanceVisitsByCustomer,
getSelectedMasterMaintenanceVisitsByChecklistname,
getMasterMaintenanceVisitById,
updateMasterMaintenanceVisitById,
insertMasterMaintenanceVisit,
deleteMasterMaintenanceVisitById,
} from "../models/masterMaintenanceVisitsModel.js";
//get all master maintenance visits
export const showMasterMaintenanceVisits = (req, res) => {
getMasterMaintenanceVisits((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected master maintenance visits by customer
export const showSelectedMasterMaintenanceVisitsByCustomer = (req, res) => {
getSelectedMasterMaintenanceVisitsByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected master maintenance visits by checklistname
export const showSelectedMasterMaintenanceVisitsByChecklistname = (req, res) => {
getSelectedMasterMaintenanceVisitsByChecklistname(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single master maintenance visit
export const showMasterMaintenanceVisitById = (req, res) => {
getMasterMaintenanceVisitById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update master maintenance visit
export const updateMasterMaintenanceVisit = (req, res) => {
const data = req.body;
updateMasterMaintenanceVisitById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new master maintenance visit
export const createMasterMaintenanceVisit = (req, res) => {
const data = req.body;
insertMasterMaintenanceVisit(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete master maintenance visit
export const deleteMasterMaintenanceVisit = (req, res) => {
const id = req.params.id;
deleteMasterMaintenanceVisitById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,79 @@
import {
getMasterMaintenanceVisitTodoById,
updateMasterMaintenanceVisitTodoById,
deleteMasterMaintenanceVisitTodoById,
deleteMasterMaintenanceVisitTodoByTemplateId,
updateMasterMaintenanceVisitTodos,
insertMasterMaintenanceVisitTodo,
} from "../models/masterMaintenanceTodosModel.js";
//get single master maintenance visit todos
export const showMasterMaintenanceVisitTodoById = (req, res) => {
getMasterMaintenanceVisitTodoById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update master maintenance visit todos
export const updateMasterMaintenanceVisitTodo = (req, res) => {
const data = req.body;
updateMasterMaintenanceVisitTodoById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete master maintenance visit todo
export const deleteMasterMaintenanceVisitTodo = (req, res) => {
const id = req.params.id;
deleteMasterMaintenanceVisitTodoById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete master checklist maintenance visit by checklistID
export const deleteMasterMaintenanceVisitTodoByTemplateIds = (req, res) => {
const id = req.params.id;
deleteMasterMaintenanceVisitTodoByTemplateId(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update all master maintenance visit todos
export const updateAllMasterMaintenanceVisitTodos = (req, res) => {
const data = req.body;
updateMasterMaintenanceVisitTodos(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new master maintenance visit todo
export const createMasterMaintenanceVisitTodo = (req, res) => {
const data = req.body;
insertMasterMaintenanceVisitTodo(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,79 @@
import {
getMasterProductionOrderTodoById,
updateMasterProductionOrderTodoById,
deleteMasterProductionOrderTodoById,
deleteMasterProductionOrderTodoByTemplateId,
updateMasterProductionOrderTodos,
insertMasterProductionOrderTodo,
} from "../models/masterProductionOrderTodosModel.js";
//get single master production order todos
export const showMasterProductionOrderTodoById = (req, res) => {
getMasterProductionOrderTodoById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update master production order todos
export const updateMasterProductionOrderTodo = (req, res) => {
const data = req.body;
updateMasterProductionOrderTodoById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete master production order todo
export const deleteMasterProductionOrderTodo = (req, res) => {
const id = req.params.id;
deleteMasterProductionOrderTodoById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete master production order by checklistID
export const deleteMasterProductionOrderTodoByTemplateIds = (req, res) => {
const id = req.params.id;
deleteMasterProductionOrderTodoByTemplateId(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update all master production order todos
export const updateAllProductionOrderTodos = (req, res) => {
const data = req.body;
updateMasterProductionOrderTodos(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new master production order todo
export const createMasterProductionOrderTodo = (req, res) => {
const data = req.body;
insertMasterProductionOrderTodo(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,89 @@
import {
getMasterProductionOrders,
getSelectedMasterProductionOrdersByCustomer,
getSelectedMasterProductionOrdersByChecklistname,
getMasterProductionOrderById,
updateMasterProductionOrderById,
insertMasterProductionOrder,
deleteMasterProductionOrderById,
} from "../models/masterProductionOrdersModel.js";
//get all master production orders
export const showMasterProductionOrders = (req, res) => {
getMasterProductionOrders((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected master production orders by customer
export const showSelectedMasterProductionOrdersByCustomer = (req, res) => {
getSelectedMasterProductionOrdersByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected master production orders by checklistname
export const showSelectedMasterProductionOrdersByChecklistname = (req, res) => {
getSelectedMasterProductionOrdersByChecklistname(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single master production order
export const showMasterProductionOrderById = (req, res) => {
getMasterProductionOrderById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update master production order
export const updateMasterProductionOrder = (req, res) => {
const data = req.body;
updateMasterProductionOrderById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new master production order
export const createMasterProductionOrder = (req, res) => {
const data = req.body;
insertMasterProductionOrder(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete master production order
export const deleteMasterProductionOrder = (req, res) => {
const id = req.params.id;
deleteMasterProductionOrderById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,66 @@
import {
getOrderingInfoIssueSlipById,
updateOrderingInfoIssueSlipById,
deleteOrderingInfoIssueSlipById,
deleteOrderingInfoIssueSlipByIssueSlipId,
insertOrderingInfoIssueSlip,
} from "../models/orderingInfoIssueSlipsModel.js";
//get single ordering info issue slip
export const showOrderingInfoIssueSlipById = (req, res) => {
getOrderingInfoIssueSlipById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete ordering info issue slip
export const deleteOrderingInfoIssueSlip = (req, res) => {
const id = req.params.id;
deleteOrderingInfoIssueSlipById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete ordering info issue slip by issueslip ID
export const deleteOrderingInfoIssueSlipByIssueSlipIds = (req, res) => {
const id = req.params.id;
deleteOrderingInfoIssueSlipByIssueSlipId(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update ordering info issue slip
export const updateOrderingInfoIssueSlip = (req, res) => {
const data = req.body;
updateOrderingInfoIssueSlipById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new ordering info issue slip
export const createOrderingInfoIssueSlip = (req, res) => {
const data = req.body;
insertOrderingInfoIssueSlip(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,66 @@
//import functions from production order todo model
import {
insertProductionOrderTodo,
getProductionOrderTodosById,
getProductionOrderTodosByAsset,
updateProductionOrderTodoById,
deleteProductionOrderTodosChecklistID,
} from "../models/productionOrdersTodosModel.js";
//create new production order todo
export const createProductionOrderTodos = (req, res) => {
const data = req.body;
insertProductionOrderTodo(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single production order todos by id
export const showProductionOrderTodosById = (req, res) => {
getProductionOrderTodosById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single production order todos by asset
export const showProductionOrderTodosByAsset = (req, res) => {
getProductionOrderTodosByAsset(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update production order todo
export const updateProductionOrderTodo = (req, res) => {
const data = req.body;
updateProductionOrderTodoById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete production order todos
export const deleteProductionOrderTodos = (req, res) => {
const id = req.params.id;
deleteProductionOrderTodosChecklistID(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,138 @@
//import functions from production orders model
import {
getProductionOrders,
getSelectedProductionOrdersByChecklistname,
getSelectedProductionOrdersByDate,
getSelectedProductionOrdersByState,
getSelectedProductionOrdersByCustomer,
getSelectedProductionOrdersByTicketnumber,
insertProductionOrder,
getProductionOrderByName,
deleteProductionOrderById,
getProductionOrderById,
updateProductionOrderStateById,
} from "../models/productionOrdersModel.js";
//get all production orders
export const showProductionOrders = (req, res) => {
getProductionOrders((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected production orders by checklistname
export const showSelectedProductionOrdersByChecklistname = (req, res) => {
getSelectedProductionOrdersByChecklistname(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected production orders by customer
export const showSelectedProductionOrdersByCustomer = (req, res) => {
getSelectedProductionOrdersByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected production orders by ticketnumber
export const showSelectedProductionOrdersByTicketnumber = (req, res) => {
getSelectedProductionOrdersByTicketnumber(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected production orders by date
export const showSelectedProductionOrdersByDate = (req, res) => {
getSelectedProductionOrdersByDate(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected production orders by state
export const showSelectedProductionOrdersByState = (req, res) => {
getSelectedProductionOrdersByState(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete production order
export const deleteProductionOrder = (req, res) => {
const id = req.params.id;
deleteProductionOrderById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new production order
export const createProductionOrder = (req, res) => {
const data = req.body;
insertProductionOrder(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single production order by name
export const showProductionOrderByName = (req, res) => {
getProductionOrderByName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single production order by id
export const showProductionOrderById = (req, res) => {
getProductionOrderById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update production order
export const updateProductionOrderState = (req, res) => {
const data = req.body;
updateProductionOrderStateById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

View File

@ -0,0 +1,128 @@
//import functions from solutions model
import {
getSolutions,
getSolutionById,
getSolutionByName,
updateSolutionById,
deleteSolutionById,
insertSolution,
getSelectedSolutionsByCustomer,
getSelectedSolutionsBySolutionName,
getSelectedSolutionsByAssetName,
getSelectedSolutionsByType,
} from "../models/solutionsModel.js";
//get all solutions
export const showSolutions = (req, res) => {
getSolutions((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected solutions by customer
export const showSelectedSolutionByCustomer = (req, res) => {
getSelectedSolutionsByCustomer(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected solutions by solution name
export const showSelectedSolutionBySolutionName = (req, res) => {
getSelectedSolutionsBySolutionName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected solutions by asset name
export const showSelectedSolutionByAssetName = (req, res) => {
getSelectedSolutionsByAssetName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get all selected solutions by type
export const showSelectedSolutionByType = (req, res) => {
getSelectedSolutionsByType(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//create new solution
export const createSolution = (req, res) => {
const data = req.body;
insertSolution(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single customer by primaryID
export const showSolutionById = (req, res) => {
getSolutionById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single customer by name
export const showSolutionByName = (req, res) => {
getSolutionByName(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update solution
export const updateSolution = (req, res) => {
const data = req.body;
updateSolutionById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete solution
export const deleteSolution = (req, res) => {
const id = req.params.id;
deleteSolutionById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

177
backend/controller/users.js Normal file
View File

@ -0,0 +1,177 @@
//import mariadb
import ownConn from "../dbConfig.js";
import bcrypt from "bcryptjs";
import jwt from "jsonwebtoken";
import { v4 as uuidv4 } from 'uuid';
import {
getUsers,
getUserById,
updateUserById,
deleteUserById,
} from "../models/usersModel.js";
//insert user to databased
export const signUp = async (req, res, next) => {
try {
let sql = `SELECT id FROM users WHERE LOWER(username) = LOWER(?)`;
const result = await ownConn.execute(sql, [req.body.username])
if (result.length > 0) { //username already exists
return res.status(409).send({
message: 'This username is already in use!'
});
} else { // username not in use
bcrypt.hash(req.body.password, 10, (err, hash) => {
if (err) {
throw err;
return res.status(500).send({
message: err,
});
} else {
const currentTime = new Date();
const options = {
timeZone: 'Europe/Berlin',
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit'
};
const dateTimeString = currentTime.toLocaleString('de-DE', options);
const results = ownConn.query(`INSERT INTO users(id, username, password, registered, fullName, email, phonenumber, address, city, postcode, adminBool, technician1Bool, technician2Bool, technicianMonitoringBool, merchantBool, internBool) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
[
uuidv4(),
req.body.username,
hash,
dateTimeString,
req.body.fullName,
req.body.email,
req.body.phonenumber,
req.body.address,
req.body.city,
req.body.postcode,
req.body.adminBool,
req.body.technician1Bool,
req.body.technician2Bool,
req.body.technicianMonitoringBool,
req.body.merchantBool,
req.body.internBool,
]);
return res.status(201).send({
message: "Registered!",
})
}
})
}
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
export const login = async (req, res, next) => {
try {
let sql = `SELECT * FROM users WHERE username = ?`;
const result = await ownConn.execute(sql, [req.body.username]);
if (!result.length) {
return res.status(400).send({
message: 'Username or password incorrect!',
});
}
bcrypt.compare(
req.body.password,
result[0]['password'],
async (bErr, bResult) => {
if (bErr) {
return res.status(400).send({
message: 'Username or password incorrect!',
});
}
if (bResult) {
// password match
const token = jwt.sign(
{
username: result[0].username,
userId: result[0].id,
},
'SECRETTUEITKEY',
{ expiresIn: '7d' }
);
let sql1 = `UPDATE users SET lastLogin = ? WHERE id = ?`;
const currentTime = new Date();
const options = {
timeZone: 'Europe/Berlin',
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit'
};
const dateTimeString = currentTime.toLocaleString('de-DE', options);
const results = await ownConn.query(sql1, [dateTimeString, result[0].id]);
return res.status(200).send({
message: 'Logged in!',
token,
user: result[0],
});
}
return res.status(400).send({
message: 'Username or password incorrect!',
});
}
);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
}
};
//get all users
export const showUsers = (req, res) => {
getUsers((err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
//get single user by id
export const showUserById = (req, res) => {
getUserById(req.params.id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Update user
export const updateUser = (req, res) => {
const data = req.body;
updateUserById(data, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};
// Delete user
export const deleteUser = (req, res) => {
const id = req.params.id;
deleteUserById(id, (err, results) => {
if (err) {
res.send(err);
} else {
res.json(results);
}
});
};

12
backend/dbConfig.js Normal file
View File

@ -0,0 +1,12 @@
//import mariadb
import mariadb from "mariadb";
const ownConn = await mariadb.createConnection({
host: '127.0.0.1',
port: 3306,
user: 'tueitapp',
password: 'R}nt.>V~zyU!4SY$kE-p',
database: 'tueitapp',
});
export default ownConn;

54
backend/index.js Normal file
View File

@ -0,0 +1,54 @@
import serversideConfig from '../serversideConfig.js';
//import express
import express from "express";
//import cors
import cors from "cors";
//import https
import https from "https";
//import fs
import fs from "fs";
//import routes
import Router from "./routes/routes.js";
//init express
const app = express();
//setup cors
const corsOptions = {
origin: 'https://localhost:4173',
headers: 'authorization, content-type',
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
credentials: true,
optionsSuccessStatus: 204,
};
//use cors
app.use(cors(corsOptions));
//use express json
app.use(express.json());
//use router
app.use(Router);
//setup https
var privateKey = fs.readFileSync('../certs/localhost.key');
var certificate = fs.readFileSync('../certs/localhost.crt');
var server = https.createServer({
key: privateKey,
cert: certificate
}, app);
// const PORT = process.env.PORT || 5172;
const PORT = process.env.PORT || config.port;
//PORT
server.listen(PORT, () => {
console.log(`Server running successfully (port ${PORT})`);
});

View File

@ -0,0 +1,93 @@
import jwt from "jsonwebtoken";
export const validateRegister = (req, res, next) => {
// full name empty
if (!req.body.fullName) {
return res.status(400).send({
message: 'Please enter a full name',
});
}
// rather an email nor a phonenumber
if (!req.body.email && !req.body.phonenumber) {
return res.status(400).send({
message: 'Please enter an email or a phonenumber',
});
}
// validate email
if (req.body.email && !(validateEMail(req.body.email))) {
return res.status(400).send({
message: 'Please choose a valid email',
});
}
// validate phonenumber
if (req.body.phonenumber && !(validatePhonenumber(req.body.phonenumber))) {
return res.status(400).send({
message: 'Please choose a valid phonenumber',
});
}
// username min length 5
if (!req.body.username || req.body.username.length < 5) {
return res.status(400).send({
message: 'Please enter an username with min. 5 chars',
});
}
// password min 8 chars
if (!req.body.password || req.body.password.length < 8) {
return res.status(400).send({
message: 'Please enter a password with min. 8 chars',
});
}
// password (repeat) must match
if (
!req.body.password_repeat ||
req.body.password != req.body.password_repeat
) {
return res.status(400).send({
message: 'Both passwords must match',
});
}
next();
};
export const isLoggedIn = (req, res, next) => {
if (!req.headers.authorization) {
return res.status(400).send({
message: 'Your session is not valid!',
});
}
try {
const authHeader = req.headers.authorization;
const token = authHeader.split(' ')[1];
const decoded = jwt.verify(token, 'SECRETTUEITKEY');
req.userData = decoded;
next();
} catch (err) {
return res.status(400).send({
message: 'Authority to access this resource missing',
});
}
}
// to validate the email
function validateEMail(email) {
const emailRegex = /^[A-Za-z0-9_!#$%&'*+\/=?`{|}~^.-]+@[A-Za-z0-9.-]+$/;
if (email === "") {
return true;
}
return emailRegex.test(email);
};
// to validate the phonenumber
function validatePhonenumber(number) {
const mobilephonenumberRegex = new RegExp(/^(((((00|\+){1,2})49([ \-/]?|[ \()/]?))|0)[1]([0-2]|[4-7])([0-9]{1})([ \-/]?|[ \()/]?)([0-9]{8}))$/, "gm");
const landlineRegex = new RegExp(/^0(30|40|69|89|20[12389]|21[24]|228|234|335|340|3[3-9][15]|906|[2-9][1-9]1|3(?:3(?:[0237][127]|0[3-6]|2[89]|3[458]|[46][1246]|7[589]|8[1256]|9[145])|4(?:[2347][135]|[34]7|[69][146]|48|62|76|93)|5(?:[04679][14]|[238][135]|[2469]2|[4789]6|[278]8|63|73|37|29)|6(?:[024689][13]|[03789]5|06|2[2489]|3[1246]|44|47|7[1279]|82|86)|7(?:[236][135]|2[2467]|37|4[145]|62|64|7[1-4])|8(?:[234678]1|3[468]|4[347]|6[035-9]|7[467]|83|86)|9(?:[236][135]|[04689]4|[04789]1|[03468]7|02|09|28|4[369]|6[2689]|73|76|96|98))|3[3-9][0-9]{3}|13[078]|180[235]|18[01]|19[0-9]{3}|[789]00|[2-9][0-9]{3})([0-9]{1,})$/, "gm");
if (number === "") {
return true
}
if (mobilephonenumberRegex.test(number)) {
return true
} else if (landlineRegex.test(number)) {
return true;
}
return false;
};

View File

@ -0,0 +1,85 @@
import ownConn from "../dbConfig.js";
//insert checklist solution todo to databased
export const insertChecklistSolutionTodo = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO checklistSolutions(solutionID, step, asset, task, comments) VALUES(?, ?, ?, ?, ?)`, [data.solutionID, data.step, data.asset, data.task, data.comments]);
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single checklist solution todo by id
export const getChecklistSolutionTodosById = async (id, result) => {
try {
let sql = `SELECT * FROM checklistSolutions WHERE solutionID = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single checklist solution todo by asset
export const getChecklistSolutionTodosByAsset = async (id, result) => {
try {
let sql = `SELECT * FROM checklistSolutions WHERE asset = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update checklist solution todo to Database
export const updateChecklistSolutionTodoById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE checklistSolutions SET step = ?, asset = ?, task = ?, comments = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.step, data.asset, data.task, data.comments, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete all checklist solution todos by template ID to Database
export const deleteAllChecklistSolutionTodosSolutionID = async (id, result) => {
try {
let sql = `DELETE FROM checklistSolutions WHERE solutionID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete single checklist solution todo by primary ID to Database
export const deleteChecklistSolutionTodo = async (id, result) => {
try {
let sql = `DELETE FROM checklistSolutions WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,127 @@
import ownConn from "../dbConfig.js";
//get all master checklists
export const getConfigItems = async (result) => {
try {
let sql = `SELECT * FROM changeDB ORDER BY assetName ASC`;
const results = await ownConn.query(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single config item by id
export const getConfigItemById = async (id, result) => {
try {
let sql = `SELECT * FROM changeDB WHERE primaryID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single config item by name
export const getConfigItemByName = async (name, result) => {
try {
let sql = `SELECT * FROM changeDB WHERE assetName = ?`;
const results = await ownConn.query(sql, [name])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get config items by customer id
export const getConfigItemByCustomerId = async (customerId, result) => {
try {
let sql = `SELECT * FROM changeDB WHERE customerID = ? ORDER BY assetName ASC`;
const results = await ownConn.query(sql, [customerId])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update customer to Database
export const updateConfigItemById = async (data, result) => {
const id = data.primaryID;
try {
let sql = `UPDATE changeDB SET assetName = ?, customerID = ?, customer = ?, location = ?, remoteLocation = ?, type = ?, description = ?, notes = ?, state = ?, lastView = ?, user = ?, hardwareBool = ?, model = ?, serialnumber = ?, CPU = ?, RAM = ?, storageConfiguration = ?, miscellaneous = ?, softwareBool = ?, software = ?, version = ?, networkBool = ?, IPv4 = ?, IPv6 = ?, MAC = ?, subnetmask = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.assetName, data.customerID, data.customer, data.location, data.remoteLocation, data.type, data.description, data.notes, data.state, data.lastView, data.user, data.hardwareBool, data.model, data.serialnumber, data.CPU, data.RAM, data.storageConfiguration, data.miscellaneous, data.softwareBool, data.software, data.version, data.networkBool, data.IPv4, data.IPv6, data.MAC, data.subnetmask, id]);
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert config item to databased
export const insertConfigItem = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO changeDB(assetName, customerID, customer, location, remoteLocation, type, description, notes, state, lastView, user, hardwareBool, model, serialnumber, CPU, RAM, storageConfiguration, miscellaneous, softwareBool, software, version, networkBool, IPv4, IPv6, MAC, subnetmask) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [data.assetName, data.customerID, data.customer, data.location, data.remoteLocation, data.type, data.description, data.notes, data.state, data.lastView, data.user, data.hardwareBool, data.model, data.serialnumber, data.CPU, data.RAM, data.storageConfiguration, data.miscellaneous, data.softwareBool, data.software, data.version, data.networkBool, data.IPv4, data.IPv6, data.MAC, data.subnetmask])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected config items by customer
export const getSelectedConfigItemsByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM changeDB WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected config items by asset name
export const getSelectedConfigItemsByAssetName = async (selected, result) => {
try {
let sql = `SELECT * FROM changeDB WHERE assetName LIKE '%${selected}%' ORDER BY assetName ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete config item to Database
export const deleteConfigItemById = async (id, result) => {
try {
let sql = `DELETE FROM changeDB WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,132 @@
import ownConn from "../dbConfig.js";
//get all customers
export const getCustomers = async (result) => {
try {
let sql = `SELECT * FROM customers ORDER BY customername ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected customers
export const getSelectedCustomers = async (selected, result) => {
try {
let sql = `SELECT * FROM customers WHERE customername LIKE '%${selected}%' ORDER BY customername ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single customer by production order id
export const getCustomerByProductionOrderId = async (id, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE ticketNumber = ?`;
const results = await ownConn.execute(sql, [id])
let sql1 = `SELECT * FROM customers WHERE customerID LIKE '%${results[0].customerID}%'`;
const results1 = await ownConn.execute(sql1)
result(null, results1[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single customer by maintenance visit id
export const getCustomerByMaintenanceVisitId = async (id, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE primaryID = ?`;
const results = await ownConn.execute(sql, [id])
let sql1 = `SELECT * FROM customers WHERE customerID LIKE '%${results[0].customerID}%'`;
const results1 = await ownConn.execute(sql1)
result(null, results1[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert customer to databased
export const insertCustomer = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO customers(customername, contactperson, EMail, phonenumber, address, postcode, city, notes) VALUES(?, ?, ?, ?, ?, ?, ?, ?)`, [data.customername, data.contactperson, data.EMail, data.phonenumber, data.address, data.postcode, data.city, data.notes])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single customer by name
export const getCustomerByCustomerId = async (id, result) => {
try {
let sql = `SELECT * FROM customers WHERE customerID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single customer by name
export const getCustomerByName = async (id, result) => {
try {
let sql = `SELECT * FROM customers WHERE customername = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update customer to Database
export const updateCustomerById = async (data, result) => {
const id = data.customerID;
try {
let sql = `UPDATE customers SET customername = ?, contactperson = ?, EMail = ?, phonenumber = ?, address = ?, postcode = ?, city = ?, notes = ? WHERE customerID = ?`;
const results = await ownConn.query(sql, [data.customername, data.contactperson, data.EMail, data.phonenumber, data.address, data.postcode, data.city, data.notes, id]);
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete customer to Database
export const deleteCustomerById = async (id, result) => {
try {
let sql = `DELETE FROM customers WHERE customerID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,141 @@
import ownConn from "../dbConfig.js";
//get all issue slips
export const getIssueSlips = async (result) => {
try {
let sql = `SELECT * FROM issueSlips ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected issue slips by ticketnumber
export const getSelectedIssueSlipsByTicketnumber = async (selected, result) => {
try {
let sql = `SELECT * FROM issueSlips WHERE ticketNo LIKE '%${selected}%' ORDER BY ticketNo ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected issue slips by customer
export const getSelectedIssueSlipsByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM issueSlips WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected issue slips by date of creation
export const getSelectedIssueSlipsByDate = async (selected, result) => {
try {
let sql = `SELECT * FROM issueSlips WHERE creationDate LIKE '%${selected}%' ORDER BY creationDate ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete issue slip to Database
export const deleteIssueSlipById = async (id, result) => {
try {
let sql = `DELETE FROM issueSlips WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete issue slip by ticketnumber to Database
export const deleteIssueSlipByTicketNo = async (id, result) => {
try {
let sql = `DELETE FROM issueSlips WHERE ticketNo = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert issue slip to database
export const insertIssueSlip = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO issueSlips(customerID, customer, ticketNo, creationDate, lastView, user, notes, supplierRequest, supplierOffer, clientOffer, clientOrder, supplierOrder, ingress, egress, ingressBill, egressBill) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [data.customerID, data.customer, data.ticketNo, data.creationDate, data.lastView, data.user, data.notes, data.supplierRequest, data.supplierOffer, data.clientOffer, data.clientOrder, data.supplierOrder, data.ingress, data.egress, data.ingressBill, data.egressBill])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single issue slip by ticketNo
export const getIssueSlipByTicketNo = async (id, result) => {
try {
let sql = `SELECT * FROM issueSlips WHERE ticketNo = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single issue slip by id
export const getIssueSlipById = async (id, result) => {
try {
let sql = `SELECT * FROM issueSlips WHERE primaryID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update issue slip state to Database
export const updateIssueSlipById = async (data, result) => {
const id = data.primaryID;
try {
let sql = `UPDATE issueSlips SET customerID = ?, customer = ?, ticketNo = ?, creationDate = ?, lastView = ?, user = ?, notes = ?, supplierRequest = ?, supplierOffer = ?, clientOffer = ?, clientOrder = ?, supplierOrder = ?, ingress = ?, egress = ?, ingressBill = ?, egressBill = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.customerID, data.customer, data.ticketNo, data.creationDate, data.lastView, data.user, data.notes, data.supplierRequest, data.supplierOffer, data.clientOffer, data.clientOrder, data.supplierOrder, data.ingress, data.egress, data.ingressBill, data.egressBill, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,114 @@
import ownConn from "../dbConfig.js";
//get all issue variants
export const getAllIssueVariants = async (result) => {
try {
let sql = `SELECT * FROM issueVariants ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get issue variant
export const getIssueVariantById = async (id, result) => {
try {
let sql = `SELECT * FROM issueVariants WHERE primaryID = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected issue variants by issueID
export const getSelectedIssueVariantsByIssueId = async (selected, result) => {
try {
let sql = `SELECT * FROM issueVariants WHERE issueID LIKE '%${selected}%' ORDER BY issueID ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected issue variants by name
export const getSelectedIssueVariantsByName = async (selected, result) => {
try {
let sql = `SELECT * FROM issueVariants WHERE name LIKE '%${selected}%' ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update issue variant
export const updateIssueVariantById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE issueVariants SET issueID = ?, name = ? , properties = ?, state = ?, amount = ?, price = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.issueID, data.name, data.properties, data.state, data.amount, data.price, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete issue variant to Database
export const deleteIssueVariantById = async (id, result) => {
try {
let sql = `DELETE FROM issueVariants WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete issue variants by issueID to Database
export const deleteIssueVariantByIssueSlipId = async (id, result) => {
try {
let sql = `DELETE FROM issueVariants WHERE issueID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert issue to databased
export const insertIssueVariant = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO issueVariants(issueID, name, properties, state, amount, price) VALUES(?, ?, ?, ?, ?, ?)`, [data.issueID, data.name, data.properties, data.state, data.amount, data.price])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,71 @@
import ownConn from "../dbConfig.js";
//get all issues
export const getAllIssues = async (result) => {
try {
let sql = `SELECT * FROM issues ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single issue
export const getIssueById = async (id, result) => {
try {
let sql = `SELECT * FROM issues WHERE primaryID = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update issue to Database
export const updateIssueById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE issues SET name = ?, type = ? , state = ?, amount = ?, properties = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.name, data.type, data.state, data.amount, data.properties, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete issue to Database
export const deleteIssueById = async (id, result) => {
try {
let sql = `DELETE FROM issues WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert issue to databased
export const insertIssue = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO issues(name, type, state, amount, properties) VALUES(?, ?, ?, ?, ?)`, [data.name, data.type, data.state, data.amount, data.properties])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,141 @@
import ownConn from "../dbConfig.js";
//get all maintenance visits
export const getMaintenanceVisits = async (result) => {
try {
let sql = `SELECT * FROM maintenanceVisits ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected maintenance visits by checklistname
export const getSelectedMaintenanceVisitsByChecklistname = async (selected, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE name LIKE '%${selected}%' ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected maintenance visits by customer
export const getSelectedMaintenanceVisitsByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected maintenance visits by date
export const getSelectedMaintenanceVisitsByDate = async (selected, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE creationDate LIKE '%${selected}%' ORDER BY creationDate ASC`;
const results = await ownConn.execute(sql);
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected maintenance visits by state
export const getSelectedMaintenanceVisitsByState = async (selected, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE state LIKE '%${selected}%' ORDER BY state ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete maintenance visit to Database
export const deleteMaintenanceVisitById = async (id, result) => {
try {
let sql = `DELETE FROM maintenanceVisits WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert maintenance visit to databased
export const insertMaintenanceVisit = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO maintenanceVisits(name, templateID, maintenanceType, state, creationDate, completionDate, user, customer, customerID, templateNotes, type, timeSpent, notes) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [data.name, data.templateID, data.maintenanceType, data.state, data.creationDate, data.completionDate, data.user, data.customer, data.customerID, data.templateNotes, data.type, data.timeSpent, data.notes])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single maintenance visit by name
export const getMaintenanceVisitByName = async (id, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE name = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single maintenance visit by id
export const getMaintenanceVisitById = async (id, result) => {
try {
let sql = `SELECT * FROM maintenanceVisits WHERE primaryID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update maintenance visit state to Database
export const updateMaintenanceVisitStateById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE maintenanceVisits SET state = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.state, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,71 @@
import ownConn from "../dbConfig.js";
//insert maintenance visit todo to databased
export const insertMaintenanceVisitTodo = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO maintenanceVisitTodos(templateID, step, asset, task, comment, done) VALUES(?, ?, ?, ?, ?, ?)`, [data.templateID, data.step, data.asset, data.task, data.comment, data.done])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single maintenance visit todo by id
export const getMaintenanceVisitTodosById = async (id, result) => {
try {
let sql = `SELECT * FROM maintenanceVisitTodos WHERE templateID = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single maintenance visit todo by asset
export const getMaintenanceVisitTodosByAsset = async (id, result) => {
try {
let sql = `SELECT * FROM maintenanceVisitTodos WHERE asset = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update maintenance visit todo to Database
export const updateMaintenanceVisitTodoById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE maintenanceVisitTodos SET step = ?, asset = ?, task = ?, comment = ?, done = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.step, data.asset, data.task, data.comment, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete maintenance visit todo to Database
export const deleteMaintenanceVisitTodosByPrimaryID = async (id, result) => {
try {
let sql = `DELETE FROM maintenanceVisitTodos WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,90 @@
import ownConn from "../dbConfig.js";
//get single master maintenance visit todo
export const getMasterMaintenanceVisitTodoById = async (id, result) => {
try {
let sql = `SELECT * FROM masterMaintenanceVisitTodos WHERE templateID = ? ORDER BY rowID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update master maintenance visit to Database
export const updateMasterMaintenanceVisitTodoById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE masterMaintenanceVisitTodos SET templateID = ?, asset = ? , task = ?, comments = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.templateID, data.asset, data.task, data.comments, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete master maintenance visit todo to Database
export const deleteMasterMaintenanceVisitTodoById = async (id, result) => {
try {
let sql = `DELETE FROM masterMaintenanceVisitTodos WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete master maintenance visit todo by templateID to Database
export const deleteMasterMaintenanceVisitTodoByTemplateId = async (id, result) => {
try {
let sql = `DELETE FROM masterMaintenanceVisitTodos WHERE templateID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update all master maintenance visit todos to Database
export const updateMasterMaintenanceVisitTodos = async (data, result) => {
try {
let sql = `UPDATE masterMaintenanceVisitTodos SET rowID = ? WHERE primaryID = ?`;
data.data.forEach(async i => {
let id = i.primaryID;
let rowId = i.rowID;
const results = await ownConn.query(sql, [rowId, id])
result(null, results);
});
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert master maintenance visit todo to databased
export const insertMasterMaintenanceVisitTodo = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO masterMaintenanceVisitTodos(templateID, rowID, asset, task, comments) VALUES(?, ?, ?, ?, ?)`, [data.templateID, data.rowID, data.asset, data.task, asset.comments])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,99 @@
import ownConn from "../dbConfig.js";
//get all master maintenance visits
export const getMasterMaintenanceVisits = async (result) => {
try {
let sql = `SELECT * FROM masterMaintenanceVisits ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected master maintenance visits by customer
export const getSelectedMasterMaintenanceVisitsByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM masterMaintenanceVisits WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected master maintenance visits by checklistname
export const getSelectedMasterMaintenanceVisitsByChecklistname = async (selected, result) => {
try {
let sql = `SELECT * FROM masterMaintenanceVisits WHERE name LIKE '%${selected}%' ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single master maintenance visit
export const getMasterMaintenanceVisitById = async (id, result) => {
try {
let sql = `SELECT * FROM masterMaintenanceVisits WHERE checklistID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update master maintenance visit to Database
export const updateMasterMaintenanceVisitById = async (data, result) => {
try {
const id = data.checklistID;
let sql = `UPDATE masterMaintenanceVisits SET name = ?, customerID = ? , customer = ?, type = ?, lastView = ?, user = ?, notes = ? WHERE checklistID = ?`;
const results = await ownConn.query(sql, [data.name, data.customerID, data.customer, data.type, data.lastView, data.user, data.notes, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert master maintenance visit to databased
export const insertMasterMaintenanceVisit = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO masterMaintenanceVisits(name, customerID, customer, type, lastView, user, notes) VALUES(?, ?, ?, ?, ?, ?, ?)`, [data.name, data.customerID, data.customer, data.type, data.lastView, data.user, data.notes])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete master maintenance visit to Database
export const deleteMasterMaintenanceVisitById = async (id, result) => {
try {
let sql = `DELETE FROM masterMaintenanceVisits WHERE checklistID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,90 @@
import ownConn from "../dbConfig.js";
//get single master production order todo
export const getMasterProductionOrderTodoById = async (id, result) => {
try {
let sql = `SELECT * FROM masterOrderTodos WHERE templateID = ? ORDER BY rowID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update master production order to Database
export const updateMasterProductionOrderTodoById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE masterOrderTodos SET templateID = ?, asset = ? , task = ?, comment = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.templateID, data.asset, data.task, data.comment, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete master production order todo to Database
export const deleteMasterProductionOrderTodoById = async (id, result) => {
try {
let sql = `DELETE FROM masterOrderTodos WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete master production order todo by templateID to Database
export const deleteMasterProductionOrderTodoByTemplateId = async (id, result) => {
try {
let sql = `DELETE FROM masterOrderTodos WHERE templateID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update all master production order todos to Database
export const updateMasterProductionOrderTodos = async (data, result) => {
try {
let sql = `UPDATE masterOrderTodos SET rowID = ? WHERE primaryID = ?`;
data.data.forEach(async i => {
let id = i.primaryID;
let rowId = i.rowID;
const results = await ownConn.query(sql, [rowId, id])
result(null, results);
});
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert master production order todo to databased
export const insertMasterProductionOrderTodo = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO masterOrderTodos(templateID, rowID, asset, task, comment) VALUES(?, ?, ?, ?, ?)`, [data.templateID, data.rowID, data.asset, data.task, data.comment])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,99 @@
import ownConn from "../dbConfig.js";
//get all master production orders
export const getMasterProductionOrders = async (result) => {
try {
let sql = `SELECT * FROM masterProductionOrders ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected master production orders by customer
export const getSelectedMasterProductionOrdersByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM masterProductionOrders WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected master production orders by checklistname
export const getSelectedMasterProductionOrdersByChecklistname = async (selected, result) => {
try {
let sql = `SELECT * FROM masterProductionOrders WHERE name LIKE '%${selected}%' ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single master production order
export const getMasterProductionOrderById = async (id, result) => {
try {
let sql = `SELECT * FROM masterProductionOrders WHERE templateID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update master production order to Database
export const updateMasterProductionOrderById = async (data, result) => {
try {
const id = data.templateID;
let sql = `UPDATE masterProductionOrders SET name = ?, customerID = ? , customer = ?, lastView = ?, user = ?, description = ?, notes = ? WHERE templateID = ?`;
const results = await ownConn.query(sql, [data.name, data.customerID, data.customer, data.lastView, data.user, data.description, data.notes, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert master production order to databased
export const insertMasterProductionOrder = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO masterProductionOrders(name, customerID, customer, lastView, user, description, notes) VALUES(?, ?, ?, ?, ?, ?, ?)`, [data.name, data.customerID, data.customer, data.lastView, data.user, data.description, data.notes])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete master production order to Database
export const deleteMasterProductionOrderById = async (id, result) => {
try {
let sql = `DELETE FROM masterProductionOrders WHERE templateID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,72 @@
import ownConn from "../dbConfig.js";
//get single ordering info issue slip
export const getOrderingInfoIssueSlipById = async (id, result) => {
try {
let sql = `SELECT * FROM orderingInfoIssueSlips WHERE issueSlipID = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update ordering info issue slip to Database
export const updateOrderingInfoIssueSlipById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE orderingInfoIssueSlips SET issueSlipID = ?, article = ? , amount = ?, price = ?, comment = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.issueSlipID, data.article, data.amount, data.price, data.comment, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete ordering info issue slip to Database
export const deleteOrderingInfoIssueSlipById = async (id, result) => {
try {
let sql = `DELETE FROM orderingInfoIssueSlips WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete ordering info issue slip by issueSlipID to Database
export const deleteOrderingInfoIssueSlipByIssueSlipId = async (id, result) => {
try {
let sql = `DELETE FROM orderingInfoIssueSlips WHERE issueSlipID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert ordering info issue slip to databased
export const insertOrderingInfoIssueSlip = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO orderingInfoIssueSlips(issueSlipID, article, amount, price, comment) VALUES(?, ?, ?, ?, ?)`, [data.issueSlipID, data.article, data.amount, data.price, data.comment])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,155 @@
import ownConn from "../dbConfig.js";
//get all production orders
export const getProductionOrders = async (result) => {
try {
let sql = `SELECT * FROM productionOrders ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected production orders by ticketnumber
export const getSelectedProductionOrdersByTicketnumber = async (selected, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE ticketNumber LIKE '%${selected}%' ORDER BY ticketNumber ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected production orders by customer
export const getSelectedProductionOrdersByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected production orders by state
export const getSelectedProductionOrdersByState = async (selected, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE state LIKE '%${selected}%' ORDER BY state ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected production orders by checklistname
export const getSelectedProductionOrdersByChecklistname = async (selected, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE name LIKE '%${selected}%' ORDER BY name ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected production orders by date of creation
export const getSelectedProductionOrdersByDate = async (selected, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE creationDate LIKE '%${selected}%' ORDER BY creationDate ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete production order to Database
export const deleteProductionOrderById = async (id, result) => {
try {
let sql = `DELETE FROM productionOrders WHERE ticketNumber = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert production order to database
export const insertProductionOrder = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO productionOrders(name, templateID, customer, customerID, asset, state, creationDate, completionDate, user, templateDescription, templateNotes, timeSpent, notes) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [data.name, data.templateID, data.customer, data.customerID, data.asset, data.state, data.creationDate, data.completionDate, data.user, data.templateDescription, data.templateNotes, data.timeSpent, data.notes])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single production order by name
export const getProductionOrderByName = async (id, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE name = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single production order by id
export const getProductionOrderById = async (id, result) => {
try {
let sql = `SELECT * FROM productionOrders WHERE ticketNumber = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update production order state to Database
export const updateProductionOrderStateById = async (data, result) => {
const id = data.ticketNumber;
try {
let sql = `UPDATE productionOrders SET state = ? WHERE ticketNumber = ?`;
const results = await ownConn.query(sql, [data.state, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,71 @@
import ownConn from "../dbConfig.js";
//insert production order todo to databased
export const insertProductionOrderTodo = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO productionOrderTodos(templateID, step, asset, task, comment, done) VALUES(?, ?, ?, ?, ?, ?)`, [data.templateID, data.step, data.asset, data.task, data.comment, data.done]);
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single production order todo by id
export const getProductionOrderTodosById = async (id, result) => {
try {
let sql = `SELECT * FROM productionOrderTodos WHERE templateID = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single production order todo by asset
export const getProductionOrderTodosByAsset = async (id, result) => {
try {
let sql = `SELECT * FROM productionOrderTodos WHERE asset = ? ORDER BY primaryID ASC`;
const results = await ownConn.execute(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update production order todo to Database
export const updateProductionOrderTodoById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE productionOrderTodos SET step = ?, asset = ?, task = ?, comment = ?, done = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.step, data.asset, data.task, data.comment, data.done, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete production order todos to Database
export const deleteProductionOrderTodosChecklistID = async (id, result) => {
try {
let sql = `DELETE FROM productionOrderTodos WHERE templateID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,141 @@
import ownConn from "../dbConfig.js";
//get all solutions
export const getSolutions = async (result) => {
try {
let sql = `SELECT * FROM solutions ORDER BY solutionName ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single solution by primaryID
export const getSolutionById = async (id, result) => {
try {
let sql = `SELECT * FROM solutions WHERE primaryID = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single solution by name
export const getSolutionByName = async (id, result) => {
try {
let sql = `SELECT * FROM solutions WHERE solutionName = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//insert solution to databased
export const insertSolution = async (data, result) => {
try {
const results = await ownConn.query(`INSERT INTO solutions(solutionName, assetName, customer, customerID, type, lastView, user, description, notes) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)`, [data.solutionName, data.assetName, data.customer, data.customerID, data.type, data.lastView, data.user, data.description, data.notes])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update solution to Database
export const updateSolutionById = async (data, result) => {
try {
const id = data.primaryID;
let sql = `UPDATE solutions SET solutionName = ?, assetName = ?, customer = ?, customerID = ?, type = ?, lastView = ?, user = ?, description = ?, notes = ? WHERE primaryID = ?`;
const results = await ownConn.query(sql, [data.solutionName, data.assetName, data.customer, data.customerID, data.type, data.lastView, data.user, data.description, data.notes, id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected solutions by customer
export const getSelectedSolutionsByCustomer = async (selected, result) => {
try {
let sql = `SELECT * FROM solutions WHERE customer LIKE '%${selected}%' ORDER BY customer ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected solutions by solution name
export const getSelectedSolutionsBySolutionName = async (selected, result) => {
let sql = `SELECT * FROM solutions WHERE solutionName LIKE '%${selected}%' ORDER BY solutionName ASC`;
try {
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected solutions by asset name
export const getSelectedSolutionsByAssetName = async (selected, result) => {
try {
let sql = `SELECT * FROM solutions WHERE assetName LIKE '%${selected}%' ORDER BY assetName ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get all selected solutions by type
export const getSelectedSolutionsByType = async (selected, result) => {
try {
let sql = `SELECT * FROM solutions WHERE type LIKE '%${selected}%' ORDER BY solutionName ASC`;
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete solution to Database
export const deleteSolutionById = async (id, result) => {
try {
let sql = `DELETE FROM solutions WHERE primaryID = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

View File

@ -0,0 +1,59 @@
import ownConn from "../dbConfig.js";
//get all users
export const getUsers = async (result) => {
let sql = `SELECT * FROM users ORDER BY fullName ASC`;
try {
const results = await ownConn.execute(sql)
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
//get single user by id
export const getUserById = async (id, result) => {
try {
let sql = `SELECT * FROM users WHERE id = ?`;
const results = await ownConn.execute(sql, [id])
result(null, results[0]);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Update user to Database
export const updateUserById = async (data, result) => {
try {
const id = data.id;
let sql = `UPDATE users SET username = ?, password = ?, fullName = ?, email = ?, phonenumber = ?, address = ?, city = ?, postcode = ?, adminBool = ?, technician1Bool = ?, technician2Bool = ?, technicianMonitoringBool = ?, merchantBool = ?, internBool = ? WHERE id = ?`;
const results = await ownConn.query(sql, [data.username, data.password, data.fullName, data.email, data.phonenumber, data.address, data.city, data.postcode, data.adminBool, data.technician1Bool, data.technician2Bool, data.technicianMonitoringBool, data.merchantBool, data.internBool, id]);
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};
// Delete user to Database
export const deleteUserById = async (id, result) => {
try {
let sql = `DELETE FROM users WHERE id = ?`;
const results = await ownConn.query(sql, [id])
result(null, results);
}
catch (err) {
// Manage Errors
console.log("SQL error : ", err);
result(err, null);
}
};

615
backend/routes/routes.js Normal file
View File

@ -0,0 +1,615 @@
//import express
import express from "express";
import {
showConfigItems,
showConfigItemById,
showConfigItemByName,
showConfigItemByCustomerId,
updateConfigItem,
createConfigItem,
showSelectedConfigItemsByCustomer,
showSelectedConfigItemsByAssetName,
deleteConfigItem,
} from "../controller/configItems.js"
import {
showMaintenanceVisits,
showSelectedMaintenanceVisitsByChecklistname,
showSelectedMaintenanceVisitsByCustomer,
showSelectedMaintenanceVisitsByState,
showSelectedMaintenanceVisitsByDate,
deleteMaintenanceVisit,
createMaintenanceVisit,
showMaintenanceVisitByName,
showMaintenanceVisitById,
updateMaintenanceVisitState,
} from "../controller/maintenanceVisits.js"
import {
createMaintenanceVisitTodos,
showMaintenanceVisitTodosById,
showMaintenanceVisitTodosByAsset,
updateMaintenanceVisitTodo,
deleteMaintenanceVisitTodos,
} from "../controller/maintenanceVisitTodos.js"
import {
showMasterMaintenanceVisits,
showSelectedMasterMaintenanceVisitsByCustomer,
showSelectedMasterMaintenanceVisitsByChecklistname,
showMasterMaintenanceVisitById,
updateMasterMaintenanceVisit,
createMasterMaintenanceVisit,
deleteMasterMaintenanceVisit
} from "../controller/masterMaintenanceVisits.js";
import {
updateAllMasterMaintenanceVisitTodos,
showMasterMaintenanceVisitTodoById,
updateMasterMaintenanceVisitTodo,
createMasterMaintenanceVisitTodo,
deleteMasterMaintenanceVisitTodo,
deleteMasterMaintenanceVisitTodoByTemplateIds,
} from "../controller/masterMaintenanceVisitsTodos.js";
import {
showProductionOrders,
showSelectedProductionOrdersByChecklistname,
showSelectedProductionOrdersByCustomer,
showSelectedProductionOrdersByTicketnumber,
showSelectedProductionOrdersByDate,
showSelectedProductionOrdersByState,
deleteProductionOrder,
createProductionOrder,
showProductionOrderByName,
showProductionOrderById,
updateProductionOrderState,
} from "../controller/productionOrders.js";
import {
createProductionOrderTodos,
showProductionOrderTodosById,
showProductionOrderTodosByAsset,
updateProductionOrderTodo,
deleteProductionOrderTodos,
} from "../controller/productionOrderTodos.js";
import {
showMasterProductionOrders,
showSelectedMasterProductionOrdersByCustomer,
showSelectedMasterProductionOrdersByChecklistname,
showMasterProductionOrderById,
updateMasterProductionOrder,
createMasterProductionOrder,
deleteMasterProductionOrder,
} from "../controller/masterProductionOrders.js"
import {
showMasterProductionOrderTodoById,
updateMasterProductionOrderTodo,
deleteMasterProductionOrderTodo,
deleteMasterProductionOrderTodoByTemplateIds,
updateAllProductionOrderTodos,
createMasterProductionOrderTodo,
} from "../controller/masterProductionOrderTodos.js";
import {
showCustomers,
createCustomer,
showSelectedCustomers,
showCustomerByProductionOrderId,
showCustomerByMaintenanceVisitId,
showCustomerByCustomerId,
showCustomerByName,
updateCustomer,
deleteCustomer,
} from "../controller/customers.js";
import {
signUp,
login,
showUsers,
showUserById,
updateUser,
deleteUser,
} from "../controller/users.js";
import * as userMiddleware from "../middleware/users.js";
import {
showSolutions,
showSelectedSolutionByCustomer,
showSelectedSolutionBySolutionName,
showSelectedSolutionByAssetName,
showSelectedSolutionByType,
createSolution,
showSolutionById,
showSolutionByName,
updateSolution,
deleteSolution,
} from "../controller/solutions.js";
import {
createChecklistSolutionTodos,
showChecklistSolutionTodosById,
showChecklistSolutionTodosByAsset,
updateChecklistSolutionTodo,
deleteChecklistSolutionTodosSolutionID,
deleteChecklistSolutionTodos,
} from "../controller/checklistSolutions.js";
import {
showIssueSlips,
showSelectedIssueSlipsByCustomer,
showSelectedIssueSlipsByTicketnumber,
showSelectedIssueSlipsByDate,
deleteIssueSlip,
deleteIssueSlipByTicketnumber,
createIssueSlip,
showIssueSlipByTicketNo,
showIssueSlipById,
updateIssueSlip,
} from "../controller/issueSlips.js";
import {
showOrderingInfoIssueSlipById,
deleteOrderingInfoIssueSlip,
deleteOrderingInfoIssueSlipByIssueSlipIds,
updateOrderingInfoIssueSlip,
createOrderingInfoIssueSlip,
} from "../controller/orderingInfoIssueSlips.js";
import {
deleteIssue,
createIssue,
showIssueById,
updateIssue,
showIssues,
} from "../controller/issues.js";
import {
showIssueVariants,
deleteIssueVariant,
deleteIssueVariantByIssueSlipIds,
createIssueVariant,
showIssueVariantById,
updateIssueVariant,
showSelectedIssueVariantsByIssueId,
showSelectedIssueVariantsByName,
} from "../controller/issueVariants.js";
//init express router
const router = express.Router();
// routes with master maintenance visits:
// get all master maintenance visits
router.get("/masterMaintenanceVisits", showMasterMaintenanceVisits);
//get all master maintenance visits by id
router.get("/masterMaintenanceVisit/:id", showMasterMaintenanceVisitById);
// Update master maintenance visits
router.put("/masterMaintenanceVisits", updateMasterMaintenanceVisit);
//get all master maintenance visits by selected customer
router.get("/selectedMasterMaintenanceVisitsByCustomer/:id", showSelectedMasterMaintenanceVisitsByCustomer)
//get all master maintenance visits by selected checklistname
router.get("/selectedMasterMaintenanceVisitsByChecklistname/:id", showSelectedMasterMaintenanceVisitsByChecklistname)
// Create New master maintenance visits
router.post("/masterMaintenanceVisits", createMasterMaintenanceVisit);
// Delete master maintenance visits
router.delete("/masterMaintenanceVisits/:id", deleteMasterMaintenanceVisit);
// routes with master maintenance visit todos:
//get all master maintenance visit todos by id
router.get("/masterMaintenanceVisitTodos/:id", showMasterMaintenanceVisitTodoById);
// Update master maintenance visit todos
router.put("/masterMaintenanceVisitTodos", updateMasterMaintenanceVisitTodo);
// Delete master maintenance visit todo
router.delete("/masterMaintenanceVisitTodos/:id", deleteMasterMaintenanceVisitTodo);
// Delete master maintenance visit todo by customer id
router.delete("/masterMaintenanceVisitTodosByCustomerid/:id", deleteMasterMaintenanceVisitTodoByTemplateIds);
// Update all master maintenance visit todos
router.put("/allMasterMaintenanceVisitTodos", updateAllMasterMaintenanceVisitTodos)
// Create New master maintenance visit todo
router.post("/masterMaintenanceVisitTodos", createMasterMaintenanceVisitTodo);
// routes with master production orders:
// get all master production orders
router.get("/masterProductionOrders", showMasterProductionOrders);
//get all master production orders by id
router.get("/masterProductionOrders/:id", showMasterProductionOrderById);
// Update master production orders
router.put("/masterProductionOrders", updateMasterProductionOrder);
//get all master production orders by selected customer
router.get("/selectedMasterProductionOrdersByCustomer/:id", showSelectedMasterProductionOrdersByCustomer)
//get all master production orders by selected checklistname
router.get("/selectedMasterProductionOrdersByChecklistname/:id", showSelectedMasterProductionOrdersByChecklistname)
// Create New master production order
router.post("/masterProductionOrders", createMasterProductionOrder);
// Delete master production order
router.delete("/masterProductionOrders/:id", deleteMasterProductionOrder);
// routes with master production order todos:
//get all master production order todos by id
router.get("/masterProductionOrderTodos/:id", showMasterProductionOrderTodoById);
// Update master production order todos
router.put("/masterProductionOrderTodos", updateMasterProductionOrderTodo);
// Delete master production order todo
router.delete("/masterProductionOrderTodos/:id", deleteMasterProductionOrderTodo);
// Delete master production order todo by customer id
router.delete("/masterProductionOrderTodosByCustomerid/:id", deleteMasterProductionOrderTodoByTemplateIds);
// Update all master production order todos
router.put("/allMasterProductionOrderTodos", updateAllProductionOrderTodos)
// Create New master production order todo
router.post("/masterProductionOrderTodos", createMasterProductionOrderTodo);
// routes with solutions:
// get all solutions
router.get("/solutions", showSolutions);
//get solution by id
router.get("/solutions/:id", showSolutionById);
//get solution by name
router.get("/solutionByName/:id", showSolutionByName);
// Update solution
router.put("/solutions", updateSolution);
// Delete solution
router.delete("/solutions/:id", deleteSolution);
// Create new solution
router.post("/solutions", createSolution);
//Get all solutions by selected solution name
router.get("/selectedSolutionsBySolutionName/:id", showSelectedSolutionBySolutionName);
//Get all solutions by selected asset name
router.get("/selectedSolutionsByAssetName/:id", showSelectedSolutionByAssetName);
//Get all solutions by selected customer
router.get("/selectedSolutionsByCustomer/:id", showSelectedSolutionByCustomer);
//Get all solutions by selected type
router.get("/selectedSolutionsByType/:id", showSelectedSolutionByType);
// routes with checklist solution todos:
// Create New checklist solution todos
router.post("/checklistSolutionsTodos", createChecklistSolutionTodos);
//get all checklist solution todos by id
router.get("/checklistSolutionsTodos/:id", showChecklistSolutionTodosById);
//get all checklist solution todos by assetname
router.get("/checklistSolutionsTodosByAsset/:id", showChecklistSolutionTodosByAsset);
// Update checklist solution todo
router.put("/checklistSolutionsTodos", updateChecklistSolutionTodo);
// Delete checklist solution todos based on solution ID
router.delete("/checklistSolutionsTodosBySolutionID/:id", deleteChecklistSolutionTodosSolutionID);
// Delete single checklist solution todos
router.delete("/checklistSolutionsTodos/:id", deleteChecklistSolutionTodos);
// routes with customers:
//get all customers
router.get("/customers", showCustomers);
//get all customers by selected
router.get("/selectedCustomers/:id", showSelectedCustomers);
//get single customer by production order instance id
router.get("/customersProductionOrder/:id", showCustomerByProductionOrderId);
//get single customer by miantenance visit instance id
router.get("/customerMaintenanceVisit/:id", showCustomerByMaintenanceVisitId);
//get single customer by customer id
router.get("/customer/:id", showCustomerByCustomerId);
//get single customer by name
router.get("/customerName/:id", showCustomerByName);
// Update customer
router.put("/customers", updateCustomer);
// Delete customer
router.delete("/customers/:id", deleteCustomer);
// Create New customer
router.post("/customers", createCustomer);
// routes with config items:
// get all config items
router.get("/configItems", showConfigItems);
//get single config item by id
router.get("/configItem/:id", showConfigItemById);
//get single config item by name
router.get("/configItemByName/:id", showConfigItemByName);
//get config items by customerid
router.get("/configItemByCustomerID/:id", showConfigItemByCustomerId);
// Update config item
router.put("/configItem", updateConfigItem);
// Create New config item
router.post("/configItems", createConfigItem);
//get all config items by customer
router.get("/selectedConfigItemsByCustomer/:id", showSelectedConfigItemsByCustomer);
//get all config items by assetname
router.get("/selectedConfigItemsByAssetName/:id", showSelectedConfigItemsByAssetName);
// Delete config item
router.delete("/configItems/:id", deleteConfigItem);
// routes with production orders:
// get all production orders
router.get("/productionOrders", showProductionOrders);
//get all production orders by selected checklistname
router.get("/selectedProductionOrdersByChecklistname/:id", showSelectedProductionOrdersByChecklistname)
//get all production orders by selected ticketnumber
router.get("/selectedProductionOrdersByTicketNumber/:id", showSelectedProductionOrdersByTicketnumber)
//get all production orders by selected customer
router.get("/selectedProductionOrdersByCustomer/:id", showSelectedProductionOrdersByCustomer)
//get all production orders by selected state
router.get("/selectedProductionOrdersByState/:id", showSelectedProductionOrdersByState)
//get all production orders by selected date
router.get("/selectedProductionOrdersByDate/:id", showSelectedProductionOrdersByDate)
// Delete production order
router.delete("/productionOrder/:id", deleteProductionOrder);
// Create New production order
router.post("/productionOrder", createProductionOrder);
//get production order by name
router.get("/productionOrderByName/:id", showProductionOrderByName);
//get single production order by ticketNumber
router.get("/productionOrder/:id", showProductionOrderById);
// Update production order state
router.put("/productionOrderState", updateProductionOrderState);
// routes with production order todos:
// Create New production order todos
router.post("/productionOrderTodos", createProductionOrderTodos);
//get all production order todos by id
router.get("/productionOrderTodos/:id", showProductionOrderTodosById);
//get all production order todos by assetname
router.get("/productionOrderTodosByAsset/:id", showProductionOrderTodosByAsset);
// Update production order todo
router.put("/productionOrderTodos", updateProductionOrderTodo);
// Delete production order todos
router.delete("/productionOrderTodos/:id", deleteProductionOrderTodos);
// routes with maintenance visits:
//get all maintenance visits
router.get("/maintenanceVisits", showMaintenanceVisits);
//get all maintenance visits by selected checklistname
router.get("/selectedMaintenanceVisitsByChecklistname/:id", showSelectedMaintenanceVisitsByChecklistname)
//get all maintenance visits by selected date
router.get("/selectedMaintenanceVisitsByDate/:id", showSelectedMaintenanceVisitsByDate)
//get all maintenance visits by selected customer
router.get("/selectedMaintenanceVisitsByCustomer/:id", showSelectedMaintenanceVisitsByCustomer)
//get all maintenance visits by selected state
router.get("/selectedMaintenanceVisitsByState/:id", showSelectedMaintenanceVisitsByState)
// Delete maintenance visit
router.delete("/maintenanceVisit/:id", deleteMaintenanceVisit);
// Create New maintenance visit
router.post("/maintenanceVisit", createMaintenanceVisit);
//get maintenance visit by name
router.get("/maintenanceVisitByName/:id", showMaintenanceVisitByName);
//get single maintenance visit by primaryId
router.get("/maintenanceVisit/:id", showMaintenanceVisitById);
// Update maintenance visit state
router.put("/maintenanceVisitState", updateMaintenanceVisitState);
// routes with maintenance visit todos:
//create new maintenance visit todos
router.post("/maintenanceVisitTodos", createMaintenanceVisitTodos);
//get all maintenance visit todos by id
router.get("/maintenanceVisitTodos/:id", showMaintenanceVisitTodosById);
//get all maintenance visit todos by assetname
router.get("/maintenanceVisitTodosByAsset/:id", showMaintenanceVisitTodosByAsset);
// Update maintenance visit todo
router.put("/maintenanceVisitTodos", updateMaintenanceVisitTodo);
// Delete maintenance visit todos
router.delete("/maintenanceVisitTodos/:id", deleteMaintenanceVisitTodos);
// routes with issue slips:
// get all issue slips
router.get("/issueSlips", showIssueSlips);
//get all issue slips by selected ticketnumber
router.get("/selectedIssueSlipsByTicketNumber/:id", showSelectedIssueSlipsByTicketnumber)
//get all issue slips by selected customer
router.get("/selectedIssueSlipsByCustomer/:id", showSelectedIssueSlipsByCustomer)
//get all issue slips by selected date
router.get("/selectedIssueSlipsByDate/:id", showSelectedIssueSlipsByDate)
// Delete issue slip
router.delete("/issueSlip/:id", deleteIssueSlip);
// Delete issue slips by ticketnumber
router.delete("/issueSlipByTicketNo/:id", deleteIssueSlipByTicketnumber);
// Create New issue slip
router.post("/issueSlip", createIssueSlip);
//get issue slips by ticketNumber
router.get("/issueSlipByTicketNo/:id", showIssueSlipByTicketNo);
//get single issue slip
router.get("/issueSlip/:id", showIssueSlipById);
// Update issue slip
router.put("/issueSlip", updateIssueSlip);
// routes with ordering info issue slips:
//get all ordering info issue slips by id
router.get("/orderingInfoIssueSlips/:id", showOrderingInfoIssueSlipById);
// Update ordering info issue slip
router.put("/orderingInfoIssueSlips", updateOrderingInfoIssueSlip);
// Delete ordering info issue slip
router.delete("/orderingInfoIssueSlips/:id", deleteOrderingInfoIssueSlip);
// Delete ordering info issue slip by issue id
router.delete("/orderingInfoIssueSlipsByIssueSlipId/:id", deleteOrderingInfoIssueSlipByIssueSlipIds);
// Create New ordering info issue slip
router.post("/orderingInfoIssueSlips", createOrderingInfoIssueSlip);
// routes with issues:
// get all issues
router.get("/issues", showIssues);
//get issue by id
router.get("/issues/:id", showIssueById);
// Update issue
router.put("/issues", updateIssue);
// Delete issue
router.delete("/issues/:id", deleteIssue);
// Create New issue
router.post("/issues", createIssue);
// routes with issue variants:
// get all issue variants
router.get("/issueVariants", showIssueVariants);
//get issue variant by id
router.get("/issueVariants/:id", showIssueVariantById);
// Create New issue variant
router.post("/issueVariants", createIssueVariant);
// get all issue variants by selected issueID
router.get("/selectedIssueVariantsByIssueId/:id", showSelectedIssueVariantsByIssueId)
// get all issue variants by selected name
router.get("/selectedIssueVariantsByName/:id", showSelectedIssueVariantsByName)
// Update issue variant
router.put("/issueVariants", updateIssueVariant);
// Delete issue variant
router.delete("/issueVariants/:id", deleteIssueVariant);
// Delete issue variant by issue id
router.delete("/issueVariantsByIssueSlipId/:id", deleteIssueVariantByIssueSlipIds);
// routes with users:
// sign-up process
router.post('/signUp', userMiddleware.validateRegister, signUp);
// login process
router.post('/login', login);
// get all users
router.get("/users", showUsers);
//get user by id
router.get("/user/:id", showUserById);
// Update user
router.put("/user", updateUser);
// Delete user
router.delete("/user/:id", deleteUser);
//export default router
export default router;

24
certs/localhost.crt Normal file
View File

@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEAzCCAuugAwIBAgIUVwDWxw7XeYOG6Y0uziRnZq2qri8wDQYJKoZIhvcNAQEL
BQAwKTELMAkGA1UEBhMCREUxGjAYBgNVBAMMEUxvY2FsaG9zdC1Sb290LUNBMB4X
DTIzMTAxNjA5MDMxMFoXDTI2MDgwNTA5MDMxMFowdzELMAkGA1UEBhMCREUxGzAZ
BgNVBAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzESMBAGA1UEBwwJVHVlYmluZ2VuMR0w
GwYDVQQKDBRFeGFtcGxlLUNlcnRpZmljYXRlczEYMBYGA1UEAwwPbG9jYWxob3N0
LmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm9bmONlkhJ0s
ZT+OQR7di5Ypu1BoSIDd53Lwj4V9ws02ThYZUfFfYnuUmQBoGe1SAbvfTZ3dpLjM
slBqAxz2gxwTWZt5GteTxtmflvKqmAepybOBqAcFKPwMcjreJyuBxYwInwGfEFgG
YyRMH6VmDbC3vdxSz1NHpCkNL5ctfLQ4tkUShJCHPApqRp1F+BSBQVrpUwzIjn33
0whHOE346mK1TRI7Qqriyv482BfNCWdG6e8FhbGF6oIEcs7Y0YTcdxxmYHv/CkWI
/rtqETRpWOn3YVNGD5hKLchplD2ZaYLvFswij9dSbJUR6j0w5OqgmLO4fyyLZNgN
zARg4mQF7wIDAQABo4HUMIHRMB8GA1UdIwQYMBaAFAzjy/XAlhtTipXj30seDdNO
97OVMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMHcGA1UdEQRwMG6CCWxvY2FsaG9z
dIIRdHVlaXRhcHAudHVlaXQuZGWCDmxvY2FsaG9zdDo1MTcyghZ0dWVpdGFwcC50
dWVpdC5kZTo1MTcygg5sb2NhbGhvc3Q6NTE3M4IWdHVlaXRhcHAudHVlaXQuZGU6
NTE3MzAdBgNVHQ4EFgQU7JiUZESlRqvV9kqKqR+I+EdpA7QwDQYJKoZIhvcNAQEL
BQADggEBACvvYNLtaBoyM7Cy5WuaDaZtxbZvBqzORaNbHUqsGr5YLMlPwAoOj2cC
NmeyVX/I8lqZC0vma1UuyXp6v2ykkuAHL+PJrzhJiUb1KDhC8qBtnviaqB4ZNwQ5
m84BAiZGCS62q2vpFU4Ux/deDSiP8/P/cnRMCeN3DRtDumGq7/UBODbJuDw3Dt4U
CT/cLF2gDm40CkCLFyI6mRSxck3LUvsHV05yf31ikuPQ/M5WIcVHtbQ/qavgDMUT
SZmqKTg4NFVJGDhFQV/A0DBqC0qIVkszbrJSCwNTPyVID+jl9ukYoMQ4zjDwrwp5
ScOInLpNHHsAJd2b7V9jEptt7gSE1dk=
-----END CERTIFICATE-----

28
certs/localhost.key Normal file
View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCb1uY42WSEnSxl
P45BHt2Llim7UGhIgN3ncvCPhX3CzTZOFhlR8V9ie5SZAGgZ7VIBu99Nnd2kuMyy
UGoDHPaDHBNZm3ka15PG2Z+W8qqYB6nJs4GoBwUo/AxyOt4nK4HFjAifAZ8QWAZj
JEwfpWYNsLe93FLPU0ekKQ0vly18tDi2RRKEkIc8CmpGnUX4FIFBWulTDMiOfffT
CEc4TfjqYrVNEjtCquLK/jzYF80JZ0bp7wWFsYXqggRyztjRhNx3HGZge/8KRYj+
u2oRNGlY6fdhU0YPmEotyGmUPZlpgu8WzCKP11JslRHqPTDk6qCYs7h/LItk2A3M
BGDiZAXvAgMBAAECggEAOatumfYVBSBW6Ab7gSzHZpsEyX0pgj8yHy8BR9NqJTck
1APIjfLpTfwWkwI8A/A3a03XhpUXixgaJBivCoTi0sUGgiAPUngZhzpMnSMjL0yS
sAI+RmyGo9KWVoVjZZJrnSvDmvgSIY25m2G4y/M8z28op9mLSY7zkZPhfc2Ptzg0
HO+SvyfxjZF7hwbblo41GzXuk0L2xxJN4xVfLti2R1yc+R9bdbEmzmgeECeZaHyQ
Y6XacbpafPZpC1bwNTv/0W8BVmXLG1FQo56zSTWOf8yt6gDBA970a++IPWNJzVBs
qbVjaDCHAh+sjgeT0+2tUhInVHUrNTgCXxmjWmYf/QKBgQDWOca4y6tEy5r2bl2F
OVdYYn44QUjccpV9WQ/UGzMfcrPcBxEWOYsddDkIdhK+ES9pU+dg0xjNVUGLkEKF
IuWuUZAtU9048r+xYVTUT1BepTKD9CfZ72dpenfQqUWctT6Pm/fj55NtcowlqXu1
IbbVcKv6sXmEj+FG7nb6olVcLQKBgQC6OnYBHFk4phQf1R7Zj+6khRYQTiy3z5Rh
3gIzQq8YseHsfiQZRVkVI4YM+y9tlCKuiDyD9AnJAm37j5C9FrFTJmuigu5xNok5
zG7Vz08Cm31Vrx/lO/flPDi8CYbjEvWHLu8F64gTiotneMSLy+Jex36A8Ez2dL9N
A/w3z3dQCwKBgEHti/vJKk9Evc8DTiK27+uSfDfB17OIS/tEknt7V3NhMHsRba/C
S87nurmg5Mm7rjSjDr0cmjBvAXn7Do28nKTWEyHwAlAJXPcw9hNUyW4nNvGnDTCj
3dZ3SzJbNcIxgSxfGp334cY4D2tzyk+HLaZoQ3UmczhZs0HKF7GwjcaNAoGBAIej
yQtqEHo4TPQakIu6UAE4hid+KQgAg3z87PFVIp+EAJ/2CGj3n7jL1Pljgtn3SYOB
60HY37+uq1jM6okvHB0KIN+PKgj/xdd5VUkZ49xsUE+2bC7VDOvEfzZGYh7GUlsS
DjproQNKp9rHlbCU4d5Sw4s6e3QO+L8ppe0oiSidAoGBAJCe7594SwX5JUwhdRuC
c42pzlqgzeDFCxVafNG5Qi3myPZjum2RbvJVP7Abc+1OqMnRlHrejJZl/eFOxkiD
baGMW+GneARmuwUGv8GWK4dsG+JNNtGKRh8D14ZzKokXKjcczh2xdnEbaK+6aQVt
HvwvS3sXX44fuJaDd7rTtKkU
-----END PRIVATE KEY-----

8
clientsideConfig.js Normal file
View File

@ -0,0 +1,8 @@
const clientsideConfig = {
// url: 'tueitapp.tueit.de',
// port: 8000,
url: 'localhost',
port: 3000,
};
export default clientsideConfig;

View File

@ -1,6 +1,6 @@
<mxfile host="Electron" modified="2023-11-07T10:35:56.822Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="kXWcrfMzl2STO6FMFR4O" version="22.0.3" type="device" pages="2">
<mxfile host="Electron" modified="2024-02-01T15:29:10.628Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="R4sGFqNy6FSLZX5LoMO_" version="22.0.3" type="device" pages="2">
<diagram name="Seite-1" id="VLuSDTVFFHJCdRpH-1WC">
<mxGraphModel dx="1200" dy="2931" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="246" dy="2876" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
@ -112,13 +112,13 @@
<mxCell id="DauqCNUrC7Z9yIe88X-r-57" value="CPU" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxGeometry y="480" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="DauqCNUrC7Z9yIe88X-r-58" value="&lt;div class=&quot;clearfix&quot;&gt;&lt;div class=&quot;clearfix&quot;&gt; &lt;label style=&quot;padding-right: 0rem;&quot; class=&quot;control-label&quot;&gt;RAM&lt;/label&gt; &lt;/div&gt;&lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxCell id="DauqCNUrC7Z9yIe88X-r-58" value="&lt;div class=&quot;clearfix&quot;&gt;&lt;div class=&quot;clearfix&quot;&gt; &lt;label style=&quot;padding-right: 0px;&quot; class=&quot;control-label&quot;&gt;RAM&lt;/label&gt; &lt;/div&gt;&lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxGeometry y="510" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="DauqCNUrC7Z9yIe88X-r-59" value="&lt;div class=&quot;clearfix&quot;&gt;&lt;label style=&quot;padding-right: 0rem;&quot; class=&quot;control-label&quot;&gt;storageConfiguration&lt;/label&gt; &lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxCell id="DauqCNUrC7Z9yIe88X-r-59" value="&lt;div class=&quot;clearfix&quot;&gt;&lt;label style=&quot;padding-right: 0px;&quot; class=&quot;control-label&quot;&gt;storageConfiguration&lt;/label&gt; &lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxGeometry y="540" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-5" value="&lt;div class=&quot;clearfix&quot;&gt;&lt;label style=&quot;padding-right: 0rem;&quot; class=&quot;control-label&quot;&gt;miscellaneous&lt;/label&gt;&lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-5" value="&lt;div class=&quot;clearfix&quot;&gt;&lt;label style=&quot;padding-right: 0px;&quot; class=&quot;control-label&quot;&gt;miscellaneous&lt;/label&gt;&lt;/div&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
<mxGeometry y="570" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="qbUp6gtjYndA0fy5zK6_-3" value="softwareBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="DauqCNUrC7Z9yIe88X-r-29" vertex="1">
@ -338,7 +338,7 @@
<mxGeometry y="300" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="-K6vikdffkJQkB35vOLp-1" value="users" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry y="-1570" width="150" height="570" as="geometry" />
<mxGeometry y="-1570" width="150" height="540" as="geometry" />
</mxCell>
<mxCell id="-K6vikdffkJQkB35vOLp-2" value="id" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="30" width="150" height="30" as="geometry" />
@ -361,43 +361,40 @@
<mxCell id="ioDwbpDVXUhE7vu6D29p-3" value="email" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="210" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-4" value="phonenumber" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="cJnZDgO8OQ7rvziumJ0x-1" value="phonenumber" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="240" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="cJnZDgO8OQ7rvziumJ0x-1" value="phonenumber" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-5" value="address" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="270" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-5" value="address" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-6" value="city" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="300" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-6" value="city" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-7" value="postcode" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="330" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-7" value="postcode" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-8" value="adminBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="360" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-8" value="adminBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-9" value="technician1Bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="390" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-9" value="technician1Bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-10" value="technician2Bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="420" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-10" value="technician2Bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-11" value="technicianMonitoringBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="450" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-11" value="technicianMonitoringBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxCell id="ioDwbpDVXUhE7vu6D29p-12" value="merchantBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="480" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="ioDwbpDVXUhE7vu6D29p-12" value="merchantBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="510" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="UjUgOsnL5tA5fsC7Xk2_-1" value="internBool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="-K6vikdffkJQkB35vOLp-1" vertex="1">
<mxGeometry y="540" width="150" height="30" as="geometry" />
<mxGeometry y="510" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-15" value="issueSlips" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="2040" y="-560" width="140" height="540" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-16" value="ID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-15" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-16" value="primaryID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-15" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-17" value="customerID" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-15" vertex="1">
@ -451,7 +448,7 @@
<mxCell id="WukdXvazNq34soQIU5Al-40" value="orderingInfoIssueSlips" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="2220" y="-440" width="140" height="210" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-41" value="ID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-40" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-41" value="primaryID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-40" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-42" value="issueSlipID" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-40" vertex="1">
@ -472,7 +469,7 @@
<mxCell id="WukdXvazNq34soQIU5Al-48" value="issues" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="2040" y="120" width="140" height="210" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-49" value="ID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-48" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-49" value="primaryID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-48" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-50" value="name" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-48" vertex="1">
@ -493,7 +490,7 @@
<mxCell id="WukdXvazNq34soQIU5Al-56" value="issueVariants" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="2220" y="180" width="140" height="240" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-57" value="ID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-56" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-57" value="primaryID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-56" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-58" value="issueID" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-56" vertex="1">
@ -517,7 +514,7 @@
<mxCell id="WukdXvazNq34soQIU5Al-64" value="checklistSolutions" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="1610" y="-440" width="140" height="210" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-65" value="ID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-64" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-65" value="primaryID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-64" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-66" value="solutionID" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-64" vertex="1">
@ -535,7 +532,7 @@
<mxCell id="WukdXvazNq34soQIU5Al-70" value="comments" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-64" vertex="1">
<mxGeometry y="180" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-93" value="masterProductionOrder:" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxCell id="WukdXvazNq34soQIU5Al-93" value="masterProductionOrders:" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="920" y="-560" width="140" height="270" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-94" value="templateID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-93" vertex="1">
@ -563,7 +560,7 @@
<mxGeometry y="240" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-103" value="masterOrderTodos" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#00CC00;" parent="1" vertex="1">
<mxGeometry x="1090" y="-440" width="140" height="240" as="geometry" />
<mxGeometry x="1090" y="-440" width="140" height="210" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-104" value="primaryID*" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-103" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
@ -583,10 +580,7 @@
<mxCell id="WukdXvazNq34soQIU5Al-109" value="comment" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="WukdXvazNq34soQIU5Al-103" vertex="1">
<mxGeometry y="180" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-37" value="done" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" vertex="1" parent="WukdXvazNq34soQIU5Al-103">
<mxGeometry y="210" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="WukdXvazNq34soQIU5Al-128" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-126" edge="1" target="DauqCNUrC7Z9yIe88X-r-22">
<mxCell id="WukdXvazNq34soQIU5Al-128" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-126" target="DauqCNUrC7Z9yIe88X-r-22" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="450" y="-450" as="targetPoint" />
<Array as="points">
@ -627,7 +621,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="DauqCNUrC7Z9yIe88X-r-31">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="DauqCNUrC7Z9yIe88X-r-31" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="-1165" />
@ -635,7 +629,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="DauqCNUrC7Z9yIe88X-r-19">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="DauqCNUrC7Z9yIe88X-r-19" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="-1165" />
@ -643,7 +637,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="qbUp6gtjYndA0fy5zK6_-15">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="qbUp6gtjYndA0fy5zK6_-15" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="-1165" />
@ -651,7 +645,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-126" target="xziP1FcUGqQ5fj1OK8oA-8">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-126" target="xziP1FcUGqQ5fj1OK8oA-8" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1380" y="-1195" />
@ -659,7 +653,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="xziP1FcUGqQ5fj1OK8oA-7">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="xziP1FcUGqQ5fj1OK8oA-7" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1340" y="-1165" />
@ -667,10 +661,10 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="WukdXvazNq34soQIU5Al-97">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="WukdXvazNq34soQIU5Al-97" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-80">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-80" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="400" y="-1495" />
@ -678,7 +672,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-85">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-85" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="400" y="-1495" />
@ -686,10 +680,10 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="DauqCNUrC7Z9yIe88X-r-34">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="DauqCNUrC7Z9yIe88X-r-34" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-100">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-100" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="840" y="-1495" />
@ -697,7 +691,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="DauqCNUrC7Z9yIe88X-r-44">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="DauqCNUrC7Z9yIe88X-r-44" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="840" y="-1495" />
@ -705,7 +699,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="3JuQf5c926Cjea43xpmA-2">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="3JuQf5c926Cjea43xpmA-2" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1300" y="-1495" />
@ -713,7 +707,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-24" target="DauqCNUrC7Z9yIe88X-r-79">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-24" target="DauqCNUrC7Z9yIe88X-r-79" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="620" y="-515" />
@ -721,10 +715,10 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-24" target="DauqCNUrC7Z9yIe88X-r-81">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-24" target="DauqCNUrC7Z9yIe88X-r-81" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-74" target="qbUp6gtjYndA0fy5zK6_-7">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-74" target="qbUp6gtjYndA0fy5zK6_-7" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="600" y="-40" />
@ -732,7 +726,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="EloLfpzvH1tOZlAIu6NC-1">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="EloLfpzvH1tOZlAIu6NC-1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -742,7 +736,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="qbUp6gtjYndA0fy5zK6_-9">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="qbUp6gtjYndA0fy5zK6_-9" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -752,7 +746,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-94" target="WukdXvazNq34soQIU5Al-105">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-94" target="WukdXvazNq34soQIU5Al-105" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1070" y="-515" />
@ -760,7 +754,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-110" target="qbUp6gtjYndA0fy5zK6_-20">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-110" target="qbUp6gtjYndA0fy5zK6_-20" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1090" y="-40" />
@ -768,7 +762,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="WukdXvazNq34soQIU5Al-107">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="WukdXvazNq34soQIU5Al-107" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -778,7 +772,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="qbUp6gtjYndA0fy5zK6_-22">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="qbUp6gtjYndA0fy5zK6_-22" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -790,7 +784,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="WukdXvazNq34soQIU5Al-91">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="WukdXvazNq34soQIU5Al-91" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -802,7 +796,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="xziP1FcUGqQ5fj1OK8oA-2" target="WukdXvazNq34soQIU5Al-66">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="xziP1FcUGqQ5fj1OK8oA-2" target="WukdXvazNq34soQIU5Al-66" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1590" y="-525" />
@ -810,7 +804,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="xziP1FcUGqQ5fj1OK8oA-3">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="xziP1FcUGqQ5fj1OK8oA-3" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -820,7 +814,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="WukdXvazNq34soQIU5Al-68">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-32" target="WukdXvazNq34soQIU5Al-68" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="-485" />
@ -830,7 +824,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-126" target="WukdXvazNq34soQIU5Al-17">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-126" target="WukdXvazNq34soQIU5Al-17" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1990" y="-1195" />
@ -838,7 +832,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="WukdXvazNq34soQIU5Al-18">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="DauqCNUrC7Z9yIe88X-r-2" target="WukdXvazNq34soQIU5Al-18" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1960" y="-1165" />
@ -846,7 +840,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-110" target="WukdXvazNq34soQIU5Al-19">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-110" target="WukdXvazNq34soQIU5Al-19" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1960" y="-40" />
@ -854,7 +848,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-20">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="-K6vikdffkJQkB35vOLp-3" target="WukdXvazNq34soQIU5Al-20" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1920" y="-1495" />
@ -862,10 +856,10 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-16" target="WukdXvazNq34soQIU5Al-42">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-16" target="WukdXvazNq34soQIU5Al-42" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MZUjV4dI-UfRvC4hdJyc-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WukdXvazNq34soQIU5Al-49" target="WukdXvazNq34soQIU5Al-58">
<mxCell id="MZUjV4dI-UfRvC4hdJyc-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="WukdXvazNq34soQIU5Al-49" target="WukdXvazNq34soQIU5Al-58" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>

8
serversideConfig.js Normal file
View File

@ -0,0 +1,8 @@
const serversideConfig = {
// url: 'tueitapp.tueit.de',
// port: 8000,
url: 'localhost',
port: 3000,
};
export default serversideConfig;