Files
BeWoPlaner/BeWo/ownChat/ChatServiceEmployee.xaml.cs
2023-06-01 10:09:36 +02:00

305 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
using BeWo.Core;
using BeWo.ViewModel;
using BeWo.ServiceProxy;
using BeWo.View;
using BS.Shared.Extensions;
using BS.Shared;
using ChatController.ChatKlassen;
namespace BeWo.ownChat
{
public partial class ChatServiceEmployee
{
private EmployeeVM _ViewModel;
private long? _EmployeeOid;
private long? _PersonOid;
public ChatServiceEmployee(long? oid, long? empUserOid)
{
InitializeComponent();
_EmployeeOid = oid;
_PersonOid = empUserOid;
Loaded += ChatServiceEmployee_Loaded;
}
private void ChatServiceEmployee_Loaded(object sender, RoutedEventArgs e)
{
LaodInfostoView();
}
public EmployeeVM PublicViewModel => _ViewModel;
public override bool IsDirty => ViewModel != null && ViewModel.IsDirty;
private EmployeeVM ViewModel
{
get => _ViewModel;
set
{
DataContext = value;
_ViewModel = value;
}
}
private void LaodInfostoView()
{
var getEmployeeAppCode = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllEmployeeAppCodes(_EmployeeOid.Value));
if (getEmployeeAppCode.Count > 0)
{
GeneratetTexfield.Text = getEmployeeAppCode[getEmployeeAppCode.Count - 1].EmployeeCode;
}
CodeButtonsOnOff();
}
private void CodeButtonsOnOff()
{
if (!string.IsNullOrWhiteSpace(GeneratetTexfield.Text))
{
RemoveButton.Visibility = Visibility.Visible;
EmployeeHandoutButton.Visibility = Visibility.Visible;
ButtonGenerateCode.ToolTip = "Chat-Code erneuern";
var image = new System.Windows.Controls.Image
{
Source = new BitmapImage(new Uri("pack://application:,,,/Ressources/Icons/SymbolRefresh32.png"))
};
ImageGenerateCode.Source = image.Source;
}
else
{
RemoveButton.Visibility = Visibility.Collapsed;
EmployeeHandoutButton.Visibility = Visibility.Collapsed;
ButtonGenerateCode.ToolTip = "Chat-Code anfordern";
var image = new System.Windows.Controls.Image
{
Source = new BitmapImage(new Uri("pack://application:,,,/Ressources/Icons/DocumentWithAdd2.png"))
};
ImageGenerateCode.Source = image.Source;
}
}
#region Code Generieren / Erneuern / Löschen
private void GenerateCodeClick(object sender, RoutedEventArgs e)
{
var tenant = BeWoApp.Tenant;
var apiKey = BeWoApp.Mandator.Apikey;
#if DEBUG
tenant = "0000000001";
apiKey = "0b50c09aff87f20d9ced75340e04e5ccaa11dd3e7bcf25e9c4f94dc20d3cbb97";
#endif
if(!string.IsNullOrWhiteSpace(GeneratetTexfield.Text) && tenant != null && apiKey != null)
{
if (MessageBox.Show("Wollen Sie wirklich den Chat-Code ändern?\nAlle Daten auf dem Mobilgerät werden gelöscht.", "Achtung", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
StartGenerateCode();
}
}
else
{
if (tenant != null && apiKey != null)
{
StartGenerateCode();
//BeWoUtils.ownChatSynchronisationVeranlassen();
}
else
{
MessageBox.Show("Sie besitzen derzeit keinen API-Key. Bitte wenden Sie sich an den Support.", "Info", MessageBoxButton.OK);
}
}
}
private void StartGenerateCode()
{
StartWaiting();
var parameter = new List<string> {_EmployeeOid.Value.ToString(), BeWoApp.Tenant, BeWoApp.Mandator.Apikey};
var newThread = new Thread(GenerateCode) {IsBackground = true};
newThread.Start(parameter);
}
private void GenerateCode(object o)
{
var para = o as List<string>;
var result = ServiceFacade.DoOperationsServiceSync(s => s.CreateNewEmployeeAPPCodeDC(Convert.ToInt64(para[0]),para[1],para[2]));
EndWaiting();
Dispatcher.BeginInvoke(
DispatcherPriority.Background,
(Action)delegate
{
if (result != null)
{
if (result.Result == 0)
{
if (GeneratetTexfield.Text.IsNullOrEmpty())
{
BeWoUtils.OwnChatSynchronisationVeranlassen();
}
GeneratetTexfield.Text = result.EmployeeCode;
CodeButtonsOnOff();
}
else
{
OwnChatResults(result.Result);
}
}
});
}
public void OwnChatResults(int result)
{
switch (result)
{
case 3:
MessageBox.Show("Chat Server konnte nicht ermittelt werden.", "Chat-Code erstellen", MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
case 4:
MessageBox.Show("ChatCode Datensatz konnte nicht gefunden werden.", "Fehler", MessageBoxButton.OK);
break;
case 11:
MessageBox.Show("Kundennummer unbekannt.", "Chat-Code erstellen", MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
case 12:
MessageBox.Show("Der Api-Key ist falsch.", "Chat-Code erstellen", MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
case 32:
MessageBox.Show("Der vorhandene ChatCode konnte nicht deaktiviert werden.", "Chat-Code erstellen", MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
default:
MessageBox.Show("Beim Erstellen eines neuen Chat-Codes ist ein Fehler aufgetreten.", "Chat-Code erstellen", MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
}
}
#region Remove
private void RemoveCode_OnClick(object sender, RoutedEventArgs e)
{
if (!GeneratetTexfield.Text.Equals(""))
{
if (MessageBox.Show("Wollen Sie den Chat-Code wirklich löschen?\nAlle Daten auf dem Mobilgerät werden gelöscht.", "Achtung", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
StartWaiting();
var parameter = new List<string> {BeWoApp.Mandator.Apikey, BeWoApp.Tenant, _EmployeeOid.Value.ToString()};
var newThread = new Thread(DeletGeneratedCode) {IsBackground = true};
newThread.Start(parameter);
}
}
else
{
MessageBox.Show("Sie müssen vorher einen Chat-Code generieren, bevor sie ihn löschen können", "Info", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
private void DeletGeneratedCode(object o)
{
var para = o as List<string>;
var result = ServiceFacade.DoOperationsServiceSync(r => r.DeletEmployeeChatCode(para[0],para[1],Convert.ToInt64(para[2])));
EndWaiting();
Dispatcher.BeginInvoke(
DispatcherPriority.Background,
(Action)delegate
{
if (result.Result == 0)
{
GeneratetTexfield.Text = "";
CodeButtonsOnOff();
BeWoUtils.OwnChatSynchronisationVeranlassen();
}
else
{
//MessageBox.Show("Löschen des Chat-Codes Fehlgeschlagen.", "Fehler");
OwnChatResults(result.Result);
}
});
}
#endregion
#endregion
#region Pdf Gedönse
private void ZeigePDF_OnClick(object sender, RoutedEventArgs e)
{
var tenant = BeWoApp.Tenant;
#if DEBUG
//tenant = "5473568546";
tenant = "1566251835";
#endif
OwnChatHelper.OpenOwnChatPdf(tenant, BeWoApp.Mandator.Apikey, "", "", GeneratetTexfield.Text);
}
#endregion
#region Waitlayer
private WaitLayer2 _WaitLayer;
public void StartWaiting()
{
Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)StartWaitingImmediately);
}
public void StartWaitingImmediately()
{
if (_WaitLayer == null)
{
_WaitLayer = new WaitLayer2();
ChatServiceEmployeeGrid.Children.Add(_WaitLayer);
Panel.SetZIndex(_WaitLayer, int.MaxValue);
_WaitLayer.RefreshChatUI();
}
}
public void EndWaiting()
{
Dispatcher.BeginInvoke(
DispatcherPriority.Background,
(Action)delegate
{
if (_WaitLayer != null)
{
ChatServiceEmployeeGrid.Children.Remove(_WaitLayer);
_WaitLayer = null;
}
});
}
#endregion
}
}