def resolve_all_events(self, info, **kwargs): page = kwargs.get('page') per_page = kwargs.get('per_page') if page is not None and page < 1: raise GraphQLError("page must be at least 1") if per_page is not None and per_page < 1: raise GraphQLError("perPage must be at least 1") if page and not per_page: raise GraphQLError("perPage argument missing") if per_page and not page: raise GraphQLError("page argument missing") user = get_user_from_db() start_date, end_date = CommonAnalytics.all_analytics_date_validation( self, kwargs['start_date'], kwargs['end_date'] ) query = Events.get_query(info) all_events, all_dates = CommonAnalytics.get_all_events_and_dates( query, start_date, end_date ) events_in_location = CalendarEvents().get_events_in_location( user, all_events) all_days_events = [] for date in set(all_dates): daily_events = [] for event in events_in_location: CommonAnalytics.format_date(event.start_time) event_start_date = parser.parse( event.start_time).astimezone(pytz.utc) day_of_event = event_start_date.strftime("%a %b %d %Y") if date == day_of_event: daily_events.append(event) all_days_events.append( DailyRoomEvents( day=date, events=daily_events ) ) all_days_events.sort(key=lambda x: datetime.strptime(x.day, "%a %b %d %Y"), reverse=True) # noqa if page and per_page: paginated_events = ListPaginate( iterable=all_days_events, per_page=per_page, page=page) has_previous = paginated_events.has_previous has_next = paginated_events.has_next current_page = paginated_events.current_page pages = paginated_events.pages query_total = paginated_events.query_total return PaginatedDailyRoomEvents( DailyRoomEvents=current_page, has_previous=has_previous, has_next=has_next, query_total=query_total, pages=pages) return PaginatedDailyRoomEvents(DailyRoomEvents=all_days_events)
def resolve_all_analytics(self, info, **kwargs): start_date = kwargs.get('start_date') end_date = kwargs.get('end_date') location_id = admin_roles.user_location_for_analytics_view() admin_details = get_user_from_db() query = Role.get_query(info) admin_role = query.filter_by(id=admin_details.roles[0].id).first() # check that id is valid verify_location_id(kwargs) if admin_role.role == 'Super Admin' and kwargs.get( 'location_id', None): location_id = kwargs.get('location_id') unconverted_dates = { 'start': start_date, 'end': end_date, } start_date, end_date = CommonAnalytics.all_analytics_date_validation( self, start_date, end_date) query = Room.get_query(info) room_analytics, bookings, percentages_dict, bookings_count = AllAnalyticsHelper.get_all_analytics( # noqa self, query, start_date, end_date, location_id, unconverted_dates) analytics = [] for analytic in room_analytics: current_analytic = ConsolidatedAnalytics( room_name=analytic['room_name'], cancellations=analytic['cancellations'], cancellations_percentage=analytic['cancellations_percentage'], auto_cancellations=analytic['auto_cancellations'], number_of_bookings=analytic['number_of_meetings'], checkins=analytic['checkins'], checkins_percentage=analytic['checkins_percentage'], bookings_percentage_share=percentage_formater( analytic['num_of_events'], bookings), app_bookings=analytic['app_bookings'], app_bookings_percentage=analytic['app_bookings_percentage'], events=analytic['room_events'], ) analytics.append(current_analytic) return AllAnalytics(bookings=bookings, checkins_percentage=percentage_formater( percentages_dict['total_checkins'], bookings), auto_cancellations_percentage=percentage_formater( percentages_dict['total_auto_cancellations'], bookings), cancellations_percentage=percentage_formater( percentages_dict['total_cancellations'], bookings), app_bookings_percentage=percentage_formater( percentages_dict['total_app_bookings'], bookings), bookings_count=bookings_count, analytics=analytics)
def resolve_all_analytics(self, info, **kwargs): start_date = kwargs.get('start_date') end_date = kwargs.get('end_date') unconverted_dates = {'start': start_date, 'end': end_date} location_id = admin_roles.user_location_for_analytics_view() start_date, end_date = CommonAnalytics.all_analytics_date_validation( self, start_date, end_date) query = Room.get_query(info) room_analytics, bookings, percentages_dict, bookings_count = AllAnalyticsHelper.get_all_analytics( # noqa self, query, start_date, end_date, location_id, unconverted_dates) analytics = [] for analytic in room_analytics: current_analytic = ConsolidatedAnalytics( room_name=analytic['room_name'], cancellations=analytic['cancellations'], cancellations_percentage=analytic['cancellations_percentage'], auto_cancellations=analytic['auto_cancellations'], number_of_bookings=analytic['number_of_meetings'], checkins=analytic['checkins'], checkins_percentage=analytic['checkins_percentage'], bookings_percentage_share=percentage_formater( analytic['num_of_events'], bookings), app_bookings=analytic['app_bookings'], app_bookings_percentage=analytic['app_bookings_percentage'], events=analytic['room_events'], ) analytics.append(current_analytic) return AllAnalytics(bookings=bookings, checkins_percentage=percentage_formater( percentages_dict['total_checkins'], bookings), auto_cancellations_percentage=percentage_formater( percentages_dict['total_auto_cancellations'], bookings), cancellations_percentage=percentage_formater( percentages_dict['total_cancellations'], bookings), app_bookings_percentage=percentage_formater( percentages_dict['total_app_bookings'], bookings), bookings_count=bookings_count, analytics=analytics)