Files
BeWoPlaner/BeWoPlanerMobil/Models/AbstractModel.cs

395 lines
18 KiB
C#
Raw Normal View History

2025-06-11 22:56:25 +02:00
using System;
using System.Collections.Generic;
using System.Linq;
2020-11-09 17:55:01 +01:00
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
2019-07-25 14:58:13 +02:00
using BS.Shared;
2021-03-17 19:51:48 +01:00
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DevExpress.XtraReports.UI;
2019-07-25 14:58:13 +02:00
namespace BeWoPlanerMobil.Models
{
public class AbstractModel
{
public bool HasRightToEditEmployeeAbsenceTimes => CheckRight(UserRightType.Employee_AllowEditAbsenceTimes);
2025-06-11 22:56:25 +02:00
public bool IsDeleteBtnVisible => CheckRight(UserRightType.ServiceRecordView_Delete);
2019-07-25 14:58:13 +02:00
2025-06-11 22:56:25 +02:00
public bool IsAllowedToSeeScheduler => LoggedInUser != null && CheckRight(UserRightType.KalenderAnsehen) || CheckRight(UserRightType.ViewAll);
2019-07-29 19:40:14 +02:00
2025-06-11 22:56:25 +02:00
public bool IsAllowedToSeeCustomers => CheckRight(UserRightType.ViewAll) || CheckRight(UserRightType.CustomerView_View) || CheckRight(UserRightType.Customer_ViewMyCustomers);
2019-07-25 14:58:13 +02:00
2025-06-11 22:56:25 +02:00
public bool IsEmployeeSelectionVisible => CheckRight(UserRightType.ServiceRecord_AllowCreationForOtherEmployees) || CheckRight(UserRightType.ServiceRecord_AllowCreationForOtherTeamMember);
2019-07-25 14:58:13 +02:00
public bool IsAllowedToSeePersons => CheckRight(UserRightType.ViewAll) || CheckRight(UserRightType.PersonView_View);
public bool IsAllowedToSeeCustomerNotes => CheckRight(UserRightType.ViewAll) || CheckRight(UserRightType.Customer_ViewNotizen);
2025-06-11 22:56:25 +02:00
public bool HasRightForGroupBookings => CheckRight(UserRightType.ServiceRecord_AllowCreatingGroupBooking);
2019-07-25 14:58:13 +02:00
2025-06-11 22:56:25 +02:00
public bool HasRightToViewCustomerAppointments => CheckRight(UserRightType.KalenderKliententermineAlleAnsehen) || CheckRight(UserRightType.CustomerView_View) || CheckRight(UserRightType.Customer_ViewMyCustomers) || CheckRight(UserRightType.Customer_ViewMyTeams);
public bool HasRightToViewEmployeeAppointments => CheckRight(UserRightType.KalenderMitarbeitertermineAnsehen) || CheckRight(UserRightType.ViewAll);
public bool HasRightToViewAllResourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnsehen) || CheckRight(UserRightType.ViewAll);
public BaseSessionModel SessionModel { get; internal set; }
2025-06-11 22:56:25 +02:00
public UserDC LoggedInUser { get; set; }
2026-04-28 12:01:37 +02:00
public long LoggedInUserOid => LoggedInUser.Employee.EmployeeOid;
public CompactEmployeeDC LoggedInCompactEmployee => LoggedInUser.Employee;
2025-06-11 22:56:25 +02:00
public MokMandator Mandator { get; set; }
2025-06-11 22:56:25 +02:00
public EmployeeDC LoggedInEmployee { get; set; }
2025-06-11 22:56:25 +02:00
public string LoggedInEmplyeeFirstNameLastName => LoggedInEmployee != null ? $"{LoggedInEmployee.FirstName} {LoggedInEmployee.LastName}" : "BeWoPlaner";
2025-06-11 22:56:25 +02:00
public bool HasRightToSeeAllSupportConcepts => CheckRight(UserRightType.SupportConcept_ViewAllSupportConcepts) || CheckRight(UserRightType.ViewAll);
2025-06-11 22:56:25 +02:00
public bool HasRightToSeeTextModules => CheckRight(UserRightType.TextbausteineNurEigeneAnsehen) || CheckRight(UserRightType.TextbausteineAlleAnsehen);
public bool HasRightToSeeOwnTextModules => CheckRight(UserRightType.TextbausteineNurEigeneAnsehen);
public bool HasRightToSeeGlobalTextModules => CheckRight(UserRightType.TextbausteineAlleAnsehen);
2020-11-09 17:55:01 +01:00
2025-06-11 22:56:25 +02:00
public bool HasRightToSeeServiceRecords => CheckRight(UserRightType.ServiceRecordView_View) && CheckRight(UserRightType.ServiceRecordView_Create);
public static string TimeOfLastAction
{
get => MobileSessionFacade.TimeOfLastAction;
set => MobileSessionFacade.TimeOfLastAction = value;
2025-06-11 22:56:25 +02:00
}
public bool HasRightToInsertRessourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAnlegen) || CheckRight(UserRightType.CreateAll);
public bool HasRightToSeeAiInZeiterfassung => HasRightToUseAiVoice || HasRightToSeeAiPromptsInZeiterfassung;
public bool HasRightToSeeAiPromptsInZeiterfassung => HasShowAIModule && CheckRight(UserRightType.AiModuleServiceRecordDocu);
public bool HasShowAIModule
{
get
{
var showAi = MobileUtils.GetSettingValue(Mandator.Settings, SettingsKeys.ShowAI);
#if DEBUG
return true;
#endif
return "1".Equals(showAi);
}
}
public bool HasShowAIVoiceModule
{
get
{
var showAiVoice = MobileUtils.GetSettingValue(Mandator.Settings, SettingsKeys.ShowAIVoice);
#if DEBUG
return true;
#endif
return "1".Equals(showAiVoice);
}
}
2026-03-30 00:07:52 +02:00
public bool HasRightToUseAiVoice
2020-11-09 17:55:01 +01:00
{
get
{
2025-06-11 22:56:25 +02:00
2026-03-30 00:07:52 +02:00
var showOwnChat = MobileUtils.GetSettingValue(Mandator.Settings, SettingsKeys.ShowChat);
#if DEBUG
showOwnChat = "1";
//tenant = "4368658435";
//var serverUrl = OwnChatHelper.ErmittleServerURL("1", tenant);
//var apikey = "hNykpBwxE1Y6NmwZBTDQOpPXW6xCgnVHjJ5lh0QDQyCefgcnimC32aZ3CwB4qQl4";
//var userid = "1432790061";
Mandator.OwnChatCode = "HcYki-8hLbQ";
return true;
#endif
if (HasShowAIVoiceModule && CheckRight(UserRightType.AiVoiceView))
2026-03-30 00:07:52 +02:00
{
if (LoggedInEmployee != null && Mandator.OwnChatCode == null)
{
Mandator.OwnChatCode = "";
if ("1".Equals(showOwnChat))
{
var es = new BeWo.Service.ServiceImplementations.EmployeeServiceImp();
var empAppCodes = es.GetAllEmployeeAppCodes(LoggedInEmployee.EmployeeOid.Value);
if (empAppCodes != null && empAppCodes.Count > 0)
{
foreach (var item in empAppCodes)
{
if (item.EmployeeCode != null && !item.EmployeeCode.Equals(""))
Mandator.OwnChatCode = item.EmployeeCode;
}
}
}
}
}
return !String.IsNullOrEmpty(Mandator.OwnChatCode);
}
}
public bool HasRightToViewQuittierungsbelege
{
get
{
2025-06-11 22:56:25 +02:00
var showEmployeeSignatureSetting = MobileUtils.GetSettingValue(Mandator.Settings, SettingsKeys.ShowSignature);
2023-06-07 09:45:20 +02:00
#if DEBUG
showEmployeeSignatureSetting = "1";
#endif
return CheckRights(new List<UserRightType> { UserRightType.Analysis_ServiceOverview_View, UserRightType.Signature_ProvideMonthlySignature }) && (showEmployeeSignatureSetting?.Equals("1") ?? false);
2020-11-09 17:55:01 +01:00
}
}
2025-06-11 22:56:25 +02:00
public bool IsAllowedToSeeSupportConceptFilter
{
get
{
2025-06-11 22:56:25 +02:00
var user = LoggedInUser;
if(user != null)
{
return
user.CheckForAtLeastOneRight(new List<UserRightType> { UserRightType.ViewAll, UserRightType.SupportConcept_ViewAllSupportConcepts }) ||
2025-06-11 22:56:25 +02:00
user.HasRight(UserRightType.SupportConcept_ViewMyTeams);
}
return false;
}
}
2025-06-11 22:56:25 +02:00
public string UserSettings
{
get
{
2025-06-11 22:56:25 +02:00
var user = LoggedInUser;
2025-06-11 22:56:25 +02:00
return user?.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value;
}
}
2025-06-11 22:56:25 +02:00
public MokSettings MokSettings { get; set; }
public bool IsAllowedToSeeCustomerFilter => LoggedInUser?.CheckForAtLeastOneRight(new List<UserRightType> { UserRightType.ViewAll, UserRightType.CustomerView_View, UserRightType.Customer_ViewMyTeams }) ?? false;
2025-06-11 22:56:25 +02:00
public bool IsAllowedToSeeMedikamentenliste
{
get
{
2025-06-11 22:56:25 +02:00
#if DEBUG
return true;
#endif
var mandator = Mandator;
var hasSetting = MobileUtils.GetSettingValue(mandator.Settings, SettingsKeys.ShowMedication) == "1";
var hasRight = CheckRight(UserRightType.Customer_ViewMedication);
return hasSetting && hasRight;
}
}
2025-06-11 22:56:25 +02:00
public bool CheckRight(UserRightType userRightType)
{
2025-06-11 22:56:25 +02:00
return LoggedInUser.HasRight(userRightType);
}
2025-06-11 22:56:25 +02:00
public bool CheckRights(List<UserRightType> userRightTypes)
{
2025-06-11 22:56:25 +02:00
return userRightTypes.All(LoggedInUser.HasRight);
}
2025-06-11 22:56:25 +02:00
public bool CheckForAtLeastOneRight(UserRightType[] rights)
{
2025-06-11 22:56:25 +02:00
return rights.Any(LoggedInUser.HasRight);
}
2025-06-11 22:56:25 +02:00
public bool HasRightToInsertEmployeeAppointments => CheckRight(UserRightType.KalenderMitarbeitertermineAnlegen) ||
CheckRight(UserRightType.CreateAll);
2025-06-11 22:56:25 +02:00
public bool HasRightToEditEmployeeAppointments => CheckRight(UserRightType.KalenderMitarbeitertermineAendern) || CheckRight(UserRightType.EditAll);
2025-06-11 22:56:25 +02:00
public bool HasRightToEditResourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAendern) || CheckRight(UserRightType.EditAll);
public bool HasRightToEditOthersResourceAppointments => CheckRight(UserRightType.KalenderRessourcentermineAndererAendern) || CheckRight(UserRightType.EditAll);
2025-06-11 22:56:25 +02:00
public bool HasRightToInsertCustomerAppointments => CheckRight(UserRightType.KalenderKliententermineAnlegen) &&
(CheckRight(UserRightType.CustomerView_View) ||
CheckRight(UserRightType.Customer_ViewMyCustomers) ||
CheckRight(UserRightType.Customer_ViewMyTeams)) ||
CheckRight(UserRightType.CreateAll);
2025-06-11 22:56:25 +02:00
public bool HasRightToEditCustomerAppointments => CheckRight(UserRightType.KalenderKliententermineAendern) || CheckRight(UserRightType.EditAll);
2025-06-11 22:56:25 +02:00
public bool ShowServiceRecordInsertedOn { get; set; }
2025-06-11 22:56:25 +02:00
public bool HasRightToViewCustomerSelectionInScheduler => CheckRight(UserRightType.CustomerView_View) || CheckRight(UserRightType.Customer_ViewMyCustomers) || CheckRight(UserRightType.Customer_ViewMyTeams);
2025-06-11 22:56:25 +02:00
public bool HasRightToViewTeams => CheckRight(UserRightType.TeamView_ViewMyTeams) || CheckRight(UserRightType.TeamView_ViewAll);
2025-06-11 22:56:25 +02:00
public bool HasRightForMultiBooking => CheckRight(UserRightType.ServiceRecord_AllowCreatingMultiBooking);
2025-06-11 22:56:25 +02:00
public bool HasRightToDeleteReceiptSignatures => CheckRight(UserRightType.ConfirmationReceiptSignatures_Delete);
2025-06-11 22:56:25 +02:00
public bool HasRightToRateGoals => CheckRight(UserRightType.BewertenInZeiterfassung);
public bool HasRightToChangePassword => CheckRight(UserRightType.UserView_AllowChangePassword) || CheckRight(UserRightType.AllowChangeOwnPassword);
2025-06-11 22:56:25 +02:00
public bool HasRightToEditCustomers => CheckRight(UserRightType.CustomerView_Edit);
2025-06-11 22:56:25 +02:00
public bool HasRightMitarbeiterstundenkontoViewAll => CheckRight(UserRightType.Mitarbeiterstundenkonto_ViewAll);
public bool HasRightMitarbeiterstundenkontoViewTeams => CheckRight(UserRightType.Mitarbeiterstundenkonto_ViewTeams);
public bool HasRightMitarbeiterstundenkontoViewSelf => CheckRight(UserRightType.Mitarbeiterstundenkonto_ViewSelf);
2025-06-11 22:56:25 +02:00
public bool HasRightToViewReports => CheckForAtLeastOneRight(new UserRightType[]
{
UserRightType.ViewAll,
UserRightType.QueryView_View,
UserRightType.Analysis_ServiceOverview_View,
UserRightType.Analysis_Auslastung_View,
UserRightType.Analysis_AuslastungAllEmployee_View,
UserRightType.Analysis_AuslastungTeam_View,
UserRightType.Kilometerauswertung_View,
UserRightType.KilometerauswertungEigene_View,
UserRightType.BewertungAuswertung_View,
UserRightType.PivotTabelleAnsehen,
UserRightType.DienstplanungAnsehen,
UserRightType.AbwesenheitsPlanungAnsehen,
UserRightType.Mitarbeiterstundenkonto_ViewAll,
UserRightType.Mitarbeiterstundenkonto_ViewSelf,
UserRightType.Mitarbeiterstundenkonto_ViewTeams,
UserRightType.Jahresbericht,
UserRightType.Auswertungen_BerichteAnsehen,
UserRightType.Auswertungen_StundenuebersichtAnsehen,
UserRightType.Auswertungen_HilfeplanuebersichtAnsehen
});
2025-06-11 22:56:25 +02:00
public bool HasRightToViewMitarbeiterstundenkonto
{
get
{
return MobileSessionFacade.Tenant != "3010479871" && CheckForAtLeastOneRight(new[] { UserRightType.Mitarbeiterstundenkonto_ViewAll, UserRightType.Mitarbeiterstundenkonto_ViewTeams, UserRightType.Mitarbeiterstundenkonto_ViewSelf });
}
}
2023-05-23 13:56:22 +02:00
2025-06-11 22:56:25 +02:00
public bool HasRightToViewDiagnosen => CheckRight(UserRightType.Customer_ViewDiagnosis);
2025-06-11 22:56:25 +02:00
public bool HasRightToProvideSingleSignature => CheckRight(UserRightType.Signature_ProvideSingleSignature);
2025-06-11 22:56:25 +02:00
public bool HasRightToViewOwnCustomersBargeldkassen => CheckRight(UserRightType.BargeldverwaltungNurEigeneAnsehen);
2025-06-11 22:56:25 +02:00
public bool HasRightToViewAllCustomersBargeldkassen => CheckRight(UserRightType.BargeldverwaltungAnsehen);
2025-06-11 22:56:25 +02:00
public bool HasRightToDeleteCustomerBargeldkassen => CheckRight(UserRightType.BargeldverwaltungLoeschen);
2025-06-11 22:56:25 +02:00
public bool HasRightToCreateCustomerBargeldkassen => CheckRight(UserRightType.BargeldverwaltungAnlegen);
2025-06-11 22:56:25 +02:00
public bool HasRightToEditCustomerBargeldkassen => CheckRight(UserRightType.BargeldverwaltungBearbeiten);
2025-06-11 22:56:25 +02:00
public bool HasRightToViewCustomerAbsenceTimes => CheckRight(UserRightType.Customer_ViewAbsenceTimes);
2025-06-11 22:56:25 +02:00
public bool HasRightToProvideEmployeeSignatureForOthers => CheckRight(UserRightType.Signature_ProvideMonthlySignatureByProxy);
2025-06-11 22:56:25 +02:00
public bool HasRightToViewBetreuung => CheckRight(UserRightType.Customer_ViewBetreuung);
2025-06-11 22:56:25 +02:00
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 });
2025-06-11 22:56:25 +02:00
//public string UserMessage { get; set; }
public XtraReport Report { get; set; }
public string ReportName { get; set; }
2025-06-11 22:56:25 +02:00
protected string GetIsNotApproved(SupportConceptCostBearerRelDC rel)
{
var result = string.Empty;
var customer = rel.SupportConcept.Customer;
if(customer.TerminationDate.HasValue)
{
var terminationReason = string.Empty;
if(!string.IsNullOrEmpty(customer.TerminationReason))
{
terminationReason += $", Begründung: {customer.TerminationReason}";
}
result += $" (Betreuung beendet am: {customer.TerminationDate:dd.MM.yyyy}{terminationReason})";
}
if(rel.ApprovedStartDate is null || rel.ApprovedEndDate is null)
{
result += " nicht bewilligt!";
}
return result;
}
public List<CompactEmployeeDC> Employees { get; set; } = new List<CompactEmployeeDC>();
public List<CompactCustomerDC> Customers { get; set; } = new List<CompactCustomerDC>();
public List<CompactPersonDC> Persons { get; set; } = new List<CompactPersonDC>();
public Dictionary<string, bool> Collapsibles2IsShown
{
get => SessionModel.Collapsibles2IsShown;
set => SessionModel.Collapsibles2IsShown = value;
}
2025-06-11 22:56:25 +02:00
public bool ShowDifferentQBInterval
2025-03-26 18:05:40 +01:00
{
get
{
2025-06-11 22:56:25 +02:00
var settingsValue = MobileUtils.GetSettingValue(Mandator.Settings, SettingsKeys.ShowServicesOverviewHalfOrWholeMonth);
2025-03-26 18:05:40 +01:00
return "1" == settingsValue;
}
}
2025-06-11 22:56:25 +02:00
public bool ShowDistanceField { get; set; }
2025-06-11 22:56:25 +02:00
public bool ShowBetrag { get; set; }
2025-05-23 15:57:18 +02:00
public bool IsServiceRecordGoalMandatory { get; set; }
public bool HasRightToViewPersonDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumentePersonen });
public bool HasRightToViewPersonUmfeld => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.Person_FamilyView });
2026-06-29 13:45:15 +02:00
#region Kalenderrechte
public bool HasRightKalenderAnsehen => CheckRight(UserRightType.KalenderAnsehen);
public bool HasRightKalenderMitarbeitertermineAnsehen => CheckRight(UserRightType.KalenderMitarbeitertermineAnsehen);
2026-06-29 13:45:15 +02:00
public bool HasRightKalenderMitarbeiterTermineAnlegen => CheckRight(UserRightType.KalenderMitarbeitertermineAnlegen);
public bool HasRightKalenderMitarbeiterTermineAendern => CheckRight(UserRightType.KalenderMitarbeitertermineAendern);
public bool HasRightKalenderKliententermineAnsehen => CheckRight(UserRightType.KalenderKliententermineAlleAnsehen);
public bool HasRightKalenderKlientenTermineAnlegen => CheckRight(UserRightType.KalenderKliententermineAnlegen);
public bool HasRightKalenderKlientenTermineAendern => CheckRight(UserRightType.KalenderKliententermineAendern);
public bool HasRightKalenderRessourcentermineAnsehen => CheckRight(UserRightType.KalenderRessourcentermineAnsehen);
public bool HasRightKalenderRessourcenTermineAnlegen => CheckRight(UserRightType.KalenderRessourcentermineAnlegen);
public bool HasRightKalenderRessourcenTermineAendern => CheckRight(UserRightType.KalenderRessourcentermineAendern);
public bool HasRightKalenderRessourcenTermineAndererAendern => CheckRight(UserRightType.KalenderRessourcentermineAndererAendern);
public bool HasRightKalenderInZeiterfassungUebernehmen => CheckRight(UserRightType.KalenderInZeiterfassungUebernehmen);
public bool HasRightKalenderInAbwesenheitUebernehmen => CheckRight(UserRightType.KalenderInAbwesenheitenUebernehmen);
#endregion
2019-07-25 14:58:13 +02:00
}
}