Class: Api::V5::UserAddressesController
- Inherits:
-
BaseController
- Object
- ActionController::API
- BaseController
- Api::V5::UserAddressesController
show all
- Includes:
- Concerns::Authorization
- Defined in:
- app/controllers/api/v5/user_addresses_controller.rb
Constant Summary
BaseController::CACHE_NAMESPACE, BaseController::INTERNAL_SERVER_ERROR_MESSAGE, BaseController::ResponseSchema
Instance Method Summary
collapse
#identity_cache_memoization
#append_info_to_payload
#my_response_cache
Instance Method Details
#create ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'app/controllers/api/v5/user_addresses_controller.rb', line 34
def create
is_primary = permitted_params[:primary] if permitted_params[:primary].present?
address = current_user.addresses.build permitted_params
full_address = @full_address
str_identity = '. detail:'
if full_address.present? && full_address.include?(str_identity) && full_address.split(str_identity).last.strip.blank?
address[:detail] = full_address.split(str_identity).first
else
address[:detail] = full_address
end
result = address.valid? && address.save
if result
update_primary(address.id) if is_primary
render json: resource_as_json(address, DEFAULT_SERIALIZER, {}).merge(success: true, message: 'Success')
else
render json: { data: nil, success: false, message: address.errors.full_messages.to_sentence }
end
end
|
#destroy ⇒ Object
97
98
99
100
101
102
103
104
|
# File 'app/controllers/api/v5/user_addresses_controller.rb', line 97
def destroy
address = DeliveryAddress.find(params[:id])
if address.user == current_user && address.destroy
render json: { data: nil, success: true, message: 'Address deleted successfully' }
else
render json: { data: nil, success: false, message: 'Sorry you are not authorized' }
end
end
|
#index ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'app/controllers/api/v5/user_addresses_controller.rb', line 8
def index
page = params.fetch(:page, {})
kind = params.fetch(:kind, {})
addresses = current_user.addresses
.where(is_saved: true)
addresses = if kind.present? && kind == 'recent'
addresses.order(updated_at: :desc)
.limit(10)
else
addresses.order(primary: :desc)
.order(name: :asc)
end
render json: ActiveModelSerializers::SerializableResource.new(
addresses.page(page[:number].presence || 1).per(page[:size].presence || 10),
{
serialization_context: serialization_context,
serializer: ActiveModel::Serializer::CollectionSerializer,
adapter: :json_api,
each_serializer: DEFAULT_SERIALIZER
}
).as_json.merge(success: true, message: 'Success')
end
|
#show ⇒ Object
62
63
64
65
66
67
68
69
|
# File 'app/controllers/api/v5/user_addresses_controller.rb', line 62
def show
address = DeliveryAddress.find(params[:id])
if address.user == current_user
render json: resource_as_json(address, DEFAULT_SERIALIZER, {}).merge(success: true, message: 'Success')
else
render json: { data: nil, success: false, message: 'Sorry you are not authorized' }
end
end
|
#update ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'app/controllers/api/v5/user_addresses_controller.rb', line 71
def update
is_primary = permitted_params[:primary] if permitted_params[:primary].present?
address = DeliveryAddress.find(params[:id])
if address.user == current_user
full_address = @full_address
str_identity = '. detail:'
if full_address.present? && full_address.include?(str_identity) && full_address.split(str_identity).last.strip.blank?
delivery_address = permitted_params
delivery_address[:detail] = full_address.split(str_identity).first
else
delivery_address = permitted_params
delivery_address[:detail] = full_address
end
address.update(delivery_address)
update_primary(address.id) if is_primary
render json: resource_as_json(address, DEFAULT_SERIALIZER, {}).merge(success: true, message: 'Success')
else
render json: { data: nil, success: false, message: 'Sorry you are not authorized' }
end
end
|
#update_primary(id) ⇒ Object
57
58
59
60
|
# File 'app/controllers/api/v5/user_addresses_controller.rb', line 57
def update_primary(id)
address = current_user.addresses.where.not(id: id)
address.update_all(primary: false)
end
|