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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d0d6e7e7fd52f6bc5e4fc1cc93e67e3c25f0189e68819f5ccfd6960000f19c3
4
- data.tar.gz: 30020c4ff02d737546258c180fd61ae13993381cca5889864573761c9713c3ad
3
+ metadata.gz: ea9bf5bd2ce5586107d49503bcbbab44973eb929e6cf58fbe762892444a437ec
4
+ data.tar.gz: f32e5da8fb4d2b3840efc4115ca06ebcde81cbf9bc95b8c8cb505a845a9a384a
5
5
  SHA512:
6
- metadata.gz: 00070b66f223b1df2595071ce2afe1852f36c090794240a91a898bbd6edb5349149715398da5e2f80762ac032f2e9699ea1e4c89ee85a86f514402e10aa80ff0
7
- data.tar.gz: c6b7951b2199d3e61d31ae9dde5482c48b915b9cfa1e8d2362ae4a48b934c77c82e7413f7f8aaf00249fa9c5dadb6f2caf7a869da5d04dba3d428b3c2ec9b2b8
6
+ metadata.gz: 7f48289085a2aa3f9156d871ae5d6e76631a2c1dd25f90ca735bf84f51fe9f21cdfdd4d71cc959b23a85f18de45bef2a27130db01268967cd4c826fec3bbd4dc
7
+ data.tar.gz: 9eee63d5b3ed3c65c4a672e3ad97c2c7a43828de56b4b6a855497f803ad4445768bdfd75a7521d9b7728b10374b3fa55f4b96b5edf1d31cefce5808ca0e38b5f
@@ -6,7 +6,7 @@ module Stay
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
- Stripe.api_key = Rails.configuration.stripe[:secret_key]
9
+ Stripe.api_key = ENV["STRIPE_SECRECT_KEY"]
10
10
  end
11
11
 
12
12
  def user
@@ -43,40 +43,36 @@ class Stay::Api::V1::BookingsController < Stay::BaseApiController
43
43
  end
44
44
 
45
45
  def host_booking
46
- begin
47
- page = params[:page].to_i > 0 ? params[:page].to_i : 1
48
- per_page = params[:per_page].to_i > 0 ? params[:per_page].to_i : 10
49
-
50
- cumulative_per_page = page * per_page
51
- @request = Stay::Booking.joins(:property).where(stay_properties: { user_id: current_devise_api_user&.id }).confirmed
52
- @bookings = @request.order(created_at: :desc).limit(cumulative_per_page)
53
-
54
- total_count = @request.count
55
- total_pages = (total_count.to_f / per_page).ceil
56
-
57
- if @bookings.empty?
58
- return render json: { error: "No bookings found", bookings: [], success: false }, status: :ok
59
- end
60
-
61
- render json: {
62
- data: "Bookings Found",
63
- bookings: ActiveModelSerializers::SerializableResource.new(@bookings, each_serializer: BookingSerializer),
64
- success: true,
65
- meta: {
66
- total_pages: total_pages,
67
- current_page: page,
68
- next_page: page < total_pages ? page + 1 : nil,
69
- prev_page: page > 1 ? page - 1 : nil,
70
- total_count: total_count
71
- }
72
- }, status: :ok
73
- rescue ActiveRecord::RecordNotFound => e
74
- render json: { success: false, error: "Bookings not found", message: e.message }, status: :not_found
75
- rescue ArgumentError => e
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: BookingSerializer),
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
  ],
@@ -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
@@ -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
- # after_create :assign_default_role
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
@@ -1,3 +1,3 @@
1
1
  module Stay
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.16"
3
3
  end
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.15
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-09 00:00:00.000000000 Z
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