public IEnumerable<ReportRecord> SortCalls(Report report, TypeSort sortType) { var rep = report.GetRecords(); switch (sortType) { case TypeSort.SortByCallType: return rep = rep. OrderBy(x => x.CallType). ToList(); case TypeSort.SortByDate: return rep = rep. OrderBy(x => x.Date). ToList(); case TypeSort.SortByCost: return rep = rep .OrderBy(x => x.Cost) .ToList(); case TypeSort.SortByNumber: return rep = rep. OrderBy(x => x.Number). ToList(); default: return rep; } }
public Report GetReport(int telephoneNumber) { var calls = _storage.GetInfoList(). Where(x => x.MyNumber == telephoneNumber || x.TargetNumber == telephoneNumber). ToList(); var report = new Report(); foreach(var call in calls) { CallType callType; int number; if(call.MyNumber == telephoneNumber) { callType = CallType.OutgoingCall; number = call.TargetNumber; } else { callType = CallType.IncomingCall; number = call.MyNumber; } var record = new ReportRecord(callType, number, call.BeginCall, new DateTime((call.EndCall - call.BeginCall).Ticks), call.Cost); // TimeSpan.FromTicks((call.EndCall - call.BeginCall).Ticks) .TotalMinutes report.AddRecord(record); } return report; }
public void Render(Report report) { foreach(var record in report.GetRecords()) { Console.WriteLine("Calls:\n Type {0} |\n Date: {1} |\n Duration: {2} | Cost: {3} | Telephone number: {4}", record.CallType, record.Date, record.Time.ToString("mm:ss"), record.Cost, record.Number); } }