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
34 changes: 34 additions & 0 deletions server/Controllers/orderController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Connect to data (i.e. Model)
const Order = require('../Models/orderModel')

module.exports.list = ((req,res)=>{
Order.find().exec()
.then(orders=>{
res.json(orders)
})
})

module.exports.show = ((req, res)=>{
console.log(req.params.id)
Order.findById(req.params.id).exec()
.then(orders=>{
res.json(orders)
})
})

module.exports.create = ((req, res)=>{
newOrder = new Order ({
'Product': req.body.Product,
'Amount': req.body.Amount,
'ProductId': req.body.ProductId
})

newOrder.save()
.then(savedOrder=>{
res.json(savedOrder)
})
})

module.exports.update = ((req, res)=>res.json({theId: req.params.id}))

module.exports.remove = ((req, res)=>res.json({}))
5 changes: 5 additions & 0 deletions server/Models/orderModel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const mon = require('mongoose')

const schema = require('../Schemas/orderSchema')

module.exports = mon.model('Orders',schema)
13 changes: 13 additions & 0 deletions server/Routes/orderRoute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const express = require('express')
const router = express.Router()
// Router variables that should match the controller
const { list,show,create,update,remove } = require('../Controllers/orderController')

// Use whatever method you need (get, post, etc)
router.get('/orders', list)
router.get('/orders/:id', show)
router.post('/orders', create)
router.put('/orders/:id', update)
router.delete('/orders/:id', remove)

module.exports = router
18 changes: 18 additions & 0 deletions server/Schemas/orderSchema.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const mon = require('mongoose')

const schema = new mon.Schema({
Product:{
required: false,
type: String
},
Amount:{
required: false,
type: Number
},
ProductId:{
required: false,
type: Number
}
})

module.exports = schema
15 changes: 15 additions & 0 deletions server/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const express = require('express')
const parser = require('body-parser')
const mon = require('mongoose')

mon.connect('mongodb://admin:admin@ds135760.mlab.com:35760/e-commerce-aca')

const app = express()

app.use(parser.json())
//Input routes here

app.use(require('./Routes/orderRoute'))


app.listen(3001, () => console.log('Listening on port 3001!'))
270 changes: 52 additions & 218 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,235 +1,69 @@
import React, { Component } from 'react';
import logo from './logo.svg';
// import PropTypes from 'prop-types'
import './App.css';

function App() {
return (
<div className="App">
{/*<Header>*/}
<nav className="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div className="container">

<div className="navbar-header">
<button type="button" className="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span className="sr-only">Toggle navigation</span>
<span className="icon-bar"></span>
<span className="icon-bar"></span>
<span className="icon-bar"></span>
</button>
<a className="navbar-brand" href="#">Start Bootstrap</a>
</div>

<div className="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul className="nav navbar-nav">
<li>
<a href="#">About</a>
</li>
<li>
<a href="#">Services</a>
</li>
<li>
<a href="#">Contact</a>
</li>
<li >
<a href="#">Items In Cart (0)</a>
</li>
</ul>
</div>

</div>

</nav>
{/*</Header>*/}

<div className="container">

<div className="row">
import Header from "./components/Header"
import Carousel from "./components/Carousel"
import ProductDetail from "./components/ProductDetail"
import Footer from "./components/Footer"
import SideBar from "./components/SideBar"
import Checkout from "./components/Checkout"

<div className="col-md-3">
<p className="lead">Shop Name</p>
<div className="list-group">
<a href="#" className="list-group-item">Category 1</a>
<a href="#" className="list-group-item">Category 2</a>
<a href="#" className="list-group-item">Category 3</a>
</div>
</div>
export default class App extends Component{

state={
numberOfItemsInCart: 0,
cart: [],
}
handleAddtoCart = (product)=>{
let cartArr = [...this.state.cart]
cartArr.push({item: product.name, price: product.price, description: product.description})
this.setState({numberOfItemsInCart: this.state.numberOfItemsInCart + 1,
cart: cartArr })
}

<div className="col-md-9">
{/*<Carousel>*/}
<div className="row carousel-holder">
render(){
const products = this.props.products.map((item, i)=>{
return <ProductDetail
key={i}
product={item}
clickEvent={this.handleAddtoCart}
/>
})

<div className="col-md-12">
<div id="carousel-example-generic" className="carousel slide" data-ride="carousel">
<ol className="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" className="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
</ol>
<div className="carousel-inner">
<div className="item active">
<img className="slide-image" src="http://placehold.it/800x300" alt=""/>
</div>
<div className="item">
<img className="slide-image" src="http://placehold.it/800x300" alt=""/>
</div>
<div className="item">
<img className="slide-image" src="http://placehold.it/800x300" alt=""/>
</div>
</div>
<a className="left carousel-control" href="#carousel-example-generic" data-slide="prev">
<span className="glyphicon glyphicon-chevron-left"></span>
</a>
<a className="right carousel-control" href="#carousel-example-generic" data-slide="next">
<span className="glyphicon glyphicon-chevron-right"></span>
</a>
</div>
</div>
return (
<div className="App">
<Header
itemsInCart={this.state.numberOfItemsInCart}
toggleCart={()=>!this.state.cartVisible ? this.setState({cartVisible:true}) : this.setState({cartVisible:false})}
cartItems={this.state.cart}
isVisible={this.state.cartVisible}
/>

</div>
{/*</Carousel>*/}

<div className="container">
<div className="row">
{/*<ProductDetail>*/}
<div className="col-sm-4 col-lg-4 col-md-4">
<div className="thumbnail">
<img src="http://placehold.it/320x150" alt=""/>
<div className="caption">
<h4 className="pull-right">$24.99</h4>
<h4><a href="#">First Product</a>
</h4>
<p>See more snippets like this online store item at <a target="_blank" href="http://www.bootsnipp.com">Bootsnipp - http://bootsnipp.com</a>.</p>
</div>
<div className="ratings">
<p className="pull-right">15 reviews</p>
<p>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
</p>
</div>
</div>
</div>
{/*</ProductDetail>*/}
<div className="col-sm-4 col-lg-4 col-md-4">
<div className="thumbnail">
<img src="http://placehold.it/320x150" alt=""/>
<div className="caption">
<h4 className="pull-right">$64.99</h4>
<h4><a href="#">Second Product</a>
</h4>
<p>This is a short description. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
<div className="ratings">
<p className="pull-right">12 reviews</p>
<p>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star-empty"></span>
</p>
</div>
<SideBar />
<div className="col-md-9">
<Carousel />
<div className="row">
{products}
</div>
</div>

<div className="col-sm-4 col-lg-4 col-md-4">
<div className="thumbnail">
<img src="http://placehold.it/320x150" alt=""/>
<div className="caption">
<h4 className="pull-right">$74.99</h4>
<h4><a href="#">Third Product</a>
</h4>
<p>This is a short description. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
<div className="ratings">
<p className="pull-right">31 reviews</p>
<p>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star-empty"></span>
</p>
</div>
</div>
</div>

<div className="col-sm-4 col-lg-4 col-md-4">
<div className="thumbnail">
<img src="http://placehold.it/320x150" alt=""/>
<div className="caption">
<h4 className="pull-right">$84.99</h4>
<h4><a href="#">Fourth Product</a>
</h4>
<p>This is a short description. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
<div className="ratings">
<p className="pull-right">6 reviews</p>
<p>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star-empty"></span>
<span className="glyphicon glyphicon-star-empty"></span>
</p>
</div>
</div>
</div>

<div className="col-sm-4 col-lg-4 col-md-4">
<div className="thumbnail">
<img src="http://placehold.it/320x150" alt=""/>
<div className="caption">
<h4 className="pull-right">$94.99</h4>
<h4><a href="#">Fifth Product</a>
</h4>
<p>This is a short description. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
<div className="ratings">
<p className="pull-right">18 reviews</p>
<p>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star"></span>
<span className="glyphicon glyphicon-star-empty"></span>
</p>
</div>
</div>
</div>
{/*
<div className="col-sm-4 col-lg-4 col-md-4">
<h4><a href="#">Like this template?</a>
</h4>
<p>If you like this template, then check out <a target="_blank" href="http://maxoffsky.com/code-blog/laravel-shop-tutorial-1-building-a-review-system/">this tutorial</a> on how to build a working review system for your online store!</p>
<a className="btn btn-primary" target="_blank" href="http://maxoffsky.com/code-blog/laravel-shop-tutorial-1-building-a-review-system/">View Tutorial</a>
</div>
*/}
</div>

</div>

<div className="container">
<hr/>
<Footer />
<Checkout order={this.state.cart}/>
</div>
</div>
);

}
}


</div>

<div className="container">

<hr/>

{/*<Footer>*/}
<footer>
<div className="row">
<div className="col-lg-12">
<p>Copyright &copy; Your Website 2014</p>
</div>
</div>
</footer>
{/*</Footer>*/}
</div>
</div>
);
}

export default App;
12 changes: 12 additions & 0 deletions src/components/Calculations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
export function cartTotal(arr){
const myList = []
arr.forEach((item,i)=>{
myList.push(Number(item.price.replace("$","")))
})

const reduced = myList.reduce((s,c)=>{
return(Number(s) , Number(c))
},0)

return(reduced)
}
Loading