Skip to content

Commit 3c04461

Browse files
committed
Add sales_orders_controller on gate
1 parent 767c8d2 commit 3c04461

File tree

8 files changed

+124
-3
lines changed

8 files changed

+124
-3
lines changed

core/app/models/bouquet/purchase_order.rb

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# purchase_order = Bouquet::PurchaseOrder.new(quantity: 1, material_id: 1, supplier_id: 1)
2+
# purchase_order.save
3+
# purchase_order.arrival.stocks.first.storages.first
14
module Bouquet
25
class PurchaseOrder < ApplicationRecord
36
belongs_to :material
+17-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
1-
# Bouquet::Customer.find_by(name: :foo).sales_orders.create(product_id: Bouquet::Product.find_by(name: :p1).id)
1+
# sales_order = Bouquet::SalesOrder.new(quantity: 1, product_id: 1, customer_id: 1)
2+
# sales_order.save
3+
# sales_order.shipment.deliveries.first.retrievals.first
24
module Bouquet
35
class SalesOrder < ApplicationRecord
46
belongs_to :product
57
belongs_to :customer
68
has_one :shipment, dependent: :destroy
9+
10+
after_create do
11+
location = Bouquet::Location.first
12+
storage = Bouquet::Storage.first
13+
14+
shipment = build_shipment(quantity: quantity)
15+
shipment.save
16+
17+
deliverie = shipment.deliveries.new(quantity: quantity, location_id: location.id)
18+
deliverie.save
19+
20+
retrieval = deliverie.retrievals.new(quantity: quantity, storage_id: storage.id)
21+
retrieval.save
22+
end
723
end
824
end

gate/Gemfile

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ gemspec
1010
# Git. Remember to move these dependencies to your gemspec before releasing
1111
# your gem to rubygems.org.
1212

13-
# To use a debugger
14-
# gem 'byebug', group: [:development, :test]
13+
gem 'pry-rails', group: [:development, :test]
1514
gem 'rspec-rails', group: [:development, :test]
1615
gem 'factory_girl_rails', group: [:development, :test]
1716
gem 'bouquet-core', path: '../core'

gate/Gemfile.lock

+9
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ GEM
7676
timers (>= 4.1.1)
7777
celluloid-supervision (0.20.5)
7878
timers (>= 4.1.1)
79+
coderay (1.1.0)
7980
coffee-rails (4.1.1)
8081
coffee-script (>= 2.2.0)
8182
railties (>= 4.0.0, < 5.1.x)
@@ -115,6 +116,12 @@ GEM
115116
minitest (5.8.3)
116117
nokogiri (1.6.7.1)
117118
mini_portile2 (~> 2.0.0.rc2)
119+
pry (0.10.3)
120+
coderay (~> 1.1.0)
121+
method_source (~> 0.8.1)
122+
slop (~> 3.4)
123+
pry-rails (0.3.4)
124+
pry (>= 0.9.10)
118125
rack (2.0.0.alpha)
119126
json
120127
rack-test (0.6.3)
@@ -163,6 +170,7 @@ GEM
163170
rspec-mocks (~> 3.1.0)
164171
rspec-support (~> 3.1.0)
165172
rspec-support (3.1.2)
173+
slop (3.6.0)
166174
sprockets (3.5.2)
167175
concurrent-ruby (~> 1.0)
168176
rack (> 1, < 3)
@@ -188,6 +196,7 @@ DEPENDENCIES
188196
bouquet-core!
189197
bouquet-gate!
190198
factory_girl_rails
199+
pry-rails
191200
rspec-rails
192201
sqlite3
193202

gate/README.md

+24
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
11
# Bouquet::Gate
22

33
This project rocks and uses MIT-LICENSE.
4+
5+
6+
7+
```
8+
POST api/purchase_orders
9+
10+
{
11+
"quantity": 10,
12+
"arrival_date": "2014-03-21",
13+
"material_id": 1,
14+
"supplier_id": 1
15+
}
16+
```
17+
18+
```
19+
POST api/sales_orders
20+
21+
{
22+
"quantity": 10,
23+
"arrival_date": "2014-03-21",
24+
"product_id": 1,
25+
"customer_id": 1
26+
}
27+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
require_dependency "bouquet/gate/application_controller"
2+
3+
module Bouquet
4+
class Gate::SalesOrdersController < ApplicationController
5+
before_action :set_sales_order, only: [:show, :update, :destroy]
6+
7+
# GET /sales_orders
8+
def index
9+
@sales_orders = Bouquet::SalesOrder.all
10+
11+
render json: @sales_orders
12+
end
13+
14+
# GET /sales_orders/1
15+
def show
16+
render json: @sales_order
17+
end
18+
19+
# POST /sales_orders
20+
def create
21+
@sales_order = Bouquet::SalesOrder.new(sales_order_params)
22+
23+
if @sales_order.save
24+
render json: @sales_order, status: :created, location: @sales_order
25+
else
26+
render json: @sales_order.errors, status: :unprocessable_entity
27+
end
28+
end
29+
30+
# PATCH/PUT /sales_orders/1
31+
def update
32+
if @sales_order.update(sales_order_params)
33+
render json: @sales_order
34+
else
35+
render json: @sales_order.errors, status: :unprocessable_entity
36+
end
37+
end
38+
39+
# DELETE /sales_orders/1
40+
def destroy
41+
@sales_order.destroy
42+
end
43+
44+
private
45+
# Use callbacks to share common setup or constraints between actions.
46+
def set_sales_order
47+
@sales_order = Bouquet::SalesOrder.find(params[:id])
48+
end
49+
50+
# Only allow a trusted parameter "white list" through.
51+
def sales_order_params
52+
params.require(:sales_order).permit(:quantity, :shipment_date, :product_id, :customer_id)
53+
end
54+
end
55+
end

gate/config/routes.rb

+1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
scope module: :gate, defaults: {format: :json} do
33
resources :products
44
resources :purchase_orders
5+
resources :sales_orders
56
end
67
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
require 'rails_helper'
2+
3+
module Bouquet
4+
RSpec.describe Gate::SalesOrdersController, :type => :controller do
5+
6+
describe "GET index" do
7+
it "returns http success" do
8+
get :index
9+
expect(response).to have_http_status(:success)
10+
end
11+
end
12+
13+
end
14+
end

0 commit comments

Comments
 (0)