from recommendations.Costs import Costs from backend.Property import Property class SecondaryHeating: """ This class recommends the removal of the secondary heating system for properties that have a primary heating system. """ # The list of existing heating systems that are accepted ACCEPTED_MAINHEAT_DESCRIPTIONS = ["Boiler and radiators, mains gas"] ACCEPTED_SECONDHEAT_DESCRIPTIONS = ["Room heaters, electric"] # These are the heaters where works are required to remove them FIXED_HEATER_DESCRIPTIONS = ["Room heaters, electric"] def __init__(self, property_instance: Property): self.property = property_instance self.costs = Costs(self.property) self.recommendation = [] def recommend(self, phase: int): # Reset self.recommendation = [] if self.property.main_heating["clean_description"] not in self.ACCEPTED_MAINHEAT_DESCRIPTIONS: return # TODO: We need to clean secondary data if self.property.data['secondheat-description'] not in self.ACCEPTED_SECONDHEAT_DESCRIPTIONS: return if self.property.data['secondheat-description'] in self.FIXED_HEATER_DESCRIPTIONS: # We have an associated cost otherwise, there is no cost n_rooms = self.property.data['number-heated-rooms'] else: n_rooms = 0 costs = self.costs.heater_removal(n_rooms=n_rooms) self.recommendation.append( { "phase": phase, "parts": [], "type": "secondary_heating", "description": "Remove the secondary heating system", "starting_u_value": None, "new_u_value": None, "sap_points": None, **costs, "simulation_config": { "secondheat_description_ending": "None" } } )