Bei Gruppenbuchungen im Mobilklienten wird eine Liste mit den ausgewählten Hilfeplänen angezeigt.

This commit is contained in:
Lyndon
2019-03-29 14:04:12 +01:00
parent ddd8ac10b0
commit 07bcddae55
16 changed files with 700 additions and 377 deletions

View File

@@ -985,7 +985,7 @@ namespace BeWo
#else
Login login = new Login(BeWoApp.Tenant);
#endif
chatServerURL = login._serverUrl;
chatServerURL = Login.ServerUrl;
}
return chatServerURL;

View File

@@ -1323,7 +1323,7 @@ namespace BeWo.View
public ChatView ServiceChatView;
private void HyperlinkChat_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
private async void HyperlinkChat_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
//#if DEBUG
@@ -1375,26 +1375,19 @@ namespace BeWo.View
// _ChatCode = xxx.EmployeeCode;
//}
if (BeWoApp.Mandator.Apikey != null)
_apikey = BeWoApp.Mandator.Apikey;
else
_apikey = "0000"; //erstmal zu default zwecken damit nichts abstürzt
_apikey = BeWoApp.Mandator.Apikey ?? "0000";
if (!_Code.Equals(""))
{
Login _login = new Login(_kundennummer, _Code, _benutzername, _passwort, _apikey);
var x = _login.AnmeldevorgangDurchFuehren();
var x = _login.TryLogin();
if (x != null)
if (x.Result != null)
{
ServiceChatView = new ChatView(x);
ServiceChatView = new ChatView(x.Result);
ServiceChatView.Show();
}
else
{
// Fehler ermittlung erfolgt bereits wärend anmelde versuch
}
}
else
{
@@ -1405,7 +1398,6 @@ namespace BeWo.View
{
MessageBox.Show("Sie benötigen einen gültigen Zugang zum Chat. Bitte wenden Sie sich an den Support.", "Info");
}
}
else if (ServiceChatView.Visibility == Visibility.Visible)
{
@@ -1414,15 +1406,15 @@ namespace BeWo.View
else if (ServiceChatView.Visibility == Visibility.Hidden)
{
ServiceChatView.Visibility = Visibility.Visible;
if (ServiceChatView.WindowState == WindowState.Minimized)
{
ServiceChatView.WindowState = WindowState.Normal;
ServiceChatView.Height = 700;
ServiceChatView.Width = 900;
}
ServiceChatView.Activate();
ServiceChatView.Activate();
}
//#endif
}

View File

@@ -12,7 +12,7 @@
<Grid x:Name="ChatViewGrid">
<GroupBox Header="ownChat" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithMinMaxCloseBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown">
<cc:ChatMainControl x:Name="ChatMainControl" OnEmojii="ChatMainControl_OnOnEmoji" ></cc:ChatMainControl>
<!--<cc:ChatMainControl x:Name="ChatMainControl" OnEmojii="ChatMainControl_OnOnEmoji" ></cc:ChatMainControl>-->
</GroupBox>
</Grid>
</Window>

View File

@@ -15,8 +15,10 @@ using BeWo.ViewModel;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using ChatController;
using ChatController.ChatKlassen;
using ChatController.Klassen;
using ChatController.LoginKlassen;
using Button = System.Windows.Controls.Button;
using MessageBox = System.Windows.MessageBox;
using Panel = System.Windows.Controls.Panel;
@@ -26,13 +28,14 @@ namespace BeWo.ownChat
public partial class ChatView
{
public ChatEmojiView _emojiView;
public ChatMainControl ChatMainControl { get; set; }
public ChatView(ChatDatenUebergabe chatDaten)
public ChatView(ChatConnectionData chatDaten)
{
InitializeComponent();
CloseWindow();
ChatMainControl.InitMitChatdaten(chatDaten);
ChatMainControl = new ChatMainControl(chatDaten);
ChatMainControl.AddContextMenu("In Dokumentation übernehmen", ChatMainControl_OnClickContextMenuItem);
LadeMessageInfoAusDatenBank();
@@ -96,7 +99,7 @@ namespace BeWo.ownChat
private void ChatMainControl_OnClickContextMenuItem(string menuItem)
{
var aktuellerKontakt = ChatMainControl.GetAktuellenKontakt();
var aktuellerKontakt = ChatMainControl.GetCurrentContact();
if (aktuellerKontakt != null)
{

View File

@@ -1,8 +1,4 @@
input::-moz-focus-inner {
border: 0;
}
table, tr, td {
table, tr, td {
padding: .11em 0 .11em 0;
border-spacing: 0;
}
@@ -118,6 +114,10 @@ input, textarea {
box-sizing: border-box;
}
input::-moz-focus-inner {
border: 0;
}
textarea {
resize: none;
}
@@ -135,16 +135,16 @@ input:focus + label, textarea:focus + label {
color: #FF5A00 !important;
}
input[type=submit], input[type=button] {
background-color: #E6E6E6;
border: none;
}
input[type=submit]:active, input[type=button]:active {
background-color: #FF5A00;
color: #FFF;
}
input[type=submit], input[type=button] {
background-color: #E6E6E6;
border: none;
}
span {
white-space: normal !important;
overflow: hidden !important;
@@ -585,7 +585,6 @@ textarea {
#logout-form {
display: inline;
margin: 0;
padding: 0;
}
@@ -786,10 +785,10 @@ input[type="checkbox"] {
margin-top: .25em;
}
#groupBookingOpenPopupBtn {
/*#groupBookingOpenPopupBtn {
margin-bottom: 1em;
margin-top: .5em;
}
}*/
.group-booking-tab {
overflow: hidden;
@@ -884,4 +883,49 @@ input[type="checkbox"] {
height: auto;
z-index: 9999;
padding: 0 1.5em;
}
}
.remove_btn {
width: auto;
background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%2016%2016%22%20style%3D%22enable-background%3Anew%200%200%2016%2016%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FF5A00%22%20points%3D%2215%2C4%2012%2C1%208%2C5%204%2C1%201%2C4%205%2C8%201%2C12%204%2C15%208%2C11%2012%2C15%2015%2C12%2011%2C8%20%22%3E%3C%2Fpolygon%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-color: #F4F4F4;
float: right;
margin: .3em;
}
.remove_btn:active {
background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%2016%2016%22%20style%3D%22enable-background%3Anew%200%200%2016%2016%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23F4F4F4%22%20points%3D%2215%2C4%2012%2C1%208%2C5%204%2C1%201%2C4%205%2C8%201%2C12%204%2C15%208%2C11%2012%2C15%2015%2C12%2011%2C8%20%22%3E%3C%2Fpolygon%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-color: #FF5A00;
}
#groupBookingSelectionTable {
border-collapse: collapse;
width: 100%;
}
.groupBookingSelectionTableRow {
background-color: #F4F4F4;
color: #555555;
font-size: 13px;
}
.groupBookingSelectionLeftCell {
padding-left: 1.3em;
border-bottom: 1px solid #BBBBBB;
}
.groupBookingSelectionRightCell {
width: auto;
border-bottom: 1px solid #BBBBBB;
}
.groupBookingPTag {
display: inline;
padding: 0;
}

View File

@@ -155,6 +155,11 @@ namespace BeWoPlanerMobil.Controllers
Model.ServiceCategories = new List<ServiceCategoryModel>();
}
if(Model.SelectedConceptCostBearerRelations == null)
{
Model.SelectedConceptCostBearerRelations = new List<SupportConceptCostBearerRelDC>();
}
if (Model.CostBearer2SupportConceptOid != null)
{
LoadRecordsToModel();
@@ -1116,9 +1121,12 @@ namespace BeWoPlanerMobil.Controllers
OperationsService.InsertNewServiceRecordGroup(groupDC);
}
}
Model.SelectedSupportConcepts = new List<SupportConceptDC>();
Model.SelectedEmployees = new List<CompactEmployeeDC>();
Model.SelectedSupportConcepts.Clear();
Model.SelectedConceptCostBearerRelations.Clear();
Model.SelectedCostbearerRelOids.Clear();
Model.SelectedGroupOfPeopleOids.Clear();
Model.SelectedEmployees = new List<CompactEmployeeDC>{ MobileSessionFacade.LoggedInCompactEmployee };
return RedirectToActionPermanent("Main");
}
@@ -1141,7 +1149,6 @@ namespace BeWoPlanerMobil.Controllers
CompactOrganisationDC org = null;
Calculations calc = null;
var cb2scOids = new List<long>();
foreach(var scdc in Model.SelectedSupportConcepts)
@@ -1868,6 +1875,7 @@ namespace BeWoPlanerMobil.Controllers
Model.SelectedSupportConcepts.Clear();
Model.SelectedEmployees.Clear();
Model.SelectedCostbearerRelOids.Clear();
Model.SelectedConceptCostBearerRelations.Clear();
var relationOids = new List<long>();
@@ -1881,6 +1889,8 @@ namespace BeWoPlanerMobil.Controllers
relationOids = serviceRecordGroup.ServiceRecordList.Select(s => s.CostBearer2SupportConceptOid.Value).ToList();
var costBearerRelations = CustomerService.GetSupportConceptCostBearerRelationsById(relationOids);
Model.SelectedConceptCostBearerRelations.AddRangeIfElementsNotIn(costBearerRelations);
foreach(var rel in costBearerRelations)
{
var sc = CustomerService.LoadSupportConcept(rel.SupportConcept.SupportConceptOid);
@@ -2016,13 +2026,13 @@ namespace BeWoPlanerMobil.Controllers
}
}
var mandator = OperationsService.GetMandator();
var settings = mandator.Settings ?? string.Empty;
var splitSettings = settings.Split(';');
var maxDaysEditSRsAllowedSetting = splitSettings.ToList().FirstOrDefault(f => f.Contains("MaxDaysEditServiceRecordsAllowed"));
var maxDaysEditSRsAllowed = maxDaysEditSRsAllowedSetting != null ? int.Parse(maxDaysEditSRsAllowedSetting.Split('=')[1]) : 0;
var mandator = OperationsService.GetMandator();
var settings = mandator.Settings ?? string.Empty;
var splitSettings = settings.Split(';');
var maxDaysEditSRsAllowedSetting = splitSettings.ToList().FirstOrDefault(f => f.Contains("MaxDaysEditServiceRecordsAllowed"));
var maxDaysEditSRsAllowed = maxDaysEditSRsAllowedSetting != null ? int.Parse(maxDaysEditSRsAllowedSetting.Split('=')[1]) : 0;
var limitFuerZeiterfassungSetting = splitSettings.ToList().FirstOrDefault(f => f.Contains("AnzTageZeiterfassErfolgt"));
var limitFuerZeiterfassung = limitFuerZeiterfassungSetting != null ? int.Parse(limitFuerZeiterfassungSetting.Split('=')[1]) : 0;
var limitFuerZeiterfassung = limitFuerZeiterfassungSetting != null ? int.Parse(limitFuerZeiterfassungSetting.Split('=')[1]) : 0;
if (MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowEditAfterMaxDaysInNextMonth))
{
@@ -2089,13 +2099,13 @@ namespace BeWoPlanerMobil.Controllers
validationResults.Add(new ServiceRecord2Validation(checkSR, result, dateRangeString ?? ""));
}
var allowOverlappingFLS = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLS);
var allowOverlappingFLS = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLS);
var allowOverlappingFLSForEmployee = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateOverlappingFLSForEmployee);
var allowMoreFLSThanApproved = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateMoreFLSThanApproved);
var bookAfterSettlementInvoice = MobileSessionFacade.CheckForUserRight(UserRightType.BookServiceRecordAfterSettlementInvoice);
var allowMoreFLSThanApproved = MobileSessionFacade.CheckForUserRight(UserRightType.ServiceRecord_AllowCreateMoreFLSThanApproved);
var bookAfterSettlementInvoice = MobileSessionFacade.CheckForUserRight(UserRightType.BookServiceRecordAfterSettlementInvoice);
var newResult = new ValidationResult();
var exitLoop = false;
var exitLoop = false;
foreach (var sr2v in validationResults)
{
if(exitLoop)
@@ -2113,39 +2123,25 @@ namespace BeWoPlanerMobil.Controllers
switch(vr.ResultType)
{
case ServiceRecordOverlapping:
if (allowOverlappingFLS)
{
newResult.KannTrotzdemGespeichertWerden = true;
newResult.Message += "An dem gewählten Datum '" + von + "' existiert bereits ein Eintrag (" + vr.Message + " bei Klient/in " + vr.CustomerName + ").<br /><br />";
exitLoop = false;
}
else
{
newResult.Message += "An dem gewählten Datum '" + von + "' existiert bereits ein Eintrag (" + vr.Message + " bei Klient/in " + vr.CustomerName + ").<br /><br />";
exitLoop = true;
newResult.KannTrotzdemGespeichertWerden = false;
}
newResult.Message += "An dem gewählten Datum '" + von + "' existiert bereits ein Eintrag (" + vr.Message + " bei Klient/in " + vr.CustomerName + ").<br /><br />";
newResult.KannTrotzdemGespeichertWerden = allowOverlappingFLS;
exitLoop = !allowOverlappingFLS;
break;
case EmployeeOverlapping:
if (allowOverlappingFLSForEmployee)
{
newResult.Message += "An dem gewählten Datum " + von + " existiert bereits ein Eintrag von " + vr.EmployeeName + " (" + vr.Message + ").<br /><br />";
exitLoop = false;
newResult.KannTrotzdemGespeichertWerden = true;
}
else
{
newResult.Message += "An dem gewählten Datum " + von + " existiert bereits ein Eintrag von " + vr.EmployeeName + " (" + vr.Message + ").<br /><br />";
newResult.Message += "An dem gewählten Datum " + von + " existiert bereits ein Eintrag von " + vr.EmployeeName + " (" + vr.Message + ").<br /><br />";
newResult.KannTrotzdemGespeichertWerden = allowOverlappingFLSForEmployee;
exitLoop = !allowOverlappingFLSForEmployee;
exitLoop = true;
newResult.KannTrotzdemGespeichertWerden = false;
}
break;
case OutsideOfSupportConcept:
newResult.Message += "Das gewählte Datum " + von.Substring(0, 10) + " liegt außerhalb des Zeitraumes des gewählten Hilfeplans (" + sr2v.HilfePlanZeitraum + ").<br /><br />";
newResult.KannTrotzdemGespeichertWerden = false;
exitLoop = true;
break;
case ApprovedFLSOverspending:
var klient = "diesen Hilfeplan";
@@ -2155,19 +2151,12 @@ namespace BeWoPlanerMobil.Controllers
}
var msg = "Die für " + klient + " genehmigten FLS (" + vr.ApprovedHours + ") werden mit diesem Eintrag überschritten. (" + vr.HoursNew + ").";
if (allowMoreFLSThanApproved)
{
newResult.Message += msg + "<br /><br />";
exitLoop = false;
newResult.KannTrotzdemGespeichertWerden = true;
}
else
{
newResult.Message += msg + "<br /><br />";
exitLoop = true;
newResult.KannTrotzdemGespeichertWerden = false;
}
newResult.Message += msg + "<br /><br />";
newResult.KannTrotzdemGespeichertWerden = allowMoreFLSThanApproved;
exitLoop = !allowMoreFLSThanApproved;
break;
case OutOfEditLimit:
newResult.Message += "Sie können keine neuen Leistungen für den " + von + " dokumentieren, da bereits der " + maxDaysEditSRsAllowed + ". des nachfolgenden Monats überschritten ist.<br /><br />";
@@ -2188,17 +2177,16 @@ namespace BeWoPlanerMobil.Controllers
klient2 = "Klient/in " + vr.CustomerName;
}
newResult.KannTrotzdemGespeichertWerden = bookAfterSettlementInvoice;
exitLoop = !bookAfterSettlementInvoice;
if (bookAfterSettlementInvoice)
{
newResult.Message += "Es existiert bereits eine Spitzabrechnung für " + klient2 + ". Um diesen Eintrag zu berücksichtigen, muss eventuell eine neue Spitzabrechnung erstellt werden.<br /><br />";
exitLoop = false;
newResult.KannTrotzdemGespeichertWerden = true;
}
else
{
newResult.Message += "Sie können den Eintrag nicht bearbeiten, da bereits eine Spitzabrechnung für " + klient2 + "<br /><br />";
exitLoop = true;
newResult.KannTrotzdemGespeichertWerden = false;
}
break;
@@ -2439,6 +2427,7 @@ namespace BeWoPlanerMobil.Controllers
return _LeerzeichenFuerGetMethoden;
}
// Gruppenbuchungen
[HttpPost]
[Authorize]
public ActionResult SetGroupBookingMode(FormCollection pFormCollection)
@@ -2480,6 +2469,7 @@ namespace BeWoPlanerMobil.Controllers
Model.SelectedCostbearerRelOids.Clear();
Model.SelectedEmployees.Clear();
Model.SelectedSupportConcepts.Clear();
Model.SelectedConceptCostBearerRelations.Clear();
Model.SelectedEmployee = MobileSessionFacade.LoggedInCompactEmployee;
@@ -2540,63 +2530,53 @@ namespace BeWoPlanerMobil.Controllers
}
[Authorize]
[HttpPost]
public ActionResult AddEmployeesToGroupBooking(FormCollection pFormCollection)
public string ResetGroupBookingModeViaGET()
{
if (Model == null)
{
return RedirectToActionPermanent("Index", "Login");
RedirectToActionPermanent("Index", "Login");
return _LeerzeichenFuerGetMethoden;
}
var oids = new List<long>();
var keys = pFormCollection.Keys;
foreach (var key in keys)
{
if (key.ToString().Contains("employee_"))
{
oids.AddIfNotIn(long.Parse(pFormCollection[key.ToString()]));
}
}
var employees = Model.Employees.Where(w => oids.Contains(w.EmployeeOid));
Model.IsInGroupBookingMode = false;
Model.SelectedCostbearerRelOids.Clear();
Model.SelectedEmployees.Clear();
Model.SelectedEmployees.AddRangeIfElementsNotIn(employees);
Model.SelectedSupportConcepts.Clear();
Model.SelectedConceptCostBearerRelations.Clear();
return RedirectToAction("Main");
return MainModel.IsEmployeeSelectionVisible.ToString();
}
[Authorize]
[HttpPost]
public ActionResult AddSupportConceptsToGroupBooking(FormCollection pFormCollection)
public string AddSupportConceptCostBearerRelationsToGroupBooking(string pRelOids, string pGroupOids)
{
if (Model == null)
if(Model == null)
{
return RedirectToActionPermanent("Index", "Login");
RedirectToActionPermanent("Index", "Login");
return _LeerzeichenFuerGetMethoden;
}
var rawRelOids = string.IsNullOrEmpty(pRelOids) ? new string[0] : pRelOids.Split(',');
var rawGroupOids = string.IsNullOrEmpty(pGroupOids) ? new string[0] : pGroupOids.Split(',');
var relOids = new List<long>();
var groups = new List<GroupOfPeopleDC>();
rawRelOids.DoForEach(s => relOids.AddIfNotIn(long.Parse(s)));
Model.SelectedGroupOfPeopleOids.Clear();
var keys = pFormCollection.Keys;
foreach (var key in keys)
rawGroupOids.DoForEach(s =>
{
if (key.ToString().Contains("costbearer2supportconcept_"))
var group = Model.GroupsOfPeople.FirstOrDefault(f => f.GroupOfPeopleOid.HasValue && f.GroupOfPeopleOid.Value.Equals(long.Parse(s)));
if(group == null)
{
relOids.AddIfNotIn(long.Parse(pFormCollection[key.ToString()]));
return;
}
else if (key.ToString().Contains("group_"))
{
var group = Model.GroupsOfPeople.FirstOrDefault(f => f.GroupOfPeopleOid.HasValue && f.GroupOfPeopleOid.Value.Equals(long.Parse(pFormCollection[key.ToString()])));
groups.AddIfNotIn(group);
group?.SupportConceptList.DoForEach(f => relOids.AddRangeIfElementsNotIn(f.CostBearerRelOids));
}
}
groups.AddIfNotIn(group);
group.SupportConceptList.DoForEach(f => relOids.AddRangeIfElementsNotIn(f.CostBearerRelOids));
});
Model.SelectedSupportConcepts.Clear();
@@ -2605,6 +2585,11 @@ namespace BeWoPlanerMobil.Controllers
var selectedSupportConcepts = Model.SupportConcepts.Where(w => w != null && w.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid.HasValue && relOids.Contains(a.CostBearer2SupportConceptOid.Value))).ToList();
var groupCostBearerRelations = CustomerService.GetSupportConceptCostBearerRelationsById(relOids);
Model.SelectedConceptCostBearerRelations.Clear();
Model.SelectedConceptCostBearerRelations.AddRangeIfElementsNotIn(groupCostBearerRelations);
Model.SelectedSupportConcepts.AddRangeIfElementsNotIn(selectedSupportConcepts);
foreach (var gruppe in groups.Where(g => g.GroupOfPeopleOid.HasValue))
@@ -2629,24 +2614,56 @@ namespace BeWoPlanerMobil.Controllers
}
}
return RedirectToAction("Main");
return SerializeObject(Model.SelectedRelations.ToArray());
}
[Authorize]
public string ResetGroupBookingModeViaGET()
public string RemoveSupportConceptCostBearerRelationFromGroupBooking(string pRelOid)
{
if (Model == null)
if(Model == null)
{
RedirectToActionPermanent("Index", "Login");
return _LeerzeichenFuerGetMethoden;
}
Model.IsInGroupBookingMode = false;
Model.SelectedCostbearerRelOids.Clear();
Model.SelectedEmployees.Clear();
Model.SelectedSupportConcepts.Clear();
long.TryParse(pRelOid, out var supportConceptCostBearerRelationOid);
return MainModel.IsEmployeeSelectionVisible.ToString();
var supportConcept = Model.SelectedSupportConcepts.FirstOrDefault(f => f.CostBearerRelations.Any(a => a.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid));
var relation = Model.SelectedConceptCostBearerRelations.FirstOrDefault(f => f.CostBearer2SupportConceptOid == supportConceptCostBearerRelationOid);
Model.SelectedSupportConcepts.Remove(supportConcept);
Model.SelectedConceptCostBearerRelations.Remove(relation);
return _LeerzeichenFuerGetMethoden;
}
[Authorize]
public string AddEmployeesToGroupBooking(string pEmployeeOids)
{
if(Model == null)
{
RedirectToActionPermanent("Index", "Login");
return _LeerzeichenFuerGetMethoden;
}
if(string.IsNullOrEmpty(pEmployeeOids))
{
Model.SelectedEmployees.Clear();
return _LeerzeichenFuerGetMethoden;
}
var rawEmployeeOids = pEmployeeOids.Split(',');
var oids = new List<long>();
rawEmployeeOids.DoForEach(s => oids.AddIfNotIn(long.Parse(s)));
var employees = Model.Employees.Where(w => oids.Contains(w.EmployeeOid));
Model.SelectedEmployees.Clear();
Model.SelectedEmployees.AddRangeIfElementsNotIn(employees);
return _LeerzeichenFuerGetMethoden;
}
}
}

View File

@@ -25,7 +25,7 @@ namespace BeWoPlanerMobil.Models
public long? CostBearer2SupportConceptOid { get; set; }
[Display(Name = "Kategorie")]
public long? SelectedServiceCategoryConceptOid { get; set; }
public long? SelectedServiceCategoryOid { get; set; }
public long? SelectedServiceDescriptionOid { get; set; }
@@ -84,8 +84,9 @@ namespace BeWoPlanerMobil.Models
public static bool IsAllowedToCreateOrEditRecord
{
get { return MobileSessionFacade.LoggedInUser.UserGroups.Any(a => a.Rights.Any(f => f.RightType.Equals(UserRightType.ServiceRecordView_Create))) ||
MobileSessionFacade.LoggedInUser.UserGroups.Any(a => a.Rights.Any(f => f.RightType.Equals(UserRightType.ServiceRecordView_Edit)));
get {
return MobileSessionFacade.LoggedInUser.UserGroups.Any(a => a.Rights.Any(f => f.RightType.Equals(UserRightType.ServiceRecordView_Create))) ||
MobileSessionFacade.LoggedInUser.UserGroups.Any(a => a.Rights.Any(f => f.RightType.Equals(UserRightType.ServiceRecordView_Edit)));
}
}
@@ -134,6 +135,39 @@ namespace BeWoPlanerMobil.Models
}
}
public List<SupportConceptCostBearerRelDC> SelectedConceptCostBearerRelations { get; set; }
public IEnumerable<CustomSelectListItem> SelectedRelations
{
get
{
var result = new List<CustomSelectListItem>();
foreach(var rel in SelectedConceptCostBearerRelations)
{
var text1 = $"{rel.SupportConcept.Customer.LastNameFirstName}";
var text2 = $"{rel.StartDate?.ToShortDateString() ?? string.Empty} - {rel.EndDate?.ToShortDateString()} {rel.CostBearer.Name}";
var value = rel.CostBearer2SupportConceptOid.ToString();
var textColor = "#555555";
if(rel.EndDate.HasValue)
{
var isExpired = DateTime.Now > rel.EndDate.Value;
if(isExpired)
{
textColor = "#FF0000";
}
}
var listItem = new CustomSelectListItem(text1, text2, value, textColor);
result.Add(listItem);
}
return result;
}
}
public IEnumerable<SelectListItem> SupporConceptListItemsForGroupBooking
{
get
@@ -167,14 +201,7 @@ namespace BeWoPlanerMobil.Models
{
get
{
var result = new List<SelectListItem>();
foreach(var group in GroupsOfPeople)
{
result.Add(new SelectListItem { Value = $"{group.GroupOfPeopleOid.Value}", Text = group.Name });
}
return result;
return GroupsOfPeople.Select(group => new SelectListItem {Value = $"{group.GroupOfPeopleOid.Value}", Text = group.Name}).ToList();
}
}
@@ -251,7 +278,6 @@ namespace BeWoPlanerMobil.Models
public bool IsInGroupBookingMode
{
get => _IsInGroupBookingMode;
//get => false;
set
{
@@ -286,5 +312,38 @@ namespace BeWoPlanerMobil.Models
public bool IsServiceRecordNoticeMandatory { get; set; } = true;
public List<SelectListItem> SelectedSupportConceptListItems
{
get
{
var allCostBearerRelations = new List<SelectListItem>();
foreach (var sc in SelectedSupportConcepts.OrderBy(sc => sc.Customer.LastName))
{
allCostBearerRelations.AddRangeIfElementsNotIn(sc.CostBearerRelations.Select(cb => new SelectListItem
{
Value = cb.CostBearer2SupportConceptOid.ToString(),
Text = $"{sc.Customer.LastNameFirstName} | {cb.StartDate?.ToShortDateString().Remove(6, 2) ?? string.Empty}-{cb.EndDate?.ToShortDateString().Remove(6, 2) ?? string.Empty} {cb.CostBearer.Name}"
}));
}
return allCostBearerRelations;
}
}
}
public class CustomSelectListItem
{
public string Text1 { get; set; }
public string Text2 { get; set; }
public string Value { get; set; }
public string TextColor { get; set; }
public CustomSelectListItem(string pText1, string pText2, string pValue, string pTextColor)
{
Text1 = pText1;
Text2 = pText2;
Value = pValue;
TextColor = pTextColor;
}
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using BS.Shared;
using BS.Shared.DataContracts;
@@ -17,7 +18,6 @@ namespace BeWoPlanerMobil.Models
public int Position { get; set; }
public AccountingvisibilityType? OhneHilfeplan { get; set; }
public List<ServiceDescriptionDC> ServiceDescriptions { get; set; }
}

View File

@@ -152,9 +152,6 @@ function getHoursAndMinutesWithLeadingZeros(pDate) {
var hours = pDate.getHours();
var minutes = pDate.getMinutes();
//var hoursString = hours < 10 ? `0${hours.toString()}` : hours.toString();
//var minutesString = minutes < 10 ? `0${minutes.toString()}` : minutes.toString();
var hoursString = hours < 10 ? '0' + hours.toString() : hours.toString();
var minutesString = minutes < 10 ? '0' + minutes.toString() : minutes.toString();
@@ -211,7 +208,6 @@ function endDateVisibleEh() {
}
function calcDurationByStartEnd() {
//console.log(`is end date visible: ${endDateVisibleEh()}`);
console.log('is end date visible: ' + endDateVisibleEh());
if($("#enddatum_textbox").val() === $("#datum_textbox").val() || $("#enddatum_textbox").val() === "") {

View File

@@ -16,11 +16,7 @@ function isInEditingMode() {
var flagData = {};
function setGroupEditingFlag(flag) {
var obj = {
flag: flag
};
flagData.obj = obj;
flagData.obj = {flag: flag};
localStorage.flagData = JSON.stringify(flagData);
}
@@ -113,9 +109,7 @@ function openGroupBookingTab(isSupportConceptTab) {
function addSupportConcepts() {
hideGroupBookingPopup();
showSanduhr();
$("#groupBookingSupportConceptSelectionForm").submit();
addSupportConceptsViaGet();
}
@@ -172,7 +166,123 @@ function hideEmployeePopup() {
function addEmployees() {
hideEmployeePopup();
showSanduhr();
$("#groupBookingEmployeeSelectionForm").submit();
addEmployeesViaGet();
}
function addEmployeesViaGet() {
var checkedEmployees = [];
$("#groupBookingEmployeeTable input:checked").each(function() {
checkedEmployees.push($(this).attr("value"));
});
var oidString = "";
for(var i = 0; i < checkedEmployees.length; i++) {
oidString += checkedEmployees[i];
if(i < checkedEmployees.length - 1) {
oidString += ",";
}
}
makeAjaxCall("GET", window.addEmployeesToGroupBookingUrl, null, { pEmployeeOids: oidString}, null);
}
function addSupportConceptsViaGet() {
var selectedGroups = [];
var selectedSupportConcepts = [];
var scOidString = "";
var groupOidString = "";
$("#leftContent input:checked").each(function () {
selectedSupportConcepts.push($(this).attr("value"));
});
for (var i = 0; i < selectedSupportConcepts.length; i++) {
scOidString += selectedSupportConcepts[i];
if (i < selectedSupportConcepts.length - 1) {
scOidString += ",";
}
}
$("#rightContent input:checked").each(function () {
selectedGroups.push($(this).attr("value"));
});
for (var j = 0; j < selectedGroups.length; j++) {
groupOidString += selectedGroups[j];
if (j < selectedGroups.length - 1) {
groupOidString += ",";
}
}
makeAjaxCall("GET", window.addSupportConceptCostBearerRelationsToGroupBookingUrl, addSupportConceptsToTable, { pRelOids: scOidString, pGroupOids: groupOidString }, null);
}
function removeSupportConceptViaGet(pRelOid) {
$("#groupSelectionRow_" + pRelOid).remove();
if($("#costbearer2supportconcept_" + pRelOid).length) {
$("#costbearer2supportconcept_" + pRelOid).prop("checked", false);
}
if($("#groupBookingSelectionTable tr").length === 0) {
deactivateInputFormCompletely();
$("#rightContent input:checked").each(function () {
$(this).prop("checked", false);
});
}
makeAjaxCall("GET", window.removeSupportConceptCostBearerRelationFromGroupBookingUrl, null, { pRelOid: pRelOid}, null);
}
function addSupportConceptsToTable(result) {
if (isEmptyOrSpaces(result)) {
window.location.href = window.redirectLink;
return;
}
if (result === "SessionTimeout") {
window.location.href = redirectLink;
return;
}
var list = $.parseJSON(result);
var tableRows = "";
$.each(list,
function (index, customListItem) {
var style = "";
if(list.length - 1 === index) {
style = "border-bottom: none;";
}
tableRows += "<tr class=\"groupBookingSelectionTableRow\" id=\"groupSelectionRow_" + customListItem.Value + "\" >";
tableRows += "<td class=\"groupBookingSelectionLeftCell\" style=\"" + style + "\">";
tableRows += "<p class=\"groupBookingPTag\">" + customListItem.Text1 + "</p>";
tableRows += "<br />";
tableRows += "<p class=\"groupBookingPTag\" style=\"color: " + customListItem.TextColor + "\">" + customListItem.Text2 + "</p>";
tableRows += "<input type=\"hidden\" value=\"" + customListItem.Value + "\" name=\"RelOidHolder\" />";
tableRows += "</td>";
tableRows += "<td class=\"groupBookingSelectionRightCell\" style=\"" + style + "\">";
tableRows += "<input type=\"button\" class=\"remove_btn\" value=\"\" onclick=\"removeSupportConceptViaGet(" + customListItem.Value + ")\" />";
tableRows += "</td>";
tableRows += "</tr>";
});
if(!isEmptyOrSpaces(tableRows)) {
activateInputForm(window.loadGoalsUrl, true);
} else {
deactivateInputFormCompletely();
}
$("#groupBookingSelectionTable").empty().append(tableRows);
}

View File

@@ -71,7 +71,7 @@ var scaleFactor = .8;
$(window).resize(function() {
var documentWidth = $(document).width();
if(canvasWidth !== (documentWidth * scaleFactor) && $("#sketchpad").css("display") === "inline") {
if(canvasWidth !== documentWidth * scaleFactor && $("#sketchpad").css("display") === "inline") {
$("#sketchpad").prop("width", documentWidth * scaleFactor);
}
});
@@ -79,12 +79,47 @@ $(window).resize(function() {
function initBeWoMobile(actionPath) {
try {
var selectedServiceCategory = $("#scDropDown").find(":selected").val();
var shouldLoadServiceDescriptions = true;
if(isInGroupBookingMode() && isInEditingMode()) {
if(getGroupEditingFlag().flag === false) {
if (isInGroupBookingMode() && isInEditingMode()) {
if (getGroupEditingFlag().flag === false) {
loadSavedValuesIntoForm();
} else {
saveFormValuesLocally();
var serviceCategoryOid = $("#selectedServiceCategoryOidHolder").val();
var serviceDescriptionOid = $("#selectedServiceDescriptionOidHolder").val();
shouldLoadServiceDescriptions = false;
showSanduhr();
makeAjaxCall("GET", window.loadServiceCategoriesUrl, function (result) {
if (isEmptyOrSpaces(result)) {
window.location.href = window.redirectLink;
return;
}
if (result === "SessionTimeout") {
window.location.href = redirectLink;
return;
}
$("#kategorien_select").val(serviceCategoryOid);
var liste = $.parseJSON(result);
$("#leistungen_select").empty();
$("#leistungen_select").val("");
$.each(liste, function (index, leistung) {
$("#leistungen_select").append('<option value="' + leistung.ServiceDescriptionOid + '">' + leistung.Name + '</option>');
});
$("#leistungen_select").val(serviceDescriptionOid);
makeAjaxCall("GET", window.setServiceDescriptionUrl, function () {
hideSanduhr();
saveFormValuesLocally();
}, { pServiceDescriptionOid: serviceDescriptionOid }, null);
}, { pServiceCategoryOid: serviceCategoryOid }, null);
}
setGroupEditingFlag(false);
@@ -93,43 +128,9 @@ function initBeWoMobile(actionPath) {
var shouldActivateForm = isInGroupBookingMode() ? $("#leftContent input:checked").length > 0 : selectedServiceCategory !== "-1";
if (shouldActivateForm) {
$("#recordLoader_select").prop("disabled", false);
activateInput("#record-loader-select-container");
$("#kategorien_select").prop("disabled", false);
activateInput("#kategorien-select-container");
$("#leistungen_select").prop("disabled", false);
activateInput("#leistungen-select-container");
$("#textbausteine_select").prop("disabled", false);
activateInput("#textbausteine-select-container");
activateInput("#employee-select-container");
$("#statistik-button").prop("disabled", false);
$("#statistik-button").css("background-image", "url('../Content/images/statistik-orange.svg')");
activateForm(actionPath);
if (!isInEditingMode()) {
$("#datum_textbox").val(getDateStringWithLeadingZeros(new Date()));
}
activateInputForm(actionPath, shouldLoadServiceDescriptions);
} else {
$("#statistik-button").prop("disabled", true);
$("#statistik-button").css("background-image", "url('../Content/images/statistik-disabled.svg')");
$("#recordLoader_select").prop("disabled", true);
disableInput("#record-loader-select-container");
$("#kategorien_select").prop("disabled", true);
disableInput("#kategorien-select-container");
$("#leistungen_select").prop("disabled", true);
disableInput("#leistungen-select-container");
$("#textbausteine_select").prop("disabled", true);
disableInput("#textbausteine-select-container");
deactivateInputForm();
}
$(".not-required-input").on("click blur change focus",
@@ -190,56 +191,6 @@ function initBeWoMobile(actionPath) {
}
}
function toggleSelectClassesForElement(elementIdentifier, parentElement) {
var enabled = $(elementIdentifier).prop("disabled") === "false";
if(enabled) {
$(parentElement).removeClass("disabled-select-container");
$(parentElement).addClass("styled-select-div");
} else {
$(parentElement).removeClass("styled-select-div");
$(parentElement).addClass("disabled-select-container");
}
}
function activateInput(parentElement) {
$(parentElement).removeClass("disabled-select-container");
$(parentElement).addClass("styled-select-div");
}
function disableInput(parentElement) {
$(parentElement).removeClass("styled-select-div");
$(parentElement).addClass("disabled-select-container");
}
function toggleErrorPopup2(errorMessage) {
var isDisplayNone = $("#errorPopupDiv2").css("display") === "none";
var displayValue = isDisplayNone ? "block" : "none";
$("#errorPopupDiv2").css("display", displayValue);
$(".modalWrapper").css("display", displayValue);
$(".modalWrapper").css("height", $(document).height());
if(isDisplayNone) {
$("#errorPopupText2").text(errorMessage);
var h = 0;
var t = $("#errorPopupTitle2").outerHeight();
var u = $("#errorPopupText2").outerHeight();
var v = $("#errorPopupBtnDiv2").outerHeight();
var w = $("#errorPopupOkBtn2").outerHeight();
h += t + u + v + w + w;
$("#errorPopupDiv2").css("height", h + "px");
$("#errorPopupDiv2").css("top", window.pageYOffset + window.innerHeight / 2 - h / 2);
$("#errorPopupDiv2").css("margin-top", "0");
} else {
$("#errorPopupDiv2").css("margin-top", "auto");
}
}
function logoutSettingsAccordingToBWP(timeoutTime) {
if(timeoutTime > 0) {
timeoutTime = timeoutTime * 1000 * 60;
@@ -300,7 +251,7 @@ function initializeDocumentationTextareas() {
if (numberOfDocumentationTypes === 1) {
$("#tddokureiter").hide();
$("#trnormalDoku").css("display", "table-row");
$("#trnormalDokuLabel").text(dokuTypes[0].TypeDescription);
$("#trnormalDokuLabel").val(dokuTypes[0].TypeDescription);
}
if (numberOfDocumentationTypes > 1) {
@@ -311,7 +262,7 @@ function initializeDocumentationTextareas() {
var dokuTab = $("#doku-name-" + idNumber);
dokuTab.html(dokuTypes[i].TypeDescription);
dokuTab.val(dokuTypes[i].TypeDescription);
dokuTab.show();
var outerHeight = dokuTab.outerHeight();
@@ -343,8 +294,6 @@ $(document).on("change", ".edit-form-input",
});
function saveFormValuesLocally() {
console.log("Speichere Eingaben als Objekt im Browser...");
var recordObject = {
category: $("#kategorien_select").val(),
serviceDescription: $("#leistungen_select").val(),
@@ -390,10 +339,6 @@ function loadSavedValuesIntoForm() {
$("#kategorien_select").val(values.category);
}
if(values.serviceDescription !== "undefined") {
$("#leistungen_select").val(values.serviceDescription);
}
if(values.startDate !== "undefined") {
$("#datum_textbox").val(values.startDate);
}
@@ -441,4 +386,8 @@ function loadSavedValuesIntoForm() {
if(values.notice5 !== "undefined") {
$("#notiz_textbox5").val(values.notice5);
}
if (values.serviceDescription !== "undefined") {
$("#leistungen_select").val(values.serviceDescription);
}
}

View File

@@ -139,13 +139,12 @@ function toggleMenu() {
}
function loadServiceDescriptions() {
var selectedCategory = $("#kategorien_select").find(":selected").val();
if (selectedCategory === null || selectedCategory === undefined) {
return;
}
makeAjaxCall("GET", window.loadServiceCategoriesUrl, loadServiceDescriptionsOnSuccess, { pServiceCategoryOid: selectedCategory }, null);
loadTextbausteineForServiceCategory(selectedCategory);
@@ -362,7 +361,7 @@ function selectServiceRecord(oid) {
});
}
function activateForm(actionPath) {
function activateForm(actionPath, shouldLoadServiceDescriptions) {
$("input").prop("disabled", false);
$("textarea").prop("disabled", false);
$(".doku-tab-link").prop("disabled", false);
@@ -377,7 +376,9 @@ function activateForm(actionPath) {
$("#kategorien_select").val($("#kategorien_select option").eq(0).val());
loadServiceDescriptions();
if(shouldLoadServiceDescriptions) {
loadServiceDescriptions();
}
}
function resetRecordForm() {
@@ -460,11 +461,7 @@ $(document).mouseup(function(e) {
function saveCreateServicerecod() {
showSanduhr();
//if (validateTimeField("#start_textbox") && validateTimeField("#ende_textbox")) {
validateServiceRecordBeforeSubmit();
//} else {
// hideSanduhr();
// }
validateServiceRecordBeforeSubmit();
}
function validateTimeField(id) {
@@ -677,10 +674,10 @@ function initAppointmentEditForm() {
currTime.setMinutes(currTime.getMinutes() + j);
}
$("#AppointmentEditForm").show();//css("display", "block");
$("#KalenderTable").hide();//css("display", "none");
$("#KalenderNavigation").hide();//css("display", "none");
$("#KalenderTableTask").hide();//css("display", "none");
$("#AppointmentEditForm").show();
$("#KalenderTable").hide();
$("#KalenderNavigation").hide();
$("#KalenderTableTask").hide();
$("#StartDate").val($("#KalenderDatumFormat").val());
$("#EndDate").val($("#KalenderDatumFormat").val());
$("#TerminStartZeit").val(getHoursAndMinutesWithLeadingZeros(currTime));
@@ -698,7 +695,7 @@ function initAppointmentEditForm() {
$("#TerminSpeichern").val("Speichern");
$("#TerminSpeichernAbbrechen").val("Abbrechen");
$("#TerminSpeichern").hide();//css("display", "none");
$("#TerminSpeichern").hide();
$("#InsertAppointmentButton").css("display", "inline");
}
@@ -1305,7 +1302,7 @@ function focusOnDoku(number) {
var c = window.numberOfDocumentationTypes;
for (var e = 0; e < window.numberOfDocumentationTypes; e++) {
if ((e > f || e < (f - 1)) && e < (c - 1)) {
if ((e > f || e < f - 1) && e < c - 1) {
$("#doku-name-" + (e + 1)).css("border-right", "1px solid #bbbbbb");
}
}

View File

@@ -55,7 +55,7 @@ function adjustLabel(inputId) {
}
function isInEditingMode() {
return $("#isInEditModeIndicator").val() == "true";
return $("#isInEditModeIndicator").val() === "true";
}
function isElementInArray(array, element) {
@@ -78,4 +78,132 @@ function isElementInArray(array, element) {
function isEmptyOrSpaces(str) {
return str === null || str === undefined || str.match(/^ *$/) !== null;
}
function toggleSelectClassesForElement(elementIdentifier, parentElement) {
var enabled = $(elementIdentifier).prop("disabled") === "false";
if (enabled) {
$(parentElement).removeClass("disabled-select-container");
$(parentElement).addClass("styled-select-div");
} else {
$(parentElement).removeClass("styled-select-div");
$(parentElement).addClass("disabled-select-container");
}
}
function activateInput(parentElement) {
$(parentElement).removeClass("disabled-select-container");
$(parentElement).addClass("styled-select-div");
}
function disableInput(parentElement) {
$(parentElement).removeClass("styled-select-div");
$(parentElement).addClass("disabled-select-container");
}
function toggleErrorPopup2(errorMessage) {
var isDisplayNone = $("#errorPopupDiv2").css("display") === "none";
var displayValue = isDisplayNone ? "block" : "none";
$("#errorPopupDiv2").css("display", displayValue);
$(".modalWrapper").css("display", displayValue);
$(".modalWrapper").css("height", $(document).height());
if (isDisplayNone) {
$("#errorPopupText2").text(errorMessage);
var h = 0;
var t = $("#errorPopupTitle2").outerHeight();
var u = $("#errorPopupText2").outerHeight();
var v = $("#errorPopupBtnDiv2").outerHeight();
var w = $("#errorPopupOkBtn2").outerHeight();
h += t + u + v + w + w;
$("#errorPopupDiv2").css("height", h + "px");
$("#errorPopupDiv2").css("top", window.pageYOffset + window.innerHeight / 2 - h / 2);
$("#errorPopupDiv2").css("margin-top", "0");
} else {
$("#errorPopupDiv2").css("margin-top", "auto");
}
}
function disableElement(pElement) {
pElement.prop("disabled", true);
}
function enableElement(pElement) {
pElement.prop("disabled", false);
}
function deactivateInputForm() {
$("#statistik-button").prop("disabled", true);
$("#statistik-button").css("background-image", "url('../Content/images/statistik-disabled.svg')");
$("#recordLoader_select").prop("disabled", true);
disableInput("#record-loader-select-container");
$("#kategorien_select").prop("disabled", true);
disableInput("#kategorien-select-container");
$("#leistungen_select").prop("disabled", true);
disableInput("#leistungen-select-container");
$("#textbausteine_select").prop("disabled", true);
disableInput("#textbausteine-select-container");
}
function activateInputForm(actionPath, shouldLoadServiceDescriptions) {
enableElement($("#recordLoader_select"));
activateInput("#record-loader-select-container");
$("#kategorien_select").prop("disabled", false);
activateInput("#kategorien-select-container");
$("#leistungen_select").prop("disabled", false);
activateInput("#leistungen-select-container");
$("#textbausteine_select").prop("disabled", false);
activateInput("#textbausteine-select-container");
activateInput("#employee-select-container");
$("#statistik-button").prop("disabled", false);
$("#statistik-button").css("background-image", "url('../Content/images/statistik-orange.svg')");
activateForm(actionPath, shouldLoadServiceDescriptions);
if (!isInEditingMode()) {
$("#datum_textbox").val(getDateStringWithLeadingZeros(new Date()));
}
}
function deactivateInputFormCompletely() {
deactivateInputForm();
disableElement($("#datum_textbox"));
disableElement($("#start_textbox"));
disableElement($("#ende_textbox"));
disableElement($("#duration_textbox"));
disableElement($("#distance_textbox"));
disableElement($("#kollabier-btn2"));
disableElement($("#doku-name-1"));
disableElement($("#doku-name-2"));
disableElement($("#doku-name-3"));
disableElement($("#doku-name-4"));
disableElement($("#doku-name-5"));
disableElement($("#notiz_textbox"));
disableElement($("#notiz_textbox1"));
disableElement($("#notiz_textbox2"));
disableElement($("#notiz_textbox3"));
disableElement($("#notiz_textbox4"));
disableElement($("#notiz_textbox5"));
disableElement($("#abbrechenBtn"));
disableElement($("#anlegenEditierenBtn"));
}

View File

@@ -2,14 +2,16 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using BeWoPlanerMobil.Models;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.UI;
using Newtonsoft.Json;
using static System.Int32;
@@ -335,41 +337,41 @@ namespace BeWoPlanerMobil.Util
var clone = new ServiceRecordDC
{
CostBearer = m.CostBearer,
CostBearer = m.CostBearer,
CostBearer2SupportConceptOid = m.CostBearer2SupportConceptOid,
Customer = m.Customer,
Employee = m.Employee,
End = m.End,
Goals = m.Goals,
GroupEmployeeCount = m.GroupEmployeeCount,
GroupOid = m.GroupOid,
SignatureOid = m.SignatureOid,
GroupPersonCount = m.GroupPersonCount,
GroupRoundedDuration = m.GroupRoundedDuration,
InsUser = m.InsUser,
InsertedOn = m.InsertedOn,
Notice = m.Notice,
Notice2 = m.Notice2,
Notice3 = m.Notice3,
Notice4 = m.Notice4,
Notice5 = m.Notice5,
RTFNotice1 = m.RTFNotice1,
RTFNotice2 = m.RTFNotice2,
RTFNotice3 = m.RTFNotice3,
RTFNotice4 = m.RTFNotice4,
RTFNotice5 = m.RTFNotice5,
RoundedDuration = m.RoundedDuration,
ServiceDescription = m.ServiceDescription,
Start = m.Start,
SupportConcept = m.SupportConcept,
ServiceRecordType = m.ServiceRecordType,
DistanceInMeter = m.DistanceInMeter,
IP = m.IP,
Relevance = m.Relevance,
IsCreatedInMobileClient = true,
WohnheimbuchungsOid = m.WohnheimbuchungsOid,
DurationInStunden = m.DurationInStunden,
ServiceRecordFormat = m.ServiceRecordFormat
Customer = m.Customer,
Employee = m.Employee,
End = m.End,
Goals = m.Goals,
GroupEmployeeCount = m.GroupEmployeeCount,
GroupOid = m.GroupOid,
SignatureOid = m.SignatureOid,
GroupPersonCount = m.GroupPersonCount,
GroupRoundedDuration = m.GroupRoundedDuration,
InsUser = m.InsUser,
InsertedOn = m.InsertedOn,
Notice = m.Notice,
Notice2 = m.Notice2,
Notice3 = m.Notice3,
Notice4 = m.Notice4,
Notice5 = m.Notice5,
RTFNotice1 = m.RTFNotice1,
RTFNotice2 = m.RTFNotice2,
RTFNotice3 = m.RTFNotice3,
RTFNotice4 = m.RTFNotice4,
RTFNotice5 = m.RTFNotice5,
RoundedDuration = m.RoundedDuration,
ServiceDescription = m.ServiceDescription,
Start = m.Start,
SupportConcept = m.SupportConcept,
ServiceRecordType = m.ServiceRecordType,
DistanceInMeter = m.DistanceInMeter,
IP = m.IP,
Relevance = m.Relevance,
IsCreatedInMobileClient = true,
WohnheimbuchungsOid = m.WohnheimbuchungsOid,
DurationInStunden = m.DurationInStunden,
ServiceRecordFormat = m.ServiceRecordFormat
};
return clone;

View File

@@ -52,7 +52,6 @@
@Html.LabelFor(m => m.ShowExpiredSupportConcepts, new { id = "LabelForShowExpiredSupportConceptsCB" })
}
@* , new { style = "display: none;"} *@
@{
var shouldShowGroupBookingForm = "display: none";
@@ -60,6 +59,13 @@
{
shouldShowGroupBookingForm = "display: block";
}
var groupBookingElementDisplayValue = "display: none";
if(Model.IsInGroupBookingMode)
{
groupBookingElementDisplayValue = "display: block";
}
}
@using(Html.BeginForm("SetGroupBookingMode", "Main", FormMethod.Post, new { id = "groupBookingForm", style = shouldShowGroupBookingForm }))
{
@@ -67,16 +73,40 @@
@Html.LabelFor(m => m.IsInGroupBookingMode, new { id = "labelForChangeBookingModeCheckBox" })
}
<input id="groupBookingOpenPopupBtn" type="button" value="Hilfepläne und Gruppen" onclick="openGroupBookingDiv()" style="display: @if (Model.IsInGroupBookingMode)
{
@Html.Raw("block")
}
else
{
@Html.Raw("none")
};" />
<input id="groupBookingOpenPopupBtn" type="button" value="Hilfepläne und Gruppen" onclick="openGroupBookingDiv()" style="@groupBookingElementDisplayValue;" />
<div style="@groupBookingElementDisplayValue">
<table id="groupBookingSelectionTable">
@{ var counter = 0; }
@foreach (var x in Model.SelectedRelations)
{
<tr class="groupBookingSelectionTableRow" id="groupSelectionRow_@x.Value">
<td class="groupBookingSelectionLeftCell" style="@{
if(counter == Model.SelectedRelations.Count() - 1)
{
@Html.Raw("border-bottom: none;")
}
}">
<p class="groupBookingPTag">@x.Text1</p>
<br />
<p class="groupBookingPTag" style="color: @x.TextColor;">@x.Text2</p>
<input type="hidden" value="@x.Value" name="RelOidHolder" />
</td>
<td class="groupBookingSelectionRightCell" style="@{
if(counter == Model.SelectedRelations.Count() - 1)
{
@Html.Raw("border-bottom: none;")
}
}">
<input type="button" class="remove_btn" value="" onclick="removeSupportConceptViaGet(@x.Value)" />
</td>
</tr>
counter++;
}
</table>
</div>
<input id="groupBookingOpenEmployeeSelectionPopupBtn" type="button" value="Mitarbeiter" onclick="openEmployeePopup()" style="display: @if (Model.IsInGroupBookingMode) { @Html.Raw("block") } else { @Html.Raw("none") };" />
<input id="groupBookingOpenEmployeeSelectionPopupBtn" type="button" value="Mitarbeiter" onclick="openEmployeePopup()" style="@groupBookingElementDisplayValue;" />
@{
var shouldShowSingleBookingElements = "display: block";
@@ -113,6 +143,8 @@
<div @{if(!MainModel.IsAllowedToCreateOrEditRecord) { @Html.Raw("style='height: 0; overflow: hidden; position: absolute;'") }}>
<input type="hidden" id="isInEditModeIndicator" value="@(Model.IsInEditingMode ? Html.Raw("true") : Html.Raw("false"))" />
<input type="hidden" id="selectedServiceCategoryOidHolder" value="@{ if(Model.IsInEditingMode && Model.SelectedServiceRecord != null) { @Html.Raw(Model.SelectedServiceRecord.ServiceDescription.Category.ServiceCategoryOid.ToString()) } }" />
<input type="hidden" id="selectedServiceDescriptionOidHolder" value="@{ if(Model.IsInEditingMode && Model.SelectedServiceRecord != null) { @Html.Raw(Model.SelectedServiceRecord.ServiceDescription.ServiceDescriptionOid.ToString()) } }" />
@using(Html.BeginForm("CreateServiceRecord", "Main", FormMethod.Post, new { id = "createSRForm" }))
{
<table>
@@ -128,9 +160,9 @@
<tr>
<td colspan="2">
<div class="combobox-label-parent cell-content">
@Html.LabelFor(m => m.SelectedServiceCategoryConceptOid)
@Html.LabelFor(m => m.SelectedServiceCategoryOid)
<div class="styled-select-div select-container" id="kategorien-select-container">
@Html.DropDownListFor(m => m.SelectedServiceCategoryConceptOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions();", id = "kategorien_select", required = "required", @class = "dropdownlist-for edit-form-input" })<!--ErfolgteSpx(); Speichern local-->
@Html.DropDownListFor(m => m.SelectedServiceCategoryOid, Model.ServiceCategoryListItems, new { onchange = "loadServiceDescriptions()", id = "kategorien_select", required = "required", @class = "dropdownlist-for edit-form-input" })<!--ErfolgteSpx(); Speichern local-->
</div>
</div>
</td>
@@ -213,11 +245,11 @@
<td colspan="2" id="tddokureiter">
<div class="input-wrapper cell-content">
<div class="doku-tab">
<button class="doku-tab-link" id="doku-name-1" onclick="focusOnDoku(1)" disabled></button>
<button class="doku-tab-link" id="doku-name-2" onclick="focusOnDoku(2)" disabled></button>
<button class="doku-tab-link" id="doku-name-3" onclick="focusOnDoku(3)" disabled></button>
<button class="doku-tab-link" id="doku-name-4" onclick="focusOnDoku(4)" disabled></button>
<button class="doku-tab-link" id="doku-name-5" onclick="focusOnDoku(5)" disabled></button>
<input type="button" class="doku-tab-link" id="doku-name-1" onclick="focusOnDoku(1)" disabled />
<input type="button" class="doku-tab-link" id="doku-name-2" onclick="focusOnDoku(2)" disabled />
<input type="button" class="doku-tab-link" id="doku-name-3" onclick="focusOnDoku(3)" disabled />
<input type="button" class="doku-tab-link" id="doku-name-4" onclick="focusOnDoku(4)" disabled />
<input type="button" class="doku-tab-link" id="doku-name-5" onclick="focusOnDoku(5)" disabled />
</div>
<div class="doku-tab-content" id="doku-tab-content-1">
@@ -596,24 +628,18 @@
<button id="leftBtn" class="tab-links" onclick="openGroupBookingTab(true)">Hilfepläne</button>
<button id="rightBtn" class="tab-links" onclick="openGroupBookingTab(false)">Gruppen</button>
</div>
@using(Html.BeginForm("AddSupportConceptsToGroupBooking", "Main", FormMethod.Post, new { id = "groupBookingSupportConceptSelectionForm" }))
{
var i = 0;
var j = 0;
<div id="leftContent" class="tab-content">
<table>
@foreach(var hp in Model.SupporConceptListItemsForGroupBooking)
{
<tr>
<td style="width: 1px; white-space: nowrap;">
<input type="checkbox" value="@hp.Value" name="costbearer2supportconcept_@i"
@if(Model.SelectedCostbearerRelOids.Contains(long.Parse(hp.Value))) { @Html.Raw("checked=\"checked\"") } />
<input type="checkbox" value="@hp.Value" name="costbearer2supportconcept_@hp.Value" id="costbearer2supportconcept_@hp.Value" @if(Model.SelectedCostbearerRelOids.Contains(long.Parse(hp.Value))) { @Html.Raw("checked=\"checked\"") } />
</td>
<td class="group-booking-text-cell">
@hp.Text
</td>
</tr>
i++;
}
</table>
</div>
@@ -623,18 +649,15 @@
{
<tr>
<td style="width: 1px; white-space: nowrap;">
<input type="checkbox" value="@gruppe.Value" name="group_@j"
@if(Model.SelectedGroupOfPeopleOids.Contains(long.Parse(gruppe.Value))) { @Html.Raw("checked=\"checked\"") } />
<input type="checkbox" value="@gruppe.Value" name="group_@gruppe.Value" id="group_@gruppe.Value" @if(Model.SelectedGroupOfPeopleOids.Contains(long.Parse(gruppe.Value))) { @Html.Raw("checked=\"checked\"") } />
</td>
<td class="group-booking-text-cell">
@gruppe.Text
</td>
</tr>
j++;
}
</table>
</div>
}
</div>
<input type="button" onclick="addSupportConcepts()" value="Hinzufügen" />
</div>
@@ -650,7 +673,7 @@
{
<tr>
<td style="width: 1px; white-space: nowrap;">
<input type="checkbox" value="@ma.Value" name="employee_@i" @if(Model.SelectedEmployees.Any(a => long.Parse(ma.Value).Equals(a.EmployeeOid))) { @Html.Raw("checked=\"checked\"") } />
<input type="checkbox" value="@ma.Value" name="employee_@i" id="employee_@i" @if(Model.SelectedEmployees.Any(a => a.EmployeeOid == long.Parse(ma.Value))) {@Html.Raw("checked=\"checked\"")} />
</td>
<td class="group-booking-text-cell">
@ma.Text
@@ -1001,44 +1024,47 @@
</div>
<script>
getSelectedRecordInformationUrl = '@Url.Action("GetSelectedRecordInformation")';
setSelectedServiceRecordUrl = '@Url.Action("SetSelectedServiceRecord")';
setServiceDescriptionUrl = '@Url.Action("SetServiceDescription")';
updateGoalsUrl = '@Url.Action("UpdateGoals")';
loadServiceCategoriesUrl = '@Url.Action("LoadServiceCategories")';
loadServiceRecordsUrl = '@Url.Action("LoadServiceRecords")';
loadGoalsUrl = '@Url.Action("LoadGoals")';
setRecordForDeletionUrl = '@Url.Action("SetRecordOidToDelete")';
checkRightsUrl = '@Url.Action("CheckRights")';
getSelectedCustomerUrl = '@Url.Action("GetSelectedCustomer")';
loadAppointmentsUrl = '@Url.Action("LoadAppointments")';
loadBewoTasksUrl = '@Url.Action("LoadBeWoTasks")';
insertAppointmentUrl = '@Url.Action("InsertAppointment")';
setSelectedUnterschriftUrl = '@Url.Action("SaveUnterschrift")';
setServiceRecordEmployeeUrl = '@Url.Action("SetServiceRecordEmployee")';
toggleIconUContentUrl = '@Url.Content("~/Content/images/toggle-icon-u.svg")';
toggleIconDContentUrl = '@Url.Content("~/Content/images/toggle-icon-d.svg")';
redirectLink = '@Url.Action("Index", "Login")';
getSupportConceptCustomerUrl = '@Url.Action("GetSelectedSupportConceptCustomer")';
getSelectedRecordInformationUrlWithOid = '@Url.Action("GetSelectedRecordInformationWithOid")';
loadStatisticsUrl = '@Url.Action("LoadStatistics")';
updateAppointmentUrl = '@Url.Action("UpdateAppointment")';
saveZeiterfassungAfterCrashUrl = '@Url.Action("SaveZeiterfassungAfterCrash")';
CheckRightsAfterCrashUrl = '@Url.Action("CheckRightsAfterCrash")';
ErrorZeiterfassungAnzeigenUrl = '@Url.Action("ErrorZeiterfassungAnzeigen")';
LogoutUrl = '@Url.Action("Logout")';
LoadSessionSettingsFromBWPUrl = '@Url.Action("LoadBWPSettings")';
CheckEndDateUrl = '@Url.Action("CheckEndDate")';
CheckDokuReiterUrl = '@Url.Action("CheckDokuReiter")';
SetSaveSignatureUrl = '@Url.Action("SetSaveSignature")';
loadTextbausteineForCategoryUrl = '@Url.Action("LoadTextbausteineForServiceCategory")';
loadCompleteTextbausteinByOidUrl = '@Url.Action("LoadCompleteTextbausteinByOid")';
setGroupbookinModeUrl = '@Url.Action("SetGroupBookingMode")';
setSelectedGroupServiceRecordUrl = '@Url.Action("SetSelectedGroupServiceRecord")';
resetEditingModeUrl = '@Url.Action("ResetEditingMode")';
loadCategoryAndDescriptionUrl = '@Url.Action("LoadCategoryAndDescription")';
addEmployeesToGroupBookingUrl = '@Url.Action("AddEmployeesToGroupBooking")';
resetGroupBookingModeViaGETUrl = '@Url.Action("ResetGroupBookingModeViaGET")';
getSelectedRecordInformationUrl = '@Url.Action("GetSelectedRecordInformation")';
setSelectedServiceRecordUrl = '@Url.Action("SetSelectedServiceRecord")';
setServiceDescriptionUrl = '@Url.Action("SetServiceDescription")';
updateGoalsUrl = '@Url.Action("UpdateGoals")';
loadServiceCategoriesUrl = '@Url.Action("LoadServiceCategories")';
loadServiceRecordsUrl = '@Url.Action("LoadServiceRecords")';
loadGoalsUrl = '@Url.Action("LoadGoals")';
setRecordForDeletionUrl = '@Url.Action("SetRecordOidToDelete")';
checkRightsUrl = '@Url.Action("CheckRights")';
getSelectedCustomerUrl = '@Url.Action("GetSelectedCustomer")';
loadAppointmentsUrl = '@Url.Action("LoadAppointments")';
loadBewoTasksUrl = '@Url.Action("LoadBeWoTasks")';
insertAppointmentUrl = '@Url.Action("InsertAppointment")';
setSelectedUnterschriftUrl = '@Url.Action("SaveUnterschrift")';
setServiceRecordEmployeeUrl = '@Url.Action("SetServiceRecordEmployee")';
toggleIconUContentUrl = '@Url.Content("~/Content/images/toggle-icon-u.svg")';
toggleIconDContentUrl = '@Url.Content("~/Content/images/toggle-icon-d.svg")';
redirectLink = '@Url.Action("Index", "Login")';
getSupportConceptCustomerUrl = '@Url.Action("GetSelectedSupportConceptCustomer")';
getSelectedRecordInformationUrlWithOid = '@Url.Action("GetSelectedRecordInformationWithOid")';
loadStatisticsUrl = '@Url.Action("LoadStatistics")';
updateAppointmentUrl = '@Url.Action("UpdateAppointment")';
saveZeiterfassungAfterCrashUrl = '@Url.Action("SaveZeiterfassungAfterCrash")';
CheckRightsAfterCrashUrl = '@Url.Action("CheckRightsAfterCrash")';
ErrorZeiterfassungAnzeigenUrl = '@Url.Action("ErrorZeiterfassungAnzeigen")';
LogoutUrl = '@Url.Action("Logout")';
LoadSessionSettingsFromBWPUrl = '@Url.Action("LoadBWPSettings")';
CheckEndDateUrl = '@Url.Action("CheckEndDate")';
CheckDokuReiterUrl = '@Url.Action("CheckDokuReiter")';
SetSaveSignatureUrl = '@Url.Action("SetSaveSignature")';
loadTextbausteineForCategoryUrl = '@Url.Action("LoadTextbausteineForServiceCategory")';
loadCompleteTextbausteinByOidUrl = '@Url.Action("LoadCompleteTextbausteinByOid")';
setGroupbookinModeUrl = '@Url.Action("SetGroupBookingMode")';
setSelectedGroupServiceRecordUrl = '@Url.Action("SetSelectedGroupServiceRecord")';
resetEditingModeUrl = '@Url.Action("ResetEditingMode")';
loadCategoryAndDescriptionUrl = '@Url.Action("LoadCategoryAndDescription")';
addEmployeesToGroupBookingUrl = '@Url.Action("AddEmployeesToGroupBooking")';
resetGroupBookingModeViaGETUrl = '@Url.Action("ResetGroupBookingModeViaGET")';
addSupportConceptCostBearerRelationsToGroupBookingUrl = '@Url.Action("AddSupportConceptCostBearerRelationsToGroupBooking")';
removeSupportConceptCostBearerRelationFromGroupBookingUrl = '@Url.Action("RemoveSupportConceptCostBearerRelationFromGroupBooking")';
addEmployeesToGroupBookingUrl = '@Url.Action("AddEmployeesToGroupBooking")';
var isServiceRecordNoticeMandatory = '@(Model.IsServiceRecordNoticeMandatory)'.toLowerCase() === "true";

View File

@@ -13,7 +13,7 @@
<link rel="stylesheet" href="~/Content/statisticsStyle.css?v=1.2" />
<script src="~/Scripts/appointment.js?v=1.2"></script>
<script src="~/Scripts/utils.js?v=1.2"></script>
<script src="~/Scripts/utils.js?v=1.3"></script>
<script src="~/Scripts/mainView.js?v=1.6"></script>
<script src="~/Scripts/datepicker.js?v=1.2"></script>
<script src="~/Scripts/initialization.js?v=1.2"></script>