Exemple #1
0
        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));
        }
Exemple #2
0
        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();
        }