Merge branch 'Branch_faff3b1'

Routendistanze Berechnung per Google Maps API und openrouteService API
This commit is contained in:
2023-03-24 15:53:34 +01:00
25 changed files with 1100 additions and 47 deletions

View File

@@ -13,6 +13,7 @@ using BeWo.Service.SBD;
using BeWo.Service.Security;
using BeWo.Service.ServiceContracts;
using BeWo.Service.Urlaubsplanung;
using BeWo.Service.ServiceUtils.DistanceCalculator;
using BeWo.View.Navigation.Filter;
using BS.Shared;
using BS.Shared.DataContracts;
@@ -1478,7 +1479,9 @@ namespace BeWo.Service.ServiceImplementations
vertretungsItem.Employee != null).Select(item => item.Employee.EmployeeOid);
employeeOids = employeeOids.Where(e => !abwesenendeEmployeeOids.Contains(e));
var list = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(DAOFactory.GenericDAO.GetActiveByIDs<Employee>(employeeOids));
var allEmps = DAOFactory.GenericDAO.GetActiveByIDs<Employee>(employeeOids).ToList();
var list = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(allEmps);
//Setze Betreuungszeiten
foreach (var vertreter in list)
@@ -1509,6 +1512,10 @@ namespace BeWo.Service.ServiceImplementations
}
}
}
if (customerOid.HasValue)
GetDistanceForVertreterEmployees(customerOid.Value, ref list, allEmps);
return list;
}
catch (Exception e)
@@ -1517,6 +1524,25 @@ namespace BeWo.Service.ServiceImplementations
}
}
private void GetDistanceForVertreterEmployees(long customerOid, ref List<CompactVertreterEmployeeDC> list, List<Employee> employees)
{
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(customerOid);
var school = customer.Customer2OrganisationList.FirstOrDefault(f => f.ValueList.Any(b => b.Entry.Type == ValueListEntryType.EnvironmentOrganisationType && b.Entry.Value.Equals("Schule")));
var origin = new Address[] { school.Person.Address };
var destinations = employees.Select(x => x.Person.Address).ToArray();
var matrix = AddressRouteManager.GetMatrix(origin, destinations);
Employee empl; AddressRoute route;
foreach (var employee in list)
{
empl = employees.FirstOrDefault(e => e.Person.Oid.Value == employee.PersonOid);
route = matrix.GetRoute(school.Person.Address, empl.Person.Address);
employee.AddressRoute = MapperFactory.AddressRouteDC_AddressRoute.MapToNewDC(route);
}
}
public List<EmployeeTokenRelationDC> LoadEmployeeTokenRelationsByOid(IEnumerable<long> pOids)
{
try