Exemple #1
0
    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)
Exemple #3
0
 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)