LCOV - code coverage report
Current view: top level - lib/models - club_model.dart Coverage Total Hit
Test: lcov.info Lines: 90.2 % 41 37
Test Date: 2025-08-12 03:21:51 Functions: - 0 0

            Line data    Source code
       1              : import 'tie_breaker_option.dart';
       2              : 
       3              : class Club {
       4              :   final String id;
       5              :   final String name;
       6              :   final String? description;
       7              :   final String? logo;
       8              :   final String? address;
       9              :   final String? location;
      10              :   final String? phone;
      11              :   final String? email;
      12              :   final String? website;
      13              :   final int? memberCount;
      14              :   final String? ownerId;
      15              :   final int? femaleHandicap;
      16              :   final String? averageCalculationPeriod;
      17              :   final DateTime? createdAt;
      18              :   final DateTime? updatedAt;
      19              :   
      20              :   /// 동점자 처리 옵션 우선순위 목록
      21              :   final List<TieBreakerOption>? tieBreakerOptions;
      22              : 
      23            3 :   Club({
      24              :     this.id = '',  // 기본값 빈 문자열로 설정
      25              :     required this.name,
      26              :     this.description,
      27              :     this.logo,
      28              :     this.address,
      29              :     this.location,
      30              :     this.phone,
      31              :     this.email,
      32              :     this.website,
      33              :     this.memberCount,
      34              :     this.ownerId,
      35              :     this.femaleHandicap,
      36              :     this.averageCalculationPeriod,
      37              :     this.createdAt,
      38              :     this.updatedAt,
      39              :     this.tieBreakerOptions,
      40              :   });
      41              : 
      42              :   // JSON 데이터로부터 Club 객체 생성
      43            3 :   factory Club.fromJson(Map<String, dynamic> json) {
      44              :     // 동점자 처리 옵션 변환
      45              :     List<TieBreakerOption>? tieBreakerOptions;
      46            3 :     if (json['tieBreakerOptions'] != null) {
      47              :       try {
      48            0 :         tieBreakerOptions = (json['tieBreakerOptions'] as List)
      49            0 :             .map((option) => TieBreakerOption.fromString(option.toString()))
      50            0 :             .toList();
      51              :       } catch (e) {
      52            0 :         tieBreakerOptions = [];
      53              :       }
      54              :     }
      55              :     
      56            3 :     return Club(
      57            9 :       id: json['id'] != null ? json['id'].toString() : '',
      58            3 :       name: json['name'] ?? '',
      59            3 :       description: json['description'],
      60            3 :       logo: json['logo'],
      61            3 :       address: json['address'],
      62            3 :       location: json['location'],
      63            6 :       phone: json['phone'] ?? json['contact'], // contact 필드도 확인
      64            3 :       email: json['email'],
      65            3 :       website: json['website'],
      66            3 :       memberCount: json['memberCount'],
      67            6 :       ownerId: json['ownerId']?.toString(),
      68            6 :       femaleHandicap: json['femaleHandicap'] != null ? int.tryParse(json['femaleHandicap'].toString()) : null,
      69            3 :       averageCalculationPeriod: json['averageCalculationPeriod'],
      70            7 :       createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt']) : null,
      71            7 :       updatedAt: json['updatedAt'] != null ? DateTime.parse(json['updatedAt']) : null,
      72              :       tieBreakerOptions: tieBreakerOptions,
      73              :     );
      74              :   }
      75              : 
      76              :   // Club 객체를 JSON으로 변환
      77            3 :   Map<String, dynamic> toJson() {
      78            3 :     return {
      79            3 :       'id': id,
      80            3 :       'name': name,
      81            3 :       'description': description,
      82            3 :       'logo': logo,
      83            3 :       'address': address,
      84            3 :       'location': location,
      85            3 :       'phone': phone,
      86            3 :       'email': email,
      87            3 :       'website': website,
      88            3 :       'memberCount': memberCount,
      89            3 :       'ownerId': ownerId,
      90            3 :       'femaleHandicap': femaleHandicap,
      91            3 :       'averageCalculationPeriod': averageCalculationPeriod,
      92            5 :       'createdAt': createdAt?.toIso8601String(),
      93            5 :       'updatedAt': updatedAt?.toIso8601String(),
      94            3 :       'tieBreakerOptions': tieBreakerOptions?.map((option) => option.toString().split('.').last).toList(),
      95              :     };
      96              :   }
      97              : }
        

Generated by: LCOV version 2.3.1-1