private static void Call(Invoice invoice, DayService dayService, FamilyService familyService, string line) { // 単価を計算する int unitPrice = INITIAL_CALL_UNIT_PRICE; if (dayService.IsJoined()) { int hour = int.Parse(line.Substring(RI_OF_CALL_START_TIME, RI_SZ_HOUR)); if (dayService.IsServiceTime(hour)) { // 昼トク割引なら5円引き unitPrice -= 5; } } if (familyService.IsFamilyTelNumber(line.Substring(RI_OF_CALL_NUMBER))) { // 家族割引なら半額 unitPrice /= 2; } // 1通話あたりの通話料を計算し、全通話料に加算する string minutes = line.Substring(RI_OF_CALL_MINUTE, RI_SZ_CALL_MINUTE); invoice.AddCallCharge(unitPrice * int.Parse(minutes)); }
private static void Separate(StreamWriter writer, Invoice invoice, DayService dayService, FamilyService familyService) { // 基本料金の計算 int basicCharge = INITIAL_BASIC_CHARGE; if (dayService.IsJoined()) { basicCharge += DAY_SERVICE_BASIC_CHARGE; } if (familyService.IsJoined()) { basicCharge += FAMILY_SERVICE_BASIC_CHARGE; } // 集計結果の出力 writer.WriteLine("1 " + invoice.GetOwnerTelNumber()); writer.WriteLine("5 " + basicCharge); writer.WriteLine("7 " + invoice.GetCallCharge()); writer.WriteLine("9 ===================="); // 変数の初期化 invoice.Clear(); dayService.Clear(); familyService.Clear(); }