positionAllInfo method

Future<void> positionAllInfo()

Implementation

Future<void> positionAllInfo() async {
  // 같은 Position 정보들을 가진 놈들을 PositionList 로 묶고,
  // 그 PositionList 를 list 로 정리한다.

  //1.모든 위치정보 가져와 Position 들로 만들기.
  List<dynamic> temp = await repository.positionAll();
  List<Map<String, dynamic>> l = [];
  for (dynamic j in temp) {
    l.add(convertUtf8ToObject(j));
  }

  List<Position> pos = [];
  for (Map<String, dynamic> json in l) {
    pos.add(Position.fromJson(json));
  }
  //2. 모든 가능한 장소 불러오기
  List<Place> avail = await allAvailablePlaces();

  //3. 모든 가능한 장소에 대해 PositionList 만들기

  List<PositionList> list = [];
  for (Place p in avail) {
    list.add(PositionList(list: [], place: p));
  }

  //4. position 들 각 장소에 해당하는 positionlist 의 list 에 귀속시키기

  for (Position p in pos) {
    for (int i = 0; i < list.length; i++) {
      if (list[i].place.name == p.name) {
        list[i].list.add(p);
        break;
      }
    }
  }
  //5. 아무도 없는 곳 떨구기?

  for(int i=0; i<list.length;i++) {
    if(list[i].list.isEmpty) {
      list.remove(list[i]);
      i--;
    }
  }

  positions.value = list;
}