Files
BeWoPlaner/Report/ReportObjects/EmployeeKilometerauswertungsRO.cs

70 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
namespace BeWo.Report.ReportObjects
{
public class EmployeeKilometerauswertungsRO : AbstractBeWoReportObject<EmployeeKilometerauswertungsRO>
{
public CompactEmployeeDC Employee { get; set; }
public string EmployeeName => Employee?.ToString();
public DateTime MonthInformation { get; set; }
public int TotalDistanceInMeters { get; set; }
public List<EmployeeKilometerauswertungsEntry> Entries { get; set; }
public static EmployeeKilometerauswertungsRO Create(CompactEmployeeDC employee, DateTime monthInformation)
{
var employeeKilometerauswertung = new EmployeeKilometerauswertungsRO
{
Employee = employee,
MonthInformation = monthInformation
};
return employeeKilometerauswertung;
}
public void CreateDistanceList()
{
var start = MonthInformation;
var end = start.AddMonths(1).AddDays(-1);
var timeSpan = new DateTimeSpan(start, end);
var serviceRecords = DAOFactory.SearchDAO.FindEmployeeServiceRecordsForKilometerauswertung(Employee.EmployeeOid, timeSpan);
Entries = new List<EmployeeKilometerauswertungsEntry>();
TotalDistanceInMeters = 0;
foreach(var serviceRecord in serviceRecords.Where(serviceRecord => serviceRecord.DistanceInMeter.HasValue && serviceRecord.DistanceInMeter > 0 && serviceRecord.Start.HasValue))
{
TotalDistanceInMeters += serviceRecord.DistanceInMeter.Value;
Entries.Add(new EmployeeKilometerauswertungsEntry(serviceRecord.Start.Value, serviceRecord.DistanceInMeter.Value, serviceRecord.Customer?.Person?.LastNameFirstName ?? string.Empty));
}
}
}
public class EmployeeKilometerauswertungsEntry
{
public DateTime DateTime { get; }
public int DistanceInMeters { get; }
public string CustomerName { get; }
public EmployeeKilometerauswertungsEntry(DateTime dateTime, int distanceInMeters, string customerName)
{
DateTime = dateTime;
DistanceInMeters = distanceInMeters;
CustomerName = customerName;
}
}
}