.
This commit is contained in:
@@ -22,8 +22,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
/*
|
||||
* ToDo:
|
||||
* 1. Filterung einbauen (Mitarbeiter, Klienten, Ressourcen, Privat, Aufgaben, Abwesenheiten)
|
||||
* 2. "In die Zeiterfassung übertragen" und "Verfügbare Mitarbeiter prüfen" einbauen
|
||||
* 3. Rechte implementieren!
|
||||
* 2. Benachrichtigungen einbauen
|
||||
* 3. Rechte implementieren
|
||||
* 4. Übersetzungen
|
||||
*/
|
||||
|
||||
@@ -93,19 +93,22 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
private void InitViewModel()
|
||||
{
|
||||
if(false == MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || Model?.LoggedInEmployee?.EmployeeOid is null)
|
||||
if(false == MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || Model?.LoggedInUser?.Employee is null)
|
||||
{
|
||||
Logout();
|
||||
return;
|
||||
}
|
||||
|
||||
var userSettings = LoggedInUser?.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value;
|
||||
var user = Model.LoggedInUser;
|
||||
var compactEmployee = user.Employee;
|
||||
var employeeOid = compactEmployee.EmployeeOid;
|
||||
var userSettings = user.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value;
|
||||
|
||||
Model.ShowOnlyMyOwnAppointments = UserSettingsUtils.GetSettingValueAsBool(userSettings, SettingsKeys.ZeigeNurMeineTermine);
|
||||
|
||||
if(Model.ShowOnlyMyOwnAppointments && LoggedInUser != null)
|
||||
if(Model.ShowOnlyMyOwnAppointments)
|
||||
{
|
||||
Model.SelectedEmployeeOidsForFiltering = new List<long> { LoggedInUser.Employee.EmployeeOid };
|
||||
Model.SelectedEmployeeOidsForFiltering = new List<long> { employeeOid };
|
||||
}
|
||||
|
||||
Model.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees();
|
||||
@@ -123,26 +126,17 @@ namespace BeWoPlanerMobil.Controllers
|
||||
categories2Resources.AddOrUpdateValueInDictionary(category, allResources.Where(resource => resource.ResourceCategory.Equals(category)).OrderBy(r => r.Name).ToList());
|
||||
}
|
||||
|
||||
Model.ResourceCategories2Resources = categories2Resources.OrderBy(kvp => kvp.Key.DisplayName).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||
Model.ResourceCategories2Resources = categories2Resources.OrderBy(category2Resources => category2Resources.Key.DisplayName).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||
}
|
||||
|
||||
if(Model.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
|
||||
Model.MyTeamEmployees = EmployeeService.GetAllTeamMember(compactEmployee).OrderBy(employee => employee.LastName).ToList();
|
||||
|
||||
if(Model.HasRightToViewTeams)
|
||||
{
|
||||
var compactEmployee = EmployeeService.GetActiveCompactEmployeeWithOid(Model.LoggedInEmployee.EmployeeOid.Value);
|
||||
|
||||
Model.MyTeamEmployees = EmployeeService.GetAllTeamMember(compactEmployee).OrderBy(employee => employee.LastName).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.MyTeamEmployees = new List<CompactEmployeeDC>();
|
||||
Model.MyTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(employeeOid).OrderBy(team => team.Name).ToList();
|
||||
}
|
||||
|
||||
if(Model.HasRightToViewTeams && (Model?.LoggedInEmployee?.EmployeeOid.HasValue ?? false))
|
||||
{
|
||||
Model.MyTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(Model.LoggedInEmployee.EmployeeOid.Value).OrderBy(team => team.Name).ToList();
|
||||
}
|
||||
|
||||
Model.TeamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(LoggedInUser.Employee.EmployeeOid);
|
||||
Model.TeamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(employeeOid);
|
||||
|
||||
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Where(possibleEmployee => Model.SelectedEmployeeOidsForFiltering?.Contains(possibleEmployee.EmployeeOid) ?? false).ToList();
|
||||
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Where(possibleCustomer => Model.SelectedCustomerOidsForFiltering?.Contains(possibleCustomer.CustomerOid) ?? false).ToList();
|
||||
@@ -160,10 +154,9 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
UpdateSelectedObjects();
|
||||
|
||||
var employeeOid = Model.LoggedInEmployee.EmployeeOid.Value;
|
||||
|
||||
var user = LoggedInUser;
|
||||
var userSettings = user?.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value;
|
||||
var employeeOid = user.Employee.EmployeeOid;
|
||||
var userSettings = user.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value;
|
||||
|
||||
Model.CurrentViewType = (SchedulerViewType) UserSettingsUtils.GetSettingValueAsInteger(userSettings, SettingsKeys.SchedulerViewType);
|
||||
|
||||
@@ -187,11 +180,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.ShowTasks
|
||||
);
|
||||
|
||||
var selectedCustomerOids = Model.PossibleCustomers.Select(s => s.CustomerOid).ToList();
|
||||
var selectedEmployeeOids = Model.PossibleEmployees.Select(s => s.EmployeeOid).ToList();
|
||||
var allCustomerOids = Model.PossibleCustomers.Select(s => s.CustomerOid).ToList();
|
||||
var allEmployeeOids = Model.PossibleEmployees.Select(s => s.EmployeeOid).ToList();
|
||||
|
||||
var customerAbsenceTimes = KalenderService.GetAllActiveCustomersAbsenceTimesInInterval(intervalStart, intervalEnd, employeeOid, selectedCustomerOids);
|
||||
var employeeAbsenceTimes = KalenderService.GetAllActiveEmployeeAbsenceTimesInInterval(intervalStart, intervalEnd, employeeOid, selectedEmployeeOids);
|
||||
var customerAbsenceTimes = KalenderService.GetAllActiveCustomersAbsenceTimesInInterval(intervalStart, intervalEnd, employeeOid, allCustomerOids);
|
||||
var employeeAbsenceTimes = KalenderService.GetAllActiveEmployeeAbsenceTimesInInterval(intervalStart, intervalEnd, employeeOid, allEmployeeOids);
|
||||
|
||||
if(Model.ShowAbsenceTimes)
|
||||
{
|
||||
@@ -215,11 +208,25 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("SchedulerNotificationPartial", Model);
|
||||
}
|
||||
|
||||
private int LoadNotificationCount()
|
||||
private void LoadNotificationCount()
|
||||
{
|
||||
Model.OpenAppointments = KalenderService.GetAllOpenAppointmentsForEmployee(LoggedInUser.Employee.EmployeeOid);
|
||||
Model.OpenAppointments = KalenderService.GetAllOpenAppointmentsForEmployee(LoggedInUser.Employee.EmployeeOid).OrderByDescending(openAppointment => openAppointment.StartDate).ToList();
|
||||
Model.OpenAppointmentOids = Model.OpenAppointments.Where(openAppointment => openAppointment.SchedulerAppointmentOid.HasValue).Select(openAppointment => openAppointment.SchedulerAppointmentOid.Value).ToList();
|
||||
|
||||
if(Model.AppointmentOid2Answer.HasValue)
|
||||
{
|
||||
Model.Appointment2Answer = Model.OpenAppointments.FirstOrDefault(openAppointment => openAppointment.SchedulerAppointmentOid?.Equals(Model.AppointmentOid2Answer.Value) ?? false);
|
||||
}
|
||||
else
|
||||
{
|
||||
var first = Model.OpenAppointments.FirstOrDefault();
|
||||
|
||||
return Model.NotificationCount;
|
||||
if(first != null)
|
||||
{
|
||||
Model.Appointment2Answer = first;
|
||||
Model.AppointmentOid2Answer = first.SchedulerAppointmentOid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<SchedulerAppointmentDC> ConvertAbsenceTimesToAppointments(List<AbsenceTimeDC> absenceTimes, List<CompactCustomerDC> allCustomers, List<CompactEmployeeDC> allEmployees)
|
||||
@@ -441,12 +448,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hier laufen Custom-Aufrufe drüber ab. Im JavaScript mit scheduler.PerformCallback(...) aufrufen.
|
||||
/// Hierüber laufen Custom-Aufrufe des DevExpress-Schedulers ab. Im JavaScript mit scheduler.PerformCallback(...) aufrufen.
|
||||
/// </summary>
|
||||
/// <param name="apptID">Etwaige Id des Termin-Objekts</param>
|
||||
/// <param name="actionId">Die Id der auszuführenden Methode</param>
|
||||
/// <param name="args">Etwaige Parameter für die auszuführende Methode</param>
|
||||
/// <returns>Entweder das Scheduler-Partial oder ein anderer Seitenaufruf.</returns>
|
||||
/// <returns>Entweder das Scheduler-Partial oder einen anderen Seitenaufruf.</returns>
|
||||
[Authorize]
|
||||
public ActionResult CustomCallbackAction(string apptID, string actionId, string[] args)
|
||||
{
|
||||
@@ -455,7 +462,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
case "ToServiceRecord":
|
||||
return ToServiceRecord(apptID, actionId, args);
|
||||
case "FilterAppointments":
|
||||
return FilterAppointments(args.Length >= 1 ? args[0] : null);
|
||||
return FilterAppointments(args?.Length >= 1 ? args[0] : null);
|
||||
case "Reload":
|
||||
ReloadAppointments();
|
||||
break;
|
||||
@@ -524,6 +531,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
private void UpdateSelectedObjects()
|
||||
{
|
||||
var list = new List<ResourceDC>();
|
||||
|
||||
Model.ResourceCategories2Resources.Values.DoForEach(l => l.DoForEach(s => list.AddIfNotIn(s)));
|
||||
|
||||
Model.SelectedEmployees = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOids.Contains(employee.EmployeeOid)).ToList();
|
||||
@@ -533,10 +541,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOidsForFiltering.Contains(employee.EmployeeOid)).ToList();
|
||||
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOidsForFiltering.Contains(customer.CustomerOid)).ToList();
|
||||
Model.SelectedResourcesForFiltering = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOidsForFiltering.Contains(resource.ResourceOid.Value)).ToList();
|
||||
|
||||
Model.SelectedEmployeesForIntervalFinder = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOidsForIntervalFinder.Contains(employee.EmployeeOid)).ToList();
|
||||
Model.SelectedCustomersForIntervalFinder = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOidsForIntervalFinder.Contains(customer.CustomerOid)).ToList();
|
||||
Model.SelectedResourcesForIntervalFinder = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOidsForIntervalFinder.Contains(resource.ResourceOid.Value)).ToList();
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
@@ -650,7 +654,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult UpdateEmployeeSelection(long[] selectedEmployeeOids)
|
||||
public ActionResult UpdateEmployeeSelection(long[] selectedOids)
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
@@ -658,7 +662,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("AptFltEmployeePopupListPartial");
|
||||
}
|
||||
|
||||
var selectedEmployees = Model.PossibleEmployees.Where(possibleEmployee => selectedEmployeeOids.Contains(possibleEmployee.EmployeeOid)).ToList();
|
||||
if(selectedOids is null)
|
||||
{
|
||||
selectedOids = Array.Empty<long>();
|
||||
}
|
||||
|
||||
var selectedEmployees = Model.PossibleEmployees.Where(possibleEmployee => selectedOids.Contains(possibleEmployee.EmployeeOid)).ToList();
|
||||
|
||||
Model.SelectedEmployeesForFiltering = selectedEmployees;
|
||||
Model.SelectedEmployeeOidsForFiltering = selectedEmployees.Select(employee => employee.EmployeeOid).ToList();
|
||||
@@ -667,7 +676,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult UpdateCustomerSelection(long[] selectedCustomerOids)
|
||||
public ActionResult UpdateCustomerSelection(long[] selectedOids)
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
@@ -675,7 +684,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("AptFltCustomerPopupListPartial");
|
||||
}
|
||||
|
||||
var selectedCustomers = Model.PossibleCustomers.Where(possibleCustomer => selectedCustomerOids.Contains(possibleCustomer.CustomerOid)).ToList();
|
||||
if(selectedOids is null)
|
||||
{
|
||||
selectedOids = Array.Empty<long>();
|
||||
}
|
||||
|
||||
var selectedCustomers = Model.PossibleCustomers.Where(possibleCustomer => selectedOids.Contains(possibleCustomer.CustomerOid)).ToList();
|
||||
|
||||
Model.SelectedCustomersForFiltering = selectedCustomers;
|
||||
Model.SelectedCustomerOidsForFiltering = selectedCustomers.Select(customer => customer.CustomerOid).ToList();
|
||||
@@ -684,7 +698,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult UpdateResourceSelection(long[] selectedResourceOids)
|
||||
public ActionResult UpdateResourceSelection(long[] selectedOids)
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
@@ -692,7 +706,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("AptFltResourcePopupListPartial");
|
||||
}
|
||||
|
||||
var selectedResources = Model.PossibleResources.Where(possibleResource => possibleResource.ResourceOid.HasValue && selectedResourceOids.Contains(possibleResource.ResourceOid.Value)).ToList();
|
||||
if(selectedOids is null)
|
||||
{
|
||||
selectedOids = Array.Empty<long>();
|
||||
}
|
||||
|
||||
var selectedResources = Model.PossibleResources.Where(possibleResource => possibleResource.ResourceOid.HasValue && selectedOids.Contains(possibleResource.ResourceOid.Value)).ToList();
|
||||
|
||||
Model.SelectedResourcesForFiltering = selectedResources;
|
||||
Model.SelectedResourceOidsForFiltering = selectedResources.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList();
|
||||
@@ -762,5 +781,84 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
return PartialView("SchedulerPagePartial", Model);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult LoadAppointmentToAnswer(long oid)
|
||||
{
|
||||
Model.Appointment2Answer = Model.OpenAppointments.FirstOrDefault(openAppointment => openAppointment.SchedulerAppointmentOid?.Equals(oid) ?? false);
|
||||
|
||||
return PartialView("NotificationPopupContent", Model);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult AnswerOpenAppointment(int answer)
|
||||
{
|
||||
var appointment = Model.Appointment2Answer;
|
||||
|
||||
var employeeRelation = appointment.EmployeeList.FirstOrDefault(employee2Appointment => employee2Appointment.Employee.EmployeeOid == Model.LoggedInUser.Employee.EmployeeOid);
|
||||
|
||||
if(employeeRelation != null)
|
||||
{
|
||||
employeeRelation.ParticipationAnswer = (ParticipationAnswer) answer;
|
||||
employeeRelation.IsPChanged = true;
|
||||
employeeRelation.IsPC_CheckedTs = DateTime.Now;
|
||||
}
|
||||
|
||||
KalenderService.UpdateSchedulerAppointments(new List<SchedulerAppointmentDC> { appointment });
|
||||
|
||||
Model.Appointment2Answer = null;
|
||||
Model.AppointmentOid2Answer = null;
|
||||
|
||||
ReloadAppointments();
|
||||
|
||||
return PartialView("NotificationsPopupContent", Model);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult ConfirmAllOpenAppointments()
|
||||
{
|
||||
Model.OpenAppointments = KalenderService.GetAllOpenAppointmentsForEmployee(Model.LoggedInUser.Employee.EmployeeOid);
|
||||
|
||||
foreach(var openAppointment in Model.OpenAppointments)
|
||||
{
|
||||
var employee2Appointment = openAppointment.EmployeeList.First(first => first.Employee.Equals(Model.LoggedInUser.Employee));
|
||||
|
||||
employee2Appointment.ParticipationAnswer = openAppointment.EndDate is null || openAppointment.EndDate > DateTime.Now ? ParticipationAnswer.Zusage : ParticipationAnswer.Verstrichen;
|
||||
employee2Appointment.IsPChanged = true;
|
||||
employee2Appointment.IsPC_CheckedTs = DateTime.Now;
|
||||
}
|
||||
|
||||
KalenderService.UpdateSchedulerAppointments(Model.OpenAppointments);
|
||||
|
||||
Model.Appointment2Answer = null;
|
||||
Model.AppointmentOid2Answer = null;
|
||||
|
||||
ReloadAppointments();
|
||||
|
||||
return PartialView("NotificationsPopupContent", Model);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult RightClickConfirm(int answer, long id)
|
||||
{
|
||||
var appointments = (List<SchedulerAppointmentDC>) Model.Appointments;
|
||||
|
||||
var appointment2Answer = appointments.FirstOrDefault(appointment => appointment.SchedulerAppointmentOid?.Equals(id) ?? false);
|
||||
|
||||
var rel = appointment2Answer?.EmployeeList.FirstOrDefault(employee2Appointment => employee2Appointment.Employee.Equals(Model.LoggedInCompactEmployee));
|
||||
|
||||
if(rel != null)
|
||||
{
|
||||
rel.ParticipationAnswer = (ParticipationAnswer) answer;
|
||||
rel.IsPChanged = true;
|
||||
rel.IsPC_CheckedTs = DateTime.Now;
|
||||
}
|
||||
|
||||
KalenderService.UpdateSchedulerAppointments(new List<SchedulerAppointmentDC> { appointment2Answer });
|
||||
|
||||
ReloadAppointments();
|
||||
|
||||
return PartialView("SchedulerPagePartial", Model);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user