Ejemplo n.º 1
0
 public QuestionListVM(Entity.Festival festival)
 {
     _questionlist = new QuestionList
     {
         Title         = festival.Name + " " + DateTime.Now.Year,
         VersionNumber = festival.QuestionLists.Count() == 0 ? 1 : (festival.QuestionLists.Last().VersionNumber) + 0.1
     };
 }
        private void LoadEmployeesThatAreInspectors()
        {
            if (SelectedFestival == null)
            {
                return;
            }

            InspectorEmployees = new ObservableCollection <RouteData>();

            _employeeRepository = new EmployeeRepository();
            var employeeList = _employeeRepository.GetEmployees().Where(
                e => e.Role.Name == "Inspecteur"
                ).ToList();

            var toRemove = new List <Entity.Employee>();

            foreach (Entity.Employee employee in employeeList)
            {
                List <DateTime> absenceDates = employee.AbsencesDates.Select(x => x.Date.Date).ToList();
                for (DateTime date = SelectedFestival.StartDate.Date; date <= SelectedFestival.EndDate.Date; date = date.AddDays(1))
                {
                    if (absenceDates.Contains(date))
                    {
                        toRemove.Add(employee);
                        break;
                    }
                }
            }

            foreach (Entity.Employee employee in toRemove)
            {
                employeeList.Remove(employee);
            }

            Geodan _geodan = new Geodan("6c4c63db-de9a-11e8-8aac-005056805b87");

            Entity.Festival _festival = SelectedFestival.Model;

            foreach (Entity.Employee employee in employeeList)
            {
                try
                {
                    var responseRoute = _geodan.FindRoute($"&from={employee.City}%20{employee.Street}%20{employee.HouseNumber}&to={_festival.City}%20{_festival.Street}%20{_festival.HouseNumber}&srs=epsg:28992&returntype=coords&outputformat=json");
                    var routeData     = new RouteData(employee, (double)responseRoute.features[0].properties.route_distance, (double)responseRoute.features[0].properties.route_duration);
                    InspectorEmployees.Add(routeData);
                }
                catch (NoRouteException)
                {
                    //No valid route was found
                    MessageBox.Show($"Geen route gevonden voor {employee.Name},\nControleer het adres van het festival en de medewerker.", "Geen route gevonden");
                    InspectorEmployees.Add(new RouteData(employee, 999.9, 59940));
                }
            }

            RaisePropertyChanged(() => InspectorEmployees);
        }