private void CreateServices()
        {
            if (SelectedTemplate == null || !DateCreationStart.HasValue || !DateCreationEnd.HasValue)
            {
                return;
            }

            if (DateCreationStart.Value > DateCreationEnd.Value)
            {
                MessageBox.Show("Das Enddatum darf nicht vor dem Startdatum liegen.", "Fehleingabe", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var allExistingServices = Workspace.CurrentData.Services.Where(x => x.DateAndTime.Date >= this.DateCreationStart.Value && x.DateAndTime.Date <= this.DateCreationEnd.Value).ToList();

            if (allExistingServices.Any())
            {
                if (MessageBox.Show("Es sind bereits Gottesdienste in diesem Zeitraum vorhanden. Diese werden durch diese Aktion ersetzt. Möchten Sie fortfahren?", "Daten bereits vorhanden", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
                {
                    return;
                }

                allExistingServices.ForEach(x => {
                    Workspace.CurrentData.Services.Remove(x);
                    Workspace.CurrentData.ServiceJobs.Where(j => x.Id == j.ServiceId).ToList().ForEach(j => Workspace.CurrentData.ServiceJobs.Remove(j));
                });
                Workspace.RegisterDataChanged();
            }

            var templateServices = Workspace.CurrentData.ServiceTemplates.Where(x => x.GroupId == this.SelectedTemplate.Id).ToList();

            for (DateTime date = DateCreationStart.Value; date <= DateCreationEnd.Value; date = date.AddDays(1))
            {
                var servicesToCreate = templateServices.Where(x => x.Day == date.DayOfWeek).ToList();
                foreach (var serviceToCreate in servicesToCreate)
                {
                    var newService = ServiceModel.CreateNewService();
                    newService.DateAndTime = date + serviceToCreate.Time;
                    Workspace.RegisterDataChanged();

                    foreach (var job in serviceToCreate.Jobs)
                    {
                        ServiceJobModel.CreateNewServiceJob(newService.Id, job);
                    }
                }
            }
        }
示例#2
0
 private void AddNewService()
 {
     this.AllServices.Add(new ServiceViewModel(ServiceModel.CreateNewService()));
     Workspace.RegisterDataChanged();
     SelectedIndex = this.AllServices.Count - 1;
 }