LCOV - code coverage report
Current view: top level - src/services/client - helper_client_service.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 18 20 90.0 %
Date: 2020-12-04 18:41:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/material.dart';
       2             : import 'package:pal/src/database/entity/helper/helper_group_entity.dart';
       3             : import 'package:pal/src/database/entity/helper/schema_entity.dart';
       4             : import 'package:pal/src/database/entity/page_user_visit_entity.dart';
       5             : import 'package:pal/src/database/repository/client/helper_repository.dart';
       6             : import 'package:pal/src/database/repository/client/page_user_visit_repository.dart';
       7             : import 'package:pal/src/database/repository/client/schema_repository.dart';
       8             : 
       9             : class HelperClientService {
      10             : 
      11           3 :   factory HelperClientService.build({
      12             :     HelperGroupUserVisitRepository localVisitRepository,
      13             :     HelperGroupUserVisitRepository remoteVisitRepository,
      14             :     ClientSchemaRepository clientSchemaRepository,
      15             :     ClientHelperRepository helperRemoteRepository
      16           3 :   }) => _HelperClientService(
      17             :     clientSchemaRepository: clientSchemaRepository,
      18             :     helperRemoteRepository: helperRemoteRepository,
      19             :     localVisitRepository: localVisitRepository,
      20             :     remoteVisitRepository: remoteVisitRepository
      21             :   );
      22             : 
      23           0 :   Future<HelperGroupEntity> getPageNextHelper(final String route, final String inAppUserId) => throw "not implemented";
      24             : 
      25           0 :   Future onHelperTrigger(final String pageId, final HelperGroupEntity helperGroup, final String inAppUserId, final bool positiveFeedback) => throw "not implemented";
      26             : }
      27             : 
      28             : class _HelperClientService implements HelperClientService {
      29             : 
      30             :   final ClientSchemaRepository _clientSchemaRepository;
      31             : 
      32             :   final ClientHelperRepository _helperRemoteRepository;
      33             : 
      34             :   final HelperGroupUserVisitRepository _localVisitRepository, _remoteVisitRepository; // ignore: unused_field
      35             : 
      36           3 :   _HelperClientService({
      37             :     @required HelperGroupUserVisitRepository localVisitRepository,
      38             :     @required HelperGroupUserVisitRepository remoteVisitRepository,
      39             :     @required ClientSchemaRepository clientSchemaRepository,
      40             :     @required ClientHelperRepository helperRemoteRepository
      41             :   }) : this._clientSchemaRepository = clientSchemaRepository,
      42             :        this._localVisitRepository = localVisitRepository,
      43             :        this._remoteVisitRepository = remoteVisitRepository,
      44             :        this._helperRemoteRepository = helperRemoteRepository;
      45             : 
      46             :   @override
      47           1 :   Future<HelperGroupEntity> getPageNextHelper(String route, String inAppUserId) async {
      48           3 :     SchemaEntity currentSchema = await _clientSchemaRepository.get();
      49           3 :     List<HelperGroupUserVisitEntity> userVisits = await _localVisitRepository.get(inAppUserId, null);
      50           1 :     List<HelperGroupEntity> group = currentSchema.groups
      51           5 :       .where((element) => element.page.route == route)
      52           8 :       .where((element) => userVisits.where((visit) => visit.helperGroupId == element.id).isEmpty)
      53           1 :       .toList();
      54           1 :     if(group.isNotEmpty) {
      55           6 :       group.sort((a,b) => a.priority < b.priority ? -1 : 1);
      56           1 :       return group.last;
      57             :     }
      58             :     return null;
      59             :   }
      60             : 
      61             :   @override
      62           1 :   Future onHelperTrigger(String pageId, HelperGroupEntity helperGroup, String inAppUserId, bool positiveFeedback) async {
      63             :     try {
      64           2 :       var visit = HelperGroupUserVisitEntity(pageId: pageId, helperGroupId: helperGroup.id);
      65           3 :       await _remoteVisitRepository.add(visit, feedback: positiveFeedback, inAppUserId: inAppUserId);
      66           3 :       await _localVisitRepository.add(visit); // we only store locally that he already visited
      67             :     } catch(err) {
      68           1 :       print("error occured while sending visits");
      69             :     }
      70             :   }
      71             : 
      72             : }

Generated by: LCOV version 1.14