70 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|