public IEnumerable <(int payerId, int share)> CalculateShares(BuildingTimeSpanInfoService building, int amount, int apartmentId) { var payers = building.GetApartmentPayerResidenceInfos(apartmentId); var totalDays = payers.Sum(p => p.DaysLived); var shares = new List <(int payerId, int share)>(); foreach (var payer in payers) { shares.Add((payer.PayerId, amount * payer.DaysLived / totalDays)); } return(shares); }
public IEnumerable <(int payerId, int share)> CalculateShares(BuildingTimeSpanInfoService building, int amount, int apartmentId) { var occupants = building.GetPayerResidenceInfos(); var total = occupants.Sum(o => o.DaysLived * o.OccupantCount); var shares = new List <(int payerId, int share)>(); if (total == 0) { return(new List <(int payerId, int share)>()); } var payers = building.GetApartmentPayerResidenceInfos(apartmentId); foreach (var payer in payers) { shares.Add((payer.PayerId, payer.OccupantCount * payer.DaysLived / total)); } return(shares); }