2019-11-21 19:39:32 +01:00
using System ;
using System.Collections.Generic ;
2024-02-20 14:42:04 +01:00
using System.Globalization ;
2019-07-25 14:58:13 +02:00
using System.Linq ;
using System.Web.Mvc ;
2023-08-16 14:18:27 +02:00
using BeWo.Report.DefaultReports ;
2021-04-19 04:38:29 +02:00
using BeWo.View.Navigation.Filter ;
2019-07-25 14:58:13 +02:00
using BeWoPlanerMobil.Models ;
using BeWoPlanerMobil.Service ;
2020-09-21 11:57:10 +02:00
using BeWoPlanerMobil.Util ;
2021-10-13 16:00:33 +02:00
using BS.Shared ;
2021-04-19 04:38:29 +02:00
using BS.Shared.Core ;
2023-02-15 18:31:54 +01:00
using BS.Shared.DataContracts ;
2019-07-25 14:58:13 +02:00
using BS.Shared.DataContracts.Compact ;
2023-03-14 16:12:52 +01:00
using BS.Shared.Extensions ;
2024-01-24 13:15:27 +01:00
using DevExpress.XtraReports.UI ;
2019-07-25 14:58:13 +02:00
namespace BeWoPlanerMobil.Controllers
{
2024-07-24 16:45:56 +02:00
public class CustomerController : ReportBaseController
2019-07-25 14:58:13 +02:00
{
private CustomerModel _Model ;
public CustomerModel Model
{
get
{
if ( ! MobileSessionFacade . IsUserLoggedIn ( ) )
{
2020-10-07 19:42:17 +02:00
Logout ( ) ;
2019-07-25 14:58:13 +02:00
return null ;
}
2023-05-31 17:54:01 +02:00
if ( ( ( CustomerModel ) Session [ ModelSessionConstants . CustomerModelKey ] ) ? . Employee is null )
2019-07-25 14:58:13 +02:00
{
2020-02-07 15:21:36 +01:00
_Model = new CustomerModel { Employee = MobileSessionFacade . LoggedInEmployee } ;
2020-09-21 11:57:10 +02:00
Session [ ModelSessionConstants . CustomerModelKey ] = _Model ;
2019-07-25 14:58:13 +02:00
}
else
{
2020-09-21 11:57:10 +02:00
_Model = ( CustomerModel ) Session [ ModelSessionConstants . CustomerModelKey ] ;
2019-07-25 14:58:13 +02:00
}
return _Model ;
}
}
[Authorize]
2023-11-13 11:33:08 +01:00
public ActionResult Customer ( long? id )
2019-07-25 14:58:13 +02:00
{
2022-04-29 20:37:37 +02:00
try
2019-07-25 14:58:13 +02:00
{
2024-06-26 12:29:22 +02:00
if ( ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) )
2022-04-29 20:37:37 +02:00
{
return Logout ( ) ;
}
2019-07-25 14:58:13 +02:00
2022-04-29 20:37:37 +02:00
var customerFilter = MobileUserSettingsUtils . GetSettingValueAsEnum ( AbstractModel . UserSettings , SettingsKeys . CustomerFilterCustomers , CustomerFilterEnum . MyCustomer ) ;
2023-05-31 17:54:01 +02:00
2022-04-29 20:37:37 +02:00
Model . SelectedCustomerFilter = customerFilter ;
2021-04-19 04:38:29 +02:00
2022-04-29 20:37:37 +02:00
InitViewModel ( ) ;
2023-11-13 11:33:08 +01:00
if ( id . HasValue )
{
LoadCustomerToModel ( id ) ;
}
2022-04-29 20:37:37 +02:00
}
catch ( Exception e )
{
2023-11-13 11:33:08 +01:00
Log . Info ( "Exception: " + e . Message + "\n" + e . StackTrace ) ;
2022-04-29 20:37:37 +02:00
if ( e . InnerException ! = null )
{
2023-11-13 11:33:08 +01:00
Log . Info ( "\n\nInnerException: " + e . InnerException . Message + "\n" + e . InnerException . StackTrace ) ;
2022-04-29 20:37:37 +02:00
}
2019-11-23 16:46:34 +01:00
2022-04-29 20:37:37 +02:00
throw ;
}
2019-11-23 16:46:34 +01:00
return View ( Model ) ;
}
private void InitViewModel ( )
{
2023-05-31 17:54:01 +02:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) )
2019-07-25 14:58:13 +02:00
{
2020-12-16 21:49:47 +01:00
Logout ( ) ;
2023-05-31 17:54:01 +02:00
return ;
2019-07-25 14:58:13 +02:00
}
2020-12-16 21:49:47 +01:00
if ( Model . Employee ? . EmployeeOid . HasValue ? ? false )
2019-07-25 14:58:13 +02:00
{
2021-04-19 04:38:29 +02:00
Model . Customers = EmployeeService . GetActiveCustomersForEmployee ( Model . Employee . EmployeeOid . Value , Model . SelectedCustomerFilter ) . OrderBy ( customer = > customer . LastName ) . ToList ( ) ;
2019-07-25 14:58:13 +02:00
}
else
{
Model . Customers = new List < CompactCustomerDC > ( ) ;
}
2021-10-13 16:00:33 +02:00
if ( AbstractModel . IsAllowedToSeeMedikamentenliste )
{
2023-05-31 17:54:01 +02:00
Model . ReportTypes = new List < CustomerReportType > { CustomerReportType . Medikamentenliste , CustomerReportType . Bedarfsmedikation , CustomerReportType . Historie } ;
2021-10-13 16:00:33 +02:00
}
2023-11-02 16:25:36 +01:00
Model . AllAbsenceReasons = AbstractModel . HasRightToViewCustomerAbsenceTimes ? CustomerService . GetAllAbsenceReasons ( ) : new List < AbsenceReasonDC > ( ) ;
2019-11-23 16:46:34 +01:00
}
2019-11-23 02:15:53 +01:00
2023-11-13 11:33:08 +01:00
private void LoadCustomerToModel ( long? customerOid )
2019-11-23 16:46:34 +01:00
{
2023-11-13 11:33:08 +01:00
if ( ! ( customerOid > 0 ) | | ! Model . Customers . Any ( c = > c . CustomerOid . Equals ( customerOid . Value ) ) ) return ;
Model . FolderTree = OperationsService . GetFolderTree ( TableID . Customer , customerOid . Value ) ;
Model . SelectedCustomerOid = customerOid ;
var customer = CustomerService . LoadCustomer ( customerOid . Value ) ;
2019-11-23 16:46:34 +01:00
2023-11-13 11:33:08 +01:00
if ( ! ( customer is null ) )
2019-11-23 16:46:34 +01:00
{
2023-05-23 13:56:22 +02:00
Model . ICD10Diagnosen = OperationsService . GetDiagiosisStringsForICD10Codes ( customer . ICD10DiagnosisCodes ) ;
2019-11-23 16:46:34 +01:00
}
2023-11-13 11:33:08 +01:00
Model . SelectedCustomer = customer ;
2024-02-20 14:42:04 +01:00
ReloadBargeldkassen ( ) ;
2019-07-25 14:58:13 +02:00
}
2019-11-21 19:39:32 +01:00
[Authorize]
[HttpPost]
public ActionResult SelectCustomer ( FormCollection formCollection )
{
try
2019-07-25 14:58:13 +02:00
{
2023-05-31 17:54:01 +02:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) )
2019-11-21 19:39:32 +01:00
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2020-10-07 19:42:17 +02:00
return Logout ( ) ;
2019-11-21 19:39:32 +01:00
}
2019-07-25 14:58:13 +02:00
2020-09-21 11:57:10 +02:00
var selectedCustomerOidString = formCollection [ FormCollectionConstants . SelectedCustomerOidKey ] ;
2019-11-21 19:39:32 +01:00
if ( long . TryParse ( selectedCustomerOidString , out var selectedCustomerOid ) )
{
2023-11-13 11:33:08 +01:00
LoadCustomerToModel ( selectedCustomerOid ) ;
2019-11-21 19:39:32 +01:00
}
return RedirectToActionPermanent ( "Customer" ) ;
}
catch ( Exception exception )
{
2020-01-15 16:14:39 +01:00
Log . Error ( exception . Message , exception ) ;
2019-11-21 19:39:32 +01:00
}
2019-07-25 14:58:13 +02:00
2019-11-21 19:39:32 +01:00
return RedirectToActionPermanent ( "Customer" ) ;
2019-07-25 14:58:13 +02:00
}
2021-04-19 04:38:29 +02:00
[HttpPost]
[Authorize]
public ActionResult SetCustomerFilter ( FormCollection formCollection )
{
2023-05-31 17:54:01 +02:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) )
2021-04-19 04:38:29 +02:00
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2021-04-19 04:38:29 +02:00
return Logout ( ) ;
}
var selectedCustomerFilter = formCollection [ nameof ( Model . SelectedCustomerFilter ) ] ;
if ( ! Enum . TryParse ( selectedCustomerFilter , out CustomerFilterEnum customerFilter ) )
{
customerFilter = CustomerFilterEnum . MyCustomer ;
}
2022-09-07 13:19:08 +02:00
UpdateApplicationSettings ( SettingsKeys . CustomerFilterCustomers , customerFilter . ToString ( ) ) ;
2021-04-19 04:38:29 +02:00
return RedirectToActionPermanent ( "Customer" ) ;
}
2021-10-13 16:00:33 +02:00
[Authorize]
public FileResult DownloadFile ( long fileOid )
{
2023-05-31 17:54:01 +02:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) )
2021-10-13 16:00:33 +02:00
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2021-10-13 16:00:33 +02:00
return null ;
}
var fileAttachment = DownloadService . GetFileAttachmentForMobile ( fileOid , MobileSessionFacade . Tenant ) ;
return File ( fileAttachment . BinaryData , "application/octet-stream" , fileAttachment . FileName ) ;
}
[Authorize]
public string SaveEditedNotice ( string newNotice )
{
2023-05-31 17:54:01 +02:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) )
2021-10-13 16:00:33 +02:00
{
Logout ( ) ;
2023-02-09 20:47:52 +01:00
return LeerzeichenFuerGetMethoden ;
2021-10-13 16:00:33 +02:00
}
var isAllowedToEdit = MobileSessionFacade . LoggedInUser . CheckForAtLeastOneRight ( new List < UserRightType > { UserRightType . CustomerView_Edit , UserRightType . EditAll } ) ;
if ( isAllowedToEdit & & Model . SelectedCustomer ! = null )
{
2023-03-14 16:12:52 +01:00
Model . SelectedCustomer . Notice = newNotice ? . RemoveUppercaseEsszett ( ) ;
2021-10-13 16:00:33 +02:00
var customerOid = CustomerService . UpdateCustomer ( Model . SelectedCustomer ) ;
Model . SelectedCustomer = CustomerService . LoadCustomer ( customerOid ) ;
}
2023-02-09 20:47:52 +01:00
return LeerzeichenFuerGetMethoden ;
2021-10-13 16:00:33 +02:00
}
[Authorize]
2023-02-15 18:31:54 +01:00
public ActionResult UpdateCustomer ( FormCollection formCollection )
{
if ( Model is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2023-02-15 18:31:54 +01:00
return Logout ( ) ;
}
2023-11-13 11:33:08 +01:00
var firstname = formCollection [ "vorname" ] ? . RemoveUppercaseEsszett ( ) ;
var lastname = formCollection [ "nachname" ] ? . RemoveUppercaseEsszett ( ) ;
2023-12-21 19:08:53 +01:00
var alias = formCollection [ "alias" ] ? . RemoveUppercaseEsszett ( ) ;
2023-03-14 16:12:52 +01:00
var geburtdatum = formCollection [ "geburtstag" ] ? . RemoveUppercaseEsszett ( ) ;
2023-11-13 11:33:08 +01:00
var geschlecht = formCollection [ "geschlecht" ] ? . RemoveUppercaseEsszett ( ) ;
2023-02-15 18:31:54 +01:00
2023-03-14 16:12:52 +01:00
var adresszusatz = formCollection [ "adresszusatz" ] ? . RemoveUppercaseEsszett ( ) ;
2023-11-13 11:33:08 +01:00
var street = formCollection [ "strasse" ] ? . RemoveUppercaseEsszett ( ) ;
var postalCode = formCollection [ "plz" ] ? . RemoveUppercaseEsszett ( ) ;
var city = formCollection [ "ort" ] ? . RemoveUppercaseEsszett ( ) ;
2023-02-15 18:31:54 +01:00
2023-11-13 11:33:08 +01:00
var nameInvoiceAddress = formCollection [ "name-rechnungsadresse" ] ? . RemoveUppercaseEsszett ( ) ;
var streetInvoiceAddress = formCollection [ "strasse-rechnungsadresse" ] ? . RemoveUppercaseEsszett ( ) ;
2023-03-14 16:12:52 +01:00
var postalCodeInvoiceAddress = formCollection [ "plz-rechnungsadresse" ] ? . RemoveUppercaseEsszett ( ) ;
2023-11-13 11:33:08 +01:00
var cityInvoiceAddress = formCollection [ "ort-rechnungsadresse" ] ? . RemoveUppercaseEsszett ( ) ;
2023-02-15 18:31:54 +01:00
2023-11-13 11:33:08 +01:00
var mobile = formCollection [ "handy" ] ? . RemoveUppercaseEsszett ( ) ;
var phone = formCollection [ "telefon" ] ? . RemoveUppercaseEsszett ( ) ;
var fax = formCollection [ "fax" ] ? . RemoveUppercaseEsszett ( ) ;
2023-03-14 16:12:52 +01:00
var eMailAddress = formCollection [ "mail" ] ? . RemoveUppercaseEsszett ( ) ;
2023-02-15 18:31:54 +01:00
2023-03-14 16:12:52 +01:00
var notice = formCollection [ "notiz" ] ? . RemoveUppercaseEsszett ( ) ;
2023-02-15 18:31:54 +01:00
2024-07-24 16:45:56 +02:00
var krankenkasse = formCollection [ "krankenkasse" ] ;
var versichertennummer = formCollection [ "versichertennummer" ] ;
var versichertenstatus = formCollection [ "versichertenstatus" ] ;
2023-02-15 18:31:54 +01:00
var customer = Model . SelectedCustomer ;
if ( customer is null )
{
return RedirectToActionPermanent ( "Customer" ) ;
}
2023-12-21 19:08:53 +01:00
customer . FirstName = firstname ;
customer . LastName = lastname ;
customer . CustomerAlias = alias ;
2023-02-15 18:31:54 +01:00
if ( DateTime . TryParse ( geburtdatum , out var dateOfBirth ) )
{
customer . DateOfBirth = dateOfBirth ;
}
if ( int . TryParse ( geschlecht , out var sexIndex ) )
{
var castSex = sexIndex > = 0 ? ( Sex ? ) sexIndex : null ;
customer . Sex = castSex ;
}
2024-07-24 16:45:56 +02:00
customer . HealthInsurance = krankenkasse ;
customer . InsuranceNumber = versichertennummer ;
customer . VersichertenStatus = versichertenstatus ;
2023-02-15 18:31:54 +01:00
customer . AddressLine1 = adresszusatz ;
customer . Street = street ;
customer . PostalCode = postalCode ;
customer . Town = city ;
customer . InvoiceAddressLine1 = nameInvoiceAddress ;
customer . InvoiceAddressStreet = streetInvoiceAddress ;
customer . InvoiceAddressPostalCode = postalCodeInvoiceAddress ;
customer . InvoiceAddressTown = cityInvoiceAddress ;
var mobileContactInfo = customer . ContactInformations . FirstOrDefault ( contactInformation = > contactInformation . ContactType = = ContactType . business_MobilePhone ) ? ? new ContactDC { ContactType = ContactType . business_MobilePhone } ;
mobileContactInfo . ContactValue = mobile ;
if ( customer . ContactInformations . All ( a = > a . ContactType ! = ContactType . business_MobilePhone ) )
{
customer . ContactInformations . Add ( mobileContactInfo ) ;
}
var phoneContactInfo = customer . ContactInformations . FirstOrDefault ( contactInformation = > contactInformation . ContactType = = ContactType . business_Phone ) ? ? new ContactDC { ContactType = ContactType . business_Phone } ;
phoneContactInfo . ContactValue = phone ;
if ( customer . ContactInformations . All ( a = > a . ContactType ! = ContactType . business_Phone ) )
{
customer . ContactInformations . Add ( phoneContactInfo ) ;
}
var faxContactInfo = customer . ContactInformations . FirstOrDefault ( contactInformation = > contactInformation . ContactType = = ContactType . business_Fax ) ? ? new ContactDC { ContactType = ContactType . business_Fax } ;
faxContactInfo . ContactValue = fax ;
if ( customer . ContactInformations . All ( a = > a . ContactType ! = ContactType . business_Fax ) )
{
customer . ContactInformations . Add ( faxContactInfo ) ;
}
var eMailContactInfo = customer . ContactInformations . FirstOrDefault ( contactInformation = > contactInformation . ContactType = = ContactType . business_Mail ) ? ? new ContactDC { ContactType = ContactType . business_Mail } ;
eMailContactInfo . ContactValue = eMailAddress ;
if ( customer . ContactInformations . All ( a = > a . ContactType ! = ContactType . business_Mail ) )
{
customer . ContactInformations . Add ( eMailContactInfo ) ;
}
customer . Notice = notice ;
CustomerService . UpdateCustomer ( customer ) ;
2023-12-06 18:14:34 +01:00
LoadCustomerToModel ( customer . CustomerOid ) ;
2023-11-13 11:33:08 +01:00
return RedirectToActionPermanent ( "Customer" , new { id = customer . CustomerOid } ) ;
2023-02-15 18:31:54 +01:00
}
2023-05-31 17:54:01 +02:00
2024-02-20 14:42:04 +01:00
2024-07-24 16:45:56 +02:00
[Authorize]
public override string ResetReport ( )
{
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return LeerzeichenFuerGetMethoden ;
}
Model . Report = null ;
Model . ReportName = null ;
return LeerzeichenFuerGetMethoden ;
}
2024-02-20 14:42:04 +01:00
#region Medikamentenverordnungen
2023-05-31 17:54:01 +02:00
[Authorize]
2024-02-20 14:42:04 +01:00
public ActionResult ShowMedList ( int reportType )
2023-05-31 17:54:01 +02:00
{
2024-02-20 14:42:04 +01:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) | | ! AbstractModel . IsAllowedToSeeMedikamentenliste )
2023-05-31 17:54:01 +02:00
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-02-20 14:42:04 +01:00
}
var selectedReportType = ( CustomerReportType ) reportType ;
SelectReport ( selectedReportType ) ;
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-02-20 14:42:04 +01:00
}
[Authorize]
public ActionResult ShowHistoricalMedList ( long medListOid )
{
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) | | ! AbstractModel . IsAllowedToSeeMedikamentenliste )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2023-05-31 17:54:01 +02:00
}
2023-12-06 18:14:34 +01:00
Model . SelectedReportType = CustomerReportType . Historie ;
GenerateMobileMedListForSelectedCustomer ( medListOid ) ;
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2023-05-31 17:54:01 +02:00
}
[Authorize]
2024-02-20 14:42:04 +01:00
public ActionResult DeleteHistoricalMedList ( long medListOid )
2023-05-31 17:54:01 +02:00
{
2024-02-20 14:42:04 +01:00
if ( Model is null | | ! MobileSessionFacade . IsUserLoggedIn ( ) | | Request . Browser . Browser . Equals ( "InternetExplorer" ) | | ! AbstractModel . IsAllowedToSeeMedikamentenliste )
2023-05-31 17:54:01 +02:00
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerMedListPartial" , Model ) ;
2023-05-31 17:54:01 +02:00
}
2023-12-06 18:14:34 +01:00
Model . SelectedReportType = CustomerReportType . Historie ;
CustomerService . DeleteMedikamentenverordnungsliste ( medListOid ) ;
2024-02-20 14:42:04 +01:00
LoadCustomerToModel ( Model . SelectedCustomerOid ) ;
return PartialView ( "CustomerMedListPartial" , Model ) ;
}
private void SelectReport ( CustomerReportType selectedReportType )
{
Model . SelectedReportType = selectedReportType ;
GenerateMobileMedListForSelectedCustomer ( ) ;
}
private void GenerateMobileMedListForSelectedCustomer ( long? selectedMedListOid = null )
{
if ( Model . SelectedCustomerOid is null )
{
return ;
}
long? medListOid = null ;
var customerOid = Model . SelectedCustomerOid . Value ;
switch ( Model . SelectedReportType )
{
case CustomerReportType . Medikamentenliste :
medListOid = CustomerService . GetActiveMedListByTypeForCustomer ( customerOid , false ) ;
break ;
case CustomerReportType . Bedarfsmedikation :
medListOid = CustomerService . GetActiveMedListByTypeForCustomer ( customerOid , true ) ;
break ;
case CustomerReportType . Historie :
medListOid = selectedMedListOid ;
break ;
}
var medList = Model . SelectedCustomer . Medikamentenverordnungslisten . FirstOrDefault ( f = > f . MedikamentenverordnungslistenOid = = medListOid ) ;
if ( medList ? . MedikamentenverordnungslistenOid is null | | Request ? . Url is null )
{
return ;
}
Model . ReportName = $"Medikamentenverordnung vom {medList.ErstellDatum}" ;
using ( var memoryStream = ReportService . CreateMedikamentenlistenReport ( medList . MedikamentenverordnungslistenOid . Value , MobileSessionFacade . Tenant ) )
{
var medikamentenverordnungslistenReport = new MedikamentenverordnungslistenReport ( ) ;
medikamentenverordnungslistenReport . PrintingSystem . LoadDocument ( memoryStream ) ;
Model . Report = medikamentenverordnungslistenReport ;
Model . BargeldkassenReportName = null ;
Model . BargeldkassenReportObject = null ;
Model . ZahlungsbelegsReportObject = null ;
}
2023-05-31 17:54:01 +02:00
}
2024-02-20 14:42:04 +01:00
#endregion
2023-09-11 15:20:38 +02:00
#region Bargeldkassen
2024-02-20 14:42:04 +01:00
2024-03-01 16:59:35 +01:00
[Authorize]
2024-02-20 14:42:04 +01:00
private void ReloadBargeldkassen ( )
{
if ( Model ? . SelectedCustomer ? . CustomerOid is null )
{
return ;
}
Model . Bargeldkassen = OperationsService . LoadBargeldkassenForObject ( TableID . Customer , Model . SelectedCustomer . CustomerOid . Value ) ;
2024-04-18 16:14:20 +02:00
// ToDo: alle Transaktionen durchgehen und schauen, ob es HistoryEntries gibt und in Model.TransaktionsOids2HasHistoryEntries speichern
// ToDo: Funktion für das Laden aller Transaktionen durch BargeldkassenOids implementieren im SearchDAO-Objekt
var transactions = new List < BargeldtransaktionDC > ( ) ;
Model . Bargeldkassen . DoForEach ( bargeldkasse = >
{
transactions . AddRangeIfElementsNotIn ( bargeldkasse . Bargeldtransaktionen . Where ( t = > t . BargeldtransaktionOid . HasValue ) ) ;
} ) ;
var historyEntries = OperationsService . LoadBargeldtransaktionshistoryEntriesByTransaktionsOids ( transactions . Where ( t = > t . BargeldtransaktionOid . HasValue ) . Select ( t = > t . BargeldtransaktionOid . Value ) . ToList ( ) ) ;
Model . TransaktionsOid2HasHistoryEntries = new Dictionary < long , bool > ( ) ;
transactions . DoForEach ( transaction = >
{
if ( transaction . BargeldtransaktionOid is null )
{
return ;
}
Model . TransaktionsOid2HasHistoryEntries . AddOrUpdate ( transaction . BargeldtransaktionOid . Value , historyEntries . Any ( a = > a . BargeldtransaktionOid . HasValue & & a . BargeldtransaktionOid . Value . Equals ( transaction . BargeldtransaktionOid . Value ) ) ) ;
} ) ;
2024-02-20 14:42:04 +01:00
}
2024-01-12 17:16:52 +01:00
[Authorize]
public string SelectBargeldkasse ( long oid )
{
if ( Model is null )
{
Logout ( ) ;
return LeerzeichenFuerGetMethoden ;
}
var selectedBargeldkasse = Model . Bargeldkassen . FirstOrDefault ( bargeldkasse = > bargeldkasse . BargeldkassenOid . HasValue & & bargeldkasse . BargeldkassenOid . Value . Equals ( oid ) ) ;
Model . SelectedBargeldkasse = selectedBargeldkasse ;
return LeerzeichenFuerGetMethoden ;
}
[Authorize]
2024-01-17 15:45:16 +01:00
public string DeselectBargeldkasse ( )
2024-01-12 17:16:52 +01:00
{
if ( Model is null )
{
Logout ( ) ;
return LeerzeichenFuerGetMethoden ;
}
Model . SelectedBargeldkasse = null ;
return LeerzeichenFuerGetMethoden ;
}
[Authorize]
public ActionResult LoadFormPartial ( )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldkassenFormPartial" , Model ) ;
}
2024-01-17 15:45:16 +01:00
Model . SelectedBargeldkasse = null ;
2024-01-23 10:45:34 +01:00
Model . SelectedAuszahlungsintervall = 0 ;
return PartialView ( "CustomerBargeldkassenFormPartial" , Model ) ;
}
[Authorize]
public ActionResult LoadEditFormPartial ( long bargeldkassenOid )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldkassenFormPartial" , Model ) ;
}
2024-01-23 10:45:34 +01:00
Model . SelectedBargeldkasse = Model . Bargeldkassen . FirstOrDefault ( bargeldkasse = > bargeldkasse . BargeldkassenOid . HasValue & & bargeldkasse . BargeldkassenOid . Value . Equals ( bargeldkassenOid ) ) ;
if ( Model . SelectedBargeldkasse ! = null )
{
Model . SelectedAuszahlungsintervall = ( int ) Model . SelectedBargeldkasse . Auszahlungsintervall ;
}
2023-09-11 15:20:38 +02:00
2024-01-17 15:45:16 +01:00
return PartialView ( "CustomerBargeldkassenFormPartial" , Model ) ;
2023-09-11 15:20:38 +02:00
}
[Authorize]
[HttpPost]
public ActionResult DeleteBargeldkasse ( FormCollection formCollection )
{
if ( Model is null | | ! long . TryParse ( formCollection [ "bk-to-delete-oid" ] , out var bargeldkassenOid ) | | Model . SelectedCustomerOid is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2023-09-11 15:20:38 +02:00
return Logout ( ) ;
}
var bargeldkasse = Model . Bargeldkassen . FirstOrDefault ( f = > f . BargeldkassenOid . HasValue & & f . BargeldkassenOid . Value . Equals ( bargeldkassenOid ) ) ;
if ( bargeldkasse ? . BargeldkassenVersion is null )
{
return RedirectToActionPermanent ( "Customer" ) ;
}
var bargeldkassenVersion = bargeldkasse . BargeldkassenVersion . Value ;
OperationsService . DeactivateBargeldkasse ( bargeldkassenOid , bargeldkassenVersion ) ;
2024-02-20 14:42:04 +01:00
ReloadBargeldkassen ( ) ;
2023-09-11 15:20:38 +02:00
return RedirectToActionPermanent ( "Customer" ) ;
}
2024-01-12 17:16:52 +01:00
[Authorize]
[HttpPost]
public ActionResult CreateOrUpdateBargeldkasse ( FormCollection formCollection )
{
if ( Model is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2024-01-12 17:16:52 +01:00
return Logout ( ) ;
}
var name = formCollection [ "bargeldkassenname" ] ;
var rawAnfangsbestand = formCollection [ "bargeldkassenanfangsbestand" ] ;
2024-01-17 15:45:16 +01:00
decimal . TryParse ( rawAnfangsbestand , out var anfangsbestand ) ;
2024-01-12 17:16:52 +01:00
2024-01-23 10:45:34 +01:00
var auszahlungsintervall = ( Auszahlungsintervall ) Model . SelectedAuszahlungsintervall ;
2024-01-12 17:16:52 +01:00
if ( Model . SelectedBargeldkasse is null )
{
var newBargeldkasse = new BargeldkassenDC
{
Anfangsbestand = anfangsbestand ,
2024-01-17 15:45:16 +01:00
Kassenname = name ,
Auszahlungsintervall = auszahlungsintervall ,
ObjectOid = Model . SelectedCustomerOid ,
ObjectTid = TableID . Customer
2024-01-12 17:16:52 +01:00
} ;
2024-01-17 15:45:16 +01:00
OperationsService . InsertNewBargeldkasse ( newBargeldkasse ) ;
LoadCustomerToModel ( Model . SelectedCustomerOid ) ;
2024-01-12 17:16:52 +01:00
}
else
{
var bargeldkasse = Model . SelectedBargeldkasse ;
if ( ! string . IsNullOrWhiteSpace ( name ) )
{
bargeldkasse . Kassenname = name ;
}
2024-01-23 10:45:34 +01:00
bargeldkasse . Auszahlungsintervall = auszahlungsintervall ;
2024-01-12 17:16:52 +01:00
bargeldkasse . Anfangsbestand = anfangsbestand ;
OperationsService . UpdateBargeldkasse ( bargeldkasse ) ;
2024-01-17 15:45:16 +01:00
LoadCustomerToModel ( Model . SelectedCustomerOid ) ;
2024-01-12 17:16:52 +01:00
}
Model . SelectedBargeldkasse = null ;
return RedirectToActionPermanent ( "Customer" ) ;
}
2024-01-23 10:45:34 +01:00
[Authorize]
public ActionResult PrintBargeldkasse ( long kassenbuchOid , string reportStartDate , string reportEndDate )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-06-26 12:29:22 +02:00
}
2024-01-23 10:45:34 +01:00
var bargeldkasse = Model . Bargeldkassen . FirstOrDefault ( f = > f . BargeldkassenOid . HasValue & & f . BargeldkassenOid . Value . Equals ( kassenbuchOid ) ) ;
var startDate = DateTime . TryParse ( reportStartDate , out var parsedStartDate ) ? parsedStartDate : DateTime . Today . GetFirstOfMonth ( ) ;
var endDate = DateTime . TryParse ( reportEndDate , out var parsedEndDate ) ? parsedEndDate : DateTime . Today . GetLastOfMonth ( ) ;
if ( bargeldkasse ? . ObjectOid is null )
{
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-01-23 10:45:34 +01:00
}
2024-01-24 13:15:27 +01:00
var bargeldkassenReportZeitraum = startDate . Equals ( startDate . GetFirstOfMonth ( ) ) & & endDate . Equals ( startDate . GetLastOfMonth ( ) ) ?
$"{startDate:MMMM} {startDate:yyyy}" :
$"{startDate:dd.MM.yyyy} bis {endDate:dd.MM.yyyy}" ;
var name = $"Kassenbuch \" { bargeldkasse . Kassenname } \ " {bargeldkassenReportZeitraum} von {Model.SelectedCustomer.FirstName} {Model.SelectedCustomer.LastName}" ;
var memoryStream = ReportService . CreateKassenbuchReportImZeitraum ( startDate , endDate , bargeldkasse , bargeldkasse . ObjectOid . Value , bargeldkasse . ObjectTid ) ;
var report = new XtraReport ( ) ;
report . PrintingSystem . LoadDocument ( memoryStream ) ;
2024-02-20 14:42:04 +01:00
Model . Report = report ;
Model . ReportName = name ;
2024-01-23 10:45:34 +01:00
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-01-23 10:45:34 +01:00
}
[Authorize]
public string SetSelectedAuszahlungsintervall ( int auszahlungsintervall )
{
2024-02-20 14:42:04 +01:00
Model . SelectedAuszahlungsintervall = auszahlungsintervall < 4 & & auszahlungsintervall > = 0 ? auszahlungsintervall : 0 ;
return LeerzeichenFuerGetMethoden ;
}
[Authorize]
public ActionResult DownloadZahlungsbeleg ( long transaktionsOid )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-06-26 12:29:22 +02:00
}
2024-02-20 14:42:04 +01:00
var kassenbuch = Model . Bargeldkassen . FirstOrDefault ( bargeldkasse = > bargeldkasse . Bargeldtransaktionen . Any ( transaktion = > transaktion . BargeldtransaktionOid . Equals ( transaktionsOid ) ) ) ;
var zahlung = kassenbuch ? . Bargeldtransaktionen . FirstOrDefault ( bargeldtransaktion = > bargeldtransaktion . BargeldtransaktionOid . Equals ( transaktionsOid ) ) ;
if ( zahlung ! = null & & kassenbuch . ObjectOid . HasValue )
{
var memoryStream = ReportService . CreateKassenbelegReport ( zahlung , kassenbuch . ObjectOid . Value , kassenbuch . ObjectTid ) ;
var report = new XtraReport ( ) ;
report . PrintingSystem . LoadDocument ( memoryStream ) ;
Model . Report = report ;
Model . ReportName = "Zahlungsbeleg" ;
}
2024-07-24 16:45:56 +02:00
return PartialView ( "BeWoReportPartial" , Model ) ;
2024-02-20 14:42:04 +01:00
}
[Authorize]
public ActionResult LoadBargeldtransaktionsEditForm ( long transaktionsOid )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldtransaktionenFormPartial" ) ;
}
2024-02-20 14:42:04 +01:00
var kassenbuch = GetBargeldkasseByTransaktionsOid ( transaktionsOid ) ;
var zahlung = kassenbuch ? . Bargeldtransaktionen . FirstOrDefault ( bargeldtransaktion = > bargeldtransaktion . BargeldtransaktionOid . Equals ( transaktionsOid ) ) ;
Model . SelectedBargeldtransaktion = zahlung ;
2024-03-19 16:42:42 +01:00
if ( zahlung ! = null )
{
Model . SelectedTransaktionsart = ( int ) zahlung . Zahlungstyp ;
}
2024-02-20 14:42:04 +01:00
Model . SelectedBargeldkasse = kassenbuch ;
return PartialView ( "CustomerBargeldtransaktionenFormPartial" , Model ) ;
}
private BargeldkassenDC GetBargeldkasseByTransaktionsOid ( long transaktionsOid )
{
return Model . Bargeldkassen . FirstOrDefault ( bargeldkasse = > bargeldkasse . Bargeldtransaktionen . Any ( transaktion = > transaktion . BargeldtransaktionOid . Equals ( transaktionsOid ) ) ) ;
}
[Authorize]
public string SetTransaktionsart ( int transaktionsart )
{
Model . SelectedTransaktionsart = transaktionsart < 2 & & transaktionsart > = 0 ? transaktionsart : 0 ;
return LeerzeichenFuerGetMethoden ;
}
[Authorize]
public ActionResult LoadBargeldtransaktionsForm ( long bargeldkassenOid )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldtransaktionenFormPartial" ) ;
}
2024-02-20 14:42:04 +01:00
Model . SelectedBargeldtransaktion = null ;
Model . SelectedTransaktionsart = 0 ;
Model . SelectedBargeldkasse = Model . Bargeldkassen . FirstOrDefault ( bk = > bk . BargeldkassenOid . HasValue & & bk . BargeldkassenOid . Equals ( bargeldkassenOid ) ) ;
return PartialView ( "CustomerBargeldtransaktionenFormPartial" , Model ) ;
}
[Authorize]
public ActionResult CreateOrUpdateBargeldTransaktion2 ( string rawDate , string rawArt , string rawBetrag , string belegnummer , string notice )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldkassen" ) ;
}
2024-02-20 14:42:04 +01:00
var transaktion2Edit = Model . SelectedBargeldtransaktion ;
var bargeldkasse = Model . SelectedBargeldkasse ;
var isNew = transaktion2Edit is null ;
2024-03-19 16:42:42 +01:00
var isArtValid = Enum . TryParse ( rawArt , out Zahlungstyp art ) ;
2024-02-20 14:42:04 +01:00
2024-03-19 16:42:42 +01:00
var isDateValid = DateTime . TryParse ( rawDate , out var datum ) ;
2024-02-20 14:42:04 +01:00
var isBetragValid = decimal . TryParse ( rawBetrag . Replace ( '.' , ',' ) , NumberStyles . AllowDecimalPoint , new CultureInfo ( "DE-de" ) , out var betrag ) ;
if ( ! isDateValid | | ! isBetragValid | | betrag < = 0 )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Datum oder Betrag sind ungültig!" ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
if ( bargeldkasse is null )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Beim Speichern der Transaktion ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator." ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
if ( isNew )
{
bargeldkasse . Bargeldtransaktionen . Add ( new BargeldtransaktionDC
{
Belegnummer = belegnummer ,
Betrag = betrag ,
Notice = notice ,
Zahlungsdatum = datum ,
Zahlungstyp = art
} ) ;
}
else
{
foreach ( var bargeldtransaktion in bargeldkasse . Bargeldtransaktionen )
{
if ( transaktion2Edit . BargeldtransaktionOid . HasValue & & ( bargeldtransaktion . BargeldtransaktionOid ? . Equals ( transaktion2Edit . BargeldtransaktionOid . Value ) ? ? false ) )
{
bargeldtransaktion . Belegnummer = belegnummer ;
bargeldtransaktion . Betrag = betrag ;
bargeldtransaktion . Notice = notice ;
bargeldtransaktion . Zahlungsdatum = datum ;
bargeldtransaktion . Zahlungstyp = art ;
break ;
}
}
}
OperationsService . UpdateBargeldkasse ( bargeldkasse ) ;
Model . SelectedBargeldkasse = null ;
ReloadBargeldkassen ( ) ;
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
[Authorize]
public ActionResult DeleteBargeldtransaktion ( long? bargeldtransaktionsOid )
{
if ( Model is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldkassen" ) ;
2024-02-20 14:42:04 +01:00
}
if ( bargeldtransaktionsOid is null )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Es ist ein Fehler beim Löschen der Bargeldtransaktion aufgetreten. Bitte wenden Sie sich an Ihren Administrator." ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
var bargeldkasse = GetBargeldkasseByTransaktionsOid ( bargeldtransaktionsOid . Value ) ;
var bargeldtransaktion = bargeldkasse . Bargeldtransaktionen . FirstOrDefault ( f = > f . BargeldtransaktionOid . HasValue & & f . BargeldtransaktionOid . Value . Equals ( bargeldtransaktionsOid ) ) ;
if ( bargeldtransaktion is null )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Es ist ein Fehler beim Löschen der Bargeldtransaktion aufgetreten. Bitte wenden Sie sich an Ihren Administrator." ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
bargeldkasse . Bargeldtransaktionen . Remove ( bargeldtransaktion ) ;
OperationsService . UpdateBargeldkasse ( bargeldkasse ) ;
if ( Model . SelectedCustomer ? . CustomerOid is null )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Es ist ein Fehler beim Laden der Bargeldkassen aufgetreten. Bitte wenden Sie sich an Ihren Administrator." ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
ReloadBargeldkassen ( ) ;
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
[Authorize]
public ActionResult SaveTransaktionsunterschrift ( long transaktionsOid , string signatureAsBase64 )
{
if ( Model is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldkassen" ) ;
2024-02-20 14:42:04 +01:00
}
var bargeldkasse = GetBargeldkasseByTransaktionsOid ( transaktionsOid ) ;
var transaktion = bargeldkasse ? . Bargeldtransaktionen . FirstOrDefault ( f = > f . BargeldtransaktionOid . HasValue & & f . BargeldtransaktionOid . Value . Equals ( transaktionsOid ) ) ;
if ( transaktion is null )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Beim Speichern der Transaktionsunterschrift ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator." ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
long? signatureOid ;
using ( var signatureBitmap = SignatureUtils . Base64StringToBitmap ( signatureAsBase64 . Split ( ',' ) [ 1 ] ) )
{
var isValid = SignatureUtils . ValidateSignature ( signatureBitmap ) ;
if ( ! isValid )
{
2024-03-14 17:18:35 +01:00
TempData [ TempDataConstants . CustomerBargeldkassenErrorMessageKey ] = "Das Unterschriftenfeld darf nicht leer sein." ;
2024-02-20 14:42:04 +01:00
}
signatureOid = OperationsService . InsertSignature ( new SignatureDC
{
DataBild = signatureAsBase64 ,
BargeldtransaktionsOid = transaktionsOid ,
Zeitstempel = DateTime . Now
} ) . SignatureOid ;
}
if ( signatureOid . HasValue )
{
foreach ( var bargeldtransaktion in bargeldkasse . Bargeldtransaktionen )
{
if ( bargeldtransaktion . BargeldtransaktionOid . HasValue & & bargeldtransaktion . BargeldtransaktionOid . Value . Equals ( transaktionsOid ) )
{
bargeldtransaktion . SignatureOid = signatureOid ;
}
}
OperationsService . UpdateBargeldkasse ( bargeldkasse ) ;
}
ReloadBargeldkassen ( ) ;
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
2024-03-01 16:59:35 +01:00
[Authorize]
2024-02-20 14:42:04 +01:00
public ActionResult DeleteTransactionSignature ( long transactionOid )
{
if ( Model is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldkassen" ) ;
2024-02-20 14:42:04 +01:00
}
BargeldkassenDC bargeldkasse = null ;
BargeldtransaktionDC transaction = null ;
foreach ( var item in Model . Bargeldkassen )
{
transaction = item . Bargeldtransaktionen . FirstOrDefault ( t = > t . BargeldtransaktionOid . Equals ( transactionOid ) ) ;
if ( transaction = = null )
{
continue ;
}
bargeldkasse = item ;
break ;
}
var signatureOid = transaction ? . SignatureOid ;
if ( signatureOid . HasValue )
{
bargeldkasse . Bargeldtransaktionen . DoForEach ( t = >
{
if ( t . BargeldtransaktionOid . Equals ( transactionOid ) )
{
t . SignatureOid = null ;
}
} ) ;
OperationsService . DeleteBargeldtransaktionSignature ( signatureOid . Value ) ;
OperationsService . UpdateBargeldkasse ( bargeldkasse ) ;
ReloadBargeldkassen ( ) ;
}
return PartialView ( "CustomerBargeldkassen" , Model ) ;
}
2024-03-01 16:59:35 +01:00
[Authorize]
2024-02-20 14:42:04 +01:00
public ActionResult LoadHistoryEntries ( long transactionOid )
{
if ( Model is null )
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerBargeldtransaktionshistorienPartial" ) ;
2024-02-20 14:42:04 +01:00
}
var historyEntries = OperationsService . LoadBargeldtransaktionshistoryEntries ( transactionOid ) ;
2024-02-23 17:25:02 +01:00
Model . BargeldtransaktionshistoryEntries = historyEntries . OrderByDescending ( he = > he . InsertedOn ) . ToList ( ) ;
2024-02-20 14:42:04 +01:00
return PartialView ( "CustomerBargeldtransaktionshistorienPartial" , Model ) ;
}
2024-03-01 16:59:35 +01:00
[Authorize]
2024-02-20 14:42:04 +01:00
public string ClearHistoryEntries ( )
{
Model ? . BargeldtransaktionshistoryEntries . Clear ( ) ;
2024-01-23 10:45:34 +01:00
return LeerzeichenFuerGetMethoden ;
}
2024-03-01 16:59:35 +01:00
[Authorize]
public string CheckForExistingSignature ( )
{
return ( Model ? . SelectedBargeldtransaktion ? . SignatureOid . HasValue ? ? false ) ? "1" : "0" ;
}
2023-09-11 15:20:38 +02:00
#endregion
2023-11-13 11:33:08 +01:00
#region Abwesenheiten
[Authorize]
[HttpPost]
public ActionResult CreateOrUpdateAbsenceTime ( FormCollection formCollection )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return Logout ( ) ;
}
2023-11-13 11:33:08 +01:00
var selectedAbsenceTime = Model . SelectedAbsenceTime ;
var oid = selectedAbsenceTime ? . AbsenceTimeOid ;
var isNew = oid is null ;
var startDateString = formCollection [ "customer-absence-time-start-date" ] ;
var startTimeString = formCollection [ "customer-absence-time-start-time" ] ;
var endDateString = formCollection [ "customer-absence-time-end-date" ] ;
var endTimeString = formCollection [ "customer-absence-time-end-time" ] ;
var category = formCollection [ "customer-absence-time-category" ] ;
var notice = formCollection [ "customer-absence-time-notice" ] ;
2023-11-27 19:03:39 +01:00
var allDay = "on" = = formCollection [ "customer-absence-time-allday-cb" ] ;
if ( allDay )
{
startTimeString = null ;
endTimeString = null ;
}
2023-11-13 11:33:08 +01:00
var startString = $"{startDateString} {startTimeString ?? " 00 : 00 "}" ;
var endString = $"{endDateString} {endTimeString ?? " 00 : 00 "}" ;
var start = DateTime . Parse ( startString ) ;
var end = string . IsNullOrWhiteSpace ( endDateString ) & & string . IsNullOrWhiteSpace ( endTimeString ) ? null : ( DateTime ? ) DateTime . Parse ( endString ) ;
var categoryOid = long . Parse ( category ) ;
var absenceReason = Model . AllAbsenceReasons . FirstOrDefault ( ar = > ar . AbsenceReasonOid . HasValue & & ar . AbsenceReasonOid . Value . Equals ( categoryOid ) ) ;
var customer = Model . SelectedCustomer ;
if ( isNew )
{
var absenceTime = new AbsenceTimeDC
{
CustomerOid = customer . CustomerOid ,
2023-11-27 19:03:39 +01:00
Reason = absenceReason ,
Start = start ,
End = end ,
Notice = notice
2023-11-13 11:33:08 +01:00
} ;
OperationsService . InsertNewCustomerAbsenceTime ( customer . CustomerOid . Value , absenceTime ) ;
}
else
{
2023-11-27 19:03:39 +01:00
selectedAbsenceTime . Start = start ;
selectedAbsenceTime . End = end ;
2023-11-13 11:33:08 +01:00
selectedAbsenceTime . Reason = absenceReason ;
selectedAbsenceTime . Notice = notice ;
OperationsService . UpdateAbsenceTime ( selectedAbsenceTime ) ;
}
LoadCustomerToModel ( customer . CustomerOid ) ;
Model . SelectedAbsenceTime = null ;
Model . SelectedAbsenceReason = - 1 ;
return RedirectToActionPermanent ( "Customer" , new { id = customer . CustomerOid } ) ;
}
[Authorize]
[HttpPost]
2023-11-27 19:03:39 +01:00
public ActionResult SelectAbsenceTime ( long absenceTimeOid )
2023-11-13 11:33:08 +01:00
{
2023-11-27 19:03:39 +01:00
if ( Model is null )
2023-11-13 11:33:08 +01:00
{
2024-06-26 12:29:22 +02:00
TempData [ TempDataConstants . DoLogoutKey ] = true ;
2023-11-27 19:03:39 +01:00
return Logout ( ) ;
2023-11-13 11:33:08 +01:00
}
if ( absenceTimeOid = = 0 )
{
return RedirectToActionPermanent ( "Customer" , Model ) ;
//return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.<br />Bitte wenden Sie sich an Ihren Systemadministrator.";
}
var selectedAbsenceTime = Model . SelectedCustomer . AbsenceTimes . FirstOrDefault ( absenceTime = > absenceTime . AbsenceTimeOid . HasValue & & absenceTime . AbsenceTimeOid . Value . Equals ( absenceTimeOid ) ) ;
if ( selectedAbsenceTime is null )
{
return RedirectToActionPermanent ( "Customer" , Model ) ;
//return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.<br />Bitte wenden Sie sich an Ihren Systemadministrator.";
}
Model . SelectedAbsenceTime = selectedAbsenceTime ;
Model . SelectedAbsenceReason = selectedAbsenceTime . Reason . AbsenceReasonOid ;
//return LeerzeichenFuerGetMethoden;
return RedirectToActionPermanent ( "Customer" , Model ) ;
}
[Authorize]
public string SetSelectedAbsenceTimeOid ( long absenceTimeOid )
{
var selectedAbsenceTime = Model . SelectedCustomer . AbsenceTimes . FirstOrDefault ( absenceTime = > absenceTime . AbsenceTimeOid . HasValue & & absenceTime . AbsenceTimeOid . Value . Equals ( absenceTimeOid ) ) ;
if ( selectedAbsenceTime is null )
{
return "Es ist ein Fehler bei der Auswahl der zu bearbeitenden Abwesenheit aufgetreten.<br />Bitte wenden Sie sich an Ihren Systemadministrator." ;
}
Model . SelectedAbsenceTime = selectedAbsenceTime ;
Model . SelectedAbsenceReason = selectedAbsenceTime . Reason . AbsenceReasonOid ;
return LeerzeichenFuerGetMethoden ;
}
[Authorize]
public ActionResult LoadAbsenceTimeToForm ( )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
}
2023-11-13 11:33:08 +01:00
return PartialView ( "CustomerAbsenceTimeFormPartial" , Model ) ;
}
[Authorize]
public string DeselectAbsenceTime ( )
{
Model . SelectedAbsenceTime = null ;
Model . SelectedAbsenceReason = - 1 ;
return LeerzeichenFuerGetMethoden ;
}
2023-11-27 19:03:39 +01:00
[Authorize]
public ActionResult DeleteAbsenceTime ( long absenceTimeOid )
{
2024-06-26 12:29:22 +02:00
if ( Model is null )
{
TempData [ TempDataConstants . DoLogoutKey ] = true ;
return PartialView ( "CustomerAbsenceTimePartial" ) ;
}
2023-11-27 19:03:39 +01:00
var absenceTime2Delete = Model . SelectedCustomer . AbsenceTimes . FirstOrDefault ( absenceTime = > absenceTime . AbsenceTimeOid . HasValue & & absenceTime . AbsenceTimeOid . Equals ( absenceTimeOid ) ) ;
if ( absenceTime2Delete is null )
{
ViewData [ "AbsenceTimeError" ] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!<br/><br/>Bitte wenden Sie sich an Ihren Administrator." ;
}
var customer = Model . SelectedCustomer ;
customer . AbsenceTimes . Remove ( absenceTime2Delete ) ;
CustomerService . UpdateCustomer ( customer ) ;
LoadCustomerToModel ( customer . CustomerOid ) ;
return PartialView ( "CustomerAbsenceTimePartial" , Model ) ;
}
2023-11-13 11:33:08 +01:00
#endregion
2021-10-13 16:00:33 +02:00
}
public enum CustomerReportType
{
Medikamentenliste = 0 ,
2023-05-31 17:54:01 +02:00
Bedarfsmedikation = 1 ,
Historie = 2
2019-07-25 14:58:13 +02:00
}
2021-10-13 16:00:33 +02:00
}