MoK: Bug gefixt, der das Speichern bzw. Anlegen von Gruppenbuchungen verhindert hat.
This commit is contained in:
@@ -696,7 +696,7 @@
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>False</AutoAssignPort>
|
||||
<DevelopmentServerPort>8808</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
|
||||
@@ -142,6 +142,7 @@ textarea {
|
||||
--danger: #dc3545;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--bewo-organisation: #C8C000;
|
||||
--bewo-custom-goal: #4682B4;
|
||||
--service-record-marked: #c5e3ff;
|
||||
--bewo-teams: #565999;
|
||||
@@ -1827,6 +1828,26 @@ pre code {
|
||||
background-color: #b9bbbe;
|
||||
}
|
||||
|
||||
.table-bewo-organisation,
|
||||
.table-bewo-organisation > th,
|
||||
.table-bewo-organisation > td {
|
||||
background-color: #f0edb8;
|
||||
}
|
||||
.table-bewo-organisation th,
|
||||
.table-bewo-organisation td,
|
||||
.table-bewo-organisation thead th,
|
||||
.table-bewo-organisation tbody + tbody {
|
||||
border-color: #e2de7a;
|
||||
}
|
||||
|
||||
.table-hover .table-bewo-organisation:hover {
|
||||
background-color: #ece8a3;
|
||||
}
|
||||
.table-hover .table-bewo-organisation:hover > td,
|
||||
.table-hover .table-bewo-organisation:hover > th {
|
||||
background-color: #ece8a3;
|
||||
}
|
||||
|
||||
.table-bewo-custom-goal,
|
||||
.table-bewo-custom-goal > th,
|
||||
.table-bewo-custom-goal > td {
|
||||
@@ -2935,6 +2956,36 @@ fieldset:disabled a.btn {
|
||||
box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
|
||||
}
|
||||
|
||||
.btn-bewo-organisation {
|
||||
color: #212529;
|
||||
background-color: #C8C000;
|
||||
border-color: #C8C000;
|
||||
}
|
||||
.btn-bewo-organisation:hover {
|
||||
color: #fff;
|
||||
background-color: #a29b00;
|
||||
border-color: #958f00;
|
||||
}
|
||||
.btn-bewo-organisation:focus, .btn-bewo-organisation.focus {
|
||||
color: #fff;
|
||||
background-color: #a29b00;
|
||||
border-color: #958f00;
|
||||
box-shadow: 0 0 0 0.2rem rgba(175, 169, 6, 0.5);
|
||||
}
|
||||
.btn-bewo-organisation.disabled, .btn-bewo-organisation:disabled {
|
||||
color: #212529;
|
||||
background-color: #C8C000;
|
||||
border-color: #C8C000;
|
||||
}
|
||||
.btn-bewo-organisation:not(:disabled):not(.disabled):active, .btn-bewo-organisation:not(:disabled):not(.disabled).active, .show > .btn-bewo-organisation.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #958f00;
|
||||
border-color: #888300;
|
||||
}
|
||||
.btn-bewo-organisation:not(:disabled):not(.disabled):active:focus, .btn-bewo-organisation:not(:disabled):not(.disabled).active:focus, .show > .btn-bewo-organisation.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(175, 169, 6, 0.5);
|
||||
}
|
||||
|
||||
.btn-bewo-custom-goal {
|
||||
color: #fff;
|
||||
background-color: #4682B4;
|
||||
@@ -3615,6 +3666,31 @@ fieldset:disabled a.btn {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-bewo-organisation {
|
||||
color: #C8C000;
|
||||
border-color: #C8C000;
|
||||
}
|
||||
.btn-outline-bewo-organisation:hover {
|
||||
color: #212529;
|
||||
background-color: #C8C000;
|
||||
border-color: #C8C000;
|
||||
}
|
||||
.btn-outline-bewo-organisation:focus, .btn-outline-bewo-organisation.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(200, 192, 0, 0.5);
|
||||
}
|
||||
.btn-outline-bewo-organisation.disabled, .btn-outline-bewo-organisation:disabled {
|
||||
color: #C8C000;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-outline-bewo-organisation:not(:disabled):not(.disabled):active, .btn-outline-bewo-organisation:not(:disabled):not(.disabled).active, .show > .btn-outline-bewo-organisation.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: #C8C000;
|
||||
border-color: #C8C000;
|
||||
}
|
||||
.btn-outline-bewo-organisation:not(:disabled):not(.disabled):active:focus, .btn-outline-bewo-organisation:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-bewo-organisation.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(200, 192, 0, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-bewo-custom-goal {
|
||||
color: #4682B4;
|
||||
border-color: #4682B4;
|
||||
@@ -5886,6 +5962,19 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.badge-bewo-organisation {
|
||||
color: #212529;
|
||||
background-color: #C8C000;
|
||||
}
|
||||
a.badge-bewo-organisation:hover, a.badge-bewo-organisation:focus {
|
||||
color: #212529;
|
||||
background-color: #958f00;
|
||||
}
|
||||
a.badge-bewo-organisation:focus, a.badge-bewo-organisation.focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem rgba(200, 192, 0, 0.5);
|
||||
}
|
||||
|
||||
.badge-bewo-custom-goal {
|
||||
color: #fff;
|
||||
background-color: #4682B4;
|
||||
@@ -6235,6 +6324,18 @@ a.badge-bewo-report:focus, a.badge-bewo-report.focus {
|
||||
color: #040505;
|
||||
}
|
||||
|
||||
.alert-bewo-organisation {
|
||||
color: #686400;
|
||||
background-color: #f4f2cc;
|
||||
border-color: #f0edb8;
|
||||
}
|
||||
.alert-bewo-organisation hr {
|
||||
border-top-color: #ece8a3;
|
||||
}
|
||||
.alert-bewo-organisation .alert-link {
|
||||
color: #353300;
|
||||
}
|
||||
|
||||
.alert-bewo-custom-goal {
|
||||
color: #24445e;
|
||||
background-color: #dae6f0;
|
||||
@@ -6784,6 +6885,20 @@ a.badge-bewo-report:focus, a.badge-bewo-report.focus {
|
||||
border-color: #1b1e21;
|
||||
}
|
||||
|
||||
.list-group-item-bewo-organisation {
|
||||
color: #686400;
|
||||
background-color: #f0edb8;
|
||||
}
|
||||
.list-group-item-bewo-organisation.list-group-item-action:hover, .list-group-item-bewo-organisation.list-group-item-action:focus {
|
||||
color: #686400;
|
||||
background-color: #ece8a3;
|
||||
}
|
||||
.list-group-item-bewo-organisation.list-group-item-action.active {
|
||||
color: #fff;
|
||||
background-color: #686400;
|
||||
border-color: #686400;
|
||||
}
|
||||
|
||||
.list-group-item-bewo-custom-goal {
|
||||
color: #24445e;
|
||||
background-color: #cbdcea;
|
||||
@@ -7837,6 +7952,16 @@ button.bg-dark:focus {
|
||||
background-color: #1d2124 !important;
|
||||
}
|
||||
|
||||
.bg-bewo-organisation {
|
||||
background-color: #C8C000 !important;
|
||||
}
|
||||
|
||||
a.bg-bewo-organisation:hover, a.bg-bewo-organisation:focus,
|
||||
button.bg-bewo-organisation:hover,
|
||||
button.bg-bewo-organisation:focus {
|
||||
background-color: #958f00 !important;
|
||||
}
|
||||
|
||||
.bg-bewo-custom-goal {
|
||||
background-color: #4682B4 !important;
|
||||
}
|
||||
@@ -8077,6 +8202,10 @@ button.bg-bewo-report:focus {
|
||||
border-color: #343a40 !important;
|
||||
}
|
||||
|
||||
.border-bewo-organisation {
|
||||
border-color: #C8C000 !important;
|
||||
}
|
||||
|
||||
.border-bewo-custom-goal {
|
||||
border-color: #4682B4 !important;
|
||||
}
|
||||
@@ -11180,6 +11309,14 @@ a.text-dark:hover, a.text-dark:focus {
|
||||
color: #121416 !important;
|
||||
}
|
||||
|
||||
.text-bewo-organisation {
|
||||
color: #C8C000 !important;
|
||||
}
|
||||
|
||||
a.text-bewo-organisation:hover, a.text-bewo-organisation:focus {
|
||||
color: #7c7700 !important;
|
||||
}
|
||||
|
||||
.text-bewo-custom-goal {
|
||||
color: #4682B4 !important;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
$theme-colors: ("bewo-custom-goal": #4682B4, "service-record-marked": #c5e3ff, "bewo-teams": #565999, "bewo-goal-rating": #0000ff,"bewo-dev": #00cf7c, "primary": #FF5A00, "bewo-customers": #3b7799, "bewo-service-records": #c80000, "bewo-calendar": #04b4d0, "bewo-is-about-to-expire": #FF0000, "bewo-expires-in-three-months": #FF9400, "bewo-group-booking": #f9e79f, "bewo-customer-card-header": #AB4A07, "bewo-employee": #45993B, "bewo-resource": #04B4D0, "bewo-task-red": #993B3B, "bewo-report": #995E3B);
|
||||
$theme-colors: ("bewo-organisation" : #C8C000, "bewo-custom-goal": #4682B4, "service-record-marked": #c5e3ff, "bewo-teams": #565999, "bewo-goal-rating": #0000ff,"bewo-dev": #00cf7c, "primary": #FF5A00, "bewo-customers": #3b7799, "bewo-service-records": #c80000, "bewo-calendar": #04b4d0, "bewo-is-about-to-expire": #FF0000, "bewo-expires-in-three-months": #FF9400, "bewo-group-booking": #f9e79f, "bewo-customer-card-header": #AB4A07, "bewo-employee": #45993B, "bewo-resource": #04B4D0, "bewo-task-red": #993B3B, "bewo-report": #995E3B);
|
||||
|
||||
textarea {
|
||||
min-height: 150px !important;
|
||||
|
||||
@@ -1875,7 +1875,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
if(firstNode.ServiceAccountings.Count == 0)
|
||||
if(firstNode.ServiceAccountings.Count == 0 || result.Count == 0)
|
||||
{
|
||||
var allServiceDescriptions = OperationsService.GetAllServiceDescriptions().Where(sd => sd.Category.OhneHilfeplan != AccountingvisibilityType.NichtKlientenbezogen).ToList();
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ using BeWoPlanerMobil.Util;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.XtraEditors.Filtering.Templates;
|
||||
|
||||
namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
@@ -61,6 +63,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.SelectedYear = Model.SelectedYear ?? first.Year;
|
||||
Model.SelectedMonth = Model.SelectedMonth ?? first.Month;
|
||||
|
||||
|
||||
|
||||
Model.AllEmployees = AbstractModel.HasRightMitarbeiterstundenkontoViewAll
|
||||
? EmployeeService.GetAllActiveEmployeesCompact()
|
||||
: new List<CompactEmployeeDC> { MobileSessionFacade.LoggedInCompactEmployee };
|
||||
@@ -81,30 +85,17 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.ReportTypes = new List<SelectListItem>();
|
||||
|
||||
#if DEBUG
|
||||
//if(AbstractModel.HasRightToViewReports)
|
||||
//{
|
||||
// Model.ReportTypes.Add(new SelectListItem
|
||||
// {
|
||||
// Text = "Berichte",
|
||||
// Value = "0"
|
||||
// });
|
||||
//}
|
||||
#endif
|
||||
|
||||
if(AbstractModel.HasRightToViewMitarbeiterstundenkonto)
|
||||
if(AbstractModel.HasRightToViewReports)
|
||||
{
|
||||
Model.ReportTypes.Add(new SelectListItem
|
||||
{
|
||||
Text = "Mitarbeiterstundenkonto",
|
||||
Value = "1"
|
||||
Text = "Berichte",
|
||||
Value = "0"
|
||||
});
|
||||
}
|
||||
|
||||
Model.SelectedReportType = ReportType.Mitarbeiterstundenkonto;
|
||||
|
||||
#if DEBUG
|
||||
//Model.SelectedReportType = ReportType.Berichte;
|
||||
#endif
|
||||
Model.AllEmployeesForQueries = EmployeeService.GetAllActiveEmployeesCompact();
|
||||
Model.AllCustomersForQueries = EmployeeService.GetActiveCompactCustomersForEmployee(null);
|
||||
|
||||
Model.Queries = QueryService.GetAllQueriesOfType(QueryType.Public);
|
||||
|
||||
@@ -117,20 +108,32 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.SupportConcepts = new List<SupportConceptDC>();
|
||||
}
|
||||
|
||||
Model.SupportConcepts.DoForEach(sc => Model.CostBearer2SupportConceptRels.AddRangeIfElementsNotIn(sc.CostBearerRelations));
|
||||
|
||||
if(Model.SelectedCostBearer2SupportConceptRelListObject is null)
|
||||
{
|
||||
Model.SelectedCostBearer2SupportConceptRelListObject = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(f => f.CostBearer2SupportConceptOid == "-1") ?? Model.CostBearer2SupportConceptRelListObjects.First();
|
||||
}
|
||||
|
||||
if(Model.SelectedMonthForBericht is null)
|
||||
{
|
||||
Model.SelectedMonthForBericht = Model.Months.FirstOrDefault(m => m.Value.Equals(DateTime.Today.Month.ToString()));
|
||||
}
|
||||
Model.AllOrganisationForQuery = CustomerService.GetAllActiveOrganisationsCompact();
|
||||
Model.AllTeamsForQueries = EmployeeService.GetAllActiveCompactTeamsForEmployee(null);
|
||||
#endif
|
||||
|
||||
if(Model.SelectedYearForBericht is null || Model.SelectedYearForBericht.Value < DateTime.Today.AddYears(-10).Year)
|
||||
if(AbstractModel.HasRightToViewMitarbeiterstundenkonto)
|
||||
{
|
||||
Model.SelectedYearForBericht = DateTime.Today.Year;
|
||||
Model.ReportTypes.Add(new SelectListItem
|
||||
{
|
||||
Text = "Mitarbeiterstundenkonto",
|
||||
Value = "1"
|
||||
});
|
||||
}
|
||||
#if !DEBUG
|
||||
Model.SelectedReportType = ReportType.Mitarbeiterstundenkonto;
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
//Model.SelectedReportType = ReportType.Berichte;
|
||||
#endif
|
||||
|
||||
return View(Model);
|
||||
}
|
||||
@@ -210,6 +213,26 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
Model.SelectedQuery = selectedQuery;
|
||||
|
||||
foreach(var parameter in selectedQuery?.Parameter ?? new List<QueryParamDC>())
|
||||
{
|
||||
if(parameter.QueryParameterOid is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(parameter.ParamType == QueryParameterType.Year)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameter.QueryParameterOid.Value, new SelectedValue(QueryParameterType.Year, DateTime.Today.Year));
|
||||
}
|
||||
|
||||
if(parameter.ParamType == QueryParameterType.Month)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameter.QueryParameterOid.Value, new SelectedValue(QueryParameterType.Month, DateTime.Today.AddMonths(-1)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return PartialView("BerichteFormPartialView", Model);
|
||||
}
|
||||
catch(Exception exception)
|
||||
@@ -416,7 +439,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult SelectMonth(string selectedMonth)
|
||||
public ActionResult SelectQueryCustomValue(string customValue, long? paramOid)
|
||||
{
|
||||
if(Model?.SelectedQuery is null)
|
||||
{
|
||||
@@ -424,18 +447,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("BerichteFormPartialView");
|
||||
}
|
||||
|
||||
var month = Model.Months.FirstOrDefault(f => f.Value.Equals(selectedMonth));
|
||||
|
||||
if(month != null)
|
||||
{
|
||||
Model.SelectedMonthForBericht = month;
|
||||
}
|
||||
|
||||
return PartialView("BerichteFormPartialView", Model);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public ActionResult SelectYear(string selectedYear)
|
||||
public ActionResult SelectValueListEntry(long? valueListEntryOid, int paramType, int index)
|
||||
{
|
||||
if(Model?.SelectedQuery is null)
|
||||
{
|
||||
@@ -443,9 +459,103 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("BerichteFormPartialView");
|
||||
}
|
||||
|
||||
if(int.TryParse(selectedYear, out var year))
|
||||
if(valueListEntryOid.HasValue)
|
||||
{
|
||||
Model.SelectedYearForBericht = year;
|
||||
var type = (QueryParameterType)paramType;
|
||||
var valueListEntry = Model.AllValueListEntriesForQuery.FirstOrDefault(vle => vle.ValueListEntryOid.HasValue && vle.ValueListEntryOid.Value.Equals(valueListEntryOid));
|
||||
|
||||
if(valueListEntry != null)
|
||||
{
|
||||
var selectedValue = new SelectedValue(type, valueListEntry);
|
||||
|
||||
Model.SelectedValues.AddOrUpdate(index, selectedValue);
|
||||
}
|
||||
}
|
||||
|
||||
return PartialView("BerichteFormPartialView", Model);
|
||||
}
|
||||
|
||||
// ToDo: Was bei Datumsangaben etc. machen? -> String
|
||||
[Authorize]
|
||||
public ActionResult SelectQueryParameter(long? objectOid, int parameterType, long? parameterOid, string textValue)
|
||||
{
|
||||
if(Model?.SelectedQuery is null)
|
||||
{
|
||||
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||
return PartialView("BerichteFormPartialView");
|
||||
}
|
||||
|
||||
if(objectOid.HasValue && parameterOid.HasValue)
|
||||
{
|
||||
var queryParameterType = (QueryParameterType)parameterType;
|
||||
|
||||
switch(queryParameterType)
|
||||
{
|
||||
case QueryParameterType.Custom:
|
||||
throw new NotImplementedException("Der QueryParameterType.Custom wird noch nicht unterstützt!");
|
||||
break;
|
||||
case QueryParameterType.Customer:
|
||||
var selectedCustomer = Model.AllCustomersForQueries.FirstOrDefault(customer => customer.CustomerOid.Equals(objectOid.Value));
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedCustomer));
|
||||
break;
|
||||
case QueryParameterType.Employee:
|
||||
var selectedEmployee = Model.AllEmployeesForQueries.FirstOrDefault(employee => employee.EmployeeOid.Equals(objectOid.Value));
|
||||
if(selectedEmployee != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedEmployee));
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Organisation:
|
||||
var selectedOrganisation = Model.AllOrganisationForQuery.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(objectOid.Value));
|
||||
|
||||
if(selectedOrganisation != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedOrganisation));
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Text:
|
||||
break;
|
||||
case QueryParameterType.Date:
|
||||
break;
|
||||
case QueryParameterType.DateRange:
|
||||
break;
|
||||
case QueryParameterType.Month:
|
||||
break;
|
||||
case QueryParameterType.ServiceCategory:
|
||||
var selectedServiceCategory = Model.AllServiceCategoriesForQueries.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid.HasValue && serviceCategory.ServiceCategoryOid.Value.Equals(objectOid));
|
||||
|
||||
if(selectedServiceCategory != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedServiceCategory));
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.SupportConcept:
|
||||
var costBearer2SupportConceptRelListObj = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(costBearer2SupportConceptRelListObject => costBearer2SupportConceptRelListObject.CostBearer2SupportConceptOid.Equals(objectOid.ToString()));
|
||||
|
||||
if(costBearer2SupportConceptRelListObj != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, costBearer2SupportConceptRelListObj));
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Team:
|
||||
var selectedTeam = Model.AllTeamsForQueries.FirstOrDefault(team => team.TeamOid.Equals(objectOid.Value));
|
||||
|
||||
if(selectedTeam != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedTeam));
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.ValueListEntryType:
|
||||
var selectedValueListEntry = Model.AllValueListEntriesForQuery.FirstOrDefault(valueListEntry => valueListEntry.ValueListEntryOid?.Equals(objectOid.Value) ?? false);
|
||||
|
||||
if(selectedValueListEntry != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedValueListEntry));
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Year:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return PartialView("BerichteFormPartialView", Model);
|
||||
|
||||
@@ -5,6 +5,7 @@ using BeWoPlanerMobil.Util;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using DevExpress.XtraReports.UI;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
@@ -242,5 +243,9 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<CompactEmployeeDC> Employees { get; set; } = new List<CompactEmployeeDC>();
|
||||
|
||||
public List<CompactCustomerDC> Customers { get; set; } = new List<CompactCustomerDC>();
|
||||
}
|
||||
}
|
||||
@@ -188,8 +188,6 @@ namespace BeWoPlanerMobil.Models
|
||||
public long ServiceRecordOid { get; set; }
|
||||
|
||||
public List<SupportConceptDC> SupportConcepts { get; set; }
|
||||
// ToDo: Veraltet!
|
||||
public List<ServiceCategoryModel> ServiceCategories { get; set; }
|
||||
|
||||
public List<TextModuleDC> Textbausteine { get; set; } = new List<TextModuleDC>();
|
||||
|
||||
@@ -290,18 +288,6 @@ namespace BeWoPlanerMobil.Models
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<SelectListItem> ServiceCategoryListItems
|
||||
{
|
||||
get
|
||||
{
|
||||
var result = new List<SelectListItem>();
|
||||
|
||||
result.AddRange(ServiceCategories.Select(item => new SelectListItem {Value = item.ServiceCategoryOid.Value.ToString(), Text = item.Name}).ToList());
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<SelectListItem> GroupOfPeopleListItems
|
||||
{
|
||||
get
|
||||
@@ -390,14 +376,11 @@ namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
var result = new List<ServiceDescriptionDC>();
|
||||
|
||||
foreach(var serviceCategoryModel in ServiceCategories)
|
||||
{
|
||||
foreach(var serviceDescription in serviceCategoryModel.ServiceDescriptions)
|
||||
{
|
||||
result.AddIfNotIn(serviceDescription);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var category2Descriptions in Categories2Descriptions)
|
||||
{
|
||||
result.AddRangeIfElementsNotIn(category2Descriptions.Value);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,10 @@ using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using BeWo.Report;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using DevExpress.XtraRichEdit.Import.Html;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
@@ -177,8 +179,37 @@ namespace BeWoPlanerMobil.Models
|
||||
}
|
||||
}
|
||||
|
||||
public SelectListItem SelectedMonthForBericht { get; set; }
|
||||
public int? SelectedYearForBericht { get; set; }
|
||||
public List<ServiceCategoryDC> AllServiceCategoriesForQueries { get; set; } = new List<ServiceCategoryDC>();
|
||||
|
||||
public List<CompactCustomerDC> AllCustomersForQueries { get; set; } = new List<CompactCustomerDC>();
|
||||
|
||||
public List<CompactEmployeeDC> AllEmployeesForQueries { get; set; } = new List<CompactEmployeeDC>();
|
||||
|
||||
public List<CompactTeamDC> AllTeamsForQueries { get; set; } = new List<CompactTeamDC>();
|
||||
|
||||
public List<CompactOrganisationDC> AllOrganisationForQuery { get; set; } = new List<CompactOrganisationDC>();
|
||||
|
||||
public List<ValueListEntryDC> AllValueListEntriesForQuery { get; set; } = new List<ValueListEntryDC>();
|
||||
|
||||
public List<string> AllCustomValuesForQuery { get; set; } = new List<string>();
|
||||
|
||||
public Dictionary<long, SelectedValue> SelectedValues { get; set; } = new Dictionary<long, SelectedValue>();
|
||||
|
||||
|
||||
|
||||
public List<SupportConceptCostBearerRelDC> CostBearer2SupportConceptRels { get; set; } = new List<SupportConceptCostBearerRelDC>();
|
||||
}
|
||||
|
||||
public struct SelectedValue
|
||||
{
|
||||
public QueryParameterType ParameterType { get; }
|
||||
public object Parameter { get; }
|
||||
|
||||
public SelectedValue(QueryParameterType parameterType, object parameter)
|
||||
{
|
||||
ParameterType = parameterType;
|
||||
Parameter = parameter;
|
||||
}
|
||||
}
|
||||
|
||||
public enum ReportType
|
||||
|
||||
@@ -414,20 +414,7 @@ function getStartAndEndDate(prefix) {
|
||||
return [startDate, endDate];
|
||||
}
|
||||
|
||||
function textCategoryOnClick(categoryId) {
|
||||
var childrenContainer = $("#" + categoryId + "-children-container");
|
||||
var iconSpan = $("#" + categoryId + "-icon-span");
|
||||
|
||||
var displayValue = childrenContainer.css("display");
|
||||
|
||||
var classToRemove = displayValue === "block" ? "fa-angle-down" : "fa-angle-up";
|
||||
var classToAdd = displayValue === "block" ? "fa-angle-up" : "fa-angle-down";
|
||||
|
||||
iconSpan.removeClass(classToRemove);
|
||||
iconSpan.addClass(classToAdd);
|
||||
|
||||
childrenContainer.toggle();
|
||||
}
|
||||
|
||||
function supportConceptSearchOnChange() {
|
||||
try {
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace BeWoPlanerMobil.Util
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
||||
public long Oid { get; set; }
|
||||
public long Oid { get; }
|
||||
|
||||
public long? ParentOid { get; set; }
|
||||
|
||||
@@ -32,5 +32,15 @@ namespace BeWoPlanerMobil.Util
|
||||
{
|
||||
return $"{Name}; Text: {Text}";
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if(obj is TextbausteinDisplayItem y)
|
||||
{
|
||||
return Oid.Equals(y.Oid);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,45 +70,7 @@
|
||||
return "@Model.EinheitZeiterfassung" === "0";
|
||||
}
|
||||
|
||||
function textModuleOnClick(textModuleOid) {
|
||||
var focusedDokuFeld;
|
||||
|
||||
var dokufeldId = "#dokufeld";
|
||||
var dokuTextareaId = "#doku-textarea-";
|
||||
var textareaContainerId = "#doku_";
|
||||
|
||||
if("@Model.IsInMultiBookingMode".toLocaleLowerCase() === "true") {
|
||||
dokufeldId = "#mb-dokufeld";
|
||||
dokuTextareaId = "#mb-doku-textarea-";
|
||||
textareaContainerId = "#mb-doku_";
|
||||
}
|
||||
|
||||
$.get(getLoadCompleteTextbausteinByOidUrl(), { pTextbausteinOid: textModuleOid }).done(function(textModuleText) {
|
||||
if ($(dokufeldId).length > 0) {
|
||||
focusedDokuFeld = $(dokufeldId);
|
||||
} else {
|
||||
var numberOfDokutypes = getNumberOfDokutypes();
|
||||
|
||||
for (var i = 0; i < numberOfDokutypes; i++) {
|
||||
var currentElement = $("#doku_" + i);
|
||||
|
||||
if (currentElement.css("display") !== "none") {
|
||||
focusedDokuFeld = $(dokuTextareaId + i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var cursorPosition = focusedDokuFeld.prop("selectionStart");
|
||||
var v = focusedDokuFeld.val();
|
||||
var textBefore = v.substring(0, cursorPosition);
|
||||
var textAfter = v.substring(cursorPosition, v.length);
|
||||
|
||||
focusedDokuFeld.val(textBefore + textModuleText + textAfter);
|
||||
|
||||
$("#textbausteine-popup").modal("hide");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$(function() {
|
||||
$("#start-date-picker").datetimepicker({
|
||||
@@ -427,10 +389,6 @@
|
||||
return "@Url.Action("SetServiceDescription")";
|
||||
}
|
||||
|
||||
function getLoadCompleteTextbausteinByOidUrl() {
|
||||
return "@Url.Action("LoadCompleteTextbausteinByOid")";
|
||||
}
|
||||
|
||||
function getNumberOfDokutypes() {
|
||||
return @Model.NumberOfDokuTypes;
|
||||
}
|
||||
|
||||
@@ -12,12 +12,69 @@
|
||||
}
|
||||
}
|
||||
|
||||
<script type="text/javascript">
|
||||
function textCategoryOnClick(categoryId) {
|
||||
var childrenContainer = $(`#${categoryId}-children-container`);
|
||||
var iconSpan = $(`#${categoryId}-icon-span`);
|
||||
|
||||
var displayValue = childrenContainer.css("display");
|
||||
|
||||
var classToRemove = displayValue === "block" ? "fa-angle-up" : "fa-angle-down";
|
||||
var classToAdd = displayValue === "block" ? "fa-angle-down" : "fa-angle-up";
|
||||
|
||||
iconSpan.removeClass(classToRemove);
|
||||
iconSpan.addClass(classToAdd);
|
||||
|
||||
childrenContainer.toggle();
|
||||
}
|
||||
|
||||
function textModuleOnClick(textModuleOid) {
|
||||
var focusedDokuFeld;
|
||||
|
||||
var dokufeldId = "#dokufeld";
|
||||
var dokuTextareaId = "#doku-textarea-";
|
||||
var textareaContainerId = "#doku_";
|
||||
|
||||
if("@Model.IsInMultiBookingMode".toLocaleLowerCase() === "true") {
|
||||
dokufeldId = "#mb-dokufeld";
|
||||
dokuTextareaId = "#mb-doku-textarea-";
|
||||
textareaContainerId = "#mb-doku_";
|
||||
}
|
||||
|
||||
$.get("@Url.Action("LoadCompleteTextbausteinByOid")", { pTextbausteinOid: textModuleOid }).done(function(textModuleText) {
|
||||
if ($(dokufeldId).length > 0) {
|
||||
focusedDokuFeld = $(dokufeldId);
|
||||
} else {
|
||||
var numberOfDokutypes = getNumberOfDokutypes();
|
||||
|
||||
for (var i = 0; i < numberOfDokutypes; i++) {
|
||||
var currentElement = $(`#doku_${i}`);
|
||||
|
||||
if (currentElement.css("display") !== "none") {
|
||||
focusedDokuFeld = $(dokuTextareaId + i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var cursorPosition = focusedDokuFeld.prop("selectionStart");
|
||||
var v = focusedDokuFeld.val();
|
||||
var textBefore = v.substring(0, cursorPosition);
|
||||
var textAfter = v.substring(cursorPosition, v.length);
|
||||
|
||||
focusedDokuFeld.val(textBefore + textModuleText + textAfter);
|
||||
|
||||
$("#textbausteine-popup").modal("hide");
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@helper BuildTextModuleTree(TextbausteinDisplayItem textModule)
|
||||
{
|
||||
if(textModule.IsParent)
|
||||
{
|
||||
<a href="#" class="list-group-item list-group-item-action mx-0 px-1" onclick="textCategoryOnClick('@textModule.Oid')">
|
||||
<span id="@textModule.Oid-icon-span" class="fas fa-angle-up mr-1"></span>
|
||||
<span id="@textModule.Oid-icon-span" class="fas fa-angle-down mr-1"></span>
|
||||
@textModule.Name
|
||||
</a>
|
||||
<div id="@textModule.Oid-children-container" style="display: none;" class="list-group list-group-item mx-0 px-1">
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<!-- w-auto -->
|
||||
<div class="btn-group role="group" style="width: 150px !important;">
|
||||
<div class="btn-group" role="group" style="width: 150px !important;">
|
||||
@if(AbstractModel.HasRightToDeleteReceiptSignatures && result.EmployeeSignatureOids.Any())
|
||||
{
|
||||
<button class="btn btn-danger mx-0" type="button" onclick="deleteEmployeeSignature('#collapse-result-@result.Identifier', '@result.Identifier', '@employeeName', '@result.CustomerName', '@timeSpan_ssp')">
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
@using BeWoPlanerMobil.Util
|
||||
@using BS.Shared
|
||||
@using BS.Shared.DataContracts
|
||||
@using BS.Shared.DataContracts.Compact
|
||||
@model BeWoPlanerMobil.Models.ReportViewerModel
|
||||
|
||||
@{
|
||||
@@ -37,29 +39,147 @@
|
||||
*@
|
||||
|
||||
<script type="text/javascript">
|
||||
function selectCostBearer2SupportConceptRel(relOid) {
|
||||
$(function () {
|
||||
$("#query-date-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "L"
|
||||
});
|
||||
|
||||
$("#query-date-range-start-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "L"
|
||||
});
|
||||
|
||||
$("#query-date-range-end-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "L"
|
||||
});
|
||||
});
|
||||
|
||||
function selectCostBearer2SupportConceptRel(relOid, parameterType, parameterOid) {
|
||||
try {
|
||||
$("#berichte-form-container").load("@Url.Action("SelectCostBearer2SupportConceptRel")", {relOid: relOid});
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: relOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectMonth() {
|
||||
function selectMonth(parameterType, parameterOid) {
|
||||
try {
|
||||
var selectedMonth = $("#month-select").find(":selected").val();
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectMonth")", {selectedMonth: selectedMonth});
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: selectedMonth.toString()});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectYear() {
|
||||
function selectYear(parameterType, parameterOid) {
|
||||
try {
|
||||
var selectedYear = $("#year-select").find(":selected").val();
|
||||
var selectedYear = $("#month-year-select").find(":selected").val();
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectYear")", {selectedYear: selectedYear});
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: selectedYear.toString()});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function onDropdownParameterInput(element) {
|
||||
try {
|
||||
var searchText = $(element).val();
|
||||
|
||||
var id = $(element).attr("id");
|
||||
|
||||
var prefix = "";
|
||||
|
||||
if (id !== undefined && id !== null && id.includes("-")) {
|
||||
var splitId = id.split("-");
|
||||
|
||||
if (splitId.length > 1) {
|
||||
prefix = splitId[1];
|
||||
}
|
||||
}
|
||||
|
||||
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||
$(`#query-${prefix}-dropdown-menu .dropdown-item`).show();
|
||||
return;
|
||||
}
|
||||
|
||||
var menuItems = $(`#query-${prefix}-dropdown-menu .dropdown-item`);
|
||||
|
||||
menuItems.hide();
|
||||
|
||||
$.each(menuItems,
|
||||
function (index, item) {
|
||||
var itemText = $(item).text();
|
||||
|
||||
if(itemText.includes(searchText)) {
|
||||
$(item).show();
|
||||
}
|
||||
});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function resetDropdownParameterSearch(prefix) {
|
||||
try {
|
||||
$(`#query-${prefix}-search-input`).val("");
|
||||
$(`#query-${prefix}-dropdown-menu .dropdown-item`).show();
|
||||
|
||||
var e = window.event;
|
||||
e.cancelBubble = true;
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectEmployeeParameter(element, employeeOid, parameterType, parameterOid) {
|
||||
try {
|
||||
$("#dropdownEmployeesMenu").text($(element).text());
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: employeeOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectCustomerParameter(element, customerOid, parameterType, parameterOid) {
|
||||
try {
|
||||
$("#dropdownCustomersMenu").text($(element).text());
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: customerOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectOrganisationParameter(element, organisationOid, parameterType, parameterOid) {
|
||||
try {
|
||||
$("#dropdownOrganisationsMenu").text($(element).text());
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: organisationOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectServiceCategoryParameter(element, parameterType, parameterOid) {
|
||||
try {
|
||||
var serviceCategoryOid = $(element).find(":selected").val();
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: serviceCategoryOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function selectTeamParameter(element, teamOid, parameterType, parameterOid) {
|
||||
try {
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: teamOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
@@ -69,141 +189,461 @@
|
||||
@if(Model.SelectedQuery != null && Model.SelectedQuery.Parameter != null && Model.SelectedQuery.Parameter.Count > 0)
|
||||
{
|
||||
<div class="mt-3">
|
||||
@foreach(var parameter in Model.SelectedQuery.Parameter)
|
||||
{
|
||||
switch(parameter.ParamType)
|
||||
<hr />
|
||||
@for(var i = 0; i < Model.SelectedQuery.Parameter.Count; i++)
|
||||
{
|
||||
case QueryParameterType.SupportConcept:
|
||||
var selectedSuportConceptTimeSpanColorClass = Model.SelectedCostBearer2SupportConceptRelListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : Model.SelectedCostBearer2SupportConceptRelListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
<div class="form-row">
|
||||
<div>
|
||||
<div class="container p-0">
|
||||
<div class="row">
|
||||
<div class="col mt-3">
|
||||
var parameter = Model.SelectedQuery.Parameter[i];
|
||||
var parameterType = (int) parameter.ParamType;
|
||||
var parameterOid = parameter.QueryParameterOid;
|
||||
|
||||
switch(parameter.ParamType)
|
||||
{
|
||||
case QueryParameterType.SupportConcept:
|
||||
var selectedSuportConceptTimeSpanColorClass = Model.SelectedCostBearer2SupportConceptRelListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : Model.SelectedCostBearer2SupportConceptRelListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="container p-0">
|
||||
<div class="row">
|
||||
<div class="col mt-3">
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline" data-toggle="modal" data-target="#supportConceptList">
|
||||
<div class="d-flex">
|
||||
<h5 class="mb-1 text-dark text-left" id="selectedSupportConceptCustomerInfo">@Model.SelectedCostBearer2SupportConceptRelListObject.NameAndDateOfBirth</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @selectedSuportConceptTimeSpanColorClass" id="selectedSupportConceptInfo">
|
||||
@Model.SelectedCostBearer2SupportConceptRelListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal" role="dialog" tabindex="-1" id="supportConceptList">
|
||||
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Hilfeplanauswahl</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Hilfeplansuche -->
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="supportConceptSearchOnChange()" id="support-concept-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSupportConceptSearch()">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Hilfeplanliste -->
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline" data-toggle="modal" data-target="#supportConceptList">
|
||||
<div class="d-flex">
|
||||
<h5 class="mb-1 text-dark text-left" id="selectedSupportConceptCustomerInfo">@Model.SelectedCostBearer2SupportConceptRelListObject.NameAndDateOfBirth</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @selectedSuportConceptTimeSpanColorClass" id="selectedSupportConceptInfo">
|
||||
@Model.SelectedCostBearer2SupportConceptRelListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
@foreach(var supportConceptListObject in Model.CostBearer2SupportConceptRelListObjects)
|
||||
{
|
||||
var timeSpanColorClass = supportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : supportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline blubb-test" onclick="selectCostBearer2SupportConceptRel(@supportConceptListObject.CostBearer2SupportConceptOid, @parameterType, @parameterOid)" data-dismiss="modal">
|
||||
<div class="justify-content-between">
|
||||
<h5 class="mb-1 text-dark text-left supportconcept-name-header">
|
||||
@supportConceptListObject.NameAndDateOfBirth
|
||||
</h5>
|
||||
</div>
|
||||
<p class="mb-1 text-left @timeSpanColorClass">
|
||||
@supportConceptListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal" role="dialog" tabindex="-1" id="supportConceptList">
|
||||
<div class="modal-dialog text-center modal-dialog-scrollable" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Hilfeplanauswahl</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" onclick="resetSupportConceptSearch()">
|
||||
<span>×</span>
|
||||
break;
|
||||
case QueryParameterType.Employee:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="dropdown mt-3">
|
||||
@{
|
||||
var employeeButtonValue = "Mitarbeiter";
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value) && Model.SelectedValues[parameterOid.Value].Parameter is CompactEmployeeDC selectedEmployee)
|
||||
{
|
||||
employeeButtonValue = selectedEmployee.DetailDescription;
|
||||
}
|
||||
}
|
||||
<button class="btn btn-bewo-employee dropdown-toggle w-100" type="button" id="dropdownEmployeesMenu" data-toggle="dropdown">
|
||||
@employeeButtonValue
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Hilfeplansuche -->
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="supportConceptSearchOnChange()" id="support-concept-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetSupportConceptSearch()">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu" id="query-employee-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||
<div class="input-group px-2">
|
||||
<input class="form-control w-100" id="query-employee-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('employee')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Hilfeplanliste -->
|
||||
<div class="list-group">
|
||||
@foreach(var supportConceptListObject in Model.CostBearer2SupportConceptRelListObjects)
|
||||
<div class="dropdown-divider"></div>
|
||||
@foreach(var employee in Model.AllEmployeesForQueries)
|
||||
{
|
||||
var timeSpanColorClass = supportConceptListObject.IsAboutToExpire ? "text-bewo-is-about-to-expire" : supportConceptListObject.ExpiresInThreeMonthsOrLess ? "text-bewo-expires-in-three-months" : "text-dark";
|
||||
<a class="dropdown-item" style="cursor: pointer;" id="query-employee-@employee.EmployeeOid" onclick="selectEmployeeParameter(this, @employee.EmployeeOid, @parameterType, @parameterOid)">@employee.DetailDescription</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Customer:
|
||||
if(Model.AllCustomersForQueries.Any())
|
||||
{
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="dropdown mt-3">
|
||||
@{
|
||||
var customerButtonValue = "Klient";
|
||||
|
||||
<a href="#" class="list-group-item flex-column align-items-start no-underline blubb-test" onclick="selectCostBearer2SupportConceptRel(@supportConceptListObject.CostBearer2SupportConceptOid)" data-dismiss="modal">
|
||||
<div class="justify-content-between">
|
||||
<h5 class="mb-1 text-dark text-left supportconcept-name-header">
|
||||
@supportConceptListObject.NameAndDateOfBirth
|
||||
</h5>
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is CompactCustomerDC selectedCustomer)
|
||||
{
|
||||
customerButtonValue = selectedCustomer.DetailDescription;
|
||||
}
|
||||
}
|
||||
}
|
||||
<button class="btn btn-bewo-customers dropdown-toggle w-100" type="button" id="dropdownCustomersMenu" data-toggle="dropdown">
|
||||
@customerButtonValue
|
||||
</button>
|
||||
<div class="dropdown-menu" id="query-customer-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||
<div class="input-group px-2">
|
||||
<input class="form-control w-100" id="query-customer-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('customer')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
<p class="mb-1 text-left @timeSpanColorClass">
|
||||
@supportConceptListObject.SupportConceptTimeSpan
|
||||
</p>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Employee:
|
||||
break;
|
||||
case QueryParameterType.Customer:
|
||||
break;
|
||||
case QueryParameterType.Month:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Monat
|
||||
</div>
|
||||
<div class="dropdown-divider"></div>
|
||||
@foreach(var customer in Model.AllCustomersForQueries)
|
||||
{
|
||||
<a class="dropdown-item" style="cursor: pointer;" id="query-customer-@customer.CustomerOid" onclick="selectCustomerParameter(this, @customer.CustomerOid, @parameterType, @parameterOid)">@customer.DetailDescription</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<select class="custom-select" id="month-select" onchange="selectMonth()">
|
||||
@foreach(var month in Model.Months)
|
||||
{
|
||||
var selected = Model.SelectedMonthForBericht != null && month.Equals(Model.SelectedMonthForBericht) ? " selected" : string.Empty;
|
||||
|
||||
<option value="@month.Value"@selected>@month.Text</option>
|
||||
}
|
||||
</select>
|
||||
<select class="custom-select" id="year-select" onchange="selectYear()">
|
||||
@foreach(var year in MobileUtils.Years)
|
||||
{
|
||||
var selected = Model.SelectedYearForBericht.HasValue && year.Equals(Model.SelectedYearForBericht.Value) ? " selected" : string.Empty;
|
||||
|
||||
<option value="@MobileUtils.Years.IndexOf(year)"@selected>@year</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Month:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Monat
|
||||
</div>
|
||||
</div>
|
||||
<select class="custom-select" id="month-select" onchange="selectMonth()">
|
||||
@foreach(var month in Model.Months)
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is string monthAsString && Model.Months.Any(m => m.Value.Equals(monthAsString)))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
}
|
||||
|
||||
<option value="@month.Value" @selected>@month.Text</option>
|
||||
}
|
||||
</select>
|
||||
<select class="custom-select" id="month-year-select" onchange="selectYear()">
|
||||
@foreach(var year in MobileUtils.Years)
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is int selectedYear && year.Equals(selectedYear))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
}
|
||||
|
||||
<option value="@MobileUtils.Years.IndexOf(year)" @selected>@year</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Date:
|
||||
break;
|
||||
case QueryParameterType.DateRange:
|
||||
break;
|
||||
case QueryParameterType.Team:
|
||||
break;
|
||||
case QueryParameterType.CostCenter:
|
||||
break;
|
||||
case QueryParameterType.ServiceCategory:
|
||||
break;
|
||||
case QueryParameterType.ServiceDescription:
|
||||
break;
|
||||
case QueryParameterType.Text:
|
||||
break;
|
||||
case QueryParameterType.Year:
|
||||
break;
|
||||
case QueryParameterType.CurrentUser:
|
||||
break;
|
||||
case QueryParameterType.CurrentEmployee:
|
||||
break;
|
||||
case QueryParameterType.ValueListEntryType:
|
||||
break;
|
||||
case QueryParameterType.Organisation:
|
||||
break;
|
||||
case QueryParameterType.Custom:
|
||||
break;
|
||||
break;
|
||||
case QueryParameterType.Date:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="query-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Datum
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" id="query-date" name="query-date" class="form-control datetimepicker-input" data-target="#query-date-picker" data-toggle="datetimepicker" />
|
||||
<div class="input-group-append" data-target="#query-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.DateRange:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="query-date-range-start-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Zeitraum
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" id="query-date-range-start" name="query-date-range-start" class="form-control datetimepicker-input" data-target="#query-date-range-start-picker" data-toggle="datetimepicker" />
|
||||
<div class="input-group-append" data-target="#query-date-range-start-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="query-date-range-end-picker" data-target-input="nearest">
|
||||
<input type="text" id="query-date-range-end" name="query-date-range-end" class="form-control datetimepicker-input" data-target="#query-date-range-end-picker" data-toggle="datetimepicker" />
|
||||
<div class="input-group-append" data-target="#query-date-range-end-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Team:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="dropdown mt-3">
|
||||
@{
|
||||
var teamButtonValue = "Team";
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues[parameterOid.Value].Parameter is CompactTeamDC selectedTeam)
|
||||
{
|
||||
teamButtonValue = selectedTeam.Name;
|
||||
}
|
||||
}
|
||||
<button class="btn btn-bewo-teams dropdown-toggle w-100" type="button" id="dropdownTeamsMenu" data-toggle="dropdown">
|
||||
@teamButtonValue
|
||||
</button>
|
||||
<div class="dropdown-menu" id="query-team-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||
<div class="input-group px-2">
|
||||
<input class="form-control w-100" id="query-team-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('team')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-divider"></div>
|
||||
@foreach(var team in Model.AllTeamsForQueries)
|
||||
{
|
||||
<a class="dropdown-item" style="cursor: pointer;" id="query-team-@team.TeamOid" onclick="selectTeamParameter(this, @team.TeamOid, @parameterType, @parameterOid)">@team.Name</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.ServiceCategory:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Kategorie
|
||||
</div>
|
||||
</div>
|
||||
<select class="custom-select" id="category-@i-select" onchange="selectServiceCategoryParameter(this, @parameterType, @parameterOid)">
|
||||
@foreach(var category in Model.AllServiceCategoriesForQueries)
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is ServiceCategoryDC serviceCategory && serviceCategory.Equals(category))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
}
|
||||
|
||||
<option value="@category.ServiceCategoryOid" @selected>@category.Name</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Text:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Text
|
||||
</div>
|
||||
</div>
|
||||
<input class="form-control w-100" type="text" id="query-text" name="query-text" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Year:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Jahr
|
||||
</div>
|
||||
</div>
|
||||
<select class="custom-select" id="year-select" onchange="selectYear()">
|
||||
@foreach(var year in MobileUtils.Years)
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is int selectedYear && year.Equals(selectedYear))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
}
|
||||
|
||||
<option value="@MobileUtils.Years.IndexOf(year)" @selected>@year</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.ValueListEntryType:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
@parameter.Name
|
||||
</div>
|
||||
</div>
|
||||
@*<select class="custom-select" id="category-@i-select" onchange="selectServiceCategoryParameter(this, @parameterType, @parameterOid)">
|
||||
@foreach(var category in Model.AllServiceCategoriesForQueries)
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is ServiceCategoryDC serviceCategory && serviceCategory.Equals(category))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
}
|
||||
|
||||
<option value="@category.ServiceCategoryOid" @selected>@category.Name</option>
|
||||
}
|
||||
</select>*@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Organisation:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="dropdown mt-3">
|
||||
@{
|
||||
var organisationButtonValue = "Organisation";
|
||||
|
||||
if(parameterOid.HasValue && Model.SelectedValues.ContainsKey(parameterOid.Value))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid.Value].Parameter is CompactOrganisationDC selectedOrganisation)
|
||||
{
|
||||
organisationButtonValue = selectedOrganisation.DetailDescription;
|
||||
}
|
||||
}
|
||||
}
|
||||
<button class="btn btn-bewo-organisation dropdown-toggle w-100" type="button" id="dropdownOrganisationsMenu" data-toggle="dropdown">
|
||||
@organisationButtonValue
|
||||
</button>
|
||||
<div class="dropdown-menu" id="query-organisation-dropdown-menu" style="max-height: 90vh !important; overflow-y: auto !important;">
|
||||
<div class="input-group px-2">
|
||||
<input class="form-control w-100" id="query-organisation-search-input" type="text" placeholder="Suchen ..." oninput="onDropdownParameterInput(this)" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetDropdownParameterSearch('organisation')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-divider"></div>
|
||||
@foreach(var organisation in Model.AllOrganisationForQuery)
|
||||
{
|
||||
<a class="dropdown-item" style="cursor: pointer;" id="query-team-@organisation.OrganisationOid" onclick="selectOrganisationParameter(this, @organisation.OrganisationOid, @parameterType, @parameterOid)">@organisation.Name</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case QueryParameterType.Custom:
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
@parameter.Name
|
||||
</div>
|
||||
</div>
|
||||
<select class="custom-select" id="query-custom-parameter-select" name="query-custom-parameter-select">
|
||||
@foreach(var x in parameter.CustomValues)
|
||||
{
|
||||
<option value="@x">@x</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
@@ -52,21 +52,18 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="container-fluid my-3">
|
||||
<div class="container my-3">
|
||||
<div class="row h-auto" id="abc-def">
|
||||
<div class="col-sm-12 col-md-4 col-lg-4 col-xl-3">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@Html.DropDownListFor(model => model.SelectedReportType, Model.ReportTypes, new { @class = "custom-select", onchange = "updateForm()", id = "msk-report-type-select" })
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col" id="msk-form-col">
|
||||
@Html.Partial("ReportViewerFormPartial", Model)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col" id="msk-form-col">
|
||||
@Html.Partial("ReportViewerFormPartial", Model)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- !Suche -->
|
||||
<!-- /Suche -->
|
||||
@foreach(var customer in Model.AllCustomers)
|
||||
{
|
||||
var customerNameWithAlias = string.IsNullOrEmpty(customer.CustomerAlias) ?
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
<Reference Include="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Data.Desktop.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraGauges.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraPrinting.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Charts.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraCharts.v23.2.Wizard, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
@@ -215,6 +216,8 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Service\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace BeWo.Service.Plugins
|
||||
#if DEBUG
|
||||
var t = "demo";
|
||||
|
||||
t = "irgendwaswasesnichtgibt";
|
||||
//t = "irgendwaswasesnichtgibt";
|
||||
//t = "5473568546"; //Interner Chat
|
||||
//t = "2356097460"; // Lebenshilfe Würzburg
|
||||
//t = "1234567890"; // Präsentationsdatenbank
|
||||
@@ -109,7 +109,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "8677523325"; // BeWo Richartz
|
||||
//t = "1765854593"; // Mein Betreutes Wohnen
|
||||
//t = "6802909544"; // Lebenshilfe Coburg
|
||||
t = "9417634361"; // Synprax
|
||||
//t = "9417634361"; // Synprax
|
||||
//t = "5761861730"; // Lebenshilfe Warendorf
|
||||
//t = "6712648331"; // BeWo Färber
|
||||
//t = "4982295287"; // ASB Hamm
|
||||
|
||||
@@ -32,13 +32,18 @@ namespace BeWo.Service.Plugins
|
||||
List<QueryParamDC> parameter = new List<QueryParamDC>();
|
||||
foreach (var item in q.Parameter)
|
||||
{
|
||||
QueryParamDC param = new QueryParamDC();
|
||||
param.ParamType = item.Type;
|
||||
param.Name = item.Name;
|
||||
if (item.Type == QueryParameterType.Custom)
|
||||
var param = new QueryParamDC
|
||||
{
|
||||
QueryParameterOid = item.Oid,
|
||||
ParamType = item.Type,
|
||||
Name = item.Name
|
||||
};
|
||||
|
||||
if (item.Type == QueryParameterType.Custom)
|
||||
{
|
||||
param.CustomValues = new List<string>();
|
||||
}
|
||||
|
||||
parameter.Add(param);
|
||||
}
|
||||
|
||||
|
||||
@@ -1279,11 +1279,13 @@ namespace BeWo.Service.ServiceImplementations
|
||||
// ToDo: Hat man das Rechte "Alles Ansehen", wird nicht anonymisiert, da CheckSchedulerRights true zurückgibt!
|
||||
//var hasRightToSeeAll = user.HasRight(UserRightType.ViewAll);
|
||||
|
||||
appointmentsToCheckForAnonymization =
|
||||
pSelectedResources.Any() || pResourcesOnly ?
|
||||
result.Where(w =>
|
||||
w.ResourceList.Any() && false == SUtils.CheckSchedulerRights(w, SchedulerRightsCheckType.View, user, relatedCustomerOids, true)).ToList() :
|
||||
new List<SchedulerAppointmentDC>();
|
||||
//appointmentsToCheckForAnonymization =
|
||||
// pSelectedResources.Any() || pResourcesOnly ?
|
||||
// result.Where(w =>
|
||||
// w.ResourceList.Any() && false == SUtils.CheckSchedulerRights(w, SchedulerRightsCheckType.View, user, relatedCustomerOids, true)).ToList() :
|
||||
// new List<SchedulerAppointmentDC>();
|
||||
|
||||
AnonymizeAppointments(result.Where(w => false == SUtils.CheckSchedulerRights(w, SchedulerRightsCheckType.View, user, relatedCustomerOids, true)).ToList());
|
||||
|
||||
if(pSelectedResources?.Any() ?? false)
|
||||
{
|
||||
|
||||
@@ -708,58 +708,17 @@ namespace BS.Shared.Core
|
||||
|
||||
if(hasCustomers)
|
||||
{
|
||||
|
||||
if(isAllowedToViewCustomers)
|
||||
if(isAllowedToViewAllCustomerAppointments && isAllowedToViewCustomers)
|
||||
{
|
||||
result = hasOnlyOwnCustomers || isAllowedToViewAllCustomerAppointments;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
if(isAllowedToViewMyTeamsCustomers && hasOnlyTeamMembersCustomers)
|
||||
{
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//if(!isAllowedToViewAllCustomerAppointments)
|
||||
//{
|
||||
// return false;
|
||||
//}
|
||||
|
||||
// ToDo: Prüfen, ob eigene Klienten, die des Teams oder fremde Klienten in der Liste sind
|
||||
/*
|
||||
* isAllowedToViewAllCustomerAppointments darf Kliententermine sehen. Sind Klienten in der Liste, die der Mitarbeiter nicht sehen darf, müssen diese anonymisiert werden.
|
||||
*/
|
||||
|
||||
// Alle Klienten ansehen
|
||||
//if(isAllowedToViewCustomers)
|
||||
//{
|
||||
// result = hasOnlyOwnCustomers || isAllowedToViewAllCustomerAppointments;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// // ToDo: Gucken, ob CustomerOids in der Klientenliste sind, die nicht in der relatedCustomerOids-Liste sind
|
||||
|
||||
// if(pCustomerList.Any(a => !relatedCustomerOids.Contains(a.CustomerOid)))
|
||||
// {
|
||||
// result = false;
|
||||
// }
|
||||
|
||||
// // Sind nur die eigenen
|
||||
// if(isAllowedToViewOwnCustomers && hasOnlyOwnCustomers)
|
||||
// {
|
||||
// result = true;
|
||||
// }
|
||||
|
||||
// // Sind nur Klienten aus eigenen Teams
|
||||
// if(isAllowedToViewMyTeamsCustomers && hasOnlyTeamMembersCustomers)
|
||||
// {
|
||||
// result = true;
|
||||
// }
|
||||
|
||||
// //if()
|
||||
// //{
|
||||
|
||||
// //}
|
||||
//}
|
||||
return isAllowedToViewOwnCustomers && hasOnlyOwnCustomers;
|
||||
}
|
||||
|
||||
if(!result)
|
||||
|
||||
@@ -21,5 +21,8 @@ namespace BS.Shared.DataContracts
|
||||
|
||||
[DataMember]
|
||||
public IList<String> CustomValues { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long? QueryParameterOid { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user