Überarbeitung Mok Session Handling

This commit is contained in:
Christian
2025-06-11 22:56:25 +02:00
parent 76f8107537
commit c95dad72bf
86 changed files with 2629 additions and 2553 deletions

View File

@@ -33,29 +33,30 @@ namespace BeWoPlanerMobil.Controllers
return null;
}
if(((ReportViewerModel)Session[ModelSessionConstants.ReportViewerModelKey])?.Employee is null)
if (_Model == null)
{
_Model = new ReportViewerModel { Employee = MobileSessionFacade.LoggedInEmployee, ReportCreator = GetReportCreator() };
Session[ModelSessionConstants.ReportViewerModelKey] = _Model;
}
else
{
_Model = (ReportViewerModel)Session[ModelSessionConstants.ReportViewerModelKey];
_Model = new ReportViewerModel { ReportCreator = GetReportCreator() };
InitModel(_Model);
InitViewModel();
}
//if (((ReportViewerModel)Session[ModelSessionConstants.ReportViewerModelKey])?.LoggedInEmployee is null)
//{
// _Model = new ReportViewerModel { ReportCreator = GetReportCreator() };
// Session[ModelSessionConstants.ReportViewerModelKey] = _Model;
//}
//else
//{
// _Model = (ReportViewerModel)Session[ModelSessionConstants.ReportViewerModelKey];
//}
return _Model;
}
}
[Authorize]
public ActionResult ReportViewer()
private void InitViewModel()
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return Logout();
}
Model.Report = null;
var month = DateTime.Today.Month;
@@ -67,27 +68,39 @@ namespace BeWoPlanerMobil.Controllers
Model.AllEmployees = AbstractModel.HasRightMitarbeiterstundenkontoViewAll
? EmployeeService.GetAllActiveEmployeesCompact()
: new List<CompactEmployeeDC> { MobileSessionFacade.LoggedInCompactEmployee };
Model.AllEmployees = Model.HasRightMitarbeiterstundenkontoViewAll
? EmployeeService.GetAllActiveEmployeesCompact()
: new List<CompactEmployeeDC> { LoggedInUser.Employee };
// Alle Teams darf man nur sehen, wenn man das Recht "HasRightMitarbeiterstundenkontoViewAll" hat.
// Hat man weder das Recht "HasRightMitarbeiterstundenkontoViewAll" noch "HasRightMitarbeiterstundenkontoViewTeams", sieht man die Teams gar nicht.
// Hat man das Recht "HasRightMitarbeiterstundenkontoViewTeams", aber nicht das Recht "HasRightMitarbeiterstundenkontoViewAll", sieht man nur die Teams, deren Teamleiter man ist.
Model.AllTeams = AbstractModel.HasRightMitarbeiterstundenkontoViewAll
? EmployeeService.GetAllActiveCompactTeamsForEmployee(MobileSessionFacade.LoggedInEmployee.EmployeeOid)
: EmployeeService.FindLeadingCompactTeamsOfEmployee(MobileSessionFacade.LoggedInCompactEmployee.EmployeeOid);
Model.AllTeams = Model.HasRightMitarbeiterstundenkontoViewAll
? EmployeeService.GetAllActiveCompactTeamsForEmployee(LoggedInEmployee.EmployeeOid)
: EmployeeService.FindLeadingCompactTeamsOfEmployee(LoggedInUser.Employee.EmployeeOid);
if(false == AbstractModel.HasRightMitarbeiterstundenkontoViewAll || Model.SelectedEmployee is null)
if (false == Model.HasRightMitarbeiterstundenkontoViewAll || Model.SelectedEmployeeOid is null)
{
Model.SelectedEmployee = MobileSessionFacade.LoggedInCompactEmployee;
Model.SelectedEmployeeOid = LoggedInUser.Employee.EmployeeOid;
}
if (Model.SelectedEmployeeOid.HasValue)
{
Model.SelectedEmployee = Model.AllEmployees.FirstOrDefault(employee => employee.EmployeeOid.Equals(Model.SelectedEmployeeOid.Value));
}
if (Model.SelectedTeamOid.HasValue)
{
Model.SelectedTeam = Model.AllTeams.FirstOrDefault(team => team.TeamOid.Equals(Model.SelectedTeamOid.Value));
}
Model.ReportTypes = new List<SelectListItem>();
#if DEBUG
if(AbstractModel.HasRightToViewReports)
if (Model.HasRightToViewReports)
{
Model.ReportTypes.Add(new SelectListItem
{
@@ -100,15 +113,20 @@ namespace BeWoPlanerMobil.Controllers
Model.Queries = QueryService.GetAllQueriesOfType(QueryType.Public);
if (Model.SelectedQueryOid.HasValue)
{
Model.SelectedQuery = Model.Queries.FirstOrDefault(q => q.Oid.Equals(Model.SelectedQueryOid.Value));
}
var names2ValueListEntryTypes = new Dictionary<string, ValueListEntryType>();
foreach(var query in Model.Queries.Where(q => q.Parameter?.Any() ?? false))
foreach (var query in Model.Queries.Where(q => q.Parameter?.Any() ?? false))
{
foreach(var parameter in query.Parameter.Where(p => p.ParamType == QueryParameterType.ValueListEntryType))
foreach (var parameter in query.Parameter.Where(p => p.ParamType == QueryParameterType.ValueListEntryType))
{
var parameterName = parameter.Name;
if(!(parameterName?.Contains("_") ?? false))
if (!(parameterName?.Contains("_") ?? false))
{
continue;
}
@@ -118,12 +136,12 @@ namespace BeWoPlanerMobil.Controllers
var name = name2Type[0];
var type = name2Type[1];
if(!int.TryParse(type, out var typeEnumInt))
if (!int.TryParse(type, out var typeEnumInt))
{
continue;
}
var valueListEntryType = (ValueListEntryType) typeEnumInt;
var valueListEntryType = (ValueListEntryType)typeEnumInt;
names2ValueListEntryTypes.AddIfNotIn(new KeyValuePair<string, ValueListEntryType>(name, valueListEntryType));
}
}
@@ -135,9 +153,9 @@ namespace BeWoPlanerMobil.Controllers
Model.ValueListEntryTypes2ValueListEntries.AddOrUpdateValueInDictionary(valueListEntry.Type, valueListEntry);
});
if(Model.Employee?.EmployeeOid.HasValue ?? false)
if (Model.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
{
Model.SupportConcepts = EmployeeService.GetActiveSupportConceptsForEmployee(Model.Employee.EmployeeOid, CustomerFilterEnum.All);
Model.SupportConcepts = EmployeeService.GetActiveSupportConceptsForEmployee(Model.LoggedInEmployee.EmployeeOid, CustomerFilterEnum.All);
}
else
{
@@ -146,9 +164,9 @@ namespace BeWoPlanerMobil.Controllers
Model.SupportConcepts.DoForEach(sc => Model.CostBearer2SupportConceptRels.AddRangeIfElementsNotIn(sc.CostBearerRelations));
if(Model.SelectedCostBearer2SupportConceptRelListObject is null)
if (Model.SelectedCostBearer2SupportConceptRelListObject is null)
{
Model.SelectedCostBearer2SupportConceptRelListObject = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(f => f.CostBearer2SupportConceptOid == "-1") ?? Model.CostBearer2SupportConceptRelListObjects.First();
Model.SelectedCostBearer2SupportConceptRelListObject = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(f => f.CostBearer2SupportConceptOid == -1) ?? Model.CostBearer2SupportConceptRelListObjects.First();
}
Model.AllOrganisationForQuery = CustomerService.GetAllActiveOrganisationsCompact();
@@ -156,12 +174,12 @@ namespace BeWoPlanerMobil.Controllers
Model.AllServiceCategoriesForQueries = OperationsService.GetAllServiceCategories();
}
#endif
if(AbstractModel.HasRightToViewMitarbeiterstundenkonto)
if (Model.HasRightToViewMitarbeiterstundenkonto)
{
Model.ReportTypes.Add(new SelectListItem
{
@@ -178,6 +196,18 @@ namespace BeWoPlanerMobil.Controllers
#if DEBUG
//Model.SelectedReportType = ReportType.Berichte;
#endif
}
[Authorize]
public ActionResult ReportViewer()
{
if(Model is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return Logout();
}
return View(Model);
}
@@ -198,7 +228,7 @@ namespace BeWoPlanerMobil.Controllers
{
try
{
if(Model?.Employee?.EmployeeOid is null || reportOid is null)
if(Model?.LoggedInEmployee?.EmployeeOid is null || reportOid is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("BeWoReportPartial");
@@ -216,7 +246,7 @@ namespace BeWoPlanerMobil.Controllers
Model.SelectedQuery = selectedQuery;
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.Employee.EmployeeOid.Value}";
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.LoggedInEmployee.EmployeeOid.Value}";
var queryResult = QueryService.ExecuteQuery(selectedQuery.Oid, null);
@@ -249,7 +279,7 @@ namespace BeWoPlanerMobil.Controllers
{
try
{
if(Model?.Employee?.EmployeeOid is null || reportOid is null)
if(Model?.LoggedInEmployee?.EmployeeOid is null || reportOid is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("BerichteFormPartialView");
@@ -318,7 +348,7 @@ namespace BeWoPlanerMobil.Controllers
private string GetSiteOfOrigin()
{
if(Model?.Employee?.EmployeeOid is null)
if(Model?.LoggedInEmployee?.EmployeeOid is null)
{
return null;
}
@@ -361,6 +391,7 @@ namespace BeWoPlanerMobil.Controllers
return LeerzeichenFuerGetMethoden;
}
Model.SelectedEmployeeOid = employeeOid;
Model.SelectedEmployee = Model.AllEmployees.FirstOrDefault(employee => employee.EmployeeOid.Equals(employeeOid.Value));
return Model.SelectedEmployee?.DetailDescription ?? LeerzeichenFuerGetMethoden;
@@ -381,6 +412,7 @@ namespace BeWoPlanerMobil.Controllers
return LeerzeichenFuerGetMethoden;
}
Model.SelectedTeamOid = teamOid;
Model.SelectedTeam = Model.AllTeams.FirstOrDefault(team => team.TeamOid.Equals(teamOid.Value));
return Model.SelectedTeam?.DetailDescription ?? LeerzeichenFuerGetMethoden;
@@ -389,7 +421,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult LoadMitarbeiterstundenkonto(int ansicht, int month, int year, bool all, bool isEmployee)
{
if(Model?.Employee?.EmployeeOid is null)
if(Model?.LoggedInEmployee?.EmployeeOid is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
return PartialView("BeWoReportPartial");
@@ -397,13 +429,14 @@ namespace BeWoPlanerMobil.Controllers
var teamOids = new List<long>();
var employeeOid = Model.SelectedEmployeeOid;
var oid = isEmployee ? employeeOid ?? Model.Employee.EmployeeOid.Value : Model.SelectedTeamOid;
var oid = isEmployee ? employeeOid ?? Model.LoggedInEmployee.EmployeeOid.Value : Model.SelectedTeamOid;
if(isEmployee)
{
teamOids = null;
employeeOid = oid;
if(all || false == AbstractModel.HasRightMitarbeiterstundenkontoViewAll)
if(all || false == Model.HasRightMitarbeiterstundenkontoViewAll)
{
employeeOid = null;
}
@@ -413,16 +446,18 @@ namespace BeWoPlanerMobil.Controllers
employeeOid = oid;
}
if(false == AbstractModel.HasRightMitarbeiterstundenkontoViewAll)
if(false == Model.HasRightMitarbeiterstundenkontoViewAll)
{
employeeOid = Model.Employee.EmployeeOid;
employeeOid = Model.LoggedInEmployee.EmployeeOid;
}
}
else
{
employeeOid = null;
var teamOid = oid;
if(all || (!AbstractModel.HasRightMitarbeiterstundenkontoViewAll && !AbstractModel.HasRightMitarbeiterstundenkontoViewTeams))
if(all || (!Model.HasRightMitarbeiterstundenkontoViewAll && !Model.HasRightMitarbeiterstundenkontoViewTeams))
{
teamOid = null;
}
@@ -723,7 +758,7 @@ namespace BeWoPlanerMobil.Controllers
[Authorize]
public ActionResult ExecuteQuery()
{
if(Model?.Employee?.EmployeeOid is null)
if(Model?.LoggedInEmployee?.EmployeeOid is null)
{
TempData[TempDataConstants.DoLogoutKey] = true;
@@ -748,7 +783,7 @@ namespace BeWoPlanerMobil.Controllers
}
}
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.Employee.EmployeeOid.Value}";
var dcid = $"{MobileSessionFacade.Tenant}queryeoid{Model.LoggedInEmployee.EmployeeOid.Value}";
var queryResult = QueryService.ExecuteQuery(query.Oid, paramList);