Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions data-and-functions-1/src/functions/getActiveUsers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import DATA from '../DATA.js'

const getActiveUsers = (dataIn) => {
if(!dataIn || !dataIn.users){
return null
}
return dataIn.users.filter((user) => user.accountActive)
}

export default getActiveUsers
10 changes: 10 additions & 0 deletions data-and-functions-1/src/functions/getMostExpensiveProduct.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import DATA from '../DATA.js'

const getMostExpensiveProduct = (dataIn) => {
if(!dataIn || !dataIn.products){
return null
}
return dataIn.products.reduce((maxVal, product) => (product.price > maxVal.price) ? product : maxVal ,dataIn.products[0])
}

export default getMostExpensiveProduct
26 changes: 26 additions & 0 deletions data-and-functions-1/src/functions/getOrderInfo.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import DATA from '../DATA.js'

const getOrderInfo = (dataIn) => {
if(!dataIn || !dataIn.orders){
return null
}
return dataIn.orders.map((order) => {
const orderInfo = {}
dataIn.users.forEach((user) => {
if(user.id === order.userId){
orderInfo.userName = user.name
orderInfo.orderId = order.id
}
})

dataIn.products.forEach((product) => {
if(product.id === order.productId){
orderInfo.price = product.price
}
})

return orderInfo
})
}

export default getOrderInfo
10 changes: 10 additions & 0 deletions data-and-functions-1/src/functions/getProductById.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import DATA from '../DATA.js'

const getProductById = (dataIn, id) => {
if(!dataIn || !id || !dataIn.products){
return null
}
return dataIn.products.find((product) => product.id === id)
}

export default getProductById
10 changes: 10 additions & 0 deletions data-and-functions-1/src/functions/getUserById.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import DATA from '../DATA.js'

const getUserById = (dataIn, user_id) => {
if(!dataIn || !dataIn.users || !user_id){
return null
}
return dataIn.users.find((user) => user.id === user_id)
}

export default getUserById
20 changes: 20 additions & 0 deletions data-and-functions-2/src/functions/getProductsForOrder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import DATA from '../DATA'

const getProductsForOrder = (dataIn,orderId) => {
if(!dataIn || !dataIn.orders || !orderId){
const err = new Error("Error")
throw err
}

let lookupOrder = {}
dataIn.orders.forEach((order)=> lookupOrder[order.id] = order)

if(!lookupOrder[orderId]) return null

let productLookup = {}
dataIn.products.forEach((product) => productLookup[product.id] = product)

return lookupOrder[orderId].products.map((productId) => productLookup[productId])
}

export default getProductsForOrder
20 changes: 20 additions & 0 deletions data-and-functions-2/src/functions/getTotalPriceForOrder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import DATA from '../DATA'

const getTotalPriceForOrder = (dataIn, orderId) => {
if(!dataIn || !dataIn.orders || !orderId){
const err = new Error("Error")
throw err
}

let lookupOrder = {}
dataIn.orders.forEach((order) => lookupOrder[order.id] = order)

if(!lookupOrder[orderId]) return null

let lookupProduct = {}
dataIn.products.forEach((product) => lookupProduct[product.id] = product)

return lookupOrder[orderId].products.reduce((sum, productId) => sum + lookupProduct[productId].price,0)
}

export default getTotalPriceForOrder
37 changes: 37 additions & 0 deletions data-and-functions-3/src/functions/addOrder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import DATA from '../DATA'

const addOrder = (dataIn, newOrder) => {
if(!dataIn || !dataIn.orders || !newOrder){
const err = new Error("Missing data")
throw err
}

if(typeof newOrder !== "object" || !(newOrder.userId && newOrder.products) || newOrder.id){
const err = new Error("Wrong data-type or wrong format")
throw err
}

const usersLookup = {}
dataIn.users.forEach((user) => usersLookup[user.id] = user)

if(!usersLookup[newOrder.userId]){
const err = new Error("User invalid/not found")
throw err
}

const productsLookup = {}
dataIn.products.forEach((product) => productsLookup[product.id] = product)

newOrder.products.forEach((productId) =>{
if(!productsLookup[productId]){
const err = new Error("Invalid product id")
throw err
}
})

newOrder.id = dataIn.orders[dataIn.orders.length-1].id + 1
dataIn.orders.push(newOrder)
return newOrder
}

export default addOrder
19 changes: 19 additions & 0 deletions data-and-functions-3/src/functions/addProduct.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import DATA from '../DATA'

const addProduct = (dataIn, newProduct) => {
if(!dataIn || !dataIn.products || !newProduct){
const err = new Error("Invalid inputs/missing")
throw err
}

if(typeof newProduct !== "object" || !(newProduct.price && newProduct.name) || newProduct.id){
const err = new Error("Invalid data-type or format.")
throw err
}

newProduct.id = dataIn.products[dataIn.products.length-1].id + 1
dataIn.products.push(newProduct)
return newProduct
}

export default addProduct