def get_bookings_analytics_count(self, query, start, end, room_id=None): results = [] start_date, day_after_end_date = CommonAnalytics.convert_dates( self, start, end) start_dt = dateutil.parser.parse(start_date) end_dt = dateutil.parser.parse(day_after_end_date) number_of_days = (end_dt - start_dt).days room_name = get_room_name(room_id) if number_of_days <= 30: dates = CommonAnalytics.get_list_of_dates( start, number_of_days) for date in dates: bookings = CommonAnalytics.get_total_bookings( self, query, date[0], date[1], room_id=room_id) string_date = dateutil.parser.parse( date[0]).strftime("%b %d %Y") output = BookingsAnalyticsCount( period=string_date, bookings=bookings, room_name=room_name) results.append(output) else: dates = CommonAnalytics.get_list_of_month_dates( start_date, start_dt, day_after_end_date, end_dt) for date in dates: bookings = CommonAnalytics.get_total_bookings( self, query, date[0], date[1], room_id=room_id) string_month = dateutil.parser.parse(date[0]).strftime("%B") output = BookingsAnalyticsCount( period=string_month, bookings=bookings, room_name=room_name) results.append(output) return results
def bookings_count(self, unconverted_dates, events): """ Get bookings count and period in a given room """ start_date = unconverted_dates['start'] day_after_end_date = unconverted_dates['end'] parsed_start_date = dateutil.parser.parse(start_date) parsed_end_date = dateutil.parser.parse(day_after_end_date) parsed_day_after_end_date = parsed_end_date + relativedelta(days=1) number_of_days = (parsed_day_after_end_date - parsed_start_date).days bookings_count = [] user_time_zone = CommonAnalytics.get_user_time_zone() if number_of_days <= 30: dates = CommonAnalytics.get_list_of_dates(start_date, number_of_days) for date in dates: bookings = 0 string_date = dateutil.parser.parse( date[0]).strftime("%b %d %Y") for event in events: start_timez = dateutil.parser.parse( event.start_time).astimezone( pytz.timezone(user_time_zone)) # noqa if start_timez.strftime("%b %d %Y") == string_date: bookings += 1 output = BookingsCount(period=string_date, total_bookings=bookings) bookings_count.append(output) else: dates = CommonAnalytics.get_list_of_month_dates( start_date, parsed_start_date, day_after_end_date, parsed_day_after_end_date) for date in dates: string_month = dateutil.parser.parse(date[0]).strftime("%b %Y") output = BookingsCount(period=string_month, total_bookings=0) for event in events: start_timez = dateutil.parser.parse( event.start_time).astimezone( pytz.timezone(user_time_zone)) # noqa if start_timez.strftime("%b %Y") == string_month: output.total_bookings += 1 bookings_count.append(output) return bookings_count
def get_bookings_analytics_count(self, query, start, end): results = [] start_date, day_after_end_date = CommonAnalytics.convert_dates( self, start, end) # noqa E501 start_dt = dateutil.parser.parse(start_date) end_dt = dateutil.parser.parse(day_after_end_date) number_of_days = (end_dt - start_dt).days if number_of_days <= 15: dates = CommonAnalytics.get_list_of_dates( start, number_of_days) # noqa E501 for date in dates: bookings = CommonAnalytics.get_total_bookings( self, query, date[0], date[1]) # noqa E501 string_date = dateutil.parser.parse(date[0]).strftime( "%b %d %Y") # noqa E501 output = BookingsAnalyticsCount(period=string_date, bookings=bookings) # noqa E501 results.append(output) elif number_of_days >= 90: dates = CommonAnalytics.get_list_of_month_dates( start_date, start_dt, day_after_end_date, end_dt) # noqa E501 for date in dates: bookings = CommonAnalytics.get_total_bookings( self, query, date[0], date[1]) # noqa E501 string_month = dateutil.parser.parse(date[0]).strftime("%B") output = BookingsAnalyticsCount(period=string_month, bookings=bookings) # noqa E501 results.append(output) else: raise GraphQLError( "Kindly enter a valid date range(less than 15 days or greater than 90 days" ) # noqa E501 return results