755 lines
28 KiB
C#
755 lines
28 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web.Mvc;
|
|
using BeWo.Report.DefaultReports;
|
|
using BeWo.View.Navigation.Filter;
|
|
using BeWoPlanerMobil.Models;
|
|
using BeWoPlanerMobil.Service;
|
|
using BeWoPlanerMobil.Util;
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
|
|
namespace BeWoPlanerMobil.Controllers
|
|
{
|
|
public class CustomerController : AbstractBaseController
|
|
{
|
|
private CustomerModel _Model;
|
|
public CustomerModel Model
|
|
{
|
|
get
|
|
{
|
|
if (!MobileSessionFacade.IsUserLoggedIn())
|
|
{
|
|
Logout();
|
|
return null;
|
|
}
|
|
|
|
if (((CustomerModel) Session[ModelSessionConstants.CustomerModelKey])?.Employee is null)
|
|
{
|
|
_Model = new CustomerModel{Employee = MobileSessionFacade.LoggedInEmployee};
|
|
Session[ModelSessionConstants.CustomerModelKey] = _Model;
|
|
}
|
|
else
|
|
{
|
|
_Model = (CustomerModel)Session[ModelSessionConstants.CustomerModelKey];
|
|
}
|
|
|
|
return _Model;
|
|
}
|
|
}
|
|
|
|
[Authorize]
|
|
public ActionResult Customer(long? id)
|
|
{
|
|
try
|
|
{
|
|
if (!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
var customerFilter = MobileUserSettingsUtils.GetSettingValueAsEnum(AbstractModel.UserSettings, SettingsKeys.CustomerFilterCustomers, CustomerFilterEnum.MyCustomer);
|
|
|
|
Model.SelectedCustomerFilter = customerFilter;
|
|
|
|
InitViewModel();
|
|
|
|
if(id.HasValue)
|
|
{
|
|
LoadCustomerToModel(id);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Log.Info("Exception: " + e.Message + "\n" + e.StackTrace);
|
|
if (e.InnerException != null)
|
|
{
|
|
Log.Info("\n\nInnerException: " + e.InnerException.Message + "\n" + e.InnerException.StackTrace);
|
|
}
|
|
|
|
throw;
|
|
}
|
|
|
|
return View(Model);
|
|
}
|
|
|
|
private void InitViewModel()
|
|
{
|
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
|
{
|
|
Logout();
|
|
return;
|
|
}
|
|
|
|
if(Model.Employee?.EmployeeOid.HasValue ?? false)
|
|
{
|
|
Model.Customers = EmployeeService.GetActiveCustomersForEmployee(Model.Employee.EmployeeOid.Value, Model.SelectedCustomerFilter).OrderBy(customer => customer.LastName).ToList();
|
|
}
|
|
else
|
|
{
|
|
Model.Customers = new List<CompactCustomerDC>();
|
|
}
|
|
|
|
if(AbstractModel.IsAllowedToSeeMedikamentenliste)
|
|
{
|
|
Model.ReportTypes = new List<CustomerReportType> { CustomerReportType.Medikamentenliste, CustomerReportType.Bedarfsmedikation, CustomerReportType.Historie };
|
|
}
|
|
|
|
Model.AllAbsenceReasons = AbstractModel.HasRightToViewCustomerAbsenceTimes ? CustomerService.GetAllAbsenceReasons() : new List<AbsenceReasonDC>();
|
|
}
|
|
|
|
private void LoadCustomerToModel(long? customerOid)
|
|
{
|
|
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);
|
|
|
|
if(!(customer is null))
|
|
{
|
|
Model.ICD10Diagnosen = OperationsService.GetDiagiosisStringsForICD10Codes(customer.ICD10DiagnosisCodes);
|
|
}
|
|
|
|
Model.SelectedCustomer = customer;
|
|
|
|
var bargeldkassen = OperationsService.LoadBargeldkassenForObject(TableID.Customer, customerOid.Value);
|
|
Model.Bargeldkassen = bargeldkassen;
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPost]
|
|
public ActionResult SelectCustomer(FormCollection formCollection)
|
|
{
|
|
try
|
|
{
|
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
var selectedCustomerOidString = formCollection[FormCollectionConstants.SelectedCustomerOidKey];
|
|
if (long.TryParse(selectedCustomerOidString, out var selectedCustomerOid))
|
|
{
|
|
LoadCustomerToModel(selectedCustomerOid);
|
|
}
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
Log.Error(exception.Message, exception);
|
|
}
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
[HttpPost]
|
|
[Authorize]
|
|
public ActionResult SetCustomerFilter(FormCollection formCollection)
|
|
{
|
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
var selectedCustomerFilter = formCollection[nameof(Model.SelectedCustomerFilter)];
|
|
|
|
if(!Enum.TryParse(selectedCustomerFilter, out CustomerFilterEnum customerFilter))
|
|
{
|
|
customerFilter = CustomerFilterEnum.MyCustomer;
|
|
}
|
|
|
|
UpdateApplicationSettings(SettingsKeys.CustomerFilterCustomers, customerFilter.ToString());
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
[Authorize]
|
|
public FileResult DownloadFile(long fileOid)
|
|
{
|
|
if (Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
|
{
|
|
Logout();
|
|
return null;
|
|
}
|
|
|
|
var fileAttachment = DownloadService.GetFileAttachmentForMobile(fileOid, MobileSessionFacade.Tenant);
|
|
|
|
return File(fileAttachment.BinaryData, "application/octet-stream", fileAttachment.FileName);
|
|
}
|
|
|
|
[Authorize]
|
|
public string SaveEditedNotice(string newNotice)
|
|
{
|
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer"))
|
|
{
|
|
Logout();
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
var isAllowedToEdit = MobileSessionFacade.LoggedInUser.CheckForAtLeastOneRight(new List<UserRightType> { UserRightType.CustomerView_Edit, UserRightType.EditAll });
|
|
|
|
if(isAllowedToEdit && Model.SelectedCustomer != null)
|
|
{
|
|
Model.SelectedCustomer.Notice = newNotice?.RemoveUppercaseEsszett();
|
|
|
|
var customerOid = CustomerService.UpdateCustomer(Model.SelectedCustomer);
|
|
Model.SelectedCustomer = CustomerService.LoadCustomer(customerOid);
|
|
}
|
|
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPost]
|
|
public ActionResult SelectReport(FormCollection formCollection)
|
|
{
|
|
if(Model is null || !MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeMedikamentenliste)
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
Model.Report = null;
|
|
|
|
if(!int.TryParse(formCollection["report-type-input"], out var selectedReportTypeInt))
|
|
{
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
var selectedReportType = (CustomerReportType) selectedReportTypeInt;
|
|
|
|
SelectReport(selectedReportType);
|
|
|
|
//return RedirectToActionPermanent("Customer", Model);
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
private void SelectReport(CustomerReportType selectedReportType)
|
|
{
|
|
Model.SelectedReportType = selectedReportType;
|
|
|
|
GenerateMobileMedListForSelectedCustomer();
|
|
}
|
|
|
|
public string SelectReportType(int reportType)
|
|
{
|
|
if(Model is null)
|
|
{
|
|
return "Die Auswahl des Berichts ist fehlgeschlagen. Bitte wenden Sie sich an den Administrator.";
|
|
}
|
|
|
|
Model.SelectedReportType = (CustomerReportType) reportType;
|
|
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
public 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;
|
|
}
|
|
}
|
|
|
|
public ActionResult UpdateCustomer(FormCollection formCollection)
|
|
{
|
|
if(Model is null)
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
var firstname = formCollection["vorname"]?.RemoveUppercaseEsszett();
|
|
var lastname = formCollection["nachname"]?.RemoveUppercaseEsszett();
|
|
var alias = formCollection["alias"]?.RemoveUppercaseEsszett();
|
|
var geburtdatum = formCollection["geburtstag"]?.RemoveUppercaseEsszett();
|
|
var geschlecht = formCollection["geschlecht"]?.RemoveUppercaseEsszett();
|
|
|
|
var adresszusatz = formCollection["adresszusatz"]?.RemoveUppercaseEsszett();
|
|
var street = formCollection["strasse"]?.RemoveUppercaseEsszett();
|
|
var postalCode = formCollection["plz"]?.RemoveUppercaseEsszett();
|
|
var city = formCollection["ort"]?.RemoveUppercaseEsszett();
|
|
|
|
var nameInvoiceAddress = formCollection["name-rechnungsadresse"]?.RemoveUppercaseEsszett();
|
|
var streetInvoiceAddress = formCollection["strasse-rechnungsadresse"]?.RemoveUppercaseEsszett();
|
|
var postalCodeInvoiceAddress = formCollection["plz-rechnungsadresse"]?.RemoveUppercaseEsszett();
|
|
var cityInvoiceAddress = formCollection["ort-rechnungsadresse"]?.RemoveUppercaseEsszett();
|
|
|
|
var mobile = formCollection["handy"]?.RemoveUppercaseEsszett();
|
|
var phone = formCollection["telefon"]?.RemoveUppercaseEsszett();
|
|
var fax = formCollection["fax"]?.RemoveUppercaseEsszett();
|
|
var eMailAddress = formCollection["mail"]?.RemoveUppercaseEsszett();
|
|
|
|
var notice = formCollection["notiz"]?.RemoveUppercaseEsszett();
|
|
|
|
var customer = Model.SelectedCustomer;
|
|
|
|
if(customer is null)
|
|
{
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
customer.FirstName = firstname;
|
|
customer.LastName = lastname;
|
|
customer.CustomerAlias = alias;
|
|
|
|
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;
|
|
}
|
|
|
|
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);
|
|
|
|
LoadCustomerToModel(customer.CustomerOid);
|
|
|
|
return RedirectToActionPermanent("Customer", new { id = customer.CustomerOid });
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPost]
|
|
public ActionResult ViewMedListFromHistoryList(FormCollection formCollection)
|
|
{
|
|
if(!long.TryParse(formCollection["med-list-oid"], out var medListOid))
|
|
{
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
Model.SelectedReportType = CustomerReportType.Historie;
|
|
|
|
GenerateMobileMedListForSelectedCustomer(medListOid);
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPost]
|
|
public ActionResult DeleteMedListFromHistoryList(FormCollection formCollection)
|
|
{
|
|
if(!long.TryParse(formCollection["med-list-oid"], out var medListOid))
|
|
{
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
Model.SelectedReportType = CustomerReportType.Historie;
|
|
|
|
CustomerService.DeleteMedikamentenverordnungsliste(medListOid);
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
[Authorize]
|
|
public string ResetReport()
|
|
{
|
|
Model.Report = null;
|
|
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
#region Bargeldkassen
|
|
[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]
|
|
public string DeselectBargeldkasse()
|
|
{
|
|
if(Model is null)
|
|
{
|
|
Logout();
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
Model.SelectedBargeldkasse = null;
|
|
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
[Authorize]
|
|
public ActionResult LoadFormPartial()
|
|
{
|
|
Model.SelectedBargeldkasse = null;
|
|
Model.SelectedAuszahlungsintervall = 0;
|
|
|
|
return PartialView("CustomerBargeldkassenFormPartial", Model);
|
|
}
|
|
|
|
[Authorize]
|
|
public ActionResult LoadEditFormPartial(long bargeldkassenOid)
|
|
{
|
|
Model.SelectedBargeldkasse = Model.Bargeldkassen.FirstOrDefault(bargeldkasse => bargeldkasse.BargeldkassenOid.HasValue && bargeldkasse.BargeldkassenOid.Value.Equals(bargeldkassenOid));
|
|
|
|
if(Model.SelectedBargeldkasse != null)
|
|
{
|
|
Model.SelectedAuszahlungsintervall = (int) Model.SelectedBargeldkasse.Auszahlungsintervall;
|
|
}
|
|
|
|
return PartialView("CustomerBargeldkassenFormPartial", Model);
|
|
}
|
|
|
|
[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)
|
|
{
|
|
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);
|
|
|
|
Model.Bargeldkassen = OperationsService.LoadBargeldkassenForObject(TableID.Customer, Model.SelectedCustomerOid.Value);
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPost]
|
|
public ActionResult CreateOrUpdateBargeldkasse(FormCollection formCollection)
|
|
{
|
|
if(Model is null)
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
var name = formCollection["bargeldkassenname"];
|
|
var rawAnfangsbestand = formCollection["bargeldkassenanfangsbestand"];
|
|
|
|
decimal.TryParse(rawAnfangsbestand, out var anfangsbestand);
|
|
|
|
var auszahlungsintervall = (Auszahlungsintervall) Model.SelectedAuszahlungsintervall;
|
|
|
|
if(Model.SelectedBargeldkasse is null)
|
|
{
|
|
var newBargeldkasse = new BargeldkassenDC
|
|
{
|
|
Anfangsbestand = anfangsbestand,
|
|
Kassenname = name,
|
|
Auszahlungsintervall = auszahlungsintervall,
|
|
ObjectOid = Model.SelectedCustomerOid,
|
|
ObjectTid = TableID.Customer
|
|
};
|
|
|
|
OperationsService.InsertNewBargeldkasse(newBargeldkasse);
|
|
|
|
LoadCustomerToModel(Model.SelectedCustomerOid);
|
|
}
|
|
else
|
|
{
|
|
var bargeldkasse = Model.SelectedBargeldkasse;
|
|
|
|
if(!string.IsNullOrWhiteSpace(name))
|
|
{
|
|
bargeldkasse.Kassenname = name;
|
|
}
|
|
|
|
bargeldkasse.Auszahlungsintervall = auszahlungsintervall;
|
|
|
|
bargeldkasse.Anfangsbestand = anfangsbestand;
|
|
|
|
OperationsService.UpdateBargeldkasse(bargeldkasse);
|
|
|
|
LoadCustomerToModel(Model.SelectedCustomerOid);
|
|
}
|
|
|
|
Model.SelectedBargeldkasse = null;
|
|
|
|
return RedirectToActionPermanent("Customer");
|
|
}
|
|
|
|
[Authorize]
|
|
public ActionResult PrintBargeldkasse(long kassenbuchOid, string reportStartDate, string reportEndDate)
|
|
{
|
|
// Benötigt werden: BargeldkassenOid, Startdatum und Enddatum
|
|
|
|
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)
|
|
{
|
|
return PartialView("BargeldkassenReportPartial", Model);
|
|
}
|
|
|
|
ReportService.CreateKassenbuchReportImZeitraum(startDate, endDate, bargeldkasse, bargeldkasse.ObjectOid.Value, bargeldkasse.ObjectTid);
|
|
|
|
return PartialView("BargeldkassenReportPartial", Model);
|
|
}
|
|
|
|
[Authorize]
|
|
public string SetSelectedAuszahlungsintervall(int auszahlungsintervall)
|
|
{
|
|
Model.SelectedAuszahlungsintervall = auszahlungsintervall;
|
|
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
#endregion
|
|
|
|
#region Abwesenheiten
|
|
|
|
[Authorize]
|
|
[HttpPost]
|
|
public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection)
|
|
{
|
|
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"];
|
|
var allDay = "on" == formCollection["customer-absence-time-allday-cb"];
|
|
|
|
if(allDay)
|
|
{
|
|
startTimeString = null;
|
|
endTimeString = null;
|
|
}
|
|
|
|
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,
|
|
Reason = absenceReason,
|
|
Start = start,
|
|
End = end,
|
|
Notice = notice
|
|
};
|
|
|
|
OperationsService.InsertNewCustomerAbsenceTime(customer.CustomerOid.Value, absenceTime);
|
|
}
|
|
else
|
|
{
|
|
selectedAbsenceTime.Start = start;
|
|
selectedAbsenceTime.End = end;
|
|
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]
|
|
public ActionResult SelectAbsenceTime(long absenceTimeOid)
|
|
{
|
|
if(Model is null)
|
|
{
|
|
return Logout();
|
|
}
|
|
|
|
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()
|
|
{
|
|
return PartialView("CustomerAbsenceTimeFormPartial", Model);
|
|
}
|
|
|
|
[Authorize]
|
|
public string DeselectAbsenceTime()
|
|
{
|
|
Model.SelectedAbsenceTime = null;
|
|
Model.SelectedAbsenceReason = -1;
|
|
|
|
return LeerzeichenFuerGetMethoden;
|
|
}
|
|
|
|
[Authorize]
|
|
public ActionResult DeleteAbsenceTime(long absenceTimeOid)
|
|
{
|
|
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);
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
public enum CustomerReportType
|
|
{
|
|
Medikamentenliste = 0,
|
|
Bedarfsmedikation = 1,
|
|
Historie = 2
|
|
}
|
|
} |