diff --git a/BeWoPlanerMobil.sln b/BeWoPlanerMobil.sln
index 0dcc5d657..3d700739c 100644
--- a/BeWoPlanerMobil.sln
+++ b/BeWoPlanerMobil.sln
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31729.503
+# Visual Studio Version 17
+VisualStudioVersion = 17.14.36908.2 d17.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoPlanerMobil", "BeWoPlanerMobil\BeWoPlanerMobil.csproj", "{284B02ED-114A-426C-9162-31BB6CF05589}"
EndProject
@@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeidPartnerReports", "Repor
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaSMoenchengladbach", "ReportImp\PaSMoenchengladbach\PaSMoenchengladbach.csproj", "{EA3C4BE1-6128-4FC9-8194-3C4202233371}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Host", "Host\Host.csproj", "{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -100,6 +102,12 @@ Global
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
+ {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
+ {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj
index 1ccd4f089..4451f4925 100644
--- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj
+++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj
@@ -307,7 +307,9 @@
+
+
@@ -316,6 +318,10 @@
+
+
+
+
@@ -688,6 +694,9 @@
+
+
+
@@ -727,15 +736,9 @@
Shared
-
-
-
-
-
-
diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user
index eeebdd5de..883ab72a1 100644
--- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user
+++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user
@@ -15,7 +15,7 @@
root/Common/MVC/Controller
600
False
- False
+ True
False
diff --git a/BeWoPlanerMobil/Controllers/CustomerController.cs b/BeWoPlanerMobil/Controllers/CustomerController.cs
index 66f4c0c92..e4cf89006 100644
--- a/BeWoPlanerMobil/Controllers/CustomerController.cs
+++ b/BeWoPlanerMobil/Controllers/CustomerController.cs
@@ -18,44 +18,30 @@ using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Controllers
{
- public class CustomerController : ReportBaseController
+ public class CustomerController : ReportBaseController, IAbsenceTimeController
{
- public CustomerController()
- {
+ public CustomerController() { }
- }
private CustomerModel _Model;
public CustomerModel Model
{
get
{
- if (!MobileSessionFacade.IsUserLoggedIn())
+ if(!MobileSessionFacade.IsUserLoggedIn())
{
Logout();
return null;
}
- if (_Model == null)
+ if(_Model != null)
{
- _Model = new CustomerModel();
-
- InitModel(_Model);
- InitViewModel();
-
+ return _Model;
}
- //if (((CustomerModel) Session[ModelSessionConstants.CustomerModelKey])?.LoggedInEmployee is null)
- //{
- // _Model = new CustomerModel();
+ _Model = new CustomerModel();
- // InitModel(_Model);
-
- // Session[ModelSessionConstants.CustomerModelKey] = _Model;
- //}
- //else
- //{
- // _Model = (CustomerModel)Session[ModelSessionConstants.CustomerModelKey];
- //}
+ InitModel(_Model);
+ InitViewModel();
return _Model;
}
@@ -112,9 +98,10 @@ namespace BeWoPlanerMobil.Controllers
Model.Customers = new List();
}
- if(Model.CustomerSessionModel.SelectedCustomerOid.HasValue)
+ var selectedCustomerOid = Model.CustomerSessionModel.SelectedAbsenceTimeObjectOid;
+ if(selectedCustomerOid.HasValue)
{
- Model.SelectedCustomer = CustomerService.LoadCustomer(Model.CustomerSessionModel.SelectedCustomerOid.Value);
+ Model.SelectedCustomer = CustomerService.LoadCustomer(selectedCustomerOid.Value);
}
if(Model.IsAllowedToSeeMedikamentenliste)
@@ -1271,11 +1258,11 @@ namespace BeWoPlanerMobil.Controllers
var startDateString = formCollection["customer-absence-time-start-date"];
var startTimeString = formCollection["customer-absence-time-start-time"];
- var endDateString = formCollection["customer-absence-time-end-date"];
- var endTimeString = formCollection["customer-absence-time-end-time"];
- var category = formCollection["customer-absence-time-category"];
- var notice = formCollection["customer-absence-time-notice"];
- var allDay = "on" == formCollection["customer-absence-time-allday-cb"];
+ var endDateString = formCollection["customer-absence-time-end-date"];
+ var endTimeString = formCollection["customer-absence-time-end-time"];
+ var category = formCollection["customer-absence-time-category"];
+ var notice = formCollection["customer-absence-time-notice"];
+ var allDay = "on" == formCollection["customer-absence-time-allday-cb"];
if(allDay)
{
@@ -1340,7 +1327,6 @@ namespace BeWoPlanerMobil.Controllers
if(absenceTimeOid == 0)
{
return RedirectToActionPermanent("Customer", Model);
- //return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.
Bitte wenden Sie sich an Ihren Systemadministrator.";
}
var selectedAbsenceTime = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Value.Equals(absenceTimeOid));
@@ -1348,13 +1334,11 @@ namespace BeWoPlanerMobil.Controllers
if(selectedAbsenceTime is null)
{
return RedirectToActionPermanent("Customer", Model);
- //return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.
Bitte wenden Sie sich an Ihren Systemadministrator.";
}
Model.SelectedAbsenceTimeOid = absenceTimeOid;
Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid;
- //return LeerzeichenFuerGetMethoden;
return RedirectToActionPermanent("Customer", Model);
}
@@ -1382,7 +1366,7 @@ namespace BeWoPlanerMobil.Controllers
TempData[TempDataConstants.DoLogoutKey] = true;
}
- return PartialView("CustomerAbsenceTimeFormPartial", Model);
+ return PartialView("AbsenceTimeFormPartial", Model);
}
[Authorize]
@@ -1400,7 +1384,7 @@ namespace BeWoPlanerMobil.Controllers
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
- return PartialView("CustomerAbsenceTimePartial");
+ return PartialView("AbsenceTimePartial");
}
var absenceTime2Delete = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Equals(absenceTimeOid));
@@ -1418,7 +1402,7 @@ namespace BeWoPlanerMobil.Controllers
LoadCustomerToModel(customer.CustomerOid);
- return PartialView("CustomerAbsenceTimePartial", Model);
+ return PartialView("AbsenceTimePartial", Model);
}
#endregion
diff --git a/BeWoPlanerMobil/Controllers/EmployeeController.cs b/BeWoPlanerMobil/Controllers/EmployeeController.cs
new file mode 100644
index 000000000..1b9e5f0ec
--- /dev/null
+++ b/BeWoPlanerMobil/Controllers/EmployeeController.cs
@@ -0,0 +1,280 @@
+using System;
+using System.Diagnostics;
+using System.Linq;
+using System.Web.Mvc;
+using BeWoPlanerMobil.Models;
+using BeWoPlanerMobil.Service;
+using BeWoPlanerMobil.Util;
+using BS.Shared;
+using BS.Shared.DataContracts;
+
+namespace BeWoPlanerMobil.Controllers
+{
+ public class EmployeeController : AbstractBaseController, IAbsenceTimeController
+ {
+ public EmployeeController() { }
+
+ [Authorize]
+ public override string SaveCollapsibleStatus(bool isOpen, string identifier)
+ {
+ return SaveCollapsibleStatusToModel(Model, isOpen, identifier);
+ }
+
+ private EmployeeModel _Model;
+
+ public EmployeeModel Model
+ {
+ get
+ {
+ if(false == MobileSessionFacade.IsUserLoggedIn())
+ {
+ Logout();
+ return null;
+ }
+
+ if(_Model != null)
+ {
+ return _Model;
+ }
+
+ _Model = new EmployeeModel();
+
+ InitModel(_Model);
+ InitViewModel();
+
+ return _Model;
+ }
+ }
+
+ [Authorize]
+ public ActionResult Employee(long? id)
+ {
+
+ if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
+ {
+ return Logout();
+ }
+
+ if(id.HasValue)
+ {
+ LoadEmployeeToModel(id);
+ }
+
+ return View(Model);
+ }
+
+ private void InitViewModel()
+ {
+ if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
+ {
+ Logout();
+ return;
+ }
+
+ Model.AllAbsenceReasons = CustomerService.GetAllAbsenceReasons()
+ .Where(ar => ar.Sichtbarkeit is null ||
+ ar.Sichtbarkeit == AbsenceReasonVisibilityType.Employee ||
+ ar.Sichtbarkeit == AbsenceReasonVisibilityType.All)
+ .ToList();
+
+ if(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid != null)
+ {
+ Model.SelectedEmployee = EmployeeService.LoadEmployee(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid.Value);
+ Model.AbsenceTimeObject = Model.SelectedEmployee;
+ }
+
+ var selectedAbsenceTimeOid = Model.EmployeeSessionModel.SelectedAbsenceTimeOid;
+
+ if(selectedAbsenceTimeOid.HasValue && Model.SelectedEmployee != null)
+ {
+ Model.SelectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(selectedAbsenceTimeOid.Value) ?? false);
+ }
+ }
+
+ private void LoadEmployeeToModel(long? employeeOid)
+ {
+ if(employeeOid == -1)
+ {
+ Model.EmployeeSessionModel.ResetValues();
+ return;
+ }
+
+ if(Model.SelectedEmployeeOid.HasValue && Model.SelectedEmployeeOid != employeeOid)
+ {
+ Model.EmployeeSessionModel.ResetValues();
+ }
+
+ Model.SelectedEmployeeOid = employeeOid;
+
+ if(employeeOid != null)
+ {
+ Model.SelectedEmployee = EmployeeService.LoadEmployee(Model.EmployeeSessionModel.SelectedAbsenceTimeObjectOid.Value);
+ Model.AbsenceTimeObject = Model.SelectedEmployee;
+ }
+ }
+
+ [Authorize]
+ [HttpPost]
+ public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection)
+ {
+ if(Model is null)
+ {
+ TempData[TempDataConstants.DoLogoutKey] = true;
+ return Logout();
+ }
+
+ var selectedAbsenceTime = Model.SelectedAbsenceTime;
+ var oid = selectedAbsenceTime?.AbsenceTimeOid;
+
+ var isNew = oid is null;
+
+ var startDateString = formCollection["employee-absence-time-start-date"];
+ var startTimeString = formCollection["employee-absence-time-start-time"];
+ var endDateString = formCollection["employee-absence-time-end-date"];
+ var endTimeString = formCollection["employee-absence-time-end-time"];
+ var category = formCollection["employee-absence-time-category"];
+ var notice = formCollection["employee-absence-time-notice"];
+ var allDay = "on" == formCollection["employee-absence-time-allday-cb"];
+
+ if(allDay)
+ {
+ startTimeString = null;
+ endTimeString = null;
+ }
+
+ var startString = $"{startDateString} {startTimeString ?? "00:00"}";
+ var endString = $"{endDateString} {endTimeString ?? "00:00"}";
+
+ var start = DateTime.Parse(startString);
+ var end = string.IsNullOrWhiteSpace(endDateString) && string.IsNullOrWhiteSpace(endTimeString) ? null : (DateTime?) DateTime.Parse(endString);
+
+ var categoryOid = long.Parse(category);
+
+ var absenceReason = Model.AllAbsenceReasons.FirstOrDefault(ar => ar.AbsenceReasonOid.HasValue && ar.AbsenceReasonOid.Value.Equals(categoryOid));
+
+ var employee = Model.SelectedEmployee;
+
+ if(isNew)
+ {
+ var absenceTime = new AbsenceTimeDC
+ {
+ EmployeeOid = employee.EmployeeOid,
+ Reason = absenceReason,
+ Start = start,
+ End = end,
+ Notice = notice
+ };
+
+ OperationsService.InsertNewEmployeeAbsenceTime(employee.EmployeeOid.Value, absenceTime);
+ }
+ else
+ {
+ selectedAbsenceTime.Start = start;
+ selectedAbsenceTime.End = end;
+ selectedAbsenceTime.Reason = absenceReason;
+ selectedAbsenceTime.Notice = notice;
+
+ OperationsService.UpdateAbsenceTime(selectedAbsenceTime);
+ }
+
+ LoadEmployeeToModel(employee.EmployeeOid);
+
+ Model.SelectedAbsenceTime = null;
+ Model.SelectedAbsenceTimeOid = null;
+ Model.SelectedAbsenceReasonOid = -1;
+
+ return RedirectToActionPermanent("Employee");
+ }
+
+ [Authorize]
+ [HttpPost]
+ public ActionResult SelectAbsenceTime(long absenceTimeOid)
+ {
+ if(Model is null)
+ {
+ TempData[TempDataConstants.DoLogoutKey] = true;
+ return Logout();
+ }
+
+ if(absenceTimeOid == 0)
+ {
+ return RedirectToActionPermanent("Employee", Model);
+ }
+
+ var selectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.EmployeeOid?.Equals(absenceTimeOid) ?? false);
+
+ if(selectedAbsenceTime is null)
+ {
+ return RedirectToActionPermanent("Employee", Model);
+ }
+
+ Model.SelectedAbsenceTimeOid = absenceTimeOid;
+ Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid;
+
+ return RedirectToActionPermanent("Employee", Model);
+ }
+
+ [Authorize]
+ public string SetSelectedAbsenceTimeOid(long absenceTimeOid)
+ {
+ var selectedAbsenceTime = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(absenceTimeOid) ?? false);
+
+ if(selectedAbsenceTime is null)
+ {
+ return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.
Bitte wenden Sie sich an Ihren Systemadministrator";
+ }
+
+ Model.SelectedAbsenceTimeOid = absenceTimeOid;
+ Model.SelectedAbsenceReasonOid = selectedAbsenceTime.Reason.AbsenceReasonOid;
+
+ return LeerzeichenFuerGetMethoden;
+ }
+
+ [Authorize]
+ public ActionResult LoadAbsenceTimeToForm()
+ {
+ if(Model is null)
+ {
+ TempData[TempDataConstants.DoLogoutKey] = true;
+ }
+
+ return PartialView("AbsenceTimeFormPartial", Model);
+ }
+
+ [Authorize]
+ public string DeselectAbsenceTime()
+ {
+ Model.SelectedAbsenceTimeOid = null;
+ Model.SelectedAbsenceReasonOid = -1;
+
+ return LeerzeichenFuerGetMethoden;
+ }
+
+ [Authorize]
+ public ActionResult DeleteAbsenceTime(long absenceTimeOid)
+ {
+ if(Model is null)
+ {
+ TempData[TempDataConstants.DoLogoutKey] = true;
+ return PartialView("AbsenceTimePartial");
+ }
+
+ var absenceTime2Delete = Model.SelectedEmployee.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid?.Equals(absenceTimeOid) ?? false);
+
+ if(absenceTime2Delete is null)
+ {
+ ViewData["AbsenceTimeError"] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!
Bitte wenden Sie sich an Ihren Administrator.";
+ }
+
+ var employee = Model.SelectedEmployee;
+
+ employee.AbsenceTimes.Remove(absenceTime2Delete);
+
+ EmployeeService.UpdateEmployee(employee);
+
+ LoadEmployeeToModel(employee.EmployeeOid);
+
+ return PartialView("AbsenceTimePartial", Model);
+ }
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs b/BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs
new file mode 100644
index 000000000..231451d84
--- /dev/null
+++ b/BeWoPlanerMobil/Controllers/IAbsenceTimeController.cs
@@ -0,0 +1,27 @@
+using System.Web.Mvc;
+
+namespace BeWoPlanerMobil.Controllers
+{
+ internal interface IAbsenceTimeController
+ {
+ [Authorize]
+ [HttpPost]
+ ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection);
+
+ [Authorize]
+ [HttpPost]
+ ActionResult SelectAbsenceTime(long absenceTimeOid);
+
+ [Authorize]
+ string SetSelectedAbsenceTimeOid(long absenceTimeOid);
+
+ [Authorize]
+ ActionResult LoadAbsenceTimeToForm();
+
+ [Authorize]
+ string DeselectAbsenceTime();
+
+ [Authorize]
+ ActionResult DeleteAbsenceTime(long absenceTimeOid);
+ }
+}
diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs
index 0e6ede9ca..8643b702f 100644
--- a/BeWoPlanerMobil/Controllers/MainController.cs
+++ b/BeWoPlanerMobil/Controllers/MainController.cs
@@ -3362,10 +3362,20 @@ namespace BeWoPlanerMobil.Controllers
return RedirectToMain();
}
+ ///
+ /// Leitet zur Mitarbeiter-Seite weiter, die bis jetzt aber nur die Abwesenheiten des angemeldeten Mitarbeiters anzeigt
+ ///
+ /// Aufruf zur Mitarbeiter-Seite
[Authorize]
public ActionResult RedirectToPersons()
{
- return RedirectToActionPermanent("Person", "Person");
+ return RedirectToActionPermanent("Person", "Person", new { id = Model.LoggedInEmployee?.EmployeeOid });
+ }
+
+ [Authorize]
+ public ActionResult RedirectToEmployees()
+ {
+ return RedirectToActionPermanent("Employee", "Employee", new { id = Model.LoggedInEmployee?.EmployeeOid });
}
[Authorize]
diff --git a/BeWoPlanerMobil/Controllers/PersonController.cs b/BeWoPlanerMobil/Controllers/PersonController.cs
new file mode 100644
index 000000000..a4116b9cf
--- /dev/null
+++ b/BeWoPlanerMobil/Controllers/PersonController.cs
@@ -0,0 +1,93 @@
+using BeWoPlanerMobil.Models;
+using BeWoPlanerMobil.Service;
+using DevExpress.Web.Internal.XmlProcessor;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+
+namespace BeWoPlanerMobil.Controllers
+{
+ public class PersonController : AbstractBaseController
+ {
+ public PersonController() { }
+
+ private PersonModel _Model;
+
+ public PersonModel Model
+ {
+ get
+ {
+ if(!MobileSessionFacade.IsUserLoggedIn())
+ {
+ Logout();
+ return null;
+ }
+
+ if(_Model is null)
+ {
+ _Model = new PersonModel();
+
+ InitModel(_Model);
+ InitViewModel();
+ }
+
+ return _Model;
+ }
+ }
+
+ [Authorize]
+ public ActionResult Person(long? id)
+ {
+ try
+ {
+ if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
+ {
+ return Logout();
+ }
+
+ if(id.HasValue)
+ {
+ LoadPersonToModel(id);
+ }
+ }
+ catch(Exception exception)
+ {
+ Log.Info("Exception: " + exception.Message + "\n" + exception.StackTrace);
+ if(exception.InnerException != null)
+ {
+ Log.Info("\n\nInnerException: " + exception.InnerException.Message + "\n" + exception.InnerException.StackTrace);
+ }
+
+ throw;
+ }
+
+ return View(Model);
+ }
+
+ private void InitViewModel()
+ {
+ if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
+ {
+ Logout();
+ return;
+ }
+
+
+ }
+
+ private void LoadPersonToModel(long? personOid)
+ {
+ if(personOid is null || (personOid.Value > 0 && false == Model.Persons.Any(p => p.PersonOid.Equals(personOid.Value))))
+ {
+ return;
+ }
+ }
+
+ public override string SaveCollapsibleStatus(bool isOpen, string identifier)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Models/AbstractModel.cs b/BeWoPlanerMobil/Models/AbstractModel.cs
index 55d7809db..150dd62b5 100644
--- a/BeWoPlanerMobil/Models/AbstractModel.cs
+++ b/BeWoPlanerMobil/Models/AbstractModel.cs
@@ -51,8 +51,8 @@ namespace BeWoPlanerMobil.Models
public static string TimeOfLastAction
{
- get { return MobileSessionFacade.TimeOfLastAction; }
- set { MobileSessionFacade.TimeOfLastAction = value; }
+ get => MobileSessionFacade.TimeOfLastAction;
+ set => MobileSessionFacade.TimeOfLastAction = value;
}
public bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll);
@@ -223,6 +223,11 @@ namespace BeWoPlanerMobil.Models
public bool HasRightToViewCustomerDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumenteKlienten });
+ public bool HasRightToViewOwnEmployee => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.Employee_AllowViewOwnEmployees }) &&
+ CheckForAtLeastOneRight(new[] { UserRightType.EditAll, UserRightType.Employee_AllowEditOwnEmployees });
+
+
+
//public string UserMessage { get; set; }
public XtraReport Report { get; set; }
@@ -260,7 +265,9 @@ namespace BeWoPlanerMobil.Models
public List Persons { get; set; } = new List();
- public Dictionary Collapsibles2IsShown { get => SessionModel.Collapsibles2IsShown;
+ public Dictionary Collapsibles2IsShown
+ {
+ get => SessionModel.Collapsibles2IsShown;
set => SessionModel.Collapsibles2IsShown = value;
}
diff --git a/BeWoPlanerMobil/Models/CustomerModel.cs b/BeWoPlanerMobil/Models/CustomerModel.cs
index 688b6b009..c68565302 100644
--- a/BeWoPlanerMobil/Models/CustomerModel.cs
+++ b/BeWoPlanerMobil/Models/CustomerModel.cs
@@ -11,23 +11,29 @@ using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Models
{
- public class CustomerModel : AbstractModel, ISignable
+ public class CustomerModel : AbstractModel, ISignable, IAbsenceTimeModel
{
+ public string HtmlPrefix => "customer";
+
+ public IAbsenceTime AbsenceTimeObject
+ {
+ get => SelectedCustomer;
+ set => SelectedCustomer = (CustomerDC) value;
+ }
+
public CustomerModel()
{
SessionModel = new CustomerSessionModel();
}
- public CustomerSessionModel CustomerSessionModel
- {
- get
- {
- return SessionModel as CustomerSessionModel;
- }
- }
+ public CustomerSessionModel CustomerSessionModel => SessionModel as CustomerSessionModel;
[Display(Name = "Klient")]
- public long? SelectedCustomerOid { get { return CustomerSessionModel.SelectedCustomerOid; } set { CustomerSessionModel.SelectedCustomerOid = value; } }
+ public long? SelectedCustomerOid
+ {
+ get => CustomerSessionModel.SelectedAbsenceTimeObjectOid;
+ set => CustomerSessionModel.SelectedAbsenceTimeObjectOid = value;
+ }
public CustomerDC SelectedCustomer { get; set; }
@@ -47,7 +53,11 @@ namespace BeWoPlanerMobil.Models
public JsonCustomer SelectedJsonCustomer => SelectedCustomer != null ? new JsonCustomer(SelectedCustomer, FolderTree, ICD10Diagnosen) : null;
[Display(Name = "Filter")]
- public CustomerFilterEnum SelectedCustomerFilter { get { return CustomerSessionModel.SelectedCustomerFilter; } set { CustomerSessionModel.SelectedCustomerFilter = value; } }
+ public CustomerFilterEnum SelectedCustomerFilter
+ {
+ get => CustomerSessionModel.SelectedCustomerFilter;
+ set => CustomerSessionModel.SelectedCustomerFilter = value;
+ }
public List CustomerFilter
{
@@ -93,7 +103,11 @@ namespace BeWoPlanerMobil.Models
public List ReportTypes { get; set; }
[Display(Name = "Bericht")]
- public CustomerReportType SelectedReportType { get { return CustomerSessionModel.SelectedReportType; } set { CustomerSessionModel.SelectedReportType = value; } }
+ public CustomerReportType SelectedReportType
+ {
+ get => CustomerSessionModel.SelectedReportType;
+ set => CustomerSessionModel.SelectedReportType = value;
+ }
public List ReportTypeItems
{
@@ -117,7 +131,11 @@ namespace BeWoPlanerMobil.Models
public List Bargeldkassen { get; set; } = new List();
[Display(Name = "Kategorie")]
- public long? SelectedAbsenceReasonOid { get { return CustomerSessionModel.SelectedAbsenceReasonOid; } set { CustomerSessionModel.SelectedAbsenceReasonOid = value; } }
+ public long? SelectedAbsenceReasonOid
+ {
+ get => CustomerSessionModel.SelectedAbsenceReasonOid;
+ set => CustomerSessionModel.SelectedAbsenceReasonOid = value;
+ }
public List AllAbsenceReasons { get; set; }
@@ -145,7 +163,11 @@ namespace BeWoPlanerMobil.Models
}
}
- public long? SelectedAbsenceTimeOid { get { return CustomerSessionModel.SelectedAbsenceTimeOid; } set { CustomerSessionModel.SelectedAbsenceTimeOid = value; } }
+ public long? SelectedAbsenceTimeOid
+ {
+ get => CustomerSessionModel.SelectedAbsenceTimeOid;
+ set => CustomerSessionModel.SelectedAbsenceTimeOid = value;
+ }
public AbsenceTimeDC SelectedAbsenceTime { get; set; }
//{
@@ -157,19 +179,28 @@ namespace BeWoPlanerMobil.Models
// }
//}
- public long? SelectedBargeldkasseOid { get { return CustomerSessionModel.SelectedBargeldkasseOid; } set { CustomerSessionModel.SelectedBargeldkasseOid = value; } }
+ public long? SelectedBargeldkasseOid
+ {
+ get => CustomerSessionModel.SelectedBargeldkasseOid;
+ set => CustomerSessionModel.SelectedBargeldkasseOid = value;
+ }
public BargeldkassenDC SelectedBargeldkasse { get; set; }
- [Display(Name="Auszahlunsintervall")]
- public int SelectedAuszahlungsintervall { get { return CustomerSessionModel.SelectedAuszahlungsintervall; } set { CustomerSessionModel.SelectedAuszahlungsintervall = value; } }
- public List Auszahlungsintervalle =>
+ [Display(Name = "Auszahlunsintervall")]
+ public int SelectedAuszahlungsintervall
+ {
+ get => CustomerSessionModel.SelectedAuszahlungsintervall;
+ set => CustomerSessionModel.SelectedAuszahlungsintervall = value;
+ }
+
+ public List Auszahlungsintervalle =>
new List
{
- new SelectListItem{Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein"},
- new SelectListItem{Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich"},
- new SelectListItem{Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich"},
- new SelectListItem{Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich"},
+ new SelectListItem { Value = ((int) Auszahlungsintervall.Kein).ToString(), Text = "Kein" },
+ new SelectListItem { Value = ((int) Auszahlungsintervall.Monatlich).ToString(), Text = "Monatlich" },
+ new SelectListItem { Value = ((int) Auszahlungsintervall.Woechentlich).ToString(), Text = "Wöchentlich" },
+ new SelectListItem { Value = ((int) Auszahlungsintervall.Taeglich).ToString(), Text = "Täglich" }
};
public XtraReport BargeldkassenReportObject { get; set; }
@@ -177,17 +208,26 @@ namespace BeWoPlanerMobil.Models
public XtraReport ZahlungsbelegsReportObject { get; set; }
- public long? SelectedBargeldtransaktionOid { get { return CustomerSessionModel.SelectedBargeldtransaktionOid; } set { CustomerSessionModel.SelectedBargeldtransaktionOid = value; } }
+ public long? SelectedBargeldtransaktionOid
+ {
+ get => CustomerSessionModel.SelectedBargeldtransaktionOid;
+ set => CustomerSessionModel.SelectedBargeldtransaktionOid = value;
+ }
public BargeldtransaktionDC SelectedBargeldtransaktion { get; set; }
[Display(Name = "Art")]
- public int SelectedTransaktionsart { get { return CustomerSessionModel.SelectedTransaktionsart; } set { CustomerSessionModel.SelectedTransaktionsart = value; } }
+ public int SelectedTransaktionsart
+ {
+ get => CustomerSessionModel.SelectedTransaktionsart;
+ set => CustomerSessionModel.SelectedTransaktionsart = value;
+ }
+
public List Transaktionsarten =>
new List
{
- new SelectListItem{Value=((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung"},
- new SelectListItem{Value=((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung"}
+ new SelectListItem { Value = ((int) Zahlungstyp.Einzahlung).ToString(), Text = "Einzahlung" },
+ new SelectListItem { Value = ((int) Zahlungstyp.Auszahlung).ToString(), Text = "Auszahlung" }
};
public List BargeldtransaktionshistoryEntries { get; set; } = new List();
diff --git a/BeWoPlanerMobil/Models/CustomerSessionModel.cs b/BeWoPlanerMobil/Models/CustomerSessionModel.cs
index 149059094..517625611 100644
--- a/BeWoPlanerMobil/Models/CustomerSessionModel.cs
+++ b/BeWoPlanerMobil/Models/CustomerSessionModel.cs
@@ -1,23 +1,13 @@
using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Web.Mvc;
using BeWo.View.Navigation.Filter;
using BeWoPlanerMobil.Controllers;
-using BeWoPlanerMobil.Service;
-using BeWoPlanerMobil.Util;
-using BS.Shared;
-using BS.Shared.DataContracts;
-using BS.Shared.DataContracts.Compact;
-using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Models
{
[Serializable]
- public class CustomerSessionModel : BaseSessionModel
+ public class CustomerSessionModel : BaseSessionModel, IAbsenceTimeSessionModel
{
- public long? SelectedCustomerOid { get; set; }
+ public long? SelectedAbsenceTimeObjectOid { get; set; }
public CustomerFilterEnum SelectedCustomerFilter { get; set; }
@@ -39,7 +29,7 @@ namespace BeWoPlanerMobil.Models
{
base.ResetValues();
- SelectedCustomerOid = null;
+ SelectedAbsenceTimeObjectOid = null;
//SelectedCustomerFilter = CustomerFilterEnum.All;
//SelectedReportType = CustomerReportType.Medikamentenliste;
SelectedAbsenceReasonOid = null;
diff --git a/BeWoPlanerMobil/Models/EmployeeModel.cs b/BeWoPlanerMobil/Models/EmployeeModel.cs
new file mode 100644
index 000000000..f7563e13c
--- /dev/null
+++ b/BeWoPlanerMobil/Models/EmployeeModel.cs
@@ -0,0 +1,75 @@
+using BS.Shared.DataContracts;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Web.Mvc;
+
+namespace BeWoPlanerMobil.Models
+{
+ public class EmployeeModel : AbstractModel, IAbsenceTimeModel
+ {
+ public string HtmlPrefix => "employee";
+
+ public EmployeeSessionModel EmployeeSessionModel => SessionModel as EmployeeSessionModel;
+
+ public EmployeeDC SelectedEmployee { get; set; }
+
+ public IAbsenceTime AbsenceTimeObject
+ {
+ get => SelectedEmployee;
+ set => SelectedEmployee = (EmployeeDC) value;
+ }
+
+ public AbsenceTimeDC SelectedAbsenceTime { get; set; }
+
+ [Display(Name = "Mitarbeiter")]
+ public long? SelectedEmployeeOid
+ {
+ get => EmployeeSessionModel.SelectedAbsenceTimeObjectOid;
+ set => EmployeeSessionModel.SelectedAbsenceTimeObjectOid = value;
+ }
+
+ public EmployeeModel()
+ {
+ SessionModel = new EmployeeSessionModel();
+ }
+
+ public List AllAbsenceReasons { get; set; }
+
+ public List AbsenceReasonItems
+ {
+ get
+ {
+ var result = new List { new SelectListItem { Value = "-1", Text = string.Empty } };
+
+ foreach(var absenceReason in AllAbsenceReasons)
+ {
+ if(absenceReason.AbsenceReasonOid is null)
+ {
+ continue;
+ }
+
+ result.Add(new SelectListItem
+ {
+ Value = absenceReason.AbsenceReasonOid.Value.ToString(),
+ Text = absenceReason.Description
+ });
+ }
+
+ return result;
+ }
+ }
+
+ [Display(Name = "Kategorie")]
+ public long? SelectedAbsenceReasonOid
+ {
+ get => EmployeeSessionModel.SelectedAbsenceReasonOid;
+ set => EmployeeSessionModel.SelectedAbsenceReasonOid = value;
+ }
+
+ public long? SelectedAbsenceTimeOid
+ {
+ get => EmployeeSessionModel.SelectedAbsenceTimeOid;
+ set => EmployeeSessionModel.SelectedAbsenceTimeOid = value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Models/EmployeeSessionModel.cs b/BeWoPlanerMobil/Models/EmployeeSessionModel.cs
new file mode 100644
index 000000000..479973b18
--- /dev/null
+++ b/BeWoPlanerMobil/Models/EmployeeSessionModel.cs
@@ -0,0 +1,21 @@
+using System;
+
+namespace BeWoPlanerMobil.Models
+{
+ [Serializable]
+ public class EmployeeSessionModel : BaseSessionModel, IAbsenceTimeSessionModel
+ {
+ public long? SelectedAbsenceTimeObjectOid { get; set; }
+ public long? SelectedAbsenceReasonOid { get; set; }
+ public long? SelectedAbsenceTimeOid { get; set; }
+
+ public override void ResetValues()
+ {
+ base.ResetValues();
+
+ SelectedAbsenceTimeObjectOid = null;
+ SelectedAbsenceReasonOid = null;
+ SelectedAbsenceTimeOid = null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs b/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs
new file mode 100644
index 000000000..19ed5f6ea
--- /dev/null
+++ b/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs
@@ -0,0 +1,17 @@
+using BS.Shared.DataContracts;
+using System.Collections.Generic;
+using System.Web.Mvc;
+
+namespace BeWoPlanerMobil.Models
+{
+ public interface IAbsenceTimeModel
+ {
+ string HtmlPrefix { get; }
+ long? SelectedAbsenceTimeOid { get; set; }
+ long? SelectedAbsenceReasonOid { get; set; }
+ AbsenceTimeDC SelectedAbsenceTime { get; set; }
+ IAbsenceTime AbsenceTimeObject { get; set; }
+ Dictionary Collapsibles2IsShown { get; set; }
+ List AbsenceReasonItems { get; }
+ }
+}
diff --git a/BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs b/BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs
new file mode 100644
index 000000000..375023fe3
--- /dev/null
+++ b/BeWoPlanerMobil/Models/IAbsenceTimeSessionModel.cs
@@ -0,0 +1,7 @@
+namespace BeWoPlanerMobil.Models
+{
+ internal interface IAbsenceTimeSessionModel
+ {
+ long? SelectedAbsenceTimeObjectOid { get; set; }
+ }
+}
diff --git a/BeWoPlanerMobil/Models/PersonModel.cs b/BeWoPlanerMobil/Models/PersonModel.cs
new file mode 100644
index 000000000..07a42409a
--- /dev/null
+++ b/BeWoPlanerMobil/Models/PersonModel.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Web;
+using BS.Shared.DataContracts;
+
+namespace BeWoPlanerMobil.Models
+{
+ public class PersonModel : AbstractModel
+ {
+ public PersonModel()
+ {
+ SessionModel = new PersonSessionModel();
+ }
+
+ public PersonSessionModel PersonSessionModel => SessionModel as PersonSessionModel;
+
+ [Display(Name = "Person")]
+ public long? SelectedPersonOid
+ {
+ get => PersonSessionModel.SelectedPersonOid;
+ set => PersonSessionModel.SelectedPersonOid = value;
+ }
+
+ public PersonDC SelectedPerson { get; set; }
+
+
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Models/PersonSessionModel.cs b/BeWoPlanerMobil/Models/PersonSessionModel.cs
new file mode 100644
index 000000000..95a1c8977
--- /dev/null
+++ b/BeWoPlanerMobil/Models/PersonSessionModel.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace BeWoPlanerMobil.Models
+{
+ [Serializable]
+ public class PersonSessionModel : BaseSessionModel
+ {
+ public long? SelectedPersonOid { get; set; }
+
+ public override void ResetValues()
+ {
+ base.ResetValues();
+
+ SelectedPersonOid = null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Util/ISignable.cs b/BeWoPlanerMobil/Util/ISignable.cs
index 8d3273abf..680656f71 100644
--- a/BeWoPlanerMobil/Util/ISignable.cs
+++ b/BeWoPlanerMobil/Util/ISignable.cs
@@ -1,7 +1,4 @@
-using System.Web.Mvc;
-using BS.Shared;
-
-namespace BeWoPlanerMobil.Util
+namespace BeWoPlanerMobil.Util
{
internal interface ISignable
{
diff --git a/BeWoPlanerMobil/Views/Customer/Customer.cshtml b/BeWoPlanerMobil/Views/Customer/Customer.cshtml
index 5e6f51a56..1bf318057 100644
--- a/BeWoPlanerMobil/Views/Customer/Customer.cshtml
+++ b/BeWoPlanerMobil/Views/Customer/Customer.cshtml
@@ -496,7 +496,7 @@
-
+