From 87eaaf24077a8eebd176beb992af226485cf4c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Wed, 2 Oct 2024 10:40:45 +0800 Subject: [PATCH] Fix bug. --- app/controllers/property_hires_controller.rb | 16 +++++++++------- app/helpers/admin/property_hires_helper.rb | 16 +++++----------- app/models/property.rb | 13 +++++++------ app/views/property_hires/hire.html.erb | 6 +++--- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/app/controllers/property_hires_controller.rb b/app/controllers/property_hires_controller.rb index 425f978..846097c 100644 --- a/app/controllers/property_hires_controller.rb +++ b/app/controllers/property_hires_controller.rb @@ -370,16 +370,16 @@ class PropertyHiresController < ApplicationController @need_check_events = allevents.map{|e| [e[:date],e[:s_id]]} @special_unavailable_dates = property.special_unavailable_dates.map{|dt| Date.parse(dt)} ma = ModuleApp.find_by_key("property_hire") - is_user_manager = (OrbitHelper.current_user.is_admin? || OrbitHelper.current_user.is_manager?(ma) || OrbitHelper.current_user.is_sub_manager?(ma)) + is_user_manager = OrbitHelper.current_user && (OrbitHelper.current_user.is_admin? || OrbitHelper.current_user.is_manager?(ma) || OrbitHelper.current_user.is_sub_manager?(ma)) if property.set_availability && params[:display_hire_event] == "true" check_setting = property.set_unavailibility && (property.property_day_settings.where(:enable=>false).count != 0) @check_start_time = property.start_time.blank? ? "00:00" : property.start_time @check_end_time = property.end_time.blank? ? "24:00" : property.end_time - @check_start_date = property.start_date.to_date rescue nil - @check_end_date = property.end_date.to_date rescue nil + @check_start_date = property.start_date ? property.start_date.to_date : nil + @check_end_date = property.end_date ? property.end_date.to_date : nil if check_setting - if (@check_start_date > edt rescue false) || (@check_end_date < sdt rescue false) + if (@check_start_date && @check_start_date > edt) || (@check_end_date && @check_end_date < sdt) check_setting = false end end @@ -429,7 +429,9 @@ class PropertyHiresController < ApplicationController available = false end - if DateTime.now >= @property.start_date && DateTime.now <= @property.end_date + need_check_unavailable = (@check_start_date.nil? || date >= @check_start_date) && (@check_end_date.nil? || date <= @check_end_date) + + if need_check_unavailable if @property.hours_restriction > 0 && @is_user_manager === false check = false sd = nil @@ -461,13 +463,13 @@ class PropertyHiresController < ApplicationController end if available - if DateTime.now >= @property.start_date && DateTime.now <= @property.end_date + if need_check_unavailable available = date > (DateTime.now + (@property.need_hire_before).send(@property.need_hire_before_unit)) end end if @check_setting && allow_times.select{|a| !a[5]}.count != 0 - available = (date > @check_end_date rescue false) || (date < @check_start_date rescue false) + available = !need_check_unavailable if available available = @property.weekdays.include?(date.wday.to_s) ? false : true end diff --git a/app/helpers/admin/property_hires_helper.rb b/app/helpers/admin/property_hires_helper.rb index 77a5317..06a4a48 100644 --- a/app/helpers/admin/property_hires_helper.rb +++ b/app/helpers/admin/property_hires_helper.rb @@ -4,19 +4,13 @@ module Admin::PropertyHiresHelper include OrbitBackendHelper def check_for_availability(stime, etime, pid, interval=nil, recurring_end_date=nil, time_setting_id=nil) property = Property.find(pid) - return {"success" => false, "msg" => I18n.t("property_hire.values_are_not_ok",:default=>"Values are not ok.")} if property.nil? || stime.blank? || etime.blank? + values_not_ok = {"success" => false, "msg" => I18n.t("property_hire.values_are_not_ok",:default=>"Values are not ok.")} + return values_not_ok if property.nil? || stime.blank? || etime.blank? timezone = (params[:timezone] rescue nil) timezone = timezone ? timezone : Time.zone.to_s - if !stime.blank? - stime = DateTime.parse(stime + timezone) rescue nil - else - stime = nil - end - if !etime.blank? - etime = DateTime.parse(etime + timezone) rescue nil - else - etime = nil - end + stime = DateTime.parse(stime + timezone) rescue nil + etime = DateTime.parse(etime + timezone) rescue nil + return values_not_ok if stime.nil? || etime.nil? if !recurring_end_date.blank? recurring_end_date = DateTime.parse(recurring_end_date + timezone) rescue nil begin diff --git a/app/models/property.rb b/app/models/property.rb index 1a21fcb..8d69779 100644 --- a/app/models/property.rb +++ b/app/models/property.rb @@ -46,8 +46,8 @@ class Property field :weekdays, type: Array, default: [] field :special_unavailable_dates, type: Array, default: [] field :special_unavailable_dates_title, type: Array, default: [] - field :start_date, type: DateTime - field :end_date, type: DateTime + field :start_date, type: DateTime # unavailable start date + field :end_date, type: DateTime # unavailable end date field :hours_restriction, type: Integer, default: 0 field :hours_restriction_duration, type: String field :description, :localize => true @@ -340,14 +340,17 @@ class Property end end - if DateTime.now > self.start_date && DateTime.now < self.end_date + startt = self.start_date.nil? ? stime : self.start_date + endt = self.end_date.nil? ? etime : self.end_date + + if (stime >= startt) && (etime <= endt) if self.hours_restriction > 0 && !user.nil? sd = nil edd = nil case self.hours_restriction_duration when "week" sd = stime - stime.wday - edd = stime + (6 - stime.wday) + edd = sd + 6 when "month" sd = Date.new(stime.year, stime.month, 1) edd = sd.next_month.prev_day @@ -357,8 +360,6 @@ class Property end end end - startt = self.start_date.nil? ? stime : self.start_date - endt = self.end_date.nil? ? etime : self.end_date available = 1 if (startt > stime && endt > etime) available = 1 if (endt < stime) weekdays = self.weekdays.collect{|w| w.to_i} diff --git a/app/views/property_hires/hire.html.erb b/app/views/property_hires/hire.html.erb index 660c503..5b38e64 100644 --- a/app/views/property_hires/hire.html.erb +++ b/app/views/property_hires/hire.html.erb @@ -265,7 +265,7 @@ <% session.delete("hire-save-msg") %> <% end %> -<% if property.calendar_type == 0 %> +<% if calendar_type == 0 %>