stay_commerce 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/concerns/stay/stripe_concern.rb +1 -1
- data/app/controllers/stay/api/v1/bookings_controller.rb +31 -35
- data/app/controllers/stay/api/v1/profiles_controller.rb +1 -1
- data/app/controllers/stay/api/v1/properties_controller.rb +1 -1
- data/app/models/stay/booking.rb +3 -0
- data/app/models/stay/user.rb +22 -2
- data/app/serializers/booking_listing_serializer.rb +64 -0
- data/app/serializers/booking_serializer.rb +5 -1
- data/app/serializers/property_listing_serializer.rb +1 -1
- data/lib/stay/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea9bf5bd2ce5586107d49503bcbbab44973eb929e6cf58fbe762892444a437ec
|
4
|
+
data.tar.gz: f32e5da8fb4d2b3840efc4115ca06ebcde81cbf9bc95b8c8cb505a845a9a384a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f48289085a2aa3f9156d871ae5d6e76631a2c1dd25f90ca735bf84f51fe9f21cdfdd4d71cc959b23a85f18de45bef2a27130db01268967cd4c826fec3bbd4dc
|
7
|
+
data.tar.gz: 9eee63d5b3ed3c65c4a672e3ad97c2c7a43828de56b4b6a855497f803ad4445768bdfd75a7521d9b7728b10374b3fa55f4b96b5edf1d31cefce5808ca0e38b5f
|
@@ -43,40 +43,36 @@ class Stay::Api::V1::BookingsController < Stay::BaseApiController
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def host_booking
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
render json: { success: false, error: "Invalid pagination parameters", message: e.message }, status: :bad_request
|
77
|
-
rescue StandardError => e
|
78
|
-
render json: { success: false, error: "Internal server error", message: e.message }, status: :internal_server_error
|
79
|
-
end
|
46
|
+
begin
|
47
|
+
page = params[:page].to_i > 0 ? params[:page].to_i : 1
|
48
|
+
|
49
|
+
@bookings = Stay::Booking.current_host_booking(current_devise_api_user).confirmed
|
50
|
+
@bookings = @bookings.joins(:property).where("stay_properties.title ILIKE ?", "%#{params[:q]}%") if params[:q].present?
|
51
|
+
@bookings = @bookings.order(updated_at: :desc).page(page).per(10)
|
52
|
+
|
53
|
+
if @bookings.empty?
|
54
|
+
return render json: { error: "No bookings found", bookings: [], success: false }, status: :ok
|
55
|
+
end
|
56
|
+
|
57
|
+
render json: {
|
58
|
+
data: "Bookings Found",
|
59
|
+
bookings: ActiveModelSerializers::SerializableResource.new(@bookings, each_serializer: BookingListingSerializer),
|
60
|
+
success: true,
|
61
|
+
meta: {
|
62
|
+
total_pages: @bookings.total_pages,
|
63
|
+
current_page: @bookings.current_page,
|
64
|
+
next_page: @bookings.next_page,
|
65
|
+
prev_page: @bookings.prev_page,
|
66
|
+
total_count: @bookings.total_count
|
67
|
+
}
|
68
|
+
}, status: :ok
|
69
|
+
rescue ActiveRecord::RecordNotFound => e
|
70
|
+
render json: { success: false, error: "Bookings not found", message: e.message }, status: :not_found
|
71
|
+
rescue ArgumentError => e
|
72
|
+
render json: { success: false, error: "Invalid pagination parameters", message: e.message }, status: :bad_request
|
73
|
+
rescue StandardError => e
|
74
|
+
render json: { success: false, error: "Internal server error", message: e.message }, status: :internal_server_error
|
75
|
+
end
|
80
76
|
end
|
81
77
|
|
82
78
|
def host_request
|
@@ -97,7 +93,7 @@ class Stay::Api::V1::BookingsController < Stay::BaseApiController
|
|
97
93
|
|
98
94
|
render json: {
|
99
95
|
data: "Bookings Found",
|
100
|
-
bookings: ActiveModelSerializers::SerializableResource.new(@bookings, each_serializer:
|
96
|
+
bookings: ActiveModelSerializers::SerializableResource.new(@bookings, each_serializer: BookingListingSerializer),
|
101
97
|
success: true,
|
102
98
|
meta: {
|
103
99
|
total_pages: total_pages,
|
@@ -21,7 +21,7 @@ class Stay::Api::V1::ProfilesController < Stay::BaseApiController
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def profile_params
|
24
|
-
params.require(:profile).permit(:first_name, :last_name, :phone, :date_of_birth, :gender, :profile_image )
|
24
|
+
params.require(:profile).permit(:first_name, :last_name, :phone, :date_of_birth, :gender, :profile_image, :about_me )
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
@@ -200,7 +200,7 @@ class Stay::Api::V1::PropertiesController < Stay::BaseApiController
|
|
200
200
|
property_house_rules_attributes: [ :id, :house_rule_id, :value, :_destroy ],
|
201
201
|
property_amenities_attributes: [ :id, :amenity_id, :_destroy ],
|
202
202
|
property_features_attributes: [ :id, :name, :feature_id, :_destroy ],
|
203
|
-
rooms_attributes: [ :id, :max_guests, :price_per_month, :status, :booking_start, :booking_end, :description, :size, :bed_type_id, :room_type_id, :_destroy, room_images: [],
|
203
|
+
rooms_attributes: [ :id, :name, :max_guests, :price_per_month, :status, :booking_start, :booking_end, :description, :size, :bed_type_id, :room_type_id, :_destroy, room_images: [],
|
204
204
|
room_features_attributes: [ :id, :feature_id, :_destroy ],
|
205
205
|
room_amenities_attributes: [ :id, :amenity_id, :_destroy ]
|
206
206
|
],
|
data/app/models/stay/booking.rb
CHANGED
@@ -19,6 +19,9 @@ module Stay
|
|
19
19
|
scope :incomplete, -> { where(completed_at: nil).where(payment_state: [ "failed", nil ]).where.not(status: :canceled) }
|
20
20
|
scope :not_canceled, -> { where.not(status: "canceled") }
|
21
21
|
scope :confirmed, -> { where(status: "confirmed").where(payment_state: "paid") }
|
22
|
+
scope :current_host_booking, ->(host) {
|
23
|
+
joins(:property).where(stay_properties: { user: host })
|
24
|
+
}
|
22
25
|
|
23
26
|
after_commit :booking_completed_at
|
24
27
|
before_create :link_by_email, :generate_number
|
data/app/models/stay/user.rb
CHANGED
@@ -5,6 +5,9 @@ module Stay
|
|
5
5
|
devise :database_authenticatable, :registerable,
|
6
6
|
:recoverable, :rememberable, :validatable, :api
|
7
7
|
|
8
|
+
|
9
|
+
Stripe.api_key = ENV["STRIPES_SECRECT_KEY"]
|
10
|
+
|
8
11
|
has_many :role_users, class_name: "Stay::RoleUser", dependent: :destroy
|
9
12
|
has_many :stay_roles, through: :role_users, class_name: "Stay::Role", source: :role
|
10
13
|
has_many :bookings
|
@@ -35,8 +38,7 @@ module Stay
|
|
35
38
|
|
36
39
|
# callbacks
|
37
40
|
after_create :welcome_email
|
38
|
-
|
39
|
-
# after_create :admin_host_email
|
41
|
+
after_create :create_stripe_account
|
40
42
|
|
41
43
|
attr_accessor :updating_password
|
42
44
|
|
@@ -106,5 +108,23 @@ module Stay
|
|
106
108
|
def assign_default_role
|
107
109
|
Stay::RoleUser.create(user: self, role: Stay::Role.where(name: Stay::Role::USER).first_or_create) unless stay_roles.exists?
|
108
110
|
end
|
111
|
+
|
112
|
+
def create_stripe_account
|
113
|
+
user = self
|
114
|
+
customer = Stripe::Customer.create({
|
115
|
+
email: user.email,
|
116
|
+
name: "#{user&.first_name} #{user&.last_name}",
|
117
|
+
address: {
|
118
|
+
city: user&.addresses&.last&.city,
|
119
|
+
state: user&.addresses&.last&.state&.name,
|
120
|
+
country: user&.addresses&.last&.country&.name,
|
121
|
+
line1: user&.addresses&.last&.address1,
|
122
|
+
line2: user&.addresses&.last&.address2,
|
123
|
+
postal_code: user&.addresses&.last&.zipcode
|
124
|
+
},
|
125
|
+
})
|
126
|
+
user.update(stripe_customer_id: customer.id)
|
127
|
+
|
128
|
+
end
|
109
129
|
end
|
110
130
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class BookingListingSerializer < ActiveModel::Serializer
|
2
|
+
attributes :id, :number, :total, :total_amount, :check_in_date, :check_out_date, :item_total, :is_shared_property, :booked_room, :room_images,
|
3
|
+
:number_of_guests, :payment_state, :status, :request_by, :invoice_no, :calculate_cleaning_fee, :calculate_city_fee, :extra_guest_amount, :property
|
4
|
+
|
5
|
+
|
6
|
+
def total
|
7
|
+
object.total_amount
|
8
|
+
end
|
9
|
+
|
10
|
+
def property
|
11
|
+
property = object.property
|
12
|
+
|
13
|
+
{
|
14
|
+
id: property.id,
|
15
|
+
title: property.title,
|
16
|
+
price_per_month: property.price_per_month,
|
17
|
+
city: property.city,
|
18
|
+
state: property.state,
|
19
|
+
slug: property.slug,
|
20
|
+
rooms_count:property.rooms.count,
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def room_images
|
25
|
+
object.rooms.last.room_images.map(&:url).compact
|
26
|
+
end
|
27
|
+
|
28
|
+
def is_shared_property
|
29
|
+
object.property&.shared_property
|
30
|
+
end
|
31
|
+
|
32
|
+
def booked_room
|
33
|
+
object.line_items.any? ? object.line_items.last.room&.name : nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def calculate_cleaning_fee
|
37
|
+
nil # object.property.cleaning_fee
|
38
|
+
end
|
39
|
+
|
40
|
+
def calculate_city_fee
|
41
|
+
nil # object.property.city_fee
|
42
|
+
end
|
43
|
+
|
44
|
+
def extra_guest_amount
|
45
|
+
object.extra_guest_amount
|
46
|
+
end
|
47
|
+
|
48
|
+
def check_in_date
|
49
|
+
object.check_in_date.strftime("%B %d, %Y")
|
50
|
+
end
|
51
|
+
|
52
|
+
def check_out_date
|
53
|
+
object.check_out_date.strftime("%B %d, %Y")
|
54
|
+
end
|
55
|
+
|
56
|
+
def request_by
|
57
|
+
object.user&.full_name || nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def invoice_no
|
61
|
+
object.invoice ? object.invoice.id : nil
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class BookingSerializer < ActiveModel::Serializer
|
2
2
|
attributes :id, :number, :calculate_totals, :tax_total, :total, :total_amount, :item_total, :room_count, :check_in_date, :check_out_date,
|
3
|
-
:number_of_guests, :completed_at, :payment_state, :calculate_city_fee, :calculate_cleaning_fee, :status, :invoice_total, :extra_guest_amount, :last_five_messages
|
3
|
+
:number_of_guests, :completed_at, :payment_state, :calculate_city_fee, :calculate_cleaning_fee, :status, :invoice_total, :extra_guest_amount, :last_five_messages , :property_user
|
4
4
|
belongs_to :property, serializer: PropertyListingSerializer
|
5
5
|
belongs_to :user, serializer: UserListingSerializer
|
6
6
|
has_many :line_items, serializer: LineItemSerializer
|
@@ -40,6 +40,10 @@ class BookingSerializer < ActiveModel::Serializer
|
|
40
40
|
object.extra_guest_amount
|
41
41
|
end
|
42
42
|
|
43
|
+
def property_user
|
44
|
+
object.property.user.present? ? UserListingSerializer.new(object.property.user) : nil
|
45
|
+
end
|
46
|
+
|
43
47
|
def invoice_total
|
44
48
|
object.invoice&.total
|
45
49
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class PropertyListingSerializer < ActiveModel::Serializer
|
2
2
|
attributes :id, :title, :price_per_month, :place_images, :total_rooms,
|
3
3
|
:availability_end, :availability_start, :extra_guest, :latitude,
|
4
|
-
:longitude, :address, :city, :state, :country, :active, :property_state, :slug
|
4
|
+
:longitude, :address, :city, :state, :country, :active, :property_state, :slug ,:description
|
5
5
|
|
6
6
|
belongs_to :property_category, Serializer: :PropertyCategorySerializer
|
7
7
|
belongs_to :property_type, Serializer: :PropertyTypeSerializer
|
data/lib/stay/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stay_commerce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- w3villa-vikaspal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-06-
|
11
|
+
date: 2025-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -620,6 +620,7 @@ files:
|
|
620
620
|
- app/serializers/amenity_category_serializer.rb
|
621
621
|
- app/serializers/amenity_serializer.rb
|
622
622
|
- app/serializers/bed_type_serializer.rb
|
623
|
+
- app/serializers/booking_listing_serializer.rb
|
623
624
|
- app/serializers/booking_query_serializer.rb
|
624
625
|
- app/serializers/booking_serializer.rb
|
625
626
|
- app/serializers/cancellation_policy_serializer.rb
|