job_dynamic_data.py (5240B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\jobboard\client\features\campaigns\job_dynamic_data.py 2 from campaigns.client.v1.data_model.objective import ParticipantState 3 UNDEFINED = -1 4 5 class DynamicCampaignJobData(object): 6 7 def __init__(self, repository, campaign_id, objective_id, isk_reward, lp_reward): 8 self._repository = repository 9 self._campaign_id = campaign_id 10 self._objective_id = objective_id 11 self._isk_reward = isk_reward 12 self._lp_reward = lp_reward 13 14 @property 15 def _objective_stats(self): 16 objective_stats_list = self._repository.get_objective_stats([self._objective_id]) 17 if objective_stats_list: 18 return objective_stats_list[0] 19 20 @property 21 def has_valid_objective_stats_cache(self): 22 return self._repository.objective_stats_have_valid_cache(self._objective_id) 23 24 @property 25 def has_valid_objective_participant_stats_cache(self): 26 return self._repository.objective_participant_stats_have_valid_cache(self._objective_id) 27 28 @property 29 def has_valid_stats_caches(self): 30 return self.has_valid_objective_stats_cache and self.has_valid_objective_participant_stats_cache 31 32 @property 33 def _participant_stats(self): 34 stats_list = self._repository.get_campaign_participant_stats(self._campaign_id) 35 for objective_stats in stats_list: 36 if objective_stats.objective_id == self._objective_id: 37 return objective_stats 38 39 @property 40 def unclaimed_rewards(self): 41 unredeemed = self._repository.get_unredeemed_rewards_for_objective(self._objective_id) 42 return unredeemed 43 44 @property 45 def current_total_progress(self): 46 objective_stats = self._objective_stats 47 if not objective_stats: 48 return 0 49 return objective_stats.current_objective_progress 50 51 @property 52 def committed_participants(self): 53 objective_stats = self._objective_stats 54 if not objective_stats: 55 return 0 56 return objective_stats.committed_participants 57 58 def has_current_total_progres_changed(self): 59 return True 60 61 @property 62 def personal_progress(self): 63 objective_participant_stats = self._participant_stats 64 if objective_participant_stats: 65 return objective_participant_stats.current_participant_progress 66 return 0 67 68 @property 69 def has_claimable_rewards(self): 70 return bool(self.unclaimed_rewards) 71 72 @property 73 def unclaimed_isk_info(self): 74 unclaimed_info = UnclaimedCurrencyInfo() 75 if self._isk_reward is None or not self._isk_reward.amount_per_interval: 76 return unclaimed_info 77 unclaimed_info.amount_per_interval = self._isk_reward.amount_per_interval 78 unclaimed_info.interval_size = self._isk_reward.interval_size 79 unclaimed_rewards = self.unclaimed_rewards 80 if not unclaimed_rewards: 81 return unclaimed_info 82 for unclaimed in unclaimed_rewards: 83 if not unclaimed.isk_intervals: 84 return unclaimed_info 85 unclaimed_info.num_contributions += unclaimed.isk_intervals * self._isk_reward.interval_size 86 unclaimed_info.unclaimed_value += unclaimed.isk_intervals * self._isk_reward.amount_per_interval 87 88 return unclaimed_info 89 90 @property 91 def unclaimed_lp_info(self): 92 unclaimed_info = UnclaimedCurrencyInfo() 93 if self._lp_reward is None or not self._lp_reward.amount_per_interval: 94 return unclaimed_info 95 unclaimed_info.amount_per_interval = self._lp_reward.amount_per_interval 96 unclaimed_info.interval_size = self._lp_reward.interval_size 97 unclaimed_rewards = self.unclaimed_rewards 98 if not unclaimed_rewards: 99 return unclaimed_info 100 for unclaimed in unclaimed_rewards: 101 if not unclaimed.lp_intervals: 102 return unclaimed_info 103 unclaimed_info.num_contributions += unclaimed.lp_intervals * self._lp_reward.interval_size 104 unclaimed_info.unclaimed_value += unclaimed.lp_intervals * self._lp_reward.amount_per_interval 105 106 return unclaimed_info 107 108 @property 109 def claimed_amount(self): 110 return 0 111 112 @property 113 def _participant_state(self): 114 objective_participant_stats = self._participant_stats 115 if objective_participant_stats: 116 return objective_participant_stats.participant_state 117 return ParticipantState.UNSPECIFIED 118 119 @property 120 def is_participant_state_unknown(self): 121 return self._participant_state == ParticipantState.UNSPECIFIED 122 123 @property 124 def is_committed(self): 125 return self._participant_state == ParticipantState.COMMITTED 126 127 @property 128 def is_resigned(self): 129 return self._participant_state == ParticipantState.RESIGNED 130 131 132 class UnclaimedCurrencyInfo(object): 133 134 def __init__(self, unclaimed_value = 0, num_contributions = 0, amount_per_interval = 0, interval_size = 1): 135 self.unclaimed_value = unclaimed_value 136 self.num_contributions = num_contributions 137 self.amount_per_interval = amount_per_interval 138 self.interval_size = interval_size