Das Übertragen eines Kalendertermins in die Zeiterfassung funktioniert jetzt wieder bei Serienterminen.

This commit is contained in:
2026-03-27 15:14:20 +01:00
parent f17bafe24b
commit ccb1a37a95
17 changed files with 435 additions and 255 deletions

View File

@@ -22,7 +22,6 @@ namespace BeWoPlanerMobil.Controllers
/*
* ToDo:
* 1. Filterung einbauen (Mitarbeiter, Klienten, Ressourcen, Privat, Aufgaben, Abwesenheiten)
* Das Filtern muss über den CustomCallback geschehen, damit die Termin-Liste aktualisiert wird.
* 2. "In die Zeiterfassung übertragen" und "Verfügbare Mitarbeiter prüfen" einbauen
* 3. Rechte implementieren!
* 4. Übersetzungen
@@ -94,12 +93,14 @@ namespace BeWoPlanerMobil.Controllers
private void InitViewModel()
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || Model?.LoggedInEmployee?.EmployeeOid is null)
if(false == MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || Model?.LoggedInEmployee?.EmployeeOid is null)
{
Logout();
return;
}
var x = Model.SelectedEmployeeOidsForFiltering;
Model.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees();
Model.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers();
Model.PossibleResources = KalenderService.GetAllResources();
@@ -263,7 +264,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult DevExpressScheduler()
{
if(!MobileSessionFacade.IsUserLoggedIn() || Model is null)
if(false == MobileSessionFacade.IsUserLoggedIn() || Model is null)
{
return RedirectToActionPermanent("Index", "Login");
}
@@ -515,7 +516,16 @@ namespace BeWoPlanerMobil.Controllers
return PartialView("AptFltEmployeePopupListPartial");
}
Model.SelectedEmployeeOidsForFiltering = Model.PossibleEmployees.Select(employee => employee.EmployeeOid).ToList();
if(isChecked)
{
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees;
Model.SelectedEmployeeOidsForFiltering = Model.PossibleEmployees.Select(employee => employee.EmployeeOid).ToList();
}
else
{
Model.SelectedEmployeesForFiltering?.Clear();
Model.SelectedEmployeeOidsForFiltering?.Clear();
}
return PartialView("AptFltEmployeePopupListPartial", Model);
}
@@ -529,7 +539,16 @@ namespace BeWoPlanerMobil.Controllers
return PartialView("AptFltCustomerPopupListPartial");
}
Model.SelectedCustomerOidsForFiltering = Model.PossibleCustomers.Select(customer => customer.CustomerOid).ToList();
if(isChecked)
{
Model.SelectedCustomerOidsForFiltering = Model.PossibleCustomers.Select(customer => customer.CustomerOid).ToList();
Model.SelectedCustomersForFiltering = Model.PossibleCustomers;
}
else
{
Model.SelectedCustomerOidsForFiltering?.Clear();
Model.SelectedCustomersForFiltering?.Clear();
}
return PartialView("AptFltCustomerPopupListPartial", Model);
}
@@ -543,9 +562,18 @@ namespace BeWoPlanerMobil.Controllers
return PartialView("AptFltResourcePopupListPartial");
}
Model.SelectedResourceOidsForFiltering = Model.PossibleResources.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
if(isChecked)
{
Model.SelectedResourceOidsForFiltering = Model.PossibleResources.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
Model.SelectedResourcesForFiltering = Model.PossibleResources;
}
else
{
Model.SelectedResourceOidsForFiltering?.Clear();
Model.SelectedResourcesForFiltering?.Clear();
}
return PartialView("AptFltResourcePopupListPartial");
return PartialView("AptFltResourcePopupListPartial", Model);
}
[Authorize]
@@ -561,14 +589,17 @@ namespace BeWoPlanerMobil.Controllers
if(selectedTeam is null)
{
return PartialView("AptFltEmployeePopupListPartial");
return PartialView("AptFltEmployeePopupListPartial", Model);
}
var fullTeamObj = EmployeeService.LoadTeam(teamOid);
Model.SelectedEmployeeOids.AddRangeIfElementsNotIn(fullTeamObj.Member.Select(member => member.EmployeeOid));
var teamMembers = fullTeamObj?.Member ?? new List<CompactEmployeeDC>();
return PartialView("AptFltEmployeePopupListPartial");
Model.SelectedEmployeesForFiltering.AddRangeIfElementsNotIn(teamMembers);
Model.SelectedEmployeeOids.AddRangeIfElementsNotIn(teamMembers.Select(member => member.EmployeeOid));
return PartialView("AptFltEmployeePopupListPartial", Model);
}
[Authorize]
@@ -582,6 +613,7 @@ namespace BeWoPlanerMobil.Controllers
var selectedEmployees = Model.PossibleEmployees.Where(possibleEmployee => selectedEmployeeOids.Contains(possibleEmployee.EmployeeOid)).ToList();
Model.SelectedEmployeesForFiltering = selectedEmployees;
Model.SelectedEmployeeOidsForFiltering = selectedEmployees.Select(employee => employee.EmployeeOid).ToList();
return PartialView("AptFltEmployeePopupListPartial", Model);
@@ -598,6 +630,9 @@ namespace BeWoPlanerMobil.Controllers
var selectedCustomers = Model.PossibleCustomers.Where(possibleCustomer => selectedCustomerOids.Contains(possibleCustomer.CustomerOid)).ToList();
Model.SelectedCustomersForFiltering = selectedCustomers;
Model.SelectedCustomerOidsForFiltering = selectedCustomers.Select(customer => customer.CustomerOid).ToList();
return PartialView("AptFltCustomerPopupListPartial", Model);
}
@@ -610,7 +645,30 @@ namespace BeWoPlanerMobil.Controllers
return PartialView("AptFltResourcePopupListPartial");
}
var selectedResources = Model.PossibleResources.Where(possibleResource => possibleResource.ResourceOid.HasValue && selectedResourceOids.Contains(possibleResource.ResourceOid.Value)).ToList();
Model.SelectedResourcesForFiltering = selectedResources;
Model.SelectedResourceOidsForFiltering = selectedResources.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
return PartialView("AptFltResourcePopupListPartial", Model);
}
[Authorize]
public string GetSelectedEmployeesForAptFlt()
{
return JsonConvert.SerializeObject(Model.SelectedEmployeeOidsForFiltering.Count);
}
[Authorize]
public string GetSelectedCustomersForAptFlt()
{
return JsonConvert.SerializeObject(Model.SelectedCustomerOidsForFiltering.Count);
}
[Authorize]
public string GetSelectedResourcesForAptFlt()
{
return JsonConvert.SerializeObject(Model.SelectedResourceOidsForFiltering.Count);
}
}
}