Files
BeWoPlaner/Service/ServiceImplementations/OperationsServiceImp.cs

7814 lines
317 KiB
C#
Raw Normal View History

using BeWo.Data;
2016-06-27 01:45:38 +02:00
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.ICD10;
using BeWo.Data.ICF;
2016-06-27 01:45:38 +02:00
using BeWo.Service.Configuration;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
2020-04-08 14:25:01 +02:00
using BeWo.Service.OwnChat;
2016-06-27 01:45:38 +02:00
using BeWo.Service.Plugins;
2018-05-21 16:39:24 +02:00
using BeWo.Service.SBD;
2016-06-27 01:45:38 +02:00
using BeWo.Service.Security;
using BeWo.Service.ServiceContracts;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.Reports;
using BS.Shared.Extensions;
using BS.Shared.Services;
2017-10-06 12:06:34 +02:00
using Newtonsoft.Json;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.ServiceModel;
using System.Text;
using System.Threading;
using System.Web;
using System.Windows;
2016-06-27 01:45:38 +02:00
using Utils = BeWo.Service.Core.Utils;
namespace BeWo.Service.ServiceImplementations
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
public class OperationsServiceImp : IOperationsService
{
public Mandator GetMandatorEntity()
{
return AppSettings.GetMandatorEntity();
}
2020-04-08 14:25:01 +02:00
2016-06-27 01:45:38 +02:00
public void DeactivateInvoices(List<InvoiceDC> pInvoices)
{
try
{
ServiceLogic.SetActivationType<Invoice>(pInvoices.ToDictionary(i => i.InvoiceOid.Value, i => i.InvoiceVersion.Value), ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateServiceCategories(Dictionary<long, long> pOid2Version)
{
try
{
ServiceLogic.SetActivationType<ServiceCategory>(pOid2Version, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateAdditionalServices(Dictionary<long, long> pOid2Version)
{
try
{
ServiceLogic.SetActivationType<AdditionalService>(pOid2Version, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateServiceCategory(long pOid, long pVersion)
{
try
{
ServiceLogic.SetActivationType<ServiceCategory>(new Dictionary<long, long>
{
{
pOid, pVersion
}
}, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateServiceDescription(long pOid, long pVersion)
{
try
{
ServiceLogic.SetActivationType<ServiceDescription>(new Dictionary<long, long>
{
{
pOid, pVersion
}
}, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateServiceDescriptions(Dictionary<long, long> pOid2Version)
{
try
{
ServiceLogic.SetActivationType<ServiceDescription>(pOid2Version, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateAdditionalServiceRegions(Dictionary<long, long> pOid2Version)
{
try
{
ServiceLogic.SetActivationType<AdditionalServiceRegion>(pOid2Version, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteAccountingTransaction(long pOid, long pVersion)
{
try
{
DeleteAccountingTransactions(new Dictionary<long, long>
{
{
pOid, pVersion
}
});
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteAccountingTransactions(Dictionary<long, long> pOid2Version)
{
try
{
List<AccountingTransaction> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AccountingTransaction>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.AccountingTransactionDC_AccountingTransaction.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
// DAOFactory.GenericDAO.Deactivate<AccountingTransaction>(lOriginals);
DAOFactory.GenericDAO.Delete(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteFileAttachment(long pOid, long pVersion)
{
try
{
DeleteFileAttachments(new Dictionary<long, long>
{
{
pOid, pVersion
}
});
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteFileAttachments(Dictionary<long, long> pOid2Version)
{
try
{
List<FileAttachment> lOriginals = DAOFactory.GenericDAO.LoadByIDs<FileAttachment>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.FileAttachmentDC_FileAttachment.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
DAOFactory.GenericDAO.Delete(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteServiceCategories(Dictionary<long, long> pOid2Version)
{
try
{
List<ServiceCategory> lOriginals = DAOFactory.GenericDAO.LoadByIDs<ServiceCategory>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.ServiceCategoryDC_ServiceCategory.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
DAOFactory.GenericDAO.Delete(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteServiceCategory(long pOid, long pVersion)
{
try
{
DeleteServiceCategories(new Dictionary<long, long>
{
{
pOid, pVersion
}
});
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteServiceDescription(long pOid, long pVersion)
{
try
{
DeleteServiceDescriptions(new Dictionary<long, long>
{
{
pOid, pVersion
}
});
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteServiceDescriptions(Dictionary<long, long> pOid2Version)
{
try
{
List<ServiceDescription> lOriginals = DAOFactory.GenericDAO.LoadByIDs<ServiceDescription>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.ServiceDescriptionDC_ServiceDescription.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
DAOFactory.GenericDAO.Delete(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteServiceRecord(long pOid, long pVersion)
{
try
{
DeleteServiceRecords(new Dictionary<long, long>
{
{
pOid, pVersion
}
});
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteServiceRecords(Dictionary<long, long> pOid2Version)
{
InternalDeleteServicerecords(pOid2Version);
}
public static void InternalDeleteServicerecords(IDictionary<long, long> pOid2Version)
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<ServiceRecord>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.ServiceRecordDC_ServiceRecord.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
var srListToDelete = new List<ServiceRecord>();
2020-04-08 14:25:01 +02:00
foreach (var item in lOriginals)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (item.Group != null)
2016-06-27 01:45:38 +02:00
{
MakeServiceRecordHistoryEntry(item.Group.ServiceRecordList, null, StatementType.Delete);
DAOFactory.GenericDAO.Delete(item.Group);
}
else
{
srListToDelete.Add(item);
}
}
2020-04-08 14:25:01 +02:00
if (srListToDelete.Count > 0)
2016-06-27 01:45:38 +02:00
{
MakeServiceRecordHistoryEntry(srListToDelete, null, StatementType.Delete);
// ConfirmationReceiptSignatures mit den zu löschenden ServiceRecords suchen und die ServiceRecords aus der Liste entfernen
foreach (var item in lOriginals)
{
if (item.Oid.HasValue)
{
var confirmationReceiptSignatures = DAOFactory.SearchDAO.GetConfirmationReceiptSignaturesByServiceRecord(item.Oid.Value);
foreach (var confirmationReceiptSignature in confirmationReceiptSignatures)
{
confirmationReceiptSignature.ServiceRecords.Remove(item);
DAOFactory.GenericDAO.Update(confirmationReceiptSignature);
}
}
}
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Delete(srListToDelete);
}
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public Settlement2DC GenerateInitialSettlementDC(long pCostBearer2SupportConceptOid)
{
return GenerateInitialSettlementDCForPeriod(pCostBearer2SupportConceptOid, null, null);
}
public Settlement2DC GenerateInitialSettlementDCForPeriod(long pCostBearer2SupportConceptOid, DateTime? periodStart, DateTime? periodEnd)
{
try
{
var lCb2Sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(pCostBearer2SupportConceptOid);
var costBearer = lCb2Sc.CostBearer;
string tenant = null;
2020-04-08 14:25:01 +02:00
if (MultitenancyOperationContextExt.Current != null)
2016-06-27 01:45:38 +02:00
{
tenant = MultitenancyOperationContextExt.Current.Tenant;
}
2017-02-01 13:53:59 +01:00
var factory = PluginLoader.FindClass<InvoiceFactory>(costBearer.ID);
2020-04-08 14:25:01 +02:00
if (factory == null)
2017-02-01 13:53:59 +01:00
{
factory = InvoiceFactory.GetInstance(costBearer.ID, tenant);
}
var creator = factory.CreateSettlementInvoiceCreator(costBearer.ID, tenant, lCb2Sc);
2016-06-27 01:45:38 +02:00
var lResult = creator.GenerateSettlementInvoice(lCb2Sc, periodStart, periodEnd);
return lResult;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<Settlement2DC> GenerateInitialSettlementDCsForPeriod(long pCostBearer, DateTime periodStart, DateTime periodEnd)
{
return new CustomerServiceImp()
.GetAllActiveSupportConceptsCompact()
.Where(i => i.IsApproved && i.CostBearerOids2CostBearerRelOids.ContainsKey(pCostBearer))
.Select(i => GenerateInitialSettlementDCForPeriod(i.CostBearerOids2CostBearerRelOids[pCostBearer], periodStart, periodEnd))
.ToList();
}
public List<AccountingTransactionDC> GetAccountingTransactions(DateTimeSpan pSpan, long? pSupportConceptOid, long? pSupportConceptCostBearerRelOid)
{
try
{
return MapperFactory.AccountingTransactionDC_AccountingTransaction.MapToNewDCs(DAOFactory.SearchDAO.FindAccoutingTransactions(pSpan, pSupportConceptOid, pSupportConceptCostBearerRelOid));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<InvoiceDC> GetAllActiveInvoices()
{
try
{
return MapperFactory.InvoiceDC_Invoice.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<Invoice>());
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<CompactSupportConceptDC> GetAllActiveSupportConceptCostbearer(bool onlyApproved, bool onlyWithAssignedCostbearer, long employeeOid)
{
try
{
var s = PluginLoader.FindClass<CustomerService>();
2016-06-27 01:45:38 +02:00
return s.GetAllActiveSupportConceptCostbearer(onlyApproved, onlyWithAssignedCostbearer, employeeOid);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AdditionalServiceDC> GetAllAdditionalService()
{
try
{
IList<AdditionalService> list = DAOFactory.GenericDAO.GetAllActive<AdditionalService>();
return MapperFactory.AdditionalServiceDC_AdditionalService.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AdditionalServiceRegionDC> GetAllAdditionalServiceRegion()
{
try
{
var result = new List<AdditionalServiceRegionDC>();
result =
MapperFactory.AdditionalServiceRegionDC_AdditionalServiceRegion.MapToNewDCs(
DAOFactory.GenericDAO.GetAllActive<AdditionalServiceRegion>());
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceCategoryDC> GetAllServiceCategories()
{
try
{
IList<ServiceCategory> list = DAOFactory.GenericDAO.GetAllActive<ServiceCategory>();
2020-11-10 02:25:15 +01:00
var dcList = MapperFactory.ServiceCategoryDC_ServiceCategory.MapToNewDCs(list);
//AppSettings settings = AppSettings.CreateSettings();
//if (settings.SortServiceDescriptionAlphabetically)
//{
// dcList = dcList.OrderBy(c => c.Name).ToList();
//}
//else
//{
dcList.Sort((a, b) =>
{
if (a.Position == b.Position)
2020-11-10 02:25:15 +01:00
{
return a.ServiceCategoryOid.Value.CompareTo(b.ServiceCategoryOid.Value);
}
else
{
return a.Position.CompareTo(b.Position);
}
});
2020-11-10 02:25:15 +01:00
//}
return dcList;
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceDescriptionDC> GetAllServiceDescriptions()
{
try
{
IList<ServiceDescription> list = DAOFactory.GenericDAO.GetAllActive<ServiceDescription>();
2017-10-11 14:43:49 +02:00
var dcList = MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewDCs(list);
2016-06-27 01:45:38 +02:00
AppSettings settings = AppSettings.CreateSettings();
2020-04-08 14:25:01 +02:00
if (settings.SortServiceDescriptionAlphabetically)
2016-06-27 01:45:38 +02:00
{
2017-10-11 14:43:49 +02:00
dcList = dcList.OrderBy(sd => sd.Name).ToList();
}
else
{
dcList.Sort((a, b) =>
{
2020-04-08 14:25:01 +02:00
if (a.Position == b.Position)
2017-10-11 14:43:49 +02:00
{
return a.ServiceDescriptionOid.Value.CompareTo(b.ServiceDescriptionOid.Value);
}
else
{
return a.Position.CompareTo(b.Position);
}
});
2016-06-27 01:45:38 +02:00
}
2017-10-11 14:43:49 +02:00
return dcList;
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceDescriptionDC> FindServiceDescriptionsForCategory(long pCategoryOid)
{
try
{
return MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewDCs(DAOFactory.SearchDAO.FindServiceDescriptionForCategory(pCategoryOid));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public ServiceDescriptionDC GetServiceDescription(long pServiceDescriptionOid)
{
try
{
return MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewDC(DAOFactory.GenericDAO.GetByID<ServiceDescription>(pServiceDescriptionOid));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public string GetCompressedICD10Diagnosis()
{
try
{
return ICD10DAO.GetCompressedString();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public CustomerInfoDC GetCustomerInfosForCustomerOid(long customerOid)
{
try
{
var result = new CustomerInfoDC();
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(customerOid);
2020-04-08 14:25:01 +02:00
if (customer.SupportConcepts == null || !customer.SupportConcepts.Exists(sc => sc.IsActive == ActivationTypeId.Active))
2016-06-27 01:45:38 +02:00
{
result.CurrentSupportConcept = "Kein aktueller Hilfeplan";
}
else
{
SupportConcept currentSC = customer.SupportConcepts.Where(sc => sc.IsActive == ActivationTypeId.Active).OrderByDescending(sc => sc.StartDate).First();
result.CurrentSupportConcept = "Akt. HP: ";
2020-04-08 14:25:01 +02:00
if (currentSC.StartDate.HasValue)
2016-06-27 01:45:38 +02:00
{
result.CurrentSupportConcept += currentSC.StartDate.Value.ToShortDateString().Remove(6, 2);
}
2020-04-08 14:25:01 +02:00
if (currentSC.EndDate.HasValue)
2016-06-27 01:45:38 +02:00
{
result.CurrentSupportConcept += " - " + currentSC.EndDate.Value.ToShortDateString().Remove(6, 2);
}
result.SupportConceptInfos = GetSupportConceptInfosForSupportConceptOid(currentSC.Oid.Value);
}
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetCustomerServiceRecordsCompact(long pCustomerOid, long costbearer2SupportConceptOid, long? days)
{
try
{
var result = new List<ServiceRecordDC>();
var srList = DAOFactory.SearchDAO.FindServiceRecordsDetailsForLastDays(costbearer2SupportConceptOid, days);
2020-04-08 14:25:01 +02:00
if (srList != null)
2016-06-27 01:45:38 +02:00
{
var serviceRecordsProcessed = new Dictionary<long, bool>();
2020-04-08 14:25:01 +02:00
foreach (var item in srList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (!serviceRecordsProcessed.ContainsKey(item.Oid.Value))
2016-06-27 01:45:38 +02:00
{
//ServiceRecordDC dc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(item);
//result.Add(dc);
var dc = CreateServiceRecordDCCompact(item);
2020-04-08 14:25:01 +02:00
if (dc != null)
2016-06-27 01:45:38 +02:00
{
result.Add(dc);
}
serviceRecordsProcessed.Add(item.Oid.Value, true);
}
}
}
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetCustomerServiceRecords(long pCustomerOid, bool fetchArchivedSupportConcepts)
{
try
{
var result = new List<ServiceRecordDC>();
var lCustomer = DAOFactory.SearchDAO.FindCustomerWithServiceRecordsWithDetail(pCustomerOid);
2020-04-08 14:25:01 +02:00
if (lCustomer != null)
2016-06-27 01:45:38 +02:00
{
var srList = lCustomer.ServiceRecordList;
2020-04-08 14:25:01 +02:00
if (srList != null)
2016-06-27 01:45:38 +02:00
{
var serviceRecordsProcessed = new Dictionary<long, bool>();
2020-04-08 14:25:01 +02:00
foreach (var item in srList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (!serviceRecordsProcessed.ContainsKey(item.Oid.Value))
2016-06-27 01:45:38 +02:00
{
var dc = CreateServiceRecordDCIfSupportConceptIsActive(item, lCustomer, !fetchArchivedSupportConcepts);
2020-04-08 14:25:01 +02:00
if (dc != null)
2016-06-27 01:45:38 +02:00
{
result.Add(dc);
}
serviceRecordsProcessed.Add(item.Oid.Value, true);
}
}
}
}
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2016-06-27 01:45:38 +02:00
public List<ServiceRecordDC> GetCustomerServiceRecordsInMonth(long pCustomerOid, DateTime pMonth)
{
try
{
var list = GetCustomerServiceRecords(pCustomerOid, false);
return list.Where(i => i.Start.HasValue && i.Start.Value.Year.Equals(pMonth.Year) && i.Start.Value.Month.Equals(pMonth.Month)).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetEmployeesServiceRecords(long pEmployeeOid)
{
try
{
IEnumerable<ServiceRecord> list = DAOFactory.SearchDAO.FindEmployeeServiceRecordsWithoutCustomer(pEmployeeOid, null);
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetEmployeesServiceRecords2(long pEmployeeOid, long? days)
{
try
{
IEnumerable<ServiceRecord> list = DAOFactory.SearchDAO.FindEmployeeServiceRecordsWithoutCustomer(pEmployeeOid, days);
2016-06-27 01:45:38 +02:00
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2016-06-27 01:45:38 +02:00
public List<ServiceRecordDC> GetEmployeesServiceRecordsWithStartEndDate(long pEmployeeOid, DateTime start, DateTime ende)
{
try
{
IEnumerable<ServiceRecord> list = DAOFactory.SearchDAO.FindEmployeeServiceRecordsWithoutCustomerWithStartEndDate(pEmployeeOid, start, ende);
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetCustomerServiceRecordsCompactWithStartEndDate(long pCustomerOid, long costbearer2SupportConceptOid, DateTime start, DateTime ende)
{
try
{
var result = new List<ServiceRecordDC>();
var srList = DAOFactory.SearchDAO.FindServiceRecordsDetailsForLastDaysWithStartEndDate(costbearer2SupportConceptOid, start, ende);
2020-04-08 14:25:01 +02:00
if (srList != null)
{
var serviceRecordsProcessed = new Dictionary<long, bool>();
2020-04-08 14:25:01 +02:00
foreach (var item in srList)
{
2020-04-08 14:25:01 +02:00
if (!serviceRecordsProcessed.ContainsKey(item.Oid.Value))
{
//ServiceRecordDC dc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(item);
//result.Add(dc);
var dc = CreateServiceRecordDCCompact(item);
2020-04-08 14:25:01 +02:00
if (dc != null)
{
result.Add(dc);
}
serviceRecordsProcessed.Add(item.Oid.Value, true);
}
}
}
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetEmployeesServiceRecordsInSpan(long pEmployeeOid, DateTimeSpan limitinDateTimeSpan)
{
try
{
IEnumerable<ServiceRecord> list = DAOFactory.SearchDAO.FindEmployeeServiceRecordsWithoutCustomerInSpan(pEmployeeOid, limitinDateTimeSpan);
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2016-06-27 01:45:38 +02:00
public List<FileAttachmentDC> GetFileAttachments(TableID pObjectTid, long pObjectOid)
{
try
{
IEnumerable<FileAttachmentInfo> files = DAOFactory.SearchDAO.FindFileAttachmentInfos(pObjectTid, pObjectOid);
return files.Select(item => MapperFactory.FileAttachmentDC_FileAttachmentInfo.MapToNewDC(item)).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<BeWoFolderDC> GetFolderTree(TableID pObjectTid, long pObjectOid)
{
try
{
IList<BeWoFolder> folder = DAOFactory.SearchDAO.FindBeWoFolders(pObjectTid, pObjectOid);
bool templateFolder = folder.Any(f => f.SystemEntryID.Equals(SystemEntryID.TemplateDirectory));
var folderDCList = new List<BeWoFolderDC>();
2020-04-08 14:25:01 +02:00
foreach (BeWoFolder item in folder)
2016-06-27 01:45:38 +02:00
{
folderDCList.Add(MapperFactory.BeWoFolderDC_BeWoFolder.MapToNewDC(item));
}
IEnumerable<FileAttachmentInfo> files = DAOFactory.SearchDAO.FindFileAttachmentInfos(pObjectTid, pObjectOid);
var fileDCList = new List<FileAttachmentDC>();
2020-04-08 14:25:01 +02:00
foreach (FileAttachmentInfo item in files)
2016-06-27 01:45:38 +02:00
{
fileDCList.Add(MapperFactory.FileAttachmentDC_FileAttachmentInfo.MapToNewDC(item));
}
Thread.Sleep(500);
return CreateFolderTree(folderDCList, fileDCList, pObjectTid, pObjectOid, templateFolder);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteFolder(long pBeWoFolderOid, long pVersion)
{
try
{
var origFolder = DAOFactory.GenericDAO.LoadByID<BeWoFolder>(pBeWoFolderOid);
MapperFactory.BeWoFolderDC_BeWoFolder.ConcurrencyCheck(pVersion, origFolder);
DAOFactory.GenericDAO.Delete(origFolder);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public long InsertNewFolder(BeWoFolderDC folder)
{
try
{
BeWoFolder newFolder = MapperFactory.BeWoFolderDC_BeWoFolder.MapToNewEntity(folder);
DAOFactory.GenericDAO.Insert(newFolder);
BeWoFolderDC newFolderDC = MapperFactory.BeWoFolderDC_BeWoFolder.MapToNewDC(newFolder);
return newFolderDC.BeWoFolderOid.Value;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public BeWoFolderDC UpdateFolder(BeWoFolderDC folder)
{
try
{
//Root Folder kann nicht umbenannt werden
var origFolder = DAOFactory.GenericDAO.LoadByID<BeWoFolder>(folder.BeWoFolderOid.Value);
MapperFactory.BeWoFolderDC_BeWoFolder.MergeWithEntity(folder, origFolder);
DAOFactory.GenericDAO.Update(origFolder);
BeWoFolderDC updatedFolderDC = MapperFactory.BeWoFolderDC_BeWoFolder.MapToNewDC(origFolder);
return updatedFolderDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public FileAttachmentDC UpdateFileAttachment(FileAttachmentDC file)
{
try
{
var origFile = DAOFactory.GenericDAO.LoadByID<FileAttachmentInfo>(file.FileAttachmentOid.Value);
MapperFactory.FileAttachmentDC_FileAttachmentInfo.MergeWithEntity(file, origFile);
DAOFactory.GenericDAO.Update(origFile);
FileAttachmentDC updatedFileDC = MapperFactory.FileAttachmentDC_FileAttachmentInfo.MapToNewDC(origFile);
return updatedFileDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public FileAttachmentDC DoTheRealFileUpdate(FileAttachmentDC file)
{
try
{
var origFile = DAOFactory.GenericDAO.LoadByID<FileAttachment>(file.FileAttachmentOid.Value);
2020-04-08 14:25:01 +02:00
if (!origFile.Data.Equals(file.BinaryData))
2016-06-27 01:45:38 +02:00
{
}
2016-06-27 01:45:38 +02:00
MapperFactory.FileAttachmentDC_FileAttachment.MergeWithEntity(file, origFile);
DAOFactory.GenericDAO.Update(origFile);
FileAttachmentDC updatedFileDC = MapperFactory.FileAttachmentDC_FileAttachment.MapToNewDC(origFile);
return updatedFileDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public MandatorDC GetMandator()
2019-02-12 19:22:22 +01:00
{
return GetMandator2(true);
}
public MandatorDC GetMandator2(bool fetchContractState)
2016-06-27 01:45:38 +02:00
{
try
{
Mandator man = GetMandatorEntity();
MandatorDC manDc = MapperFactory.MandatorDC_Mandator.MapToNewDC(man);
Dictionary<string, string> settingValueDict = GetSettingsValueDict(manDc.Settings);
2020-04-08 14:25:01 +02:00
if (fetchContractState)
2016-06-27 01:45:38 +02:00
{
2019-02-12 19:22:22 +01:00
string contractState = GetContractState();
Dictionary<string, string> contractStateDict = GetSettingsValueDict(contractState);
2020-04-08 14:25:01 +02:00
foreach (var kv in contractStateDict)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (settingValueDict.ContainsKey(kv.Key))
2019-02-12 19:22:22 +01:00
{
settingValueDict.Remove(kv.Key);
}
settingValueDict.Add(kv.Key, kv.Value);
2016-06-27 01:45:38 +02:00
}
}
2019-02-12 19:22:22 +01:00
2020-04-08 14:25:01 +02:00
if (!settingValueDict.ContainsKey("ShowScheduler") && man.IsSchedulerAllowed)
2016-06-27 01:45:38 +02:00
{
settingValueDict.Add("ShowScheduler", "1");
}
2020-04-08 14:25:01 +02:00
if (!settingValueDict.ContainsKey("ShowMedication") && man.IsMedicationAllowed)
2016-06-27 01:45:38 +02:00
{
settingValueDict.Add("ShowMedication", "1");
}
2020-04-08 14:25:01 +02:00
if (!settingValueDict.ContainsKey("ShowDistanceFields") && settingValueDict.ContainsKey("ShowKilometer"))
2019-02-12 19:22:22 +01:00
{
2020-04-08 14:25:01 +02:00
if (settingValueDict["ShowKilometer"] != "0")
2019-02-12 19:22:22 +01:00
{
settingValueDict.Add("ShowDistanceFields", "1");
}
}
2016-06-27 01:45:38 +02:00
manDc.Settings = "";
2017-07-25 10:52:20 +02:00
2020-04-08 14:25:01 +02:00
foreach (var kv in settingValueDict)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (manDc.Settings.Length > 0)
2016-06-27 01:45:38 +02:00
{
manDc.Settings += ";";
}
2016-06-27 01:45:38 +02:00
manDc.Settings += String.Format("{0}={1}", kv.Key, kv.Value);
}
return manDc;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordHistoryDC> GetServiceRecordHistory(long serviceRecordOid)
{
try
{
IEnumerable<ServiceRecordHistory> historyList = DAOFactory.SearchDAO.FindServiceRecordHistory(serviceRecordOid);
List<ServiceRecordHistoryDC> result = MapperFactory.ServiceRecordHistoryDC_ServiceRecordHistory.MapToNewDCs(historyList);
2020-12-30 02:46:55 +01:00
foreach (var srh in result)
{
if (srh.DurationInStunden.HasValue && srh.DurationInStunden.Value == ZeiterfassungsDauer.Stunden)
{
srh.RoundedDuration = srh.RoundedDuration / 60;
}
}
2016-06-27 01:45:38 +02:00
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public ServiceRecordGroupDC GetServiceRecordGroup(long pGroupOid)
{
try
{
ServiceRecordGroup group = DAOFactory.SearchDAO.FindServiceRecordGroup(pGroupOid);
ServiceRecordGroupDC groupDC = MapperFactory.ServiceRecordGroupDC_ServiceRecordGroup.MapToNewDC(group);
var result = new List<ServiceRecordDC>();
var serviceRecordsProcessed = new Dictionary<long, bool>();
2020-04-08 14:25:01 +02:00
foreach (ServiceRecord item in group.ServiceRecordList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (!serviceRecordsProcessed.ContainsKey(item.Oid.Value))
2016-06-27 01:45:38 +02:00
{
var dc = new ServiceRecordDC();
dc.ServiceRecordOid = item.Oid;
dc.ServiceRecordVersion = item.Version;
dc.Start = item.Start;
dc.End = item.End;
dc.Notice = item.Notice;
dc.Notice2 = item.Notice2;
dc.Notice3 = item.Notice3;
dc.Notice4 = item.Notice4;
dc.Notice5 = item.Notice5;
dc.RoundedDuration = item.RoundedDuration;
dc.InsertedOn = item.InsTs;
dc.InsUser = item.InsUser;
dc.DurationInStunden = item.DurationInStunden;
dc.ServiceRecordFormat = item.ServiceRecordFormat;
2016-06-27 01:45:38 +02:00
CompactCustomerDC customerDC = null;
2020-04-08 14:25:01 +02:00
if (item.Customer != null)
2016-06-27 01:45:38 +02:00
{
customerDC = new CompactCustomerDC();
customerDC.CustomerOid = item.Customer.Oid.Value;
customerDC.CustomerVersion = item.Customer.Version.Value;
customerDC.FirstName = item.Customer.Person.FirstName;
customerDC.LastName = item.Customer.Person.LastName;
customerDC.DateOfBirth = item.Customer.Person.DateOfBirth;
customerDC.Sex = item.Customer.Person.Sex;
customerDC.ActivationType = item.Customer.IsActive;
customerDC.TerminationDate = item.Customer.TerminationDate;
customerDC.EquityContribution = item.Customer.EquityContribution;
}
dc.Customer = customerDC;
2020-04-08 14:25:01 +02:00
if (item.Employee != null)
2016-06-27 01:45:38 +02:00
{
var employeeDC = new CompactEmployeeDC();
employeeDC.EmployeeOid = item.Employee.Oid.Value;
employeeDC.EmployeeVersion = item.Employee.Version.Value;
employeeDC.FirstName = item.Employee.Person.FirstName;
employeeDC.LastName = item.Employee.Person.LastName;
employeeDC.PersonnelNumber = item.Employee.PersonnelNumber;
//employeeDC.FLSPerWeek = item.Employee.WeeklyFLS;
dc.Employee = employeeDC;
}
CompactSupportConceptDC scDC = null;
2020-04-08 14:25:01 +02:00
if (item.SupportConcept != null)
2016-06-27 01:45:38 +02:00
{
scDC = new CompactSupportConceptDC();
scDC.SupportConceptOid = item.SupportConcept.Oid.Value;
scDC.SupportConceptVersion = item.SupportConcept.Version.Value;
scDC.Customer = customerDC;
scDC.ActivationType = item.SupportConcept.IsActive;
scDC.ConferenceDate = item.SupportConcept.ConferenceDate;
}
dc.SupportConcept = scDC;
CostBearer2SupportConcept cb2sc = item.CostBearer2SupportConcept;
2020-04-08 14:25:01 +02:00
if (cb2sc != null)
2016-06-27 01:45:38 +02:00
{
dc.CostBearer2SupportConceptOid = cb2sc.Oid.Value;
2020-04-08 14:25:01 +02:00
if (scDC != null)
2016-06-27 01:45:38 +02:00
{
var costBearer = new CompactCostBearerDC();
costBearer.IsCalculatingWithFactor = cb2sc.CostBearer.IsCalculatingWithFactor;
costBearer.CostBearerID = cb2sc.CostBearer.ID;
costBearer.CostBearerOid = cb2sc.CostBearer.Oid.Value;
costBearer.CostBearer2SupportConceptOid = cb2sc.Oid.Value;
costBearer.SupportConceptStatus = cb2sc.Status;
costBearer.RequestedStartDate = cb2sc.RequestedStartDate;
costBearer.RequestedEndDate = cb2sc.RequestedEndDate;
costBearer.ApprovedStartDate = cb2sc.ApprovedStartDate;
costBearer.ApprovedEndDate = cb2sc.ApprovedEndDate;
// costBearer.ApprovedFLS = cb2sc.ApprovedFLS;
// costBearer.ApprovedFLSTotal = cb2sc.ApprovedFLSTotal;
costBearer.CustomerReferenceNumber = cb2sc.CustomerReferenceNumber;
2020-04-08 14:25:01 +02:00
if (cb2sc.CostBearer.Organisation != null)
2016-06-27 01:45:38 +02:00
{
CompactOrganisationDC orgDC = MapperFactory.CompactOrganisationDC_Organisation.MapToNewDC(cb2sc.CostBearer.Organisation);
costBearer.Organisation = orgDC;
dc.CostBearer = orgDC;
}
scDC.CostBearerList.Add(costBearer);
scDC.CustomerReferenceNumbers.Add(cb2sc.CustomerReferenceNumber);
scDC.CostBearerRelOids.Add(cb2sc.Oid.Value);
}
}
dc.GroupEmployeeCount = item.GroupEmployeeCount;
dc.GroupPersonCount = item.GroupPersonCount;
dc.GroupRoundedDuration = item.GroupRoundedDuration;
dc.GroupOid = item.GroupOid;
result.Add(dc);
serviceRecordsProcessed.Add(item.Oid.Value, true);
}
}
groupDC.ServiceRecordList = result;
return groupDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public long GetLastServiceRecordGroupOid()
{
var sc = DAOFactory.GenericDAO.GetAllActiveAndArchived<ServiceRecordGroup>();
long x = sc.Last().Oid.Value;
return x;
}
2016-06-27 01:45:38 +02:00
public List<SupportConcetInfoDC> GetSupportConceptInfosForSupportConceptOid(long supportConceptOid)
{
try
{
var sc = DAOFactory.GenericDAO.LoadByID<SupportConcept>(supportConceptOid);
return sc.CostBearer2SupportConceptList.Select(
cb2sc =>
{
Calculations calc = PluginLoader.FindClass<Calculations>(cb2sc.CostBearer.ID) ?? Calculations.GetInstance(cb2sc.CostBearer.ID);
var res = new SupportConcetInfoDC
{
CostBearer = cb2sc.CostBearer.Organisation.Name,
ApprovedHours = calc.GetApprovedHoursTotal(cb2sc.MapToNewDC(), true) ?? 0m,
RecordedHours = calc.GetBillableDurationInMinutes(cb2sc.ServiceRecords.MapToNewDCsCompact()) / 60
2016-06-27 01:45:38 +02:00
};
// if (cb2sc.ApprovedStartDate.HasValue && cb2sc.ApprovedEndDate.HasValue)
// {
// decimal lDurationInWeeks = Convert.ToDecimal((cb2sc.ApprovedEndDate.Value - cb2sc.ApprovedStartDate.Value).Days + 1) / 7;
// if (cb2sc.ApprovedFLSTotal == null)
// {
// if (cb2sc.ApprovedFLS.HasValue)
// {
// res.ApprovedHours = cb2sc.ApprovedFLS.Value * lDurationInWeeks;
// }
// }
// else
// {
// res.ApprovedHours = cb2sc.ApprovedFLSTotal.Value;
// }
// }
// res.RecordedHours = 0;
// if (cb2sc.ServiceRecords != null)
// {
// foreach (var sr in cb2sc.ServiceRecords)
// {
// if (sr.ServiceDescription != null && sr.ServiceDescription.ServiceCategory != null && sr.ServiceDescription.ServiceCategory.IsBillable)
// {
// decimal rd = sr.RoundedDuration;
// if (sr.ServiceDescription.ServiceCategory.Percentage != 100)
// {
// rd = (rd * sr.ServiceDescription.ServiceCategory.Percentage) / 100;
// }
// res.RecordedHours += rd;
// }
// }
// }
// res.RecordedHours /= 60;
return res;
}).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<SupportConceptTreeNodeDC> GetSupportConceptTreeAllActive()
{
try
{
return BuildTree(DAOFactory.GenericDAO.GetAllActiveAndArchived<SupportConcept>());
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<SupportConceptTreeNodeDC> GetSupportConceptTreeAllActiveWithCostbearer()
{
try
{
return BuildTree(DAOFactory.GenericDAO.GetAllActive<SupportConcept>().Where(sc => sc.CostBearer2SupportConceptList.Count > 0));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<SupportConceptTreeNodeDC> GetSupportConceptTreeAllCurrent()
{
try
{
return BuildTree(DAOFactory.SearchDAO.FindCurrentSupportConcepts());
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<SupportConceptTreeNodeDC> GetSupportConceptTreeByEmployee(long pEmployeeOid)
{
try
{
var s = PluginLoader.FindClass<CustomerService>();
2016-06-27 01:45:38 +02:00
return s.GetSupportConceptTreeByEmployee(pEmployeeOid);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<SupportConceptTreeNodeDC> GetSupportConceptTreeInSpan(DateTimeSpan pSpan)
{
try
{
return BuildTree(DAOFactory.SearchDAO.FindSupportConceptsInSpan(pSpan));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public SupportConceptTreeNodeDetailInfoDC GetSupportConceptTreeNodeDetailInfo(long pCustomerOid, long? pSupportConceptOid, long? pCostbearer2SupportConceptOid)
{
try
{
var dc = new SupportConceptTreeNodeDetailInfoDC();
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(pCustomerOid);
dc.CustomerAbsenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(customer.AbsenceTimes);
2020-04-08 14:25:01 +02:00
if (pSupportConceptOid != null)
2016-06-27 01:45:38 +02:00
{
var sc = DAOFactory.GenericDAO.LoadByID<SupportConcept>(pSupportConceptOid.Value);
var list = new List<ValueListEntryType>();
list.Add(ValueListEntryType.SupportConceptGoalType);
list.Add(ValueListEntryType.SupportConceptGoalCategoryType);
2016-06-27 01:45:38 +02:00
list.Add(ValueListEntryType.SupportConceptIndividualGoalCategoryType);
list.Add(ValueListEntryType.SupportConceptIndividualGoalType);
2016-06-27 01:45:38 +02:00
dc.SupportConceptGoals =
MapperFactory.ValueListEntryDC_ValueListEntry.MapToNewDCs(
sc.ValueList.FindByTypes(list)
.Select(e2o => e2o.Entry)
.Where(e => e.IsActive == ActivationTypeId.Active));
2016-06-27 01:45:38 +02:00
dc.ServiceAccountings = MapperFactory.ServiceAccountingDC_ServiceAccounting.MapToNewDCs(sc.ServiceAccountings);
}
2020-04-08 14:25:01 +02:00
if (pCostbearer2SupportConceptOid != null)
2016-06-27 01:45:38 +02:00
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(pCostbearer2SupportConceptOid.Value);
dc.ApprovalPeriods = MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDCs(c2s.ApprovalPeriodList);
2020-04-08 14:25:01 +02:00
if (dc.ApprovalPeriods != null)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
foreach (SupportConceptApprovalPeriodDC item in dc.ApprovalPeriods)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (!item.StartDate.HasValue)
2016-06-27 01:45:38 +02:00
{
item.StartDate = c2s.ApprovedStartDate.HasValue ? c2s.ApprovedStartDate : c2s.RequestedStartDate;
}
2020-04-08 14:25:01 +02:00
if (!item.EndDate.HasValue)
2016-06-27 01:45:38 +02:00
{
item.EndDate = c2s.ApprovedEndDate.HasValue ? c2s.ApprovedEndDate : c2s.RequestedEndDate;
}
}
}
}
2016-06-27 01:45:38 +02:00
return dc;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public CompactOrganisationDC FillCostbearerDetails(CompactOrganisationDC dc)
{
try
{
2020-04-08 14:25:01 +02:00
if (dc.CostRatePeriods == null || dc.CostRatePeriods.Count == 0)
2016-06-27 01:45:38 +02:00
{
var org = DAOFactory.GenericDAO.LoadByID<Organisation>(dc.OrganisationOid);
2020-04-08 14:25:01 +02:00
if (org != null)
2016-06-27 01:45:38 +02:00
{
MapperFactory.CompactOrganisationDC_Organisation.MergeWithDC(org, dc);
}
}
2016-06-27 01:45:38 +02:00
return dc;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AccountingTransactionDC> GetUnassignedAccountingTransactions()
{
try
{
IEnumerable<AccountingTransaction> list = DAOFactory.SearchDAO.FindUnassignedAccountingTransactions();
return MapperFactory.AccountingTransactionDC_AccountingTransaction.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<VarFieldDC> GetVarFieldDefs(TableID tid)
{
try
{
return MapperFactory.VarFieldDC_VarField.VarFieldMapToDCs(DAOFactory.SearchDAO.GetVarFieldDefs(tid), null);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewAccountingTransactions(List<AccountingTransactionDC> pAccountingTransactions)
{
try
{
2020-04-08 14:25:01 +02:00
foreach (var at in pAccountingTransactions)
2016-06-27 01:45:38 +02:00
{
2020-12-30 02:46:55 +01:00
if (at.SupportConceptCostBearerRelDC != null && at.SupportConceptCostBearerRelDC.CostBearer2SupportConceptOid.HasValue && !at.SupportConceptCostBearerRelDC.CostBearer2SupportConceptVersion.HasValue)
2016-06-27 01:45:38 +02:00
{
var c2s = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(at.SupportConceptCostBearerRelDC.CostBearer2SupportConceptOid.Value);
var c2sDc = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(c2s);
at.SupportConceptCostBearerRelDC = c2sDc;
}
}
2016-06-27 01:45:38 +02:00
List<AccountingTransaction> lEntities = MapperFactory.AccountingTransactionDC_AccountingTransaction.MapToNewEntities(pAccountingTransactions);
DAOFactory.GenericDAO.Insert(lEntities);
return lEntities.Select(e => e.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertNewInvoices(List<InvoiceDC> pInvoices)
{
try
{
DAOFactory.GenericDAO.Insert(MapperFactory.InvoiceDC_Invoice.MapToNewEntities(pInvoices));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewServiceCategories(List<ServiceCategoryDC> pServiceCategories)
{
try
{
List<ServiceCategory> lServiceCategories = MapperFactory.ServiceCategoryDC_ServiceCategory.MapToNewEntities(pServiceCategories);
DAOFactory.GenericDAO.Insert(lServiceCategories);
return lServiceCategories.Select(sc => sc.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewAdditionalServices(IEnumerable<AdditionalServiceDC> pAdditionalServiceDcs)
{
try
{
List<AdditionalService> lAdditionalServices = MapperFactory.AdditionalServiceDC_AdditionalService.MapToNewEntities(pAdditionalServiceDcs);
DAOFactory.GenericDAO.Insert(lAdditionalServices);
return lAdditionalServices.Select(ads => ads.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewServiceDescriptions(List<ServiceDescriptionDC> pServiceDescriptions)
{
try
{
List<ServiceDescription> lServiceDescriptions = MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewEntities(pServiceDescriptions);
DAOFactory.GenericDAO.Insert(lServiceDescriptions);
IList<SupportConcept> scToSave = new List<SupportConcept>();
//Prüfe ob es HPs gibt wo die Leistung hinterlegt werden muss
IList<long> newServiceDescriptionOids = new List<long>();
2020-04-08 14:25:01 +02:00
foreach (ServiceDescription newSd in lServiceDescriptions)
2016-06-27 01:45:38 +02:00
{
newServiceDescriptionOids.Add(newSd.Oid.Value);
}
2020-04-08 14:25:01 +02:00
foreach (ServiceDescription newSd in lServiceDescriptions)
2016-06-27 01:45:38 +02:00
{
ServiceCategory cat = newSd.ServiceCategory;
IEnumerable<ServiceDescription> descList = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(cat.Oid.Value);
IList<long> oids = new List<long>();
2020-04-08 14:25:01 +02:00
foreach (ServiceDescription oldSd in descList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (!newServiceDescriptionOids.Contains(oldSd.Oid.Value))
2016-06-27 01:45:38 +02:00
{
oids.Add(oldSd.Oid.Value);
}
}
//Prüfe für alle Leistungen dieser Kategorie, ob sie im Hilfeplan angehakt wurden
IEnumerable<ServiceAccounting> accountingList = DAOFactory.SearchDAO.FindServiceAccountingsForServiceDescriptions(oids);
var supportConceptCountDict = new Dictionary<long, int>();
2020-04-08 14:25:01 +02:00
foreach (ServiceAccounting acc in accountingList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (acc.SupportConceptOid.HasValue)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (supportConceptCountDict.ContainsKey(acc.SupportConceptOid.Value))
2016-06-27 01:45:38 +02:00
{
supportConceptCountDict[acc.SupportConceptOid.Value]++;
}
else
{
supportConceptCountDict.Add(acc.SupportConceptOid.Value, 1);
}
}
}
IList<long> supportConceptToUpdateOids = new List<long>();
2020-04-08 14:25:01 +02:00
foreach (var pair in supportConceptCountDict)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (pair.Value == oids.Count)
2016-06-27 01:45:38 +02:00
{
//Wenn es für alle alten Leistungen eine ServiceAccounting gibt, füge die neue Leistung auch hinzu
supportConceptToUpdateOids.Add(pair.Key);
}
}
2020-04-08 14:25:01 +02:00
foreach (long scOid in supportConceptToUpdateOids)
2016-06-27 01:45:38 +02:00
{
var sc = DAOFactory.GenericDAO.LoadByID<SupportConcept>(scOid);
var newSa = new ServiceAccounting();
newSa.ServiceDescription = newSd;
sc.ServiceAccountings.Add(newSa);
scToSave.Add(sc);
}
}
2020-04-08 14:25:01 +02:00
if (scToSave.Count > 0)
2016-06-27 01:45:38 +02:00
{
DAOFactory.GenericDAO.Insert(scToSave);
}
return lServiceDescriptions.Select(sd => sd.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewAdditionalServiceRegions(List<AdditionalServiceRegionDC> pAdditionalServiceRegions)
{
try
{
List<AdditionalServiceRegion> lAdditionalServiceRegions = MapperFactory.AdditionalServiceRegionDC_AdditionalServiceRegion.MapToNewEntities(pAdditionalServiceRegions);
DAOFactory.GenericDAO.Insert(lAdditionalServiceRegions);
return lAdditionalServiceRegions.Select(asr => asr.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public long InsertNewAdditionalServiceRegion(AdditionalServiceRegionDC pAdditionalServiceRegionDC)
{
try
{
AdditionalServiceRegion lAdditionalServiceRegion = MapperFactory.AdditionalServiceRegionDC_AdditionalServiceRegion.MapToNewEntity(pAdditionalServiceRegionDC);
DAOFactory.GenericDAO.Insert(lAdditionalServiceRegion);
return lAdditionalServiceRegion.Oid.Value;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public AdditionalServiceRegionDC GetAdditionalServiceRegion(long pRegionOid)
{
try
{
return MapperFactory.AdditionalServiceRegionDC_AdditionalServiceRegion.MapToNewDC(DAOFactory.GenericDAO.GetByID<AdditionalServiceRegion>(pRegionOid));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public ServiceRecordGroupDC InsertNewServiceRecordGroup(ServiceRecordGroupDC pServiceRecordGroup)
{
try
{
var group = MapperFactory.ServiceRecordGroupDC_ServiceRecordGroup.MapToNewEntity(pServiceRecordGroup);
2016-06-27 01:45:38 +02:00
var lServiceRecords = new List<ServiceRecord>();
2020-04-08 14:25:01 +02:00
if (pServiceRecordGroup.ServiceRecordList != null && pServiceRecordGroup.ServiceRecordList.Count > 0)
2016-06-27 01:45:38 +02:00
{
lServiceRecords = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewEntities(pServiceRecordGroup.ServiceRecordList);
2020-04-08 14:25:01 +02:00
foreach (var iServiceRecord in lServiceRecords)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (!group.StartDate.HasValue && group.EndDate.HasValue)
2017-06-28 09:00:09 +02:00
{
2020-04-08 14:25:01 +02:00
group.StartDate = group.EndDate.Value.AddMinutes((double)group.RoundedDuration * -1);
2017-06-28 09:00:09 +02:00
}
2020-04-08 14:25:01 +02:00
if (group.StartDate.HasValue && group.EndDate.HasValue)
2017-06-28 09:00:09 +02:00
{
//Korrigieren
2020-04-08 14:25:01 +02:00
if (group.StartDate.Value == group.EndDate.Value)
2017-06-28 09:00:09 +02:00
{
2020-04-08 14:25:01 +02:00
if (iServiceRecord.RoundedDuration > 0)
2017-06-28 09:00:09 +02:00
{
2020-04-08 14:25:01 +02:00
group.EndDate = group.StartDate.Value.AddMinutes((double)iServiceRecord.RoundedDuration);
2017-06-28 09:00:09 +02:00
}
}
}
2020-04-08 14:25:01 +02:00
if (group.StartDate.HasValue)
2017-06-28 09:00:09 +02:00
{
iServiceRecord.Start = group.StartDate;
}
2020-04-08 14:25:01 +02:00
if (group.EndDate.HasValue)
2017-06-28 09:00:09 +02:00
{
iServiceRecord.End = group.EndDate;
}
2018-05-23 10:37:57 +02:00
//if(group.RoundedDuration == 0)
//{
2020-04-08 14:25:01 +02:00
if (group.EndDate.HasValue && group.StartDate.HasValue)
{
var minutes = group.EndDate.Value.Subtract(group.StartDate.Value).TotalMinutes;
2017-06-28 09:00:09 +02:00
2020-04-08 14:25:01 +02:00
group.RoundedDuration = (decimal)minutes;
}
2018-05-23 10:37:57 +02:00
//}
2017-06-28 09:00:09 +02:00
2018-05-23 10:37:57 +02:00
//if(!iServiceRecord.GroupRoundedDuration.HasValue || iServiceRecord.GroupRoundedDuration.Value == 0)
//{
iServiceRecord.GroupRoundedDuration = group.RoundedDuration;
2018-05-23 10:37:57 +02:00
//}
2017-06-28 09:00:09 +02:00
2020-04-08 14:25:01 +02:00
if (iServiceRecord.IP == null)
{
iServiceRecord.IP = Utils.GetClientIP();
}
2016-06-27 01:45:38 +02:00
// iServiceRecord.Group = group;
}
2016-06-27 01:45:38 +02:00
group.ServiceRecordList = lServiceRecords;
2017-05-18 21:47:09 +02:00
2017-05-18 21:47:09 +02:00
var gdc = PluginLoader.FindClass<GroupDurationCalculator>();
gdc?.CalculateGroupDuration(@group);
2016-06-27 01:45:38 +02:00
}
DAOFactory.GenericDAO.Insert(group);
2020-04-08 14:25:01 +02:00
if (lServiceRecords.Count > 0)
{
2016-06-27 01:45:38 +02:00
MakeServiceRecordHistoryEntry(lServiceRecords, lServiceRecords.Select(sr => sr.Oid.Value).ToList(), StatementType.Insert);
}
2016-06-27 01:45:38 +02:00
var newGroupDC = MapperFactory.ServiceRecordGroupDC_ServiceRecordGroup.MapToNewDC(group);
2016-06-27 01:45:38 +02:00
newGroupDC.ServiceRecordList = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(group.ServiceRecordList);
return newGroupDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteAdditionalServiceGroupOfPeopleRelation(long pOid, long pVersion)
{
try
{
2020-04-08 14:25:01 +02:00
DeleteAdditionalServiceGroupOfPeopleRelations(new Dictionary<long, long> { { pOid, pVersion } });
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteAdditionalServiceBookings(Dictionary<long, long> pOid2Version)
{
try
{
List<AdditionalServiceBooking> lOriginals =
DAOFactory.GenericDAO.LoadByIDs<AdditionalServiceBooking>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
List<AdditionalServiceBooking> asbListToDelete = lOriginals.ToList();
2020-04-08 14:25:01 +02:00
if (asbListToDelete.Count <= 0)
2016-06-27 01:45:38 +02:00
return;
DAOFactory.GenericDAO.Delete(asbListToDelete);
IList<AssessmentSheetEntry> allEntries = DAOFactory.GenericDAO.GetAll<AssessmentSheetEntry>();
var entries2Delete = new List<AssessmentSheetEntry>();
2020-04-08 14:25:01 +02:00
foreach (AdditionalServiceBooking item in lOriginals)
2016-06-27 01:45:38 +02:00
{
entries2Delete.AddRange(allEntries.Where(e => pOid2Version.ContainsKey(e.Customer.Oid.Value) &&
e.Day.Equals(item.Datum.Value) &&
e.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet)).ToList());
}
DAOFactory.GenericDAO.Delete(entries2Delete);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateAdditionalServiceGroupOfPeopleRelations(List<AdditionalServiceGroupOfPeopleRelationDC> pAdditionalServiceGroupOfPeopleRelations)
{
try
{
List<AdditionalService2GroupOfPeople> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AdditionalService2GroupOfPeople>(pAdditionalServiceGroupOfPeopleRelations.Select(dc => dc.AdditionalService2GroupOfPeopleOid.Value));
MapperFactory.AdditionalServiceGroupOfPeopleRelationDC_AdditionalService2GroupOfPeople.MergeWithEntitys(pAdditionalServiceGroupOfPeopleRelations, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateAdditionalServiceBookings(List<AdditionalServiceBookingDC> pAdditionalServiceBookings)
{
try
{
List<AdditionalServiceBooking> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AdditionalServiceBooking>(pAdditionalServiceBookings.Select(dc => dc.AdditionalServiceBookingOid.Value));
MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MergeWithEntitys(pAdditionalServiceBookings, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
var entries2Update = new List<AssessmentSheetEntry>();
var entries2Delete = new List<AssessmentSheetEntry>();
var newEntries = new List<AssessmentSheetEntry>();
IList<AssessmentSheetValue> avList = DAOFactory.GenericDAO.GetAll<AssessmentSheetValue>();
AssessmentSheetValue yes = avList.First(v => !String.IsNullOrEmpty(v.Description) && v.Description.Equals("Ja") &&
v.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet));
//var no = avList.First(v => !String.IsNullOrEmpty(v.Description) && v.Description.Equals("Nein") &&
// v.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet));
2020-04-08 14:25:01 +02:00
foreach (AdditionalServiceBooking item in lOriginals)
2016-06-27 01:45:38 +02:00
{
IEnumerable<AssessmentSheetEntry> list = DAOFactory.SearchDAO.GetAdditionalAssessmentSheetEntries(item.Datum.Value);
IEnumerable<AssessmentSheetEntry> list2 = list.Where(e => !String.IsNullOrEmpty(e.AssessmentSheetCategory.Description) &&
e.AssessmentSheetCategory.Description.Equals(item.AdditionalServiceRegion.AdditionalService.Name) &&
item.Customer2AddServiceBookings.Exists(c2a => c2a.CustomerOid == e.Customer.Oid));
entries2Update.AddRange(list2);
2020-04-08 14:25:01 +02:00
foreach (Customer2AddServiceBooking c2a in item.Customer2AddServiceBookings)
2016-06-27 01:45:38 +02:00
{
bool containsEntry = false;
2020-04-08 14:25:01 +02:00
foreach (AssessmentSheetEntry entry in entries2Update)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (entry.Customer.Oid == null)
continue;
2020-04-08 14:25:01 +02:00
if (entry.Customer.Oid.Value.Equals(c2a.CustomerOid))
2016-06-27 01:45:38 +02:00
{
containsEntry = true;
2020-04-08 14:25:01 +02:00
if (c2a.Participated)
2016-06-27 01:45:38 +02:00
entry.AssessmentSheetValue = yes;
else
entries2Delete.Add(entry);
}
}
2020-04-08 14:25:01 +02:00
if (c2a.Participated && !containsEntry)
2016-06-27 01:45:38 +02:00
{
AssessmentSheetCategory cat =
DAOFactory.SearchDAO.GetAddServiceAssessmentSheetCategoryWithName(
item.AdditionalServiceRegion.AdditionalService.Name);
2020-04-08 14:25:01 +02:00
if (cat != null)
2016-06-27 01:45:38 +02:00
{
newEntries.Add(new AssessmentSheetEntry
{
Customer = DAOFactory.GenericDAO.GetByID<Customer>(c2a.CustomerOid),
AssessmentSheetCategory = cat,
AssessmentSheetValue = yes,
SystemEntryID = SystemEntryID.AdditionalServiceAssessmentSheet,
Day = item.Datum.Value
});
}
}
}
}
entries2Update.RemoveRange(entries2Delete);
DAOFactory.GenericDAO.Update(entries2Update);
DAOFactory.GenericDAO.Delete(entries2Delete);
DAOFactory.GenericDAO.Insert(newEntries);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public bool AssessmentSheetEntryBelongsToAddServices(long assessmentSheetCategoryOid)
{
var lOriginal = DAOFactory.GenericDAO.GetByID<AssessmentSheetCategory>(assessmentSheetCategoryOid);
IList<AdditionalService> services = DAOFactory.GenericDAO.GetAll<AdditionalService>();
bool result = lOriginal.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet) && services.Count(e => e.Name.Equals(lOriginal.Description)) > 0;
return result;
}
public AdditionalServiceGroupOfPeopleDC UpdateAdditionalServiceGroupOfPeople(AdditionalServiceGroupOfPeopleDC pAdditionalServiceGroupOfPeople)
{
try
{
var lOriginal =
DAOFactory.GenericDAO.LoadByID<AdditionalServiceGroupOfPeople>(
pAdditionalServiceGroupOfPeople.AdditionalServiceGroupOfPeopleOid.Value);
MapperFactory.AdditionalServiceGroupOfPeopleCD_AdditionalServiceGroupOfPeople.MergeWithEntity(
pAdditionalServiceGroupOfPeople, lOriginal);
MapperFactory.CompactCustomerDC_Customer.MergeWithEntitys(
pAdditionalServiceGroupOfPeople.CustomerList, lOriginal.CustomerList);
DAOFactory.GenericDAO.Update(lOriginal);
AdditionalServiceGroupOfPeopleDC newGroupDC =
MapperFactory.AdditionalServiceGroupOfPeopleCD_AdditionalServiceGroupOfPeople.MapToNewDC(
lOriginal);
newGroupDC.CustomerList =
MapperFactory.CompactCustomerDC_Customer.MapToNewDCs(lOriginal.CustomerList);
return newGroupDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewAdditionalServiceGroupOfPeopleRelations(List<AdditionalServiceGroupOfPeopleRelationDC> pAdditionalServiceGroupOfPeopleRelations)
{
try
{
List<AdditionalService2GroupOfPeople> lAdditionalServiceGroupOfPeopleRelations =
MapperFactory.AdditionalServiceGroupOfPeopleRelationDC_AdditionalService2GroupOfPeople.MapToNewEntities(pAdditionalServiceGroupOfPeopleRelations);
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Insert(lAdditionalServiceGroupOfPeopleRelations);
return lAdditionalServiceGroupOfPeopleRelations.Select(asgopr => asgopr.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewAdditionalServiceGroupsOfPeople(List<AdditionalServiceGroupOfPeopleDC> pGroups)
{
try
{
List<AdditionalServiceGroupOfPeople> lGroups =
MapperFactory.AdditionalServiceGroupOfPeopleCD_AdditionalServiceGroupOfPeople.MapToNewEntities(
pGroups);
DAOFactory.GenericDAO.Insert(lGroups);
return lGroups.Select(asgop => asgop.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewServiceRecords(List<ServiceRecordDC> pServiceRecords)
{
return InternalInsertNewServiceRecords(MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewEntities(pServiceRecords));
}
public static List<long> InternalInsertNewServiceRecords(IEnumerable<ServiceRecord> lServiceRecords)
{
try
{
ServiceRecordGroup group = null;
2020-04-08 14:25:01 +02:00
foreach (var iServiceRecord in lServiceRecords)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (string.IsNullOrEmpty(iServiceRecord.IP))
2016-06-27 01:45:38 +02:00
{
iServiceRecord.IP = OperationContext.Current != null ? Utils.GetClientIP() : "::1";
}
2020-04-08 14:25:01 +02:00
if (iServiceRecord.InsTs == null)
2016-06-27 01:45:38 +02:00
{
iServiceRecord.InsTs = DateTime.Now;
}
2020-04-08 14:25:01 +02:00
if (iServiceRecord.GroupEmployeeCount != null && iServiceRecord.GroupPersonCount != null &&
(iServiceRecord.GroupEmployeeCount.Value + iServiceRecord.GroupPersonCount.Value > 2))
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (group == null)
2016-06-27 01:45:38 +02:00
{
group = new ServiceRecordGroup
{
CustomerCount = iServiceRecord.GroupPersonCount.Value,
EmployeeCount = iServiceRecord.GroupEmployeeCount.Value,
RoundedDuration = iServiceRecord.GroupRoundedDuration.Value,
StartDate = iServiceRecord.Start,
EndDate = iServiceRecord.End
};
}
iServiceRecord.Group = group;
}
else
{
2017-05-18 21:47:09 +02:00
var srdc = PluginLoader.FindClass<ServiceRecordDurationCalculator>();
2020-04-08 14:25:01 +02:00
if (srdc != null)
2017-05-18 21:47:09 +02:00
{
srdc.CalculateRoundedDuration(iServiceRecord);
}
2016-06-27 01:45:38 +02:00
var bsi = PluginLoader.FindClass<SaveInterceptor>();
2020-04-08 14:25:01 +02:00
if (bsi != null)
2016-06-27 01:45:38 +02:00
{
bsi.BeforeSaveServiceRecord(iServiceRecord);
}
}
}
DAOFactory.GenericDAO.Insert(lServiceRecords);
MakeServiceRecordHistoryEntry(lServiceRecords, lServiceRecords.Select(sr => sr.Oid.Value).ToList(), StatementType.Insert);
return lServiceRecords.Select(sr => sr.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<long> InsertNewAdditionalServiceBookings(List<AdditionalServiceBookingDC> pAdditionalServiceBookings)
{
try
{
List<AdditionalServiceBooking> lAdditionalServiceBookings = MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MapToNewEntities(pAdditionalServiceBookings);
DAOFactory.GenericDAO.Insert(lAdditionalServiceBookings);
2020-04-08 14:25:01 +02:00
foreach (AdditionalServiceBooking booking in lAdditionalServiceBookings)
2016-06-27 01:45:38 +02:00
{
AttachAddServiceToAssessment(booking);
}
return lAdditionalServiceBookings.Select(asb => asb.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public bool IsAlive()
{
return true;
}
public string PrepareFLSReport(FLSAnalysisDataReportDC pReportDC, string id)
{
try
{
string lResult = id + ".xml";
string lDir = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, MultitenancyOperationContextExt.Current.Tenant + @"\temp");
string lPath = BS.Shared.Core.Utils.CreateSavePath(lDir, lResult);
2016-06-27 01:45:38 +02:00
BS.Shared.Core.Utils.XMLSerialize(lPath, pReportDC);
return lResult;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public string PrepareSettlementReport(Settlement2DC pSettlementDC)
{
try
{
string lResult = Guid.NewGuid() + ".xml";
string lDir = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, MultitenancyOperationContextExt.Current.Tenant + @"\temp");
string lPath = BS.Shared.Core.Utils.CreateSavePath(lDir, lResult);
2016-06-27 01:45:38 +02:00
BS.Shared.Core.Utils.XMLSerialize(lPath, pSettlementDC);
return lResult;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateAccountingTransactions(List<AccountingTransactionDC> pAccountingTransactions)
{
try
{
List<AccountingTransaction> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AccountingTransaction>(pAccountingTransactions.Select(dc => dc.AccountingTransactionOid.Value));
MapperFactory.AccountingTransactionDC_AccountingTransaction.MergeWithEntitys(pAccountingTransactions, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateInvoices(List<InvoiceDC> invoices)
{
try
{
List<Invoice> lOriginals = DAOFactory.GenericDAO.LoadByIDs<Invoice>(invoices.Select(dc => dc.InvoiceOid.Value));
MapperFactory.InvoiceDC_Invoice.MergeWithEntitys(invoices, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public MandatorDC UpdateMandator(MandatorDC mandator)
{
try
{
Mandator lOriginal = GetMandatorEntity();
2017-10-11 14:43:49 +02:00
//var oldDc = MapperFactory.MandatorDC_Mandator.MapToNewDC(lOriginal);
2016-06-27 01:45:38 +02:00
MapperFactory.MandatorDC_Mandator.MergeWithEntity(mandator, lOriginal);
DAOFactory.GenericDAO.Update(lOriginal);
return MapperFactory.MandatorDC_Mandator.MapToNewDC(lOriginal);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateServiceCategories(List<ServiceCategoryDC> pServiceCategories)
{
try
{
List<ServiceCategory> lOriginals = DAOFactory.GenericDAO.LoadByIDs<ServiceCategory>(pServiceCategories.Select(sc => sc.ServiceCategoryOid.Value));
MapperFactory.ServiceCategoryDC_ServiceCategory.MergeWithEntitys(pServiceCategories, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateAdditionalServices(List<AdditionalServiceDC> pAdditionalServices)
{
try
{
List<AdditionalService> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AdditionalService>(pAdditionalServices.Select(sc => sc.AdditionalServiceOid.Value));
MapperFactory.AdditionalServiceDC_AdditionalService.MergeWithEntitys(pAdditionalServices, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateServiceDescriptions(List<ServiceDescriptionDC> pServiceDescriptions)
{
try
{
List<ServiceDescription> lOriginals = DAOFactory.GenericDAO.LoadByIDs<ServiceDescription>(pServiceDescriptions.Select(sc => sc.ServiceDescriptionOid.Value));
MapperFactory.ServiceDescriptionDC_ServiceDescription.MergeWithEntitys(pServiceDescriptions, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateAdditionalServiceRegions(List<AdditionalServiceRegionDC> pAdditionalServiceRegions)
{
try
{
List<AdditionalServiceRegion> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AdditionalServiceRegion>(pAdditionalServiceRegions.Select(sc => sc.AdditionalServiceRegionOid.Value));
MapperFactory.AdditionalServiceRegionDC_AdditionalServiceRegion.MergeWithEntitys(pAdditionalServiceRegions, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public ServiceRecordGroupDC UpdateServiceRecordGroup(ServiceRecordGroupDC pServiceRecordGroup)
{
try
{
var lOriginal = DAOFactory.GenericDAO.LoadByID<ServiceRecordGroup>(pServiceRecordGroup.ServiceRecordGroupOid.Value);
2017-06-28 09:00:09 +02:00
var originalStart = lOriginal.StartDate;
var originalEnde = lOriginal.EndDate;
2020-04-08 14:25:01 +02:00
if (originalStart.HasValue && originalEnde.HasValue && pServiceRecordGroup.StartDate.HasValue &&
pServiceRecordGroup.EndDate.HasValue)
2017-06-28 09:00:09 +02:00
{
var minutesOrg = originalEnde.Value.Subtract(originalStart.Value).TotalMinutes;
var minutesNew = pServiceRecordGroup.EndDate.Value.Subtract(pServiceRecordGroup.StartDate.Value).TotalMinutes;
//Start und Ende korrigieren
2020-04-08 14:25:01 +02:00
if (Math.Abs(minutesNew - minutesOrg) < 0.1 && pServiceRecordGroup.StartDate.Value.Hour == 0 && pServiceRecordGroup.StartDate.Value.Minute == 0 &&
pServiceRecordGroup.StartDate.Value.Second == 0)
2017-06-28 09:00:09 +02:00
{
//prüfen ob korrigiert werden muss
2020-04-08 14:25:01 +02:00
if (originalStart.Value.Hour != 0 ||
originalStart.Value.Minute != 0)
2017-06-28 09:00:09 +02:00
{
pServiceRecordGroup.StartDate = originalStart;
pServiceRecordGroup.EndDate = originalEnde;
2020-04-08 14:25:01 +02:00
pServiceRecordGroup.RoundedDuration = (decimal)originalEnde.Value.Subtract(originalStart.Value).TotalMinutes;
foreach (var srdc in pServiceRecordGroup.ServiceRecordList)
2017-06-28 09:00:09 +02:00
{
srdc.Start = originalStart;
srdc.End = originalEnde;
srdc.GroupRoundedDuration = pServiceRecordGroup.RoundedDuration;
}
}
}
2017-06-28 09:00:09 +02:00
}
2020-04-08 14:25:01 +02:00
if (!pServiceRecordGroup.StartDate.HasValue && pServiceRecordGroup.EndDate.HasValue)
2017-06-28 09:00:09 +02:00
{
pServiceRecordGroup.StartDate =
2020-04-08 14:25:01 +02:00
pServiceRecordGroup.EndDate.Value.AddMinutes((double)pServiceRecordGroup.RoundedDuration * -1);
2016-06-27 01:45:38 +02:00
2017-06-28 09:00:09 +02:00
}
2020-04-08 14:25:01 +02:00
pServiceRecordGroup.RoundedDuration = (decimal)pServiceRecordGroup.EndDate.Value.Subtract(pServiceRecordGroup.StartDate.Value).TotalMinutes;
foreach (var srdc in pServiceRecordGroup.ServiceRecordList)
2017-06-28 09:00:09 +02:00
{
srdc.GroupRoundedDuration = pServiceRecordGroup.RoundedDuration;
}
MapperFactory.ServiceRecordGroupDC_ServiceRecordGroup.MergeWithEntity(pServiceRecordGroup, lOriginal);
2016-06-27 01:45:38 +02:00
var lServiceRecords = new List<ServiceRecord>();
// update servicerecords
MapperFactory.ServiceRecordDC_ServiceRecord.MergeWithEntitys(pServiceRecordGroup.ServiceRecordList, lOriginal.ServiceRecordList);
2020-04-08 14:25:01 +02:00
foreach (ServiceRecord iServiceRecord in lOriginal.ServiceRecordList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (String.IsNullOrEmpty(iServiceRecord.IP))
2016-06-27 01:45:38 +02:00
iServiceRecord.IP = Utils.GetClientIP();
iServiceRecord.GroupOid = lOriginal.Oid;
lServiceRecords.Add(iServiceRecord);
}
2017-06-28 09:00:09 +02:00
var gdc = PluginLoader.FindClass<GroupDurationCalculator>();
2016-06-27 01:45:38 +02:00
2020-04-08 14:25:01 +02:00
if (gdc != null)
2017-06-28 09:00:09 +02:00
{
gdc.CalculateGroupDuration(lOriginal);
}
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Update(lOriginal);
MakeServiceRecordHistoryEntry(lServiceRecords, null, StatementType.Update);
ServiceRecordGroupDC newGroupDC = MapperFactory.ServiceRecordGroupDC_ServiceRecordGroup.MapToNewDC(lOriginal);
newGroupDC.ServiceRecordList = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(lOriginal.ServiceRecordList);
return newGroupDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateServiceRecords(List<ServiceRecordDC> pServiceRecords)
{
try
{
List<ServiceRecord> lOriginals =
DAOFactory.GenericDAO.LoadByIDs<ServiceRecord>(
pServiceRecords.Select(sr => sr.ServiceRecordOid.Value));
2020-04-08 14:25:01 +02:00
if (lOriginals.Count == 1 && pServiceRecords.Count == 1)
2017-06-28 09:00:09 +02:00
{
var srDc = pServiceRecords[0];
var srOrg = lOriginals[0];
var originalStart = srOrg.Start;
var originalEnde = srOrg.End;
2020-04-08 14:25:01 +02:00
if (originalStart.HasValue && originalEnde.HasValue && srDc.Start.HasValue && srDc.End.HasValue)
2017-06-28 09:00:09 +02:00
{
var minutesOrg = originalEnde.Value.Subtract(originalStart.Value).TotalMinutes;
var minutesNew = srDc.End.Value.Subtract(srDc.Start.Value).TotalMinutes;
//Start und Ende korrigieren
2020-04-08 14:25:01 +02:00
if (Math.Abs(minutesNew - minutesOrg) < 0.1 && srDc.Start.Value.Hour == 0 && srDc.Start.Value.Minute == 0 && srDc.Start.Value.Second == 0)
2017-06-28 09:00:09 +02:00
{
//prüfen ob korrigiert werden muss
2020-04-08 14:25:01 +02:00
if (originalStart.Value.Hour != 0 ||
originalStart.Value.Minute != 0)
2017-06-28 09:00:09 +02:00
{
srDc.Start = originalStart;
srDc.End = originalEnde;
//pServiceRecordGroup.RoundedDuration = (decimal)originalEnde.Value.Subtract(originalStart.Value).TotalMinutes;
2017-06-28 09:00:09 +02:00
}
}
}
}
2017-06-28 09:00:09 +02:00
2016-06-27 01:45:38 +02:00
MapperFactory.ServiceRecordDC_ServiceRecord.MergeWithEntitys(pServiceRecords, lOriginals);
2017-05-18 21:47:09 +02:00
var srdc = PluginLoader.FindClass<ServiceRecordDurationCalculator>();
2017-06-28 09:00:09 +02:00
var gdc = PluginLoader.FindClass<GroupDurationCalculator>();
2020-04-08 14:25:01 +02:00
foreach (var serviceRecord in lOriginals)
2017-05-18 21:47:09 +02:00
{
2020-04-08 14:25:01 +02:00
if (srdc != null)
2017-05-18 21:47:09 +02:00
{
srdc.CalculateRoundedDuration(serviceRecord);
}
2020-04-08 14:25:01 +02:00
if (serviceRecord.GroupOid.HasValue && serviceRecord.GroupPersonCount.HasValue && serviceRecord.GroupEmployeeCount.HasValue && gdc != null)
2017-06-28 09:00:09 +02:00
{
var gc = gdc.CalculateGroupDuration(serviceRecord.GroupPersonCount.Value,
serviceRecord.GroupEmployeeCount.Value, serviceRecord.RoundedDuration);
var singleduration = serviceRecord.RoundedDuration / serviceRecord.GroupPersonCount.Value;
2017-06-28 09:00:09 +02:00
2020-04-08 14:25:01 +02:00
if (gc != null)
2017-06-28 09:00:09 +02:00
{
singleduration = gc.SingleDuration;
}
serviceRecord.RoundedDuration = singleduration;
}
2017-05-18 21:47:09 +02:00
}
2017-06-28 09:00:09 +02:00
2020-04-08 14:25:01 +02:00
if (srdc != null)
2017-06-28 09:00:09 +02:00
{
2017-06-28 09:00:09 +02:00
}
2017-05-18 21:47:09 +02:00
var si = PluginLoader.FindClass<SaveInterceptor>();
2020-04-08 14:25:01 +02:00
if (si != null)
{
2020-04-08 14:25:01 +02:00
foreach (var serviceRecord in lOriginals)
{
2017-05-18 21:47:09 +02:00
si.BeforeSaveServiceRecord(serviceRecord);
}
}
DAOFactory.GenericDAO.Update(lOriginals);
2016-06-27 01:45:38 +02:00
lOriginals =
DAOFactory.GenericDAO.LoadByIDs<ServiceRecord>(
pServiceRecords.Select(sr => sr.ServiceRecordOid.Value));
MakeServiceRecordHistoryEntry(lOriginals, null, StatementType.Update);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public bool DoesNotOverlapWithOtherServiceRecord(ServiceRecordDC pServiceRecord, long customerOid, long? employeeOid)
{
//obsolete
return false;
//if (pServiceRecord.ServiceDescription.DoNotCheckOverlapping)
//{
// return false;
//}
//var span = new DateTimeSpan
//{StartDate = pServiceRecord.Start.Value, EndDate = pServiceRecord.End.Value.AddDays(1).AddTicks(-1)};
2016-06-27 01:45:38 +02:00
//List<ServiceRecord> records = DAOFactory.SearchDAO.FindCustomerServiceRecords(customerOid, span, employeeOid, null).ToList();
2016-06-27 01:45:38 +02:00
//return records.Count <= 0 || records.Where(record => record.CostBearer2SupportConcept.CostBearer.Oid == pServiceRecord.CostBearer.OrganisationOid).Select(record => TimeSpanOverlapsWithOtherTimeSpan(pServiceRecord.Start, record.Start, pServiceRecord.RoundedDuration, record.RoundedDuration)).All(timeCheck => !timeCheck);
2016-06-27 01:45:38 +02:00
}
public bool OverlapsWithAnotherAdditionalServiceBooking(long additionalServiceRegionOid, List<long> customerOids, DateTime pDatum)
{
List<AdditionalServiceBooking> bookings = DAOFactory.GenericDAO.GetAll<AdditionalServiceBooking>().Where(b => b.Datum.Equals(pDatum) && b.AdditionalServiceRegion.Oid.Value.Equals(additionalServiceRegionOid)).ToList();
return bookings.Any(booking => booking.Customer2AddServiceBookings.Any(customer => customerOids.Contains(customer.CustomerOid)));
}
public List<AdditionalServiceGroupOfPeopleRelationDC> GetAllAdditionalServiceGroupOfPeopleRelation()
{
try
{
IList<AdditionalService2GroupOfPeople> as2gop = DAOFactory.GenericDAO.GetAll<AdditionalService2GroupOfPeople>();
return as2gop.Select(item => MapperFactory.AdditionalServiceGroupOfPeopleRelationDC_AdditionalService2GroupOfPeople.MergeWithDC(item, new AdditionalServiceGroupOfPeopleRelationDC())).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AdditionalServiceGroupOfPeopleDC> GetAllAdditionalServiceGroupOfPeople()
{
try
{
List<AdditionalServiceGroupOfPeopleDC> result =
MapperFactory.AdditionalServiceGroupOfPeopleCD_AdditionalServiceGroupOfPeople.MapToNewDCs(
DAOFactory.GenericDAO.GetAll<AdditionalServiceGroupOfPeople>()).ToList();
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AdditionalServiceBookingDC> GetAllAdditionalServiceBookings(long? regionOid, DateTime start, DateTime end)
{
try
{
List<AdditionalServiceBookingDC> result =
MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MapToNewDCs(
DAOFactory.SearchDAO.GetAdditionalServiceBookings(regionOid, start, end)).ToList();
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public Dictionary<ServiceRecordDC, List<ServiceRecordValidationResult>> ValidateGroupServiceRecordEntry(ServiceRecordDC pServiceRecord, List<ServiceRecordDC> groupServiceRecords, List<CompactEmployeeDC> employees, DateTime? date, int maxDaysEditServiceRecordsAllowed, decimal flsTotalRounded, out Dictionary<long, string> overlappingRecords, out Dictionary<long, string> overlappingEmployees)
{
var validator = PluginLoader.FindClass<ServiceRecordValidator>();
return validator.ValidateGroupServiceRecordEntry(pServiceRecord, groupServiceRecords, employees, date,
maxDaysEditServiceRecordsAllowed, flsTotalRounded, out overlappingRecords, out overlappingEmployees);
2016-06-27 01:45:38 +02:00
}
public List<ServiceRecordValidationResultDC> ValidateServiceRecordEntry(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics, int maxDaysEditServiceRecordsAllowed, bool isGroupRecord, IList<long> employeeOids)
2016-06-27 01:45:38 +02:00
{
return ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, null);
2016-06-27 01:45:38 +02:00
}
public List<ServiceRecordValidationResultDC> ValidateServiceRecord(ServiceRecordDC newServiceRecord, SupportConceptStatisticsDC statistics, int maxDaysEditServiceRecordsAllowed, IList<long> employeeOids, IList<long> cb2scOids)
2016-06-27 01:45:38 +02:00
{
var validator = PluginLoader.FindClass<ServiceRecordValidator>();
return validator.ValidateServiceRecord(newServiceRecord, statistics, maxDaysEditServiceRecordsAllowed, employeeOids, cb2scOids);
2016-06-27 01:45:38 +02:00
}
2017-02-22 17:59:08 +01:00
public List<ServiceRecordValidationResultDC> ValidateServiceRecordDeletion(ServiceRecordDC serviceRecord, long employeeOid)
{
var validator = PluginLoader.FindClass<ServiceRecordValidator>();
return validator.ValidateServiceRecordDeletion(serviceRecord, employeeOid);
}
2016-06-27 01:45:38 +02:00
public List<ServiceRecordValidationResult> CheckExistingSettlementInvoices(ServiceRecordDC pServiceRecord)
{
var result = new List<ServiceRecordValidationResult>();
// 6. SettlementInvoiceAlreadyExisting
try
{
IList<SettlementInvoice> allSettlementInvoices = DAOFactory.GenericDAO.GetAll<SettlementInvoice>();
2020-04-08 14:25:01 +02:00
foreach (SettlementInvoice rechnung in allSettlementInvoices)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (rechnung.InvoiceBase.CostBearer2SupportConcept.Oid.HasValue)
if (rechnung.InvoiceBase.CostBearer2SupportConcept.Oid.Value.Equals(pServiceRecord.CostBearer2SupportConceptOid.Value) && rechnung.IsActive.Equals(ActivationTypeId.Active))
2016-06-27 01:45:38 +02:00
{
result.Add(ServiceRecordValidationResult.SettlementInvoiceAlreadyExisting);
break;
}
}
}
2020-04-08 14:25:01 +02:00
catch (Exception)
2016-06-27 01:45:38 +02:00
{
result.Add(ServiceRecordValidationResult.Error);
}
return result;
}
public List<AdditionalServiceBookingDC> GetAllAdditionalServiceBookingsForCustomer(long customerOid, DateTime start, DateTime end)
{
try
{
;
List<AdditionalServiceBookingDC> result =
MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MapToNewDCs(
DAOFactory.SearchDAO.GetAdditionalServiceBookingsForCustomer(customerOid, start, end));
//var result =
// MapperFactory.AdditionalServiceBookingDC_AdditionalServiceBooking.MapToNewDCs(
// DAOFactory.GenericDAO.GetAll<AdditionalServiceBooking>()).ToList().Where(b => b.CustomerOidDict.Any(c => c.Key.Equals(customerOid))).ToList();
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public ServiceRecordDC GetServiceRecordById(long pId)
{
try
{
var sr = DAOFactory.GenericDAO.GetByID<ServiceRecord>(pId);
2020-04-08 14:25:01 +02:00
if (sr == null)
2016-06-27 01:45:38 +02:00
return null;
ServiceRecordDC result = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(sr);
return result;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<FileAttachmentDC> GetFileAttachmentInfoByType(FileAttachmentType fileAttachmentType)
{
try
{
return MapperFactory.FileAttachmentDC_FileAttachmentInfo.MapToNewDCs(DAOFactory.SearchDAO.FindFileAttachmentInfoByType(fileAttachmentType));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ServiceRecordDC> GetActiveServiceRecordsBySupportConcept(long pSupportConceptOid)
{
try
{
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(DAOFactory.SearchDAO.FindServiceRecordsForSupportConcept(pSupportConceptOid));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertBeWoMobilBrowserInfo(BeWoMobilBrowserInfoDC browserInfo)
{
try
{
BeWoMobilBrowserInfo info = MapperFactory.BeWoMobilBrowserInfoDC_BeWoMobilBrowserInfo.MapToNewEntity(browserInfo);
DAOFactory.GenericDAO.Insert(info);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<ServiceRecordDC> FindServiceRecordsForLastDays(long? costbearer2SupportConceptOid, int days, long? employeeOid)
{
try
{
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(DAOFactory.SearchDAO.FindServiceRecordsForDays(costbearer2SupportConceptOid, days, employeeOid));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IEnumerable<CompactSupportConceptDC> GetCompactSupportConcepts(long supportConceptOid, long? employeeOid)
{
try
{
var s = PluginLoader.FindClass<CustomerService>();
return s.GetCompactSupportConcepts(supportConceptOid, employeeOid);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
private static ServiceRecordDC CreateServiceRecordDCCompact(ServiceRecord sr)
2016-06-27 01:45:38 +02:00
{
var dc = new ServiceRecordDC();
dc.ServiceRecordOid = sr.Oid;
dc.ServiceRecordVersion = sr.Version;
dc.Start = sr.Start;
dc.End = sr.End;
dc.Notice = sr.Notice;
dc.Notice2 = sr.Notice2;
dc.Notice3 = sr.Notice3;
dc.Notice4 = sr.Notice4;
dc.Notice5 = sr.Notice5;
2020-04-08 14:25:01 +02:00
if (sr.ServiceDescription != null)
2016-06-27 01:45:38 +02:00
dc.ServiceDescription = MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewDC(sr.ServiceDescription);
2016-06-27 01:45:38 +02:00
dc.RoundedDuration = sr.RoundedDuration;
dc.DistanceInMeter = sr.DistanceInMeter;
dc.Betrag = sr.Betrag;
2016-06-27 01:45:38 +02:00
dc.InsertedOn = sr.InsTs;
dc.InsUser = sr.InsUser;
dc.DurationInStunden = sr.DurationInStunden;
dc.ServiceRecordFormat = sr.ServiceRecordFormat;
2016-06-27 01:45:38 +02:00
dc.GroupEmployeeCount = sr.GroupEmployeeCount;
dc.GroupPersonCount = sr.GroupPersonCount;
dc.GroupRoundedDuration = sr.GroupRoundedDuration;
dc.ServiceRecordType = sr.ServiceRecordType ?? ServiceRecordTypeId.DefaultActivity;
dc.GroupOid = sr.GroupOid;
2017-02-15 10:54:29 +01:00
dc.SignatureOid = sr.SignatureOid;
2016-06-27 01:45:38 +02:00
2020-04-08 14:25:01 +02:00
if (sr.Employee != null)
2016-06-27 01:45:38 +02:00
{
//dc.Employee = MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(sr.Employee);
dc.Employee = new CompactEmployeeDC();
dc.Employee.EmployeeOid = sr.Employee.Oid.Value;
dc.Employee.EmployeeVersion = sr.Employee.Version.Value;
dc.Employee.FirstName = sr.Employee.Person.FirstName;
dc.Employee.LastName = sr.Employee.Person.LastName;
dc.Employee.PersonnelNumber = sr.Employee.PersonnelNumber;
//pDataContract.FLSPerWeek = pEntity.WeeklyFLS;
dc.Employee.ActivationType = sr.Employee.IsActive;
}
//if(sr.DurationInStunden == ZeiterfassungsDauer.Stunden)
// dc.RoundedDuration = sr.RoundedDuration /60;
//else
// dc.RoundedDuration = sr.RoundedDuration;
2016-06-27 01:45:38 +02:00
//Goals -------------------------
var list = new List<ValueListEntryType>();
list.Add(ValueListEntryType.SupportConceptGoalType);
list.Add(ValueListEntryType.SupportConceptGoalCategoryType);
list.Add(ValueListEntryType.SupportConceptIndividualGoalCategoryType);
2016-06-27 01:45:38 +02:00
list.Add(ValueListEntryType.SupportConceptIndividualGoalType);
2019-10-10 22:07:42 +02:00
dc.Goals = new List<ValueListEntryDC>();
foreach (var v2o in sr.ValueList.FindByTypes(list))
{
var entryDc = MapperFactory.ValueListEntryDC_ValueListEntry.MapToNewDC(v2o.Entry);
entryDc.RatingTypeOid = v2o.RatingTypeOid;
2019-10-10 22:07:42 +02:00
dc.Goals.Add(entryDc);
}
2020-04-08 14:25:01 +02:00
2016-06-27 01:45:38 +02:00
return dc;
}
private static ServiceRecordDC CreateServiceRecordDCIfSupportConceptIsActive(ServiceRecord sr, Customer cust, bool checkArchivedSupportConcepts)
2016-06-27 01:45:38 +02:00
{
ServiceRecordDC dc = null;
2020-04-08 14:25:01 +02:00
if (!checkArchivedSupportConcepts || (sr.SupportConcept != null && sr.SupportConcept.IsActive == ActivationTypeId.Active))
2016-06-27 01:45:38 +02:00
{
dc = new ServiceRecordDC();
dc.ServiceRecordOid = sr.Oid;
dc.ServiceRecordVersion = sr.Version;
dc.Start = sr.Start;
dc.End = sr.End;
dc.Notice = sr.Notice;
dc.Notice2 = sr.Notice2;
dc.Notice3 = sr.Notice3;
dc.Notice4 = sr.Notice4;
dc.Notice5 = sr.Notice5;
2020-04-08 14:25:01 +02:00
if (sr.ServiceDescription != null)
2016-06-27 01:45:38 +02:00
dc.ServiceDescription = MapperFactory.ServiceDescriptionDC_ServiceDescription.MapToNewDC(sr.ServiceDescription);
dc.RoundedDuration = sr.RoundedDuration;
dc.InsertedOn = sr.InsTs;
dc.InsUser = sr.InsUser;
dc.DurationInStunden = sr.DurationInStunden;
dc.SignatureOid = sr.SignatureOid;
dc.ServiceRecordFormat = sr.ServiceRecordFormat;
2016-06-27 01:45:38 +02:00
//Customer -----------------
dc.Customer = new CompactCustomerDC();
dc.Customer.CustomerOid = cust.Oid.Value;
dc.Customer.CustomerVersion = cust.Version.Value;
dc.Customer.FirstName = cust.Person.FirstName;
dc.Customer.LastName = cust.Person.LastName;
dc.Customer.Sex = cust.Person.Sex;
//dc.Customer.DateOfBirth = cust.Person.DateOfBirth;
//dc.Customer.ActivationType = cust.IsActive;
//dc.Customer.TerminationDate = cust.TerminationDate;
//dc.Customer.EquityContribution = cust.EquityContribution;
//pDataContract.AbsenceTimes = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(pEntity.AbsenceTimes);
//Employee -----------------
2020-04-08 14:25:01 +02:00
if (sr.Employee != null)
2016-06-27 01:45:38 +02:00
{
//dc.Employee = MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(sr.Employee);
dc.Employee = new CompactEmployeeDC();
dc.Employee.EmployeeOid = sr.Employee.Oid.Value;
dc.Employee.EmployeeVersion = sr.Employee.Version.Value;
dc.Employee.FirstName = sr.Employee.Person.FirstName;
dc.Employee.LastName = sr.Employee.Person.LastName;
dc.Employee.PersonnelNumber = sr.Employee.PersonnelNumber;
//pDataContract.FLSPerWeek = pEntity.WeeklyFLS;
dc.Employee.ActivationType = sr.Employee.IsActive;
}
//SupportConcept -----------------
2020-04-08 14:25:01 +02:00
if (sr.SupportConcept != null)
2016-06-27 01:45:38 +02:00
{
dc.SupportConcept = new CompactSupportConceptDC();
dc.SupportConcept.SupportConceptOid = sr.SupportConcept.Oid.Value;
dc.SupportConcept.SupportConceptVersion = sr.SupportConcept.Version.Value;
dc.SupportConcept.Customer = dc.Customer;
//pDataContract.Customer = MapperFactory.CompactCustomerDC_Customer.MapToNewDC(pEntity.Customer);
dc.SupportConcept.ActivationType = sr.SupportConcept.IsActive;
dc.SupportConcept.ConferenceDate = sr.SupportConcept.ConferenceDate;
//foreach (var iCBRel in pEntity.CostBearer2SupportConceptList)
//{
// CompactCostBearerDC costBearer = new CompactCostBearerDC();
// if (iCBRel.CostBearer.Organisation != null)
// {
// CompactOrganisationDC orgDC = new CompactOrganisationDC();
// orgDC.Name = iCBRel.CostBearer.Organisation.Name;
// orgDC.OrganisationOid = iCBRel.CostBearer.Organisation.Oid.Value;
// if (iCBRel.CostBearer.Organisation.Address != null)
// {
// orgDC.Street = iCBRel.CostBearer.Organisation.Address.Street;
// orgDC.PostalCode = iCBRel.CostBearer.Organisation.Address.PostalCode;
// orgDC.Town = iCBRel.CostBearer.Organisation.Address.Town;
// }
// costBearer.Organisation = orgDC;
// }
// costBearer.CostBearerOid = iCBRel.CostBearer.Oid.Value;
// costBearer.CostBearer2SupportConceptOid = iCBRel.Oid.Value;
// costBearer.SupportConceptStatus = iCBRel.Status;
// costBearer.RequestedStartDate = iCBRel.RequestedStartDate;
// costBearer.RequestedEndDate = iCBRel.RequestedEndDate;
// costBearer.ApprovedStartDate = iCBRel.ApprovedStartDate;
// costBearer.ApprovedEndDate = iCBRel.ApprovedEndDate;
// costBearer.ApprovedFLS = iCBRel.ApprovedFLS;
// costBearer.ApprovedFLSTotal = iCBRel.ApprovedFLSTotal;
// costBearer.CustomerReferenceNumber = iCBRel.CustomerReferenceNumber;
// costBearer.IsCalculatingWithFactor = iCBRel.CostBearer.IsCalculatingWithFactor;
// pDataContract.CostBearerList.Add(costBearer);
// pDataContract.CustomerReferenceNumbers.Add(iCBRel.CustomerReferenceNumber);
// pDataContract.CostBearerRelOids.Add(iCBRel.Oid.Value);
//}
//dc.SupportConcept = MapperFactory.CompactSupportConceptDC_SupportConcept.MapToNewDC(sr.SupportConcept);
}
//Costbearer -----------------
2020-04-08 14:25:01 +02:00
if (sr.CostBearer2SupportConcept != null)
2016-06-27 01:45:38 +02:00
{
dc.CostBearer2SupportConceptOid = sr.CostBearer2SupportConcept.Oid.Value;
2020-04-08 14:25:01 +02:00
if (dc.SupportConcept != null)
2016-06-27 01:45:38 +02:00
{
var costBearer = new CompactCostBearerDC();
2020-04-08 14:25:01 +02:00
if (sr.CostBearer2SupportConcept.CostBearer.Organisation != null)
2016-06-27 01:45:38 +02:00
{
var orgDC = new CompactOrganisationDC();
orgDC.Name = sr.CostBearer2SupportConcept.CostBearer.Organisation.Name;
orgDC.OrganisationOid = sr.CostBearer2SupportConcept.CostBearer.Organisation.Oid.Value;
orgDC.CostBearerOid = sr.CostBearer2SupportConcept.CostBearer.Oid;
dc.CostBearer = orgDC;
costBearer.Organisation = orgDC;
}
2016-06-27 01:45:38 +02:00
costBearer.CostBearerID = sr.CostBearer2SupportConcept.CostBearer.ID;
costBearer.CostBearerOid = sr.CostBearer2SupportConcept.CostBearer.Oid.Value;
costBearer.CostBearer2SupportConceptOid = sr.CostBearer2SupportConcept.Oid.Value;
costBearer.SupportConceptStatus = sr.CostBearer2SupportConcept.Status;
costBearer.RequestedStartDate = sr.CostBearer2SupportConcept.RequestedStartDate;
costBearer.RequestedEndDate = sr.CostBearer2SupportConcept.RequestedEndDate;
costBearer.ApprovedStartDate = sr.CostBearer2SupportConcept.ApprovedStartDate;
costBearer.ApprovedEndDate = sr.CostBearer2SupportConcept.ApprovedEndDate;
costBearer.CustomerReferenceNumber = sr.CostBearer2SupportConcept.CustomerReferenceNumber;
costBearer.IsCalculatingWithFactor = sr.CostBearer2SupportConcept.CostBearer.IsCalculatingWithFactor;
dc.SupportConcept.CostBearerList.Add(costBearer);
dc.SupportConcept.CustomerReferenceNumbers.Add(sr.CostBearer2SupportConcept.CustomerReferenceNumber);
dc.SupportConcept.CostBearerRelOids.Add(sr.CostBearer2SupportConcept.Oid.Value);
}
2020-04-08 14:25:01 +02:00
if (dc.CostBearer == null)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (sr.CostBearer2SupportConcept.CostBearer.Organisation != null)
2016-06-27 01:45:38 +02:00
dc.CostBearer = MapperFactory.CompactOrganisationDC_Organisation.MapToNewDC(sr.CostBearer2SupportConcept.CostBearer.Organisation);
}
}
//Goals -------------------------
var list = new List<ValueListEntryType>();
list.Add(ValueListEntryType.SupportConceptGoalType);
list.Add(ValueListEntryType.SupportConceptGoalCategoryType);
list.Add(ValueListEntryType.SupportConceptIndividualGoalCategoryType);
list.Add(ValueListEntryType.SupportConceptIndividualGoalType);
2016-06-27 01:45:38 +02:00
dc.Goals = MapperFactory.ValueListEntryDC_ValueListEntry.MapToNewDCs(
sr.ValueList.FindByTypes(list).Select(e2o => e2o.Entry));
dc.GroupEmployeeCount = sr.GroupEmployeeCount;
dc.GroupPersonCount = sr.GroupPersonCount;
dc.GroupRoundedDuration = sr.GroupRoundedDuration;
dc.GroupOid = sr.GroupOid;
dc.ServiceRecordType = sr.ServiceRecordType ?? ServiceRecordTypeId.DefaultActivity;
}
2016-06-27 01:45:38 +02:00
return dc;
}
private static List<BeWoFolderDC> CreateFolderTree(List<BeWoFolderDC> folderDCList, List<FileAttachmentDC> fileDCList, TableID pObjectTid, long pObjectOid, bool templateFolder = false)
2016-06-27 01:45:38 +02:00
{
Dictionary<long, BeWoFolderDC> folderDict = folderDCList.ToDictionary(fo => fo.BeWoFolderOid.Value);
Dictionary<long, FileAttachmentDC> fileDict = fileDCList.ToDictionary(fi => fi.FileAttachmentOid.Value);
var resultList = new List<BeWoFolderDC>();
var root = new BeWoFolderDC
{
ObjectTid = pObjectTid,
ObjectOid = pObjectOid,
Name = "Alle Ordner",
SubFolders = new List<BeWoFolderDC>(),
Files = new List<FileAttachmentDC>()
};
2020-04-08 14:25:01 +02:00
if (templateFolder)
2016-06-27 01:45:38 +02:00
root = folderDCList.First(f => f.Name.Equals("Vorlagen"));
resultList.Add(root);
2020-04-08 14:25:01 +02:00
foreach (BeWoFolderDC cfo in folderDCList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (root.Equals(cfo))
continue;
2016-06-27 01:45:38 +02:00
2020-04-08 14:25:01 +02:00
if (cfo.ParentBeWoFolderOid.HasValue)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (folderDict.ContainsKey(cfo.ParentBeWoFolderOid.Value))
2016-06-27 01:45:38 +02:00
{
BeWoFolderDC parent = folderDict[cfo.ParentBeWoFolderOid.Value];
parent.SubFolders.Add(cfo);
}
else
{
root.SubFolders.Add(cfo);
}
}
else
{
root.SubFolders.Add(cfo);
}
}
2020-04-08 14:25:01 +02:00
foreach (FileAttachmentDC fi in fileDCList)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (fi.BeWoFolderOid.HasValue)
2016-06-27 01:45:38 +02:00
{
2020-04-08 14:25:01 +02:00
if (folderDict.ContainsKey(fi.BeWoFolderOid.Value))
2016-06-27 01:45:38 +02:00
{
BeWoFolderDC parent = folderDict[fi.BeWoFolderOid.Value];
parent.Files.Add(fi);
}
else
{
root.Files.Add(fi);
}
}
else
{
root.Files.Add(fi);
}
}
return resultList;
}
public static Dictionary<string, string> GetSettingsValueDict(string settings)
2016-06-27 01:45:38 +02:00
{
var dict = new Dictionary<String, String>();
2020-04-08 14:25:01 +02:00
if (!String.IsNullOrEmpty(settings))
2016-06-27 01:45:38 +02:00
{
string[] keyValuePairs = settings.Split(';');
2020-04-08 14:25:01 +02:00
foreach (string pair in keyValuePairs)
2016-06-27 01:45:38 +02:00
{
string[] keyValuePair = pair.Split('=');
2020-04-08 14:25:01 +02:00
if (keyValuePair.Length == 2)
2016-06-27 01:45:38 +02:00
{
dict.Add(keyValuePair[0], keyValuePair[1]);
}
}
}
return dict;
}
private static string GetContractState()
2016-06-27 01:45:38 +02:00
{
//#if DEBUG
2016-06-27 01:45:38 +02:00
// info.MaxLicenseCount = 9999;
// info.PercentFreeEmployee = 100;
2016-06-27 01:45:38 +02:00
// info.LicenseInUseCount = DAOFactory.GenericDAO.GetAllActive<ApplicationUser>().Count;
// info.EmployeeCount = DAOFactory.GenericDAO.GetAllActive<Employee>().Count;
2016-06-27 01:45:38 +02:00
// info.MaxEmployeeCount = (int)Math.Ceiling(1000000 * ((100 + 100m) / 100));
// return info;
//#endif
2016-06-27 01:45:38 +02:00
try
{
string url = ConfigurationManager.AppSettings.Get("ContractStateUrl");
2020-04-08 14:25:01 +02:00
if (MultitenancyOperationContextExt.Current != null)
2018-05-21 16:39:24 +02:00
{
url = url.Replace("[TENANT]", MultitenancyOperationContextExt.Current.Tenant);
}
else
{
url = url.Replace("[TENANT]", SessionFacade.Tenant);
}
2020-12-05 15:47:00 +01:00
url += "&t=0";
2020-04-08 14:25:01 +02:00
using (var client = new WebClient())
2016-06-27 01:45:38 +02:00
{
//MessageBox.Show(hostAddress);
byte[] response = client.DownloadData(url);
return Encoding.ASCII.GetString(response);
}
}
2020-04-08 14:25:01 +02:00
catch (Exception)
2016-06-27 01:45:38 +02:00
{
}
return String.Empty;
}
public static void DeleteAdditionalServiceGroupOfPeopleRelations(Dictionary<long, long> pOid2Version)
{
try
{
List<AdditionalService2GroupOfPeople> lOriginals = DAOFactory.GenericDAO.LoadByIDs<AdditionalService2GroupOfPeople>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.AdditionalServiceGroupOfPeopleRelationDC_AdditionalService2GroupOfPeople.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
List<AdditionalService2GroupOfPeople> srListToDelete = lOriginals.ToList();
2020-04-08 14:25:01 +02:00
if (srListToDelete.Count > 0)
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Delete(srListToDelete);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
private static void AttachAddServiceToAssessment(AdditionalServiceBooking pAdditionalServiceBookingDC)
{
try
{
2020-04-08 14:25:01 +02:00
var newCategoryDC = new AssessmentSheetCategoryDC { Description = pAdditionalServiceBookingDC.AdditionalServiceRegion.AdditionalService.Name };
2016-06-27 01:45:38 +02:00
AssessmentSheetCategory lCategory = MapperFactory.AssessmentSheetCategoryDC_AssessmentSheetCategory.MapToNewEntity(newCategoryDC);
lCategory.SystemEntryID = SystemEntryID.AdditionalServiceAssessmentSheet;
AssessmentSheetCategory cat = DAOFactory.SearchDAO.GetAddServiceAssessmentSheetCategoryWithName(lCategory.Description);
2020-04-08 14:25:01 +02:00
if (cat == null)
2016-06-27 01:45:38 +02:00
{
DAOFactory.GenericDAO.Insert(lCategory);
}
else
{
lCategory = cat;
}
IList<AssessmentSheetValue> values = DAOFactory.GenericDAO.GetAll<AssessmentSheetValue>();
bool yesExists =
values.Count(
v =>
v.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet) &&
v.Description.Equals("Ja")) == 1;
bool noExists =
values.Count(
v =>
v.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet) &&
v.Description.Equals("Nein")) == 1;
var lYes = new AssessmentSheetValue
{
Color = "#FF7FFF00",
Description = "Ja",
Position = 0,
Sign = "",
SystemEntryID = SystemEntryID.AdditionalServiceAssessmentSheet
};
var lNo = new AssessmentSheetValue
{
Color = "#FFFF0000",
Description = "Nein",
Position = 0,
Sign = "x",
SystemEntryID = SystemEntryID.AdditionalServiceAssessmentSheet
};
2020-04-08 14:25:01 +02:00
if (!yesExists)
2016-06-27 01:45:38 +02:00
{
DAOFactory.GenericDAO.Insert(lYes);
}
else
{
lYes = values.First(
c =>
c.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet) &&
c.Description.Equals(lYes.Description));
}
2020-04-08 14:25:01 +02:00
if (!noExists)
2016-06-27 01:45:38 +02:00
{
DAOFactory.GenericDAO.Insert(lNo);
}
else
{
lNo = values.First(
c =>
c.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet) &&
c.Description.Equals(lNo.Description));
}
2020-04-08 14:25:01 +02:00
if (!lCategory.PossibleValues.Contains(lYes))
2016-06-27 01:45:38 +02:00
DAOFactory.AdoDAO.ExecuteQuery(string.Format("INSERT INTO assessmentsheetcategory2assessmentsheetvalue(assessmentsheetcategoryoid, assessmentsheetvalueoid) VALUES({0}, {1})", lCategory.Oid.Value, lYes.Oid.Value));
2020-04-08 14:25:01 +02:00
if (!lCategory.PossibleValues.Contains(lNo))
2016-06-27 01:45:38 +02:00
DAOFactory.AdoDAO.ExecuteQuery(string.Format("INSERT INTO assessmentsheetcategory2assessmentsheetvalue(assessmentsheetcategoryoid, assessmentsheetvalueoid) VALUES({0}, {1})", lCategory.Oid.Value, lNo.Oid.Value));
var entryList = new List<AssessmentSheetEntry>();
string sqlString = string.Empty;
2020-04-08 14:25:01 +02:00
foreach (Customer2AddServiceBooking customerParticipated in pAdditionalServiceBookingDC.Customer2AddServiceBookings)
2016-06-27 01:45:38 +02:00
{
var customer = DAOFactory.GenericDAO.GetByID<Customer>(customerParticipated.CustomerOid);
entryList.Add(new AssessmentSheetEntry
{
Customer = customer,
AssessmentSheetCategory = lCategory,
AssessmentSheetValue = (customerParticipated.Participated ? lYes : lNo),
SystemEntryID = SystemEntryID.AdditionalServiceAssessmentSheet,
Day = pAdditionalServiceBookingDC.Datum
});
IList<AssessmentSheetCategory> customer2Category = DAOFactory.GenericDAO.GetAll<AssessmentSheetCategory>();
AssessmentSheetCategory f = customer2Category.First(
abc =>
abc.SystemEntryID.Equals(SystemEntryID.AdditionalServiceAssessmentSheet) &&
abc.Description.Equals(lCategory.Description));
2020-04-08 14:25:01 +02:00
if (f.Customers == null || !f.Customers.Contains(customer))
2016-06-27 01:45:38 +02:00
sqlString += string.Format("INSERT INTO customer2assessmentsheetcategory(customeroid, assessmentsheetoid) VALUES({0}, {1});", customer.Oid.Value, lCategory.Oid.Value);
}
DAOFactory.GenericDAO.Insert(entryList);
DAOFactory.AdoDAO.ExecuteQuery(sqlString);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
private static void MakeServiceRecordHistoryEntry(IEnumerable<ServiceRecord> lOriginals, IEnumerable<long> serviceRecordOidList, StatementType statementType)
{
var hServiceRecords = new List<ServiceRecordHistory>();
2020-04-08 14:25:01 +02:00
if (statementType.Equals(StatementType.Insert) && serviceRecordOidList != null)
2016-06-27 01:45:38 +02:00
{
int iterator = 0;
2020-04-08 14:25:01 +02:00
foreach (ServiceRecordHistory history in lOriginals.Select(ServiceRecordOriginal => new ServiceRecordHistory
2016-06-27 01:45:38 +02:00
{
TimeStamp = DateTime.Now,
ChangeType = statementType,
CostBearer2SupportConcept = ServiceRecordOriginal.CostBearer2SupportConcept,
CostBearer2SupportConceptOid = ServiceRecordOriginal.CostBearer2SupportConceptOid,
Customer = ServiceRecordOriginal.Customer,
CustomerOid = ServiceRecordOriginal.CustomerOid,
Employee = ServiceRecordOriginal.Employee,
EmployeeOid = ServiceRecordOriginal.EmployeeOid,
End = ServiceRecordOriginal.End,
Group = ServiceRecordOriginal.Group,
GroupEmployeeCount = ServiceRecordOriginal.GroupEmployeeCount,
GroupOid = ServiceRecordOriginal.GroupOid,
GroupPersonCount = ServiceRecordOriginal.GroupPersonCount,
GroupRoundedDuration = ServiceRecordOriginal.GroupRoundedDuration,
IP = ServiceRecordOriginal.IP,
IsActive = ServiceRecordOriginal.IsActive,
Notice = ServiceRecordOriginal.Notice,
ServiceRecordOid = serviceRecordOidList.ElementAt(iterator),
RoundedDuration = ServiceRecordOriginal.RoundedDuration,
ServiceDescription = ServiceRecordOriginal.ServiceDescription,
ServiceRecordType = ServiceRecordOriginal.ServiceRecordType,
ServiceRecordInsTs = ServiceRecordOriginal.InsTs,
ServiceRecordVersion = ServiceRecordOriginal.Version.Value,
ServiceRecordInsUser = ServiceRecordOriginal.InsUser,
ServiceRecordUdpUser = ServiceRecordOriginal.UdpUser,
Start = ServiceRecordOriginal.Start,
SupportConcept = ServiceRecordOriginal.SupportConcept,
SystemEntryID = ServiceRecordOriginal.SystemEntryID,
DistanceInMeter = ServiceRecordOriginal.DistanceInMeter,
IsCreatedInMobileClient = ServiceRecordOriginal.IsCreatedInMobileClient
}))
{
iterator++;
hServiceRecords.Add(history);
}
}
else
{
hServiceRecords.AddRange(lOriginals.Select(ServiceRecordOriginal => new ServiceRecordHistory
{
TimeStamp = DateTime.Now,
ChangeType = statementType,
CostBearer2SupportConcept = ServiceRecordOriginal.CostBearer2SupportConcept,
CostBearer2SupportConceptOid = ServiceRecordOriginal.CostBearer2SupportConceptOid,
Customer = ServiceRecordOriginal.Customer,
CustomerOid = ServiceRecordOriginal.CustomerOid,
Employee = ServiceRecordOriginal.Employee,
EmployeeOid = ServiceRecordOriginal.EmployeeOid,
End = ServiceRecordOriginal.End,
Group = ServiceRecordOriginal.Group,
GroupEmployeeCount = ServiceRecordOriginal.GroupEmployeeCount,
GroupOid = ServiceRecordOriginal.GroupOid,
GroupPersonCount = ServiceRecordOriginal.GroupPersonCount,
GroupRoundedDuration = ServiceRecordOriginal.GroupRoundedDuration,
IP = ServiceRecordOriginal.IP,
IsActive = ServiceRecordOriginal.IsActive,
Notice = ServiceRecordOriginal.Notice,
ServiceRecordOid = ServiceRecordOriginal.Oid,
RoundedDuration = ServiceRecordOriginal.RoundedDuration,
ServiceDescription = ServiceRecordOriginal.ServiceDescription,
ServiceRecordType = ServiceRecordOriginal.ServiceRecordType,
ServiceRecordInsTs = ServiceRecordOriginal.InsTs,
ServiceRecordVersion = ServiceRecordOriginal.Version.Value,
ServiceRecordInsUser = ServiceRecordOriginal.InsUser,
ServiceRecordUdpUser = ServiceRecordOriginal.UdpUser,
Start = ServiceRecordOriginal.Start,
SupportConcept = ServiceRecordOriginal.SupportConcept,
SystemEntryID = ServiceRecordOriginal.SystemEntryID,
DistanceInMeter = ServiceRecordOriginal.DistanceInMeter,
IsCreatedInMobileClient = ServiceRecordOriginal.IsCreatedInMobileClient
}));
}
DAOFactory.GenericDAO.Insert(hServiceRecords);
}
public IList<TextModuleDC> GetAllTextModules()
2016-06-27 01:45:38 +02:00
{
try
{
return MapperFactory.TextModuleDC_TextModule.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<TextModule>());
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<TextModuleDC> GetTextModules(bool pShouldShowAllTextModules, long pEmployeeOid, bool pHasRightToSeeAllTextModules, bool pIsInAdministrationView)
{
try
{
2020-12-30 02:46:55 +01:00
var textmodules = DAOFactory.SearchDAO.GetActiveTextModules(pShouldShowAllTextModules, pHasRightToSeeAllTextModules, pIsInAdministrationView, pEmployeeOid);
var list = MapperFactory.TextModuleDC_TextModule.CreateDcList(textmodules);
//var list = MapperFactory.TextModuleDC_TextModule.MapToNewDCs(textmodules);
return list.OrderBy(t => t.Name).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<TextModuleDC> GetTextModulesByServiceCategory(long pServiceCategoryOid)
2016-06-27 01:45:38 +02:00
{
try
{
2017-11-17 22:24:00 +01:00
return MapperFactory.TextModuleDC_TextModule.MapToNewDCs(DAOFactory.SearchDAO.GetActiveTextModuleByServiceCategory(pServiceCategoryOid));
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<long> InsertNewTextModules(IEnumerable<TextModuleDC> pTextbausteine)
2016-06-27 01:45:38 +02:00
{
try
{
var lTextbausteine = MapperFactory.TextModuleDC_TextModule.MapToNewEntities(pTextbausteine);
2020-11-11 23:26:35 +01:00
foreach (var tm in lTextbausteine)
{
tm.IsActive = ActivationTypeId.Active;
}
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Insert(lTextbausteine);
return lTextbausteine.Select(asb => asb.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateTextModules(List<TextModuleDC> pTextbausteine)
2016-06-27 01:45:38 +02:00
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<TextModule>(pTextbausteine.Select(sc => sc.TextModuleOid.Value));
2016-06-27 01:45:38 +02:00
MapperFactory.TextModuleDC_TextModule.MergeWithEntitys(pTextbausteine, lOriginals);
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteTextModules(Dictionary<long, long> pOid2Version)
2016-06-27 01:45:38 +02:00
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<TextModule>(pOid2Version.Select(e => e.Key));
lOriginals.DoForEach(or => MapperFactory.TextModuleDC_TextModule.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
2016-06-27 01:45:38 +02:00
2018-10-08 11:57:16 +02:00
IList<TextModule> modulesToDelete = new List<TextModule>();
2020-04-08 14:25:01 +02:00
foreach (var textModule in lOriginals)
2018-10-08 11:57:16 +02:00
{
AddModuleAndChildsToList(textModule, modulesToDelete);
}
DAOFactory.GenericDAO.Delete(modulesToDelete);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2018-10-08 11:57:16 +02:00
private void AddModuleAndChildsToList(TextModule textModule, IList<TextModule> modulesToDelete)
{
var children = DAOFactory.SearchDAO.GetChildTextModules(textModule);
2020-04-08 14:25:01 +02:00
foreach (var child in children)
2018-10-08 11:57:16 +02:00
{
AddModuleAndChildsToList(child, modulesToDelete);
}
2018-10-08 11:57:16 +02:00
modulesToDelete.Add(textModule);
}
public IList<ServiceRecordDC> FindServiceRecordsInSpan(long pCostBearer2SupportConceptOid, DateTimeSpan period)
{
try
{
var records = DAOFactory.SearchDAO.FindServiceRecordsInSpan(pCostBearer2SupportConceptOid, period);
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(records);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2016-06-27 01:45:38 +02:00
public SignatureDC InsertSignature(SignatureDC s)
{
try
{
var lSignature = MapperFactory.SignatureDC_Signature.MapToNewEntity(s);
DAOFactory.GenericDAO.Insert(lSignature);
SignatureDC updatedSignatureDC = MapperFactory.SignatureDC_Signature.MapToNewDC(lSignature);
2020-04-08 14:25:01 +02:00
if (s.ServiceRecordOid.HasValue)
2016-06-27 01:45:38 +02:00
{
var sr = DAOFactory.GenericDAO.LoadByID<ServiceRecord>(s.ServiceRecordOid.Value);
sr.SignatureOid = lSignature.Oid;
DAOFactory.GenericDAO.Update(sr);
}
return updatedSignatureDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public EmployeeAPPCodeDC CreateNewEmployeeAPPCodeDC(long employeeOid, string kundennummer, string apikey)
{
2016-06-27 01:45:38 +02:00
try
{
2017-11-13 16:37:21 +01:00
#if DEBUG
kundennummer = "0000000001";
apikey = "0b50c09aff87f20d9ced75340e04e5ccaa11dd3e7bcf25e9c4f94dc20d3cbb97";
#endif
2020-04-14 11:49:16 +02:00
var appCodes = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(employeeOid).ToList();
2020-11-29 17:56:11 +01:00
if (appCodes.Where(c => !String.IsNullOrWhiteSpace(c.EmployeeCode)).Count() > 0)
{
var response = DeletZufallsCode(apikey, kundennummer, "E" + employeeOid);
if (response != 0)
2017-11-13 16:37:21 +01:00
{
return new EmployeeAPPCodeDC { Result = response };
2017-11-13 16:37:21 +01:00
}
}
var zufallscode = ErzeugeZufallsCode(apikey, kundennummer, "E" + employeeOid);
if (zufallscode != null)
{
var appcodes = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(employeeOid).ToList();
var newCode = appcodes.Count > 0 ? appcodes[0] : new EmployeeAPPCode { EmployeeOid = employeeOid };
newCode.EmployeeCode = zufallscode;
newCode.EmployeeCodeGenDate = DateTime.Now;
newCode.NotfallStatement = string.Empty;
newCode.IsChatAktiv = 1;
DAOFactory.GenericDAO.Insert(newCode);
2016-06-27 01:45:38 +02:00
var employeeAPPCodeDC = MapperFactory.EmployeeAPPCodeDC_EmployeeAPPCode.MapToNewDC(newCode);
2016-06-27 01:45:38 +02:00
return employeeAPPCodeDC;
2017-10-06 12:06:34 +02:00
}
return null;
2016-06-27 01:45:38 +02:00
}
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateIsChatActiveEmployeeAPPCodeDC(long employeeOid, int activeType)
2016-06-27 01:45:38 +02:00
{
try
{
var employeecode = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(employeeOid).ToList();
2016-06-27 01:45:38 +02:00
2020-04-08 14:25:01 +02:00
foreach (var items in employeecode)
{
items.IsChatAktiv = activeType == 1 ? activeType : 0;
}
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Update(employeecode);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateNotfallNacrichtEmployeeAPPCodeDC(long employeeOid, String notfallstate)
2016-06-27 01:45:38 +02:00
{
try
{
var employeecode = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(employeeOid).ToList();
2016-06-27 01:45:38 +02:00
2020-04-08 14:25:01 +02:00
foreach (var items in employeecode)
{
items.NotfallStatement = notfallstate;
}
2016-06-27 01:45:38 +02:00
DAOFactory.GenericDAO.Update(employeecode);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public CustomerAPPCodeDC CreateNewCustomerAPPCodeDC(long customerOid, string kundennummer, string apikey)
2016-06-27 01:45:38 +02:00
{
try
{
2017-11-06 10:30:25 +01:00
#if DEBUG
2017-11-13 16:37:21 +01:00
kundennummer = "0000000001";
2017-11-06 10:30:25 +01:00
apikey = "0b50c09aff87f20d9ced75340e04e5ccaa11dd3e7bcf25e9c4f94dc20d3cbb97";
#endif
var aa = DAOFactory.SearchDAO.FindAllCustomerAppCodes(customerOid).ToList();
bool isOk = false;
2020-04-08 14:25:01 +02:00
if (aa.Where(c => !String.IsNullOrWhiteSpace(c.CustomerCode)).Count() > 0)
{
var response = DeletZufallsCode(apikey, kundennummer, "C" + customerOid);
2020-04-08 14:25:01 +02:00
if (response == 0)
2017-10-06 12:06:34 +02:00
{
isOk = true;
2017-10-06 12:06:34 +02:00
}
2017-11-06 10:30:25 +01:00
else
{
CustomerAPPCodeDC appcode = new CustomerAPPCodeDC();
2017-10-06 12:06:34 +02:00
appcode.Result = response;
2017-10-06 12:06:34 +02:00
return appcode;
}
}
else
{
isOk = true;
}
2017-11-06 10:30:25 +01:00
2020-04-08 14:25:01 +02:00
if (isOk)
{
string zufallscode = ErzeugeZufallsCode(apikey, kundennummer, "C" + customerOid);
2017-10-06 12:06:34 +02:00
2020-04-08 14:25:01 +02:00
if (zufallscode != null)
{
var appcodes = DAOFactory.SearchDAO.FindAllCustomerAppCodes(customerOid).ToList();
CustomerAPPCode newCode = null;
2020-04-08 14:25:01 +02:00
if (appcodes.Count > 0)
{
newCode = appcodes[0];
}
else
{
newCode = new CustomerAPPCode();
newCode.CustomerOid = customerOid;
}
newCode.CustomerCode = zufallscode; //bei C noch die UserID mitgeben
newCode.CustomerCodeGenDate = DateTime.Now;
newCode.IsChatAktiv = 1;
2017-10-06 12:06:34 +02:00
DAOFactory.GenericDAO.Insert(newCode);
2017-10-06 12:06:34 +02:00
var customerAPPCodeDC = MapperFactory.CustomerAPPCodeDC_CustomerAPPCode.MapToNewDC(newCode);
2017-10-06 12:06:34 +02:00
return customerAPPCodeDC;
}
else
{
return null;
}
2017-10-06 12:06:34 +02:00
}
else
{
return null;
}
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, bool isDeliverd, long teamid, string messageid)
2016-06-27 01:45:38 +02:00
{
try
{
var chatMessage = new ChatMessage
{
2016-09-30 10:19:11 +02:00
EmpfaengerPersonOid = empfängerOid,
SenderPersonOid = senderOid,
Uhrzeit = DateTime.Now,
IsDelivered = isDeliverd,
ChatText = Encoding.UTF8.GetBytes(message),
IstGelesen = 0,
MessageId = messageid
2016-10-21 11:26:42 +02:00
};
2020-04-08 14:25:01 +02:00
if (teamid != 0)
{
chatMessage.TeamOid = teamid;
}
else
{
chatMessage.TeamOid = null;
}
DAOFactory.GenericDAO.Insert(chatMessage);
2016-06-27 01:45:38 +02:00
var ChatMessagesDC = MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDC(chatMessage);
2016-06-27 01:45:38 +02:00
return ChatMessagesDC;
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateIsChatActiveCustomerAPPCodeDC(long customerOid, int activeType)
2016-06-27 01:45:38 +02:00
{
try
{
var customerChatCodes = DAOFactory.SearchDAO.FindAllCustomerAppCodes(customerOid).ToList();
2016-06-27 01:45:38 +02:00
foreach (var items in customerChatCodes)
{
items.IsChatAktiv = activeType == 1 ? activeType : 0;
}
DAOFactory.GenericDAO.Update(customerChatCodes);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<CustomerAPPCodeDC> GetIsChatActiveCustomerAPPCodeDC(long customerOid, int activeType)
{
try
{
var customercode = DAOFactory.SearchDAO.FindAllCustomerAppCodes(customerOid);
return MapperFactory.CustomerAPPCodeDC_CustomerAPPCode.MapToNewDCs(customercode);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public int DeletZufallsCode(string apikey, string customerId, string userId)
2016-11-21 11:20:47 +01:00
{
try
{
2017-11-13 16:37:21 +01:00
#if DEBUG
customerId = "0000000001";
apikey = "0b50c09aff87f20d9ced75340e04e5ccaa11dd3e7bcf25e9c4f94dc20d3cbb97";
#endif
2020-11-25 11:40:05 +01:00
var serverUrl = OwnChatHelper.ErmittleServerURL(customerId);
if (serverUrl.IsNullOrEmpty())
2016-11-21 11:20:47 +01:00
{
return 3; // ServerURl konnte nicht ermittelt werden
}
2017-10-06 12:06:34 +02:00
try
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2017-10-06 12:06:34 +02:00
var url = $"{serverUrl}/api/ownchat/chatcode/revoke/{apikey}/{customerId}/{userId}";
2017-10-06 12:06:34 +02:00
var client = new RestClient(url);
var request = new RestRequest(Method.GET);
var response = client.Execute(request);
var result = JsonConvert.DeserializeAnonymousType(response.Content, new { Result = string.Empty });
return Convert.ToInt32(result.Result);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
2016-11-21 11:20:47 +01:00
}
}
catch (Exception e)
2016-11-21 11:20:47 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public string ErzeugeZufallsCode(string apikey, string customerId, string userId)
2016-06-27 01:45:38 +02:00
{
2020-11-25 11:40:05 +01:00
var serverUrl = OwnChatHelper.ErmittleServerURL(customerId);
2017-10-06 12:06:34 +02:00
try
2016-11-17 14:46:54 +01:00
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2017-10-06 12:06:34 +02:00
var url = $"{serverUrl}/api/ownchat/chatcode/create/{apikey}/{customerId}/{userId}";
2016-11-21 11:20:47 +01:00
var client = new RestClient(url);
var request = new RestRequest(Method.GET);
2016-11-17 14:46:54 +01:00
var response = client.Execute(request);
var result = JsonConvert.DeserializeAnonymousType(response.Content, new { Result = string.Empty, ChatCode = string.Empty });
return !result.Result.Equals("0") ? null : result.ChatCode;
2017-10-06 12:06:34 +02:00
//var request = WebRequest.Create(url);
2017-10-06 12:06:34 +02:00
//request.Credentials = CredentialCache.DefaultCredentials;
2016-11-17 14:46:54 +01:00
//var response = request.GetResponse();
2017-10-06 12:06:34 +02:00
//var responseFromServer = ReadStreamForChatCode(response);
//var definiti = new {result = string.Empty, chatcode = string.Empty };
//var jsonDatentyp = JsonConvert.DeserializeAnonymousType(responseFromServer, definiti);
//response.Close();
//return !jsonDatentyp.result.Equals("0") ? null : jsonDatentyp.chatcode;
2017-10-06 12:06:34 +02:00
}
catch (Exception e)
{
2017-10-06 12:06:34 +02:00
throw Utils.CreateBeWoFaultException(e);
2016-11-17 14:46:54 +01:00
}
2017-10-06 12:06:34 +02:00
}
2016-06-27 01:45:38 +02:00
2020-11-25 11:40:05 +01:00
//private static string ErmittleServerURL(string customerId)
//{
// try
// {
// ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2017-10-06 12:06:34 +02:00
2020-11-25 11:40:05 +01:00
// var url = "https://dict.ownchat.de/api/server/resolve/1/" + customerId;
2017-10-06 12:06:34 +02:00
2020-11-25 11:40:05 +01:00
// var client = new RestClient(url);
// var request = new RestRequest(Method.GET);
2017-10-06 12:06:34 +02:00
2020-11-25 11:40:05 +01:00
// var response = client.Execute(request);
2017-10-06 12:06:34 +02:00
2020-11-25 11:40:05 +01:00
// var result = JsonConvert.DeserializeAnonymousType(response.Content, new { Status = string.Empty, Url = string.Empty, SyncType = string.Empty });
2017-10-06 12:06:34 +02:00
2020-11-25 11:40:05 +01:00
// return result.Url;
// }
// catch (Exception e)
// {
// throw Utils.CreateBeWoFaultException(e);
// }
//}
2017-10-06 12:06:34 +02:00
private static string ReadStreamForChatCode(WebResponse response)
2017-10-06 12:06:34 +02:00
{
try
{
var dataStream = response.GetResponseStream();
2017-10-06 12:06:34 +02:00
var reader = new StreamReader(dataStream);
var responseFromServer = reader.ReadToEnd();
2017-10-06 12:06:34 +02:00
dataStream.Dispose();
reader.Dispose();
dataStream.Close();
reader.Close();
return responseFromServer;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
2017-10-06 12:06:34 +02:00
return null;
2016-11-17 14:46:54 +01:00
}
2016-06-27 01:45:38 +02:00
}
public List<ChatMessageDC> FindUnreadChatMessagesForRecipient(long personOid)
{
try
{
var chatMessage = DAOFactory.SearchDAO.FindUnreadChatMessagesForRecipient(personOid);
var ChatMessagesDC = MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDCs(chatMessage);
return ChatMessagesDC;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public long InsertNewServiceRecordAndSignature(ServiceRecordDC sr, SignatureDC sig)
{
2016-06-27 01:45:38 +02:00
try
{
var dcList = new List<ServiceRecordDC> { sr };
2016-06-27 01:45:38 +02:00
var oidList = InsertNewServiceRecords(dcList);
var serviceRecordOid = oidList[0];
if (!string.IsNullOrEmpty(sig.DataBild))
2016-06-27 01:45:38 +02:00
{
var lSignature = MapperFactory.SignatureDC_Signature.MapToNewEntity(sig);
DAOFactory.GenericDAO.Insert(lSignature);
}
2016-06-27 01:45:38 +02:00
return serviceRecordOid;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public string CreateDefaultServiceRecords(DateTime monat, IList<long> oids)
2019-07-12 17:36:37 +02:00
{
try
{
var s = PluginLoader.FindClass<SchulbegleitenderDienstService>();
return s.CreateDefaultServiceRecords(monat, oids);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<OrganisationPersonRelationDC> LoadOrganisationPersonRelationsByOid(IEnumerable<long> pOids)
{
try
{
var customerPersonRels = DAOFactory.GenericDAO.LoadByIDs<Organisation2Person>(pOids);
return MapperFactory.OrganisationPersonRelDC_Organisation2PersonMapper.MapToNewDCs(customerPersonRels);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<BargeldkassenDC> LoadBargeldkassenForObject(TableID objectTid, long objectOid)
{
try
{
var bargeldkassen = DAOFactory.SearchDAO.FindBargeldkasse(objectTid, objectOid);
return MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MapToNewDCs(bargeldkassen);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public long InsertNewBargeldkasse(BargeldkassenDC pBargeldkasse)
{
try
{
var lBargeldkasse = MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MapToNewEntity(pBargeldkasse);
DAOFactory.GenericDAO.Insert(lBargeldkasse);
return lBargeldkasse.Oid.Value;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public BargeldkassenDC UpdateBargeldkasse(BargeldkassenDC pBargeldkasse)
{
try
{
var lOriginal = DAOFactory.GenericDAO.LoadByID<Bargeldkasse>(pBargeldkasse.BargeldkassenOid.Value);
MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MergeWithEntity(pBargeldkasse, lOriginal);
DAOFactory.GenericDAO.Update(lOriginal);
return MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MapToNewDC(lOriginal);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateBargeldkasse(long pOid, long pVersion)
{
try
{
2020-04-08 14:25:01 +02:00
ServiceLogic.SetActivationType<Bargeldkasse>(new Dictionary<long, long> { { pOid, pVersion } }, ActivationTypeId.Deleted);
2016-06-27 01:45:38 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2018-10-08 11:57:16 +02:00
public List<NotizenKategorieDC> LoadNotizenKategorienForObject(TableID objectTid, long objectOid)
{
try
{
var kategorien = DAOFactory.SearchDAO.FindNotizenKategorien(objectTid, objectOid);
2020-04-08 14:25:01 +02:00
if (kategorien.Count == 0)
2018-10-08 11:57:16 +02:00
{
var newKat = new NotizenKategorie();
newKat.KategorieName = "Gesprächsnotizen";
newKat.ObjectOid = objectOid;
newKat.ObjectTid = objectTid;
DAOFactory.GenericDAO.Insert(newKat);
kategorien.Add(newKat);
}
2018-10-08 11:57:16 +02:00
return MapperFactory.NotizenKategorieDC_NotizenKategorie.MapToNewDCs(kategorien.Where(k => k.IsActive == ActivationTypeId.Active));
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public long InsertNewNotizenKategorie(NotizenKategorieDC kategorie)
{
try
{
var entity = MapperFactory.NotizenKategorieDC_NotizenKategorie.MapToNewEntity(kategorie);
DAOFactory.GenericDAO.Insert(entity);
return entity.Oid.Value;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public NotizenKategorieDC UpdateNotizenKategorie(NotizenKategorieDC kategorie)
{
try
{
var lOriginal = DAOFactory.GenericDAO.LoadByID<NotizenKategorie>(kategorie.NotizenKategorieOid.Value);
2020-11-29 17:56:11 +01:00
kategorie.NotizenKategorieVersion = lOriginal.Version;
2018-10-08 11:57:16 +02:00
MapperFactory.NotizenKategorieDC_NotizenKategorie.MergeWithEntity(kategorie, lOriginal);
DAOFactory.GenericDAO.Update(lOriginal);
return MapperFactory.NotizenKategorieDC_NotizenKategorie.MapToNewDC(lOriginal);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateNotizenEintrag(long pOid, long pVersion)
{
try
{
2020-04-08 14:25:01 +02:00
ServiceLogic.SetActivationType<NotizenEintrag>(new Dictionary<long, long> { { pOid, pVersion } }, ActivationTypeId.Deleted);
2018-10-08 11:57:16 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateNotizenKategorie(long pOid, long pVersion)
{
try
{
2020-04-08 14:25:01 +02:00
ServiceLogic.SetActivationType<NotizenKategorie>(new Dictionary<long, long> { { pOid, pVersion } }, ActivationTypeId.Deleted);
2018-10-08 11:57:16 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateAbsenceTime(Dictionary<long, long> pOid2Version)
{
try
2017-04-07 13:44:07 +02:00
{
2018-10-08 11:57:16 +02:00
//ServiceLogic.SetActivationType<AbsenceTime>(pOid2Version, ActivationTypeId.Deleted);
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<AbsenceTime>(pOid2Version.Select(e => e.Key)).Where(e => e.SystemEntryID == null).ToList();
DAOFactory.GenericDAO.Delete(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2017-04-07 13:44:07 +02:00
public void InsertNewEmployeeAbsenceTime(long employeeOid, AbsenceTimeDC at)
{
try
{
var emp = DAOFactory.GenericDAO.GetByID<Employee>(employeeOid);
emp.AbsenceTimes.Add(MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewEntity(at));
DAOFactory.GenericDAO.Update(emp);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertNewCustomerAbsenceTime(long customerOid, AbsenceTimeDC at)
{
try
{
var cust = DAOFactory.GenericDAO.GetByID<Customer>(customerOid);
cust.AbsenceTimes.Add(MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewEntity(at));
DAOFactory.GenericDAO.Update(cust);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteVertretung(long vert)
2017-04-07 13:44:07 +02:00
{
try
{
var origVertretung = DAOFactory.GenericDAO.LoadByID<Vertretung>(vert);
2017-04-07 13:44:07 +02:00
DAOFactory.GenericDAO.Delete(origVertretung);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateVertretung(VertretungDC vert)
2017-04-07 13:44:07 +02:00
{
try
{
var origVertretung = DAOFactory.GenericDAO.LoadByID<Vertretung>(vert.VertretungOid.Value);
// TODO: Beim Aufruf dieser Methode prüfen, ob eine Vertretung sich mit dem Objekt überschneidet
var isOverlapping = DAOFactory.SearchDAO.CheckForOverlappingSubstitutions(vert.EmployeeOid, vert.CustomerOid, vert.VertretungsZeitraumVon, vert.VertretungsZeitraumBis, vert.VertretungOid);
2017-04-07 13:44:07 +02:00
MapperFactory.VertretungDC_Vertretung.MergeWithEntity(vert, origVertretung);
DAOFactory.GenericDAO.Update(origVertretung);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-04-07 13:44:07 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
2017-04-07 13:44:07 +02:00
}
public void UpdateVertretungAndAbsenceTime(VertretungDC vert, AbsenceTimeDC abs)
2017-04-07 13:44:07 +02:00
{
try
{
var origVertretung = DAOFactory.GenericDAO.LoadByID<Vertretung>(vert.VertretungOid.Value);
MapperFactory.VertretungDC_Vertretung.MergeWithEntity(vert, origVertretung);
DAOFactory.GenericDAO.Update(origVertretung);
2018-10-08 11:57:16 +02:00
//Update AbsenceTime
var origAbsenceTime = DAOFactory.GenericDAO.LoadByID<AbsenceTime>(abs.AbsenceTimeOid.Value);
MapperFactory.AbsenceTimeDC_AbsenceTime.MergeWithEntity(abs, origAbsenceTime);
DAOFactory.GenericDAO.Update(origAbsenceTime);
2017-04-07 13:44:07 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-04-07 13:44:07 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void CreateVertretung(VertretungDC vertretung)
2017-04-07 13:44:07 +02:00
{
try
{
var x = MapperFactory.VertretungDC_Vertretung.MapToNewEntity(vertretung);
DAOFactory.GenericDAO.Insert(x);
2017-04-07 13:44:07 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2017-04-07 13:44:07 +02:00
public void UpdateAbsenceTime(AbsenceTimeDC abs)
{
try
{
var x = DAOFactory.GenericDAO.LoadByID<AbsenceTime>(abs.AbsenceTimeOid.Value);
MapperFactory.AbsenceTimeDC_AbsenceTime.MergeWithEntity(abs, x);
2017-04-07 13:44:07 +02:00
DAOFactory.GenericDAO.Update(x);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2017-04-07 13:44:07 +02:00
2018-05-21 16:39:24 +02:00
public List<VertretungsItemDC> GetVertretungsListe(DateTime datum)
{
try
{
var vertretungsManager = new VertretungsManager();
return vertretungsManager.CreateVertretungsListe(datum.Date, datum.Date);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<VertretungsListeMitarbeiterItemsDC> VertretungsMitarbeiterListeWoechentlich(DateTime start, DateTime ende)
{
try
{
// VertretungsManager mgr = new VertretungsManager();
2017-07-25 10:50:45 +02:00
//var x = mgr.CreateVertretungsListe(start, ende);
2017-07-25 10:50:45 +02:00
// return x;
return null;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2017-07-25 10:50:45 +02:00
2017-08-08 13:13:22 +02:00
public VertretungsKlientAccountingsListeItemsDC KlientenAbschlagsInfoListe(DateTime start, DateTime end)
{
try
{
2018-05-21 16:39:24 +02:00
//VertretungsAlgorithmus alorythmus = new VertretungsAlgorithmus(start, end,3);
2018-05-21 16:39:24 +02:00
//VertretungsKlientAccountingsListeItemsDC cusAcc = new VertretungsKlientAccountingsListeItemsDC();
2018-05-21 16:39:24 +02:00
//cusAcc.CustomerAccountItemList = alorythmus.c2a;
2018-05-21 16:39:24 +02:00
//return cusAcc;
return null;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2018-05-21 16:39:24 +02:00
public List<VertretungsItemDC> GetVertretungsListeForTimeSpan(DateTime start, DateTime ende)
{
try
{
2018-05-21 16:39:24 +02:00
var mgr = new VertretungsManager();
2018-05-21 16:39:24 +02:00
return mgr.CreateVertretungsListe(start.Date, ende.Date);
2017-04-07 13:44:07 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-04-07 13:44:07 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
2017-04-07 13:44:07 +02:00
}
public List<CompactVertreterEmployeeDC> GetLastVertreter(long? klientenOid)
{
try
{
List<Vertretung> vlist = new List<Vertretung>();
var vertreter = DAOFactory.GenericDAO.GetAllActive<Vertretung>();
2020-04-08 14:25:01 +02:00
foreach (var vert in vertreter)
{
2020-04-08 14:25:01 +02:00
if (vert.CustomerOid == klientenOid)
{
vlist.Add(vert);
}
}
List<long> emOidList = new List<long>();
2020-04-08 14:25:01 +02:00
foreach (var empoid in vlist)
{
2020-04-08 14:25:01 +02:00
if (empoid.VertretenderMitarbeiterOid.HasValue)
{
emOidList.Add(empoid.VertretenderMitarbeiterOid.Value);
}
}
var employee = DAOFactory.GenericDAO.GetActiveByIDs<Employee>(emOidList);
var x = MapperFactory.CompactVertreterEmployeeDC_VertreterEmployee.MapToNewDCs(employee);
//var x = MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(employee);
return x;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<CompactTokenDC> GetAllTokens(SchulbegleitenderZugehoerigkeitsTyp zugehoerigkeitsTyp, long? oid)
2017-06-28 09:05:53 +02:00
{
try
{
var token = DAOFactory.GenericDAO.GetAllActive<Token>();
IList<Token> fToken = new List<Token>();
2020-04-08 14:25:01 +02:00
if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Klient)
2017-06-28 09:05:53 +02:00
{
var x = GetCustomer2TokenList();
2020-04-08 14:25:01 +02:00
foreach (var item in token)
2017-06-28 09:05:53 +02:00
{
2020-04-08 14:25:01 +02:00
foreach (var c2t in x)
2017-06-28 09:05:53 +02:00
{
2020-04-08 14:25:01 +02:00
if (item.Oid == c2t.Token.TokenOid && c2t.Customer.CustomerOid == oid)
2017-06-30 13:33:49 +02:00
{
item.MemberOid = oid;
fToken.Add(item);
}
2020-04-08 14:25:01 +02:00
else if (item.Oid == c2t.Token.TokenOid)
2017-06-28 09:05:53 +02:00
{
fToken.Add(item);
}
}
}
}
2020-04-08 14:25:01 +02:00
else if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter)
2017-06-28 09:05:53 +02:00
{
var x = GetEmployee2TokenList();
2020-04-08 14:25:01 +02:00
foreach (var item in token)
2017-06-28 09:05:53 +02:00
{
2020-04-08 14:25:01 +02:00
foreach (var e2t in x)
2017-06-28 09:05:53 +02:00
{
2020-04-08 14:25:01 +02:00
if (item.Oid == e2t.Token.TokenOid && e2t.Employee.EmployeeOid == oid)
2017-06-30 13:33:49 +02:00
{
item.MemberOid = oid;
fToken.Add(item);
}
2020-04-08 14:25:01 +02:00
else if (item.Oid == e2t.Token.TokenOid)
2017-06-28 09:05:53 +02:00
{
fToken.Add(item);
}
}
}
}
return MapperFactory.CompactTokenDC_Token.MapToNewDCs(fToken);
2017-06-28 09:05:53 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-06-28 09:05:53 +02:00
{
throw Utils.CreateBeWoFaultException(e);
2017-06-28 09:05:53 +02:00
}
}
2017-06-28 09:05:53 +02:00
public void UpdateToken(TokenDC token)
{
try
{
var t = MapperFactory.TokenDC_Token.MapToNewEntity(token);
DAOFactory.GenericDAO.Update(t);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-06-28 09:05:53 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertNewToken(string beschreibung, TokenTyp typ, SchulbegleitenderZugehoerigkeitsTyp zugehoerigkeitsTyp, long? oid)
2017-06-28 09:05:53 +02:00
{
try
{
2017-06-28 09:05:53 +02:00
TokenDC token = new TokenDC()
{
Beschreibung = beschreibung,
TokenTyp = typ
};
2020-04-08 14:25:01 +02:00
if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Klient)
2017-06-28 09:05:53 +02:00
{
var x = DAOFactory.GenericDAO.GetByID<Customer>(oid.Value);
var xyz = MapperFactory.CustomerDC_Customer.MapToNewDC(x);
CustomerTokenRelationDC c2t = new CustomerTokenRelationDC()
{
Customer = xyz
};
List<CustomerTokenRelationDC> c2tList = new List<CustomerTokenRelationDC>();
c2tList.Add(c2t);
token.RelatedCustomers = c2tList;
}
2020-04-08 14:25:01 +02:00
else if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter)
2017-06-28 09:05:53 +02:00
{
var x = DAOFactory.GenericDAO.GetByID<Employee>(oid.Value);
var xyz = MapperFactory.EmployeeDC_Employee.MapToNewDC(x);
EmployeeTokenRelationDC e2t = new EmployeeTokenRelationDC()
{
Employee = xyz
};
List<EmployeeTokenRelationDC> e2tList = new List<EmployeeTokenRelationDC>();
e2tList.Add(e2t);
token.RelatedEmployees = e2tList;
2017-06-28 09:05:53 +02:00
}
var t = MapperFactory.TokenDC_Token.MapToNewEntity(token);
DAOFactory.GenericDAO.Insert(t);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-06-28 09:05:53 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DoTokenAusschlussOperation(int art, long? Oid, SchulbegleitenderZugehoerigkeitsTyp zugehoerigkeitsTyp, Dictionary<string, CompactTokenDC> verfuegbarerAusschlussToken, string token)
{
try
{
2020-04-08 14:25:01 +02:00
if (art == 1)
{
2020-04-08 14:25:01 +02:00
if (verfuegbarerAusschlussToken.ContainsKey(token))
2017-08-08 13:13:22 +02:00
{
CompactTokenDC nToken = null;
2020-04-08 14:25:01 +02:00
foreach (var tokenkey in verfuegbarerAusschlussToken)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (tokenkey.Key.Equals(token))
2017-08-08 13:13:22 +02:00
{
nToken = tokenkey.Value;
}
}
2020-04-08 14:25:01 +02:00
if (nToken != null)
2017-08-08 13:13:22 +02:00
{
InsertNewRelationToken(nToken, TokenTyp.AusschlussKriterium, zugehoerigkeitsTyp, Oid);
}
}
else
{
InsertNewToken(token, TokenTyp.AusschlussKriterium, zugehoerigkeitsTyp, Oid);
}
}
2017-08-08 13:13:22 +02:00
2020-04-08 14:25:01 +02:00
if (art == 0)
{
2020-04-08 14:25:01 +02:00
if (verfuegbarerAusschlussToken.ContainsKey(token))
2017-08-08 13:13:22 +02:00
{
CompactTokenDC nToken = null;
2020-04-08 14:25:01 +02:00
foreach (var tokenkey in verfuegbarerAusschlussToken)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (tokenkey.Key.Equals(token))
2017-08-08 13:13:22 +02:00
{
nToken = tokenkey.Value;
}
}
2020-04-08 14:25:01 +02:00
if (nToken != null)
2017-08-08 13:13:22 +02:00
{
DeletTokenRelation(nToken, Oid, zugehoerigkeitsTyp);
}
}
else
{
2020-04-08 14:25:01 +02:00
if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Klient)
2017-08-08 13:13:22 +02:00
{
var c2tList = GetCustomer2TokenList();
List<CompactTokenDC> otoken = new List<CompactTokenDC>();
2020-04-08 14:25:01 +02:00
foreach (var ct2 in c2tList)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (ct2.Token.Beschreibung.Equals(token) && ct2.Customer.CustomerOid == Oid)
2017-08-08 13:13:22 +02:00
{
otoken.Add(ct2.Token);
}
}
2020-04-08 14:25:01 +02:00
foreach (var ken in otoken)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (ken != null)
2017-08-08 13:13:22 +02:00
DeletTokenRelation(ken, Oid, zugehoerigkeitsTyp);
}
}
2020-04-08 14:25:01 +02:00
else if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter)
2017-08-08 13:13:22 +02:00
{
var e2tList = GetEmployee2TokenList();
List<CompactTokenDC> otoken = new List<CompactTokenDC>();
2020-04-08 14:25:01 +02:00
foreach (var et2 in e2tList)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (et2.Token.Beschreibung.Equals(token) && et2.Employee.EmployeeOid == Oid)
2017-08-08 13:13:22 +02:00
{
otoken.Add(et2.Token);
}
}
2020-04-08 14:25:01 +02:00
foreach (var ken in otoken)
2017-08-08 13:13:22 +02:00
{
DeletTokenRelation(ken, Oid, zugehoerigkeitsTyp);
}
}
}
}
2017-08-08 13:13:22 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-08-08 13:13:22 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DoTokenWunschOperation(int art, long? Oid, SchulbegleitenderZugehoerigkeitsTyp zugehoerigkeitsTyp, Dictionary<string, CompactTokenDC> verfuegbarerWunschToken, string token)
{
2017-08-08 13:13:22 +02:00
try
{
2020-04-08 14:25:01 +02:00
if (art == 1)
{
2020-04-08 14:25:01 +02:00
if (verfuegbarerWunschToken.ContainsKey(token))
2017-08-08 13:13:22 +02:00
{
CompactTokenDC nToken = null;
2020-04-08 14:25:01 +02:00
foreach (var tokenkey in verfuegbarerWunschToken)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (tokenkey.Key.Equals(token))
2017-08-08 13:13:22 +02:00
{
nToken = tokenkey.Value;
}
}
2020-04-08 14:25:01 +02:00
if (nToken != null)
2017-08-08 13:13:22 +02:00
{
InsertNewRelationToken(nToken, TokenTyp.WunschKriterium, zugehoerigkeitsTyp, Oid);
}
}
else
{
InsertNewToken(token.ToString(), TokenTyp.WunschKriterium, zugehoerigkeitsTyp, Oid);
}
2017-08-08 13:13:22 +02:00
}
2020-04-08 14:25:01 +02:00
if (art == 0)
{
2020-04-08 14:25:01 +02:00
if (verfuegbarerWunschToken.ContainsKey(token))
2017-08-08 13:13:22 +02:00
{
CompactTokenDC nToken = null;
2020-04-08 14:25:01 +02:00
foreach (var tokenkey in verfuegbarerWunschToken)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (tokenkey.Key.Equals(token))
2017-08-08 13:13:22 +02:00
{
nToken = tokenkey.Value;
}
}
2020-04-08 14:25:01 +02:00
if (nToken != null)
2017-08-08 13:13:22 +02:00
{
DeletTokenRelation(nToken, Oid, zugehoerigkeitsTyp);
}
}
else
{
2020-04-08 14:25:01 +02:00
if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Klient)
2017-08-08 13:13:22 +02:00
{
var c2tList = GetCustomer2TokenList();
List<CompactTokenDC> otoken = new List<CompactTokenDC>();
2020-04-08 14:25:01 +02:00
foreach (var ct2 in c2tList)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (ct2.Token.Beschreibung.Equals(token) && ct2.Customer.CustomerOid == Oid)
2017-08-08 13:13:22 +02:00
{
otoken.Add(ct2.Token);
}
}
2020-04-08 14:25:01 +02:00
foreach (var ken in otoken)
2017-08-08 13:13:22 +02:00
{
DeletTokenRelation(ken, Oid, zugehoerigkeitsTyp);
}
}
2020-04-08 14:25:01 +02:00
else if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter)
2017-08-08 13:13:22 +02:00
{
var e2tList = GetEmployee2TokenList();
List<CompactTokenDC> otoken = new List<CompactTokenDC>();
2020-04-08 14:25:01 +02:00
foreach (var et2 in e2tList)
2017-08-08 13:13:22 +02:00
{
2020-04-08 14:25:01 +02:00
if (et2.Token.Beschreibung.Equals(token) && et2.Employee.EmployeeOid == Oid)
2017-08-08 13:13:22 +02:00
{
otoken.Add(et2.Token);
}
}
2020-04-08 14:25:01 +02:00
foreach (var ken in otoken)
2017-08-08 13:13:22 +02:00
{
DeletTokenRelation(ken, Oid, zugehoerigkeitsTyp);
2017-08-08 13:13:22 +02:00
}
}
}
2017-08-08 13:13:22 +02:00
}
2017-08-08 13:13:22 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-08-08 13:13:22 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertNewRelationToken(CompactTokenDC ctoken, TokenTyp typ, SchulbegleitenderZugehoerigkeitsTyp zugehoerigkeitsTyp, long? oid)
{
try
{
var tk = DAOFactory.GenericDAO.GetByID<Token>(ctoken.TokenOid.Value);
var token = MapperFactory.TokenDC_Token.MapToNewDC(tk);
2020-04-08 14:25:01 +02:00
if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Klient)
{
var x = DAOFactory.GenericDAO.GetByID<Customer>(oid.Value);
var xyz = MapperFactory.CustomerDC_Customer.MapToNewDC(x);
CustomerTokenRelationDC c2t = new CustomerTokenRelationDC()
{
Customer = xyz
};
List<CustomerTokenRelationDC> c2tList = new List<CustomerTokenRelationDC>();
c2tList.Add(c2t);
token.RelatedCustomers = c2tList;
}
2020-04-08 14:25:01 +02:00
else if (zugehoerigkeitsTyp == SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter)
{
var x = DAOFactory.GenericDAO.GetByID<Employee>(oid.Value);
var xyz = MapperFactory.EmployeeDC_Employee.MapToNewDC(x);
EmployeeTokenRelationDC e2t = new EmployeeTokenRelationDC()
{
Employee = xyz
};
List<EmployeeTokenRelationDC> e2tList = new List<EmployeeTokenRelationDC>();
e2tList.Add(e2t);
token.RelatedEmployees = e2tList;
}
var tok = DAOFactory.GenericDAO.GetByID<Token>(token.TokenOid.Value);
var t = MapperFactory.TokenDC_Token.MergeWithEntity(token, tok);
DAOFactory.GenericDAO.Update(t);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2017-06-28 09:05:53 +02:00
public void DeleteToken(TokenDC token)
{
try
{
var t = MapperFactory.TokenDC_Token.MapToNewEntity(token);
DAOFactory.GenericDAO.Delete(t);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-06-28 09:05:53 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeletTokenRelation(CompactTokenDC token, long? oid, SchulbegleitenderZugehoerigkeitsTyp typ)
{
try
{
2020-04-08 14:25:01 +02:00
if (typ == SchulbegleitenderZugehoerigkeitsTyp.Klient)
2017-08-08 13:13:22 +02:00
{
var tokenEntity = DAOFactory.GenericDAO.LoadByID<Token>(token.TokenOid.Value);
Customer2Token t = null;
2020-04-08 14:25:01 +02:00
foreach (var c2tToken in tokenEntity.Customer2TokenList)
{
2020-04-08 14:25:01 +02:00
if (c2tToken.Customer.Oid == oid)
{
t = c2tToken;
}
}
2017-08-08 13:13:22 +02:00
2020-04-08 14:25:01 +02:00
if (t != null)
2017-08-08 13:13:22 +02:00
{
tokenEntity.Customer2TokenList.Remove(t);
DAOFactory.GenericDAO.Update(tokenEntity);
}
}
2020-04-08 14:25:01 +02:00
else if (typ == SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter)
{
2017-08-08 13:13:22 +02:00
var tokenEntity = DAOFactory.GenericDAO.LoadByID<Token>(token.TokenOid.Value);
Employee2Token t = null;
2020-04-08 14:25:01 +02:00
foreach (var e2tToken in tokenEntity.Employee2TokenList)
{
2020-04-08 14:25:01 +02:00
if (e2tToken.Employee.Oid == oid)
{
t = e2tToken;
}
}
2020-04-08 14:25:01 +02:00
if (t != null)
{
2017-08-08 13:13:22 +02:00
tokenEntity.Employee2TokenList.Remove(t);
DAOFactory.GenericDAO.Update(tokenEntity);
}
}
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2017-06-28 09:05:53 +02:00
public List<CustomerTokenRelationDC> GetCustomer2TokenList()
{
try
{
var x = DAOFactory.GenericDAO.GetAllActive<Customer2Token>();
var y = MapperFactory.CustomerTokenRelationDC_Customer2Token.MapToNewDCs(x);
return y;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-06-28 09:05:53 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<EmployeeTokenRelationDC> GetEmployee2TokenList()
{
try
{
var x = DAOFactory.GenericDAO.GetAllActive<Employee2Token>();
var y = MapperFactory.EmployeeTokenRelationDC_Employee2Token.MapToNewDCs(x);
return y;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-06-28 09:05:53 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2016-06-27 01:45:38 +02:00
public string PrepareAuslastungReport(AuslastungAnalysisRootDC pReport, string id)
{
try
{
string lResult = id + ".xml";
string lDir = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, MultitenancyOperationContextExt.Current.Tenant + @"\temp");
string lPath = BS.Shared.Core.Utils.CreateSavePath(lDir, lResult);
2016-06-27 01:45:38 +02:00
BS.Shared.Core.Utils.XMLSerialize(lPath, pReport);
return lResult;
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2016-06-27 01:45:38 +02:00
{
throw (Utils.CreateBeWoFaultException(e));
}
}
public ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
{
var factory = PluginLoader.FindClass<ServiceRecordStatisticFactory>();
2020-04-08 14:25:01 +02:00
if (factory != null)
2016-06-27 01:45:38 +02:00
{
return factory.GetServiceRecordStatisticInfo(costBearer2SupportConceptOid, statisticsDate);
}
2016-06-27 01:45:38 +02:00
return null;
}
public SupportConceptStatisticsDC CreateSupportConceptStatistics(long costBearer2SupportConceptOid, DateTime statisticsDate)
{
var factory = PluginLoader.FindClass<ServiceRecordStatisticFactory>();
2020-04-08 14:25:01 +02:00
if (factory == null)
2016-06-27 01:45:38 +02:00
{
factory = new ServiceRecordStatisticFactory();
}
2016-06-27 01:45:38 +02:00
return factory.CreateSupportConceptStatistics(costBearer2SupportConceptOid, statisticsDate);
}
public void ResetTenant(String tenant)
{
WCFHibernateSessionManager.ResetSessionFactory(tenant);
}
public void ResetAllTenants()
{
WCFHibernateSessionManager.ResetAllSessionFactories();
}
public String GetLicenseOrderUrl()
{
var url = ConfigurationManager.AppSettings.Get("LicenseOrderUrl");
2016-06-27 01:45:38 +02:00
url = url.Replace("[TENANT]", MultitenancyOperationContextExt.Current.Tenant);
return url;
}
public LicenseInfoDC GetLicenseInfo()
{
return SecurityUtils.GetLicenseInfo();
}
public GroupDurationDC CalculateGroupDuration(int personCount, int employeeCount, decimal totalDuration)
{
var calc = PluginLoader.FindClass<GroupDurationCalculator>();
return calc?.CalculateGroupDuration(personCount, employeeCount, totalDuration);
2016-06-27 01:45:38 +02:00
}
public GroupDurationDC CalculateGroupDuration2(int personCount, int employeeCount, decimal totalDuration, long[] costBearer2SupportConceptArray)
{
var calc = PluginLoader.FindClass<GroupDurationCalculator>();
2016-06-27 01:45:38 +02:00
return calc?.CalculateGroupDuration(personCount, employeeCount, totalDuration, costBearer2SupportConceptArray);
}
2016-06-27 01:45:38 +02:00
public IList<UiElementDC> GetUiElements(UiElementType? uiType, long? employeeOid, long? teamOid, long[] oidArray)
{
var factory = PluginLoader.FindClass<UiElementFactory>() ?? new UiElementFactory();
2016-06-27 01:45:38 +02:00
return factory.GetUiElements(uiType, employeeOid, teamOid);
}
private static List<SupportConceptTreeNodeDC> BuildTree(IEnumerable<SupportConcept> pSupportConcepts)
{
var lResult = new List<SupportConceptTreeNodeDC>();
foreach (var iSc in pSupportConcepts)
2016-06-27 01:45:38 +02:00
{
var lScNode = new SupportConceptTreeNodeDC
{
NodeType = NodeType.SupportConcept,
SupportConcept = MapperFactory.CompactSupportConceptDC_SupportConcept.MapToNewDC(iSc),
Description = $"{iSc.Customer.Person.LastName}, {iSc.Customer.Person.FirstName}"
2016-06-27 01:45:38 +02:00
};
foreach (var iSc2Cb in iSc.CostBearer2SupportConceptList)
2016-06-27 01:45:38 +02:00
{
var treeNode = new SupportConceptTreeNodeDC
{
NodeType = NodeType.SupportConceptCostBearerRelDC,
SupportConcept = lScNode.SupportConcept,
SupportConceptCostBearerRelDC = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(iSc2Cb)
};
2016-06-27 01:45:38 +02:00
if (iSc2Cb.CostBearer.Organisation != null)
2016-06-27 01:45:38 +02:00
{
treeNode.Description = iSc2Cb.CostBearer.Organisation.Name;
2016-06-27 01:45:38 +02:00
}
lScNode.ChildNodes.Add(treeNode);
2016-06-27 01:45:38 +02:00
}
lResult.Add(lScNode);
}
return lResult.OrderBy(s => s.Description).ToList();
}
public void CreateNewPerson2OrganisationRelation(long pOrganisationOid, ValueListEntryDC pValue, long personOid, string pMailAddress, string pFaxNumber, string pPhoneNumber, string pNotice)
{
try
{
var contactList = new List<Contact>
{
new Contact {Type = ContactType.business_Fax, Value = pFaxNumber},
new Contact {Type = ContactType.business_Mail, Value = pMailAddress},
new Contact {Type = ContactType.business_Phone, Value = pPhoneNumber}
};
var organisation2Person = new Organisation2Person
{
Organisation = DAOFactory.GenericDAO.LoadByID<Organisation>(pOrganisationOid),
Notice = pNotice,
RolleInOrganisation = pValue != null ? DAOFactory.GenericDAO.LoadByID<ValueListEntry>(pValue.ValueListEntryOid.Value) : null,
Person = DAOFactory.GenericDAO.LoadByID<Person>(personOid),
Contacts = contactList
};
DAOFactory.GenericDAO.Insert(organisation2Person);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2018-05-23 10:37:57 +02:00
public void DeletePerson2OrganisationRelation(long oid)
{
try
{
var organisation2Person = DAOFactory.GenericDAO.LoadByID<Organisation2Person>(oid);
DAOFactory.GenericDAO.Delete(organisation2Person);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-05-23 10:37:57 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public PdfChatHandoutDC GetHandOutPdfForChat(string customerId, string apikey)
2017-10-11 14:45:11 +02:00
{
try
{
var handout = new PdfChatHandoutDC();
2020-04-08 14:25:01 +02:00
string serverUrl = OwnChatHelper.ErmittleServerURL(customerId);
2020-04-08 14:25:01 +02:00
if (serverUrl == null)
{
handout.Result = 11;
return handout;
}
2020-04-08 14:25:01 +02:00
else if (serverUrl.Equals(""))
2017-10-11 14:45:11 +02:00
{
handout.Result = 11;
return handout;
}
var endurl = serverUrl + "/api/ownchat/createpdfmanual/" + apikey + "/" + customerId;
2017-11-07 06:49:45 +01:00
//Bereich zum Testen Multiform Test gedönse
//using (MultipartFormDataContent multiPartContent = new MultipartFormDataContent())
//{
// Uri requestUri = new Uri(ChatDaten.ServerUrl + "/api/ownchat/createpdfmanual/");
2017-10-17 14:55:50 +02:00
2017-11-07 06:49:45 +01:00
// Links Content / Rechts name
// multiPartContent.Add(new StringContent(chatcode + ""), "chatcode");
// multiPartContent.Add(new StringContent(login + ""), "login");
// multiPartContent.Add(new StringContent(password + ""), "password");
// multiPartContent.Add(new StringContent("https://support.bewoplaner.de/bewoplaner_logo_big.png"), "custom_logo_url");
2017-10-17 14:55:50 +02:00
2017-11-07 06:49:45 +01:00
// httpRequest = new HttpRequestMessage();
// httpRequest.Method = HttpMethod.Post;
// httpRequest.RequestUri = requestUri;
// httpRequest.Content = multiPartContent;
2017-10-17 14:55:50 +02:00
2017-11-07 06:49:45 +01:00
// httpRequest.Headers.Add("Token", apikey);
// httpRequest.Headers.Add("CustomerID", customerId);
2017-10-17 14:55:50 +02:00
2017-11-07 06:49:45 +01:00
// HttpResponseMessage httpResponse = null;
// HttpClient httpClient = new HttpClient();
// httpResponse = await httpClient.SendAsync(httpRequest, CancellationToken.None).ConfigureAwait(false);
// string antwortResponse = await httpResponse.Content.ReadAsStringAsync();
// var jsonDatentyp = JsonConvert.DeserializeObject<PdfChatHandoutDC>(antwortResponse);
// return jsonDatentyp;
//}
2017-10-17 14:55:50 +02:00
//neu post bereich
//Dictionary<string, string> dic = new Dictionary<string, string>();
//dic.Add("chatcode", "Hier ChatCode");
//dic.Add("login", "hier benutzername");
//dic.Add("password", "hier passwort");
//dic.Add("custom_logo_url", "https://support.bewoplaner.de/bewoplaner_logo_big.png");
//string postdaten = "";
//foreach (var key in dic.Keys)
//{
// postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(dic[key]) + "&";
//}
//WebRequest requesten = WebRequest.Create(endurl);
//requesten.Method = "POST";
//requesten.ContentType = "application/x-www-form-urlencoded";
////requesten.Headers["Token"] = "hier ggf. token hin ";
//requesten.Headers["CustomerID"] = customerId;
//byte[] daten = Encoding.ASCII.GetBytes(postdaten);
//requesten.ContentLength = daten.Length;
//Stream requestStream = requesten.GetRequestStream();
//requestStream.Write(daten, 0, daten.Length);
//requestStream.Close();
//neu ende
2017-10-11 14:45:11 +02:00
2017-11-07 06:49:45 +01:00
//############################
Dictionary<string, string> postparameter = new Dictionary<string, string>();
postparameter.Add("username", "HAns");
postparameter.Add("password", "Dito");
//neu | hinzufügen laut document
postparameter.Add("chatcode", "yyAbrams");
string postdaten = "";
int i = 0;
2020-04-08 14:25:01 +02:00
foreach (var key in postparameter.Keys)
2017-11-07 06:49:45 +01:00
{
//hier noch chatcode übergeben
postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&";
}
WebRequest requesten = WebRequest.Create(endurl);
requesten.Method = "POST";
requesten.ContentType = "application/x-www-form-urlencoded";
byte[] daten = Encoding.ASCII.GetBytes(postdaten);
requesten.ContentLength = daten.Length;
try
{
Stream requestStream = requesten.GetRequestStream();
requestStream.Write(daten, 0, daten.Length);
requestStream.Close();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-11-07 06:49:45 +01:00
{
MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
2017-11-07 06:49:45 +01:00
}
//response bereich | Verarbeiten
2020-04-08 14:25:01 +02:00
HttpWebResponse response = (HttpWebResponse)requesten.GetResponse();
2017-11-07 06:49:45 +01:00
//response.ContentType = "application/pdf";
//######################################################################
//alt get bereich
//WebRequest request = WebRequest.Create(endurl);
//request.Method = WebRequestMethods.Http.Post;
//request.Credentials = CredentialCache.DefaultCredentials;
//request.Proxy = null;
//WebResponse response = request.GetResponse();
2020-04-08 14:25:01 +02:00
using (Stream stream = response.GetResponseStream())
2017-11-07 06:49:45 +01:00
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
File.WriteAllBytes("foo.pdf", buffer);
}
2017-10-11 14:45:11 +02:00
string responseFromServer = ReadStreamForChatCode(response);
2020-04-08 14:25:01 +02:00
if (responseFromServer.Contains("PDF"))
2017-10-17 14:55:50 +02:00
{
PdfChatHandoutDC hd = new PdfChatHandoutDC();
2017-11-07 06:49:45 +01:00
hd.File = responseFromServer;
2017-10-17 14:55:50 +02:00
hd.Result = 0;
2017-11-07 06:49:45 +01:00
//hd.TestStream = dataStream;
2017-10-17 14:55:50 +02:00
return hd;
}
else
{
var jsonDatentyp = JsonConvert.DeserializeObject<PdfChatHandoutDC>(responseFromServer);
return jsonDatentyp;
}
2017-10-11 14:45:11 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-10-11 14:45:11 +02:00
{
//throw Utils.CreateBeWoFaultException(e);
var handout = new PdfChatHandoutDC();
2017-10-17 14:55:50 +02:00
handout.Result = 60;
handout.File = e.Message;
2017-10-11 14:45:11 +02:00
return handout;
2017-10-11 14:45:11 +02:00
}
}
public CustomerAPPCodeDC DeletCustomerChatCode(string apikey, string kundennummer, long customeroid)
{
var customerAppCode = new CustomerAPPCodeDC();
var result = DeletZufallsCode(apikey, kundennummer, "C" + customeroid);
if (result == 0 || result == 32)
{
try
{
var customerappcode = DAOFactory.SearchDAO.FindAllCustomerAppCodes(customeroid).ToList();
var anzahl = customerappcode.Count;
if (anzahl > 0)
{
foreach (var code in customerappcode)
{
code.CustomerCode = string.Empty;
code.CustomerCodeGenDate = DateTime.Now;
}
DAOFactory.GenericDAO.Update(customerappcode);
customerAppCode.Result = 0;
return customerAppCode;
}
customerAppCode.Result = 4;
return customerAppCode;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
customerAppCode.Result = result;
return customerAppCode;
}
public EmployeeAPPCodeDC DeletEmployeeChatCode(string apikey, string kundennummer, long employeeoid)
{
var employeeAppCode = new EmployeeAPPCodeDC();
var result = DeletZufallsCode(apikey, kundennummer, "E" + employeeoid);
2017-11-13 16:37:21 +01:00
if (result == 0 || result == 32)
{
try
{
var employeeappcode = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(employeeoid).ToList();
var anzahl = employeeappcode.Count;
if (anzahl > 0)
{
foreach (var code in employeeappcode)
{
code.EmployeeCode = string.Empty;
code.EmployeeCodeGenDate = DateTime.Now;
}
DAOFactory.GenericDAO.Update(employeeappcode);
employeeAppCode.Result = 0; // alles ok
return employeeAppCode;
}
employeeAppCode.Result = 4; // ChatCode Datensatz konnte nicht gefunden werden
return employeeAppCode;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
employeeAppCode.Result = result;
return employeeAppCode;
}
2017-10-11 14:45:11 +02:00
public Dictionary<string, string> GetTranslationDictionary()
2017-11-06 10:30:25 +01:00
{
var translationDictionary = PluginLoader.FindClass<TranslationDictionary>();
2017-11-06 10:30:25 +01:00
return translationDictionary?.GetTranslationDictionary();
2017-11-06 10:30:25 +01:00
}
2017-11-17 22:24:00 +01:00
public IList<TextbausteinDC> GetAllTextbausteine()
{
try
{
return MapperFactory.TextbausteinDC_Textbaustein.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<Textbaustein>());
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-11-17 22:24:00 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<long> InsertNewTextbausteine(IEnumerable<TextbausteinDC> pTextbausteine)
{
try
{
var lTextbausteine = MapperFactory.TextbausteinDC_Textbaustein.MapToNewEntities(pTextbausteine);
DAOFactory.GenericDAO.Insert(lTextbausteine);
return lTextbausteine.Select(asb => asb.Oid.Value).ToList();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-11-17 22:24:00 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateTextbausteine(List<TextbausteinDC> pTextbausteine)
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<Textbaustein>(pTextbausteine.Select(sc => sc.TextbausteinOid.Value));
MapperFactory.TextbausteinDC_Textbaustein.MergeWithEntitys(pTextbausteine, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-11-17 22:24:00 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteTextbausteine(Dictionary<long, long> pOid2Version)
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<Textbaustein>(pOid2Version.Select(e => e.Key));
2017-11-17 22:24:00 +01:00
lOriginals.DoForEach(or => MapperFactory.TextbausteinDC_Textbaustein.ConcurrencyCheck(pOid2Version[or.Oid.Value], or));
DAOFactory.GenericDAO.Delete(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2017-11-17 22:24:00 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2018-10-08 11:57:16 +02:00
public SbdConfigDC GetSbdConfig()
{
try
{
var pi = PluginLoader.FindClass<SchulbegleitenderDienstService>();
2020-04-08 14:25:01 +02:00
if (pi != null)
2018-10-08 11:57:16 +02:00
{
return pi.GetSbdConfig();
}
return new SbdConfigDC();
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2018-10-08 11:57:16 +02:00
public void SaveSbdConfig(SbdConfigDC config)
{
try
{
var pi = PluginLoader.FindClass<SchulbegleitenderDienstService>();
pi?.SaveSbdConfig(config);
2018-10-08 11:57:16 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2018-10-08 11:57:16 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
private static void AnonymizePerson(long pPersonOid)
{
try
{
const string anonimyzedName = "Anonymisiert";
var pPerson = DAOFactory.GenericDAO.LoadByID<Person>(pPersonOid);
pPerson.Abbreviation = null;
2020-04-08 14:25:01 +02:00
if (pPerson.DateOfBirth != null)
{
pPerson.DateOfBirth = new DateTime(pPerson.DateOfBirth.Value.Year, 1, 1);
}
pPerson.FirstName = anonimyzedName;
pPerson.LastName = anonimyzedName;
pPerson.Notice = null;
2020-04-08 14:25:01 +02:00
if (pPerson.Address != null)
{
pPerson.Address.AddressLine1 = null;
pPerson.Address.AddressLine2 = null;
pPerson.Address.Country = null;
pPerson.Address.Street = null;
pPerson.Address.State = null;
pPerson.Address.PostalCode = null;
pPerson.Address.Town = null;
pPerson.Address.InsUser = anonimyzedName;
pPerson.Address.UdpUser = anonimyzedName;
}
pPerson.AufenthaltsStatus = null;
pPerson.Profession = null;
pPerson.Title = null;
pPerson.InsUser = anonimyzedName;
pPerson.UdpUser = anonimyzedName;
var bankaccountOid = pPerson.BankAccount?.Oid;
2020-04-08 14:25:01 +02:00
if (bankaccountOid != null)
{
pPerson.BankAccount = null;
}
pPerson.FamilyStatus = null;
2020-04-08 14:25:01 +02:00
if (pPerson.InvoiceAddress != null)
{
pPerson.InvoiceAddress.AddressLine1 = null;
pPerson.InvoiceAddress.AddressLine2 = null;
pPerson.InvoiceAddress.Country = null;
pPerson.InvoiceAddress.Street = null;
pPerson.InvoiceAddress.State = null;
pPerson.InvoiceAddress.InsUser = anonimyzedName;
pPerson.InvoiceAddress.UdpUser = anonimyzedName;
}
pPerson.IsMigrant = false;
pPerson.Nationalitaet = null;
pPerson.Contacts.Clear();
pPerson.Images?.Clear();
DAOFactory.GenericDAO.Update(pPerson);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void AnonymizeCustomer(long pCustomerOid)
{
try
{
const string anonimyzedName = "Anonymisiert";
var customer = DAOFactory.GenericDAO.GetByID<Customer>(pCustomerOid);
2020-04-08 14:25:01 +02:00
if (customer.Person.Oid != null)
{
AnonymizePerson(customer.Person.Oid.Value);
}
customer.VarFieldValueList?.Clear();
customer.AbWelchemKrankheitsTag = 0;
customer.AbsenceTimes.DoForEach(at =>
{
at.Notice = null;
at.InsUser = anonimyzedName;
at.UdpUser = anonimyzedName;
});
customer.Ansprechpartner = null;
customer.AssessmentSheetCategoryList?.Clear();
customer.AssistanceBegin = null;
customer.AusstVersAmt = null;
customer.AusweisGueltigBis = null;
customer.AusweisGueltigVon = null;
customer.AusweisUnbefristetGueltig = null;
customer.BehinderungsartenListe?.Clear();
customer.BeiblattGueltigBis = null;
customer.Childs = null;
customer.CostCenter = null;
customer.Ansprechpartner = null;
customer.AssistanceBegin = null;
customer.Customer2CostBearerList?.Clear();
customer.Customer2OrganisationList?.Clear();
var personRelations2Delete = customer.Customer2PersonList.Where(person => !person.IstFamilie && person.Oid != null).ToList();
customer.Customer2PersonList.RemoveRange(personRelations2Delete);
customer.Customer2PersonList.DoForEach(personRelation =>
{
personRelation.InsUser = anonimyzedName;
personRelation.UdpUser = anonimyzedName;
personRelation.Notice = null;
});
customer.CustomerAlias = null;
customer.DebitorNumber = null;
customer.Diagnosis = null;
customer.Diagnosis2CustomerList?.Clear();
customer.DistanceInMeter = null;
customer.Employee2CustomerList?.Clear();
customer.Environment = null;
customer.EquityContribution = null;
customer.FamilyData = null;
customer.GradDerBehinderung = null;
customer.ICD10Diagnosis = null;
customer.InsUser = anonimyzedName;
customer.IsAdvisedOrAttended = null;
customer.Jugendamt = null;
customer.Medication = null;
customer.Medikamentenverordnungslisten?.Clear();
customer.MerkzeichenListe?.Clear();
customer.Notice = null;
customer.Pflegegrad = null;
customer.PlacementList?.Clear();
customer.ReferenceNumber = null;
customer.Team2CustomerList?.Clear();
customer.TerminationDate = null;
customer.TerminationReason = null;
customer.UdpUser = anonimyzedName;
customer.ValueList?.Clear();
customer.VertretungDringendErforderlich = false;
customer.VertretungGewuenscht = false;
customer.ServiceRecordList?.DoForEach(record =>
{
record.Notice = null;
record.Notice2 = null;
record.Notice3 = null;
record.Notice4 = null;
record.Notice5 = null;
record.RTFNotice1 = null;
record.RTFNotice2 = null;
record.RTFNotice3 = null;
record.RTFNotice4 = null;
record.RTFNotice5 = null;
record.InsUser = anonimyzedName;
record.UdpUser = anonimyzedName;
});
customer.SupportConcepts?.DoForEach(supportConcept =>
{
supportConcept.Notice = null;
supportConcept.InsUser = anonimyzedName;
supportConcept.UdpUser = anonimyzedName;
supportConcept.CostBearer2SupportConceptList.DoForEach(cb2SC =>
{
cb2SC.CustomerReferenceNumber = null;
cb2SC.Notice = null;
cb2SC.InsUser = anonimyzedName;
cb2SC.UdpUser = anonimyzedName;
});
});
2020-04-08 14:25:01 +02:00
if (customer.Oid != null)
{
var bargeldKassen = DAOFactory.SearchDAO.FindBargeldkasse(TableID.Customer, customer.Oid.Value);
DAOFactory.GenericDAO.Delete(bargeldKassen);
var fileAttachments = DAOFactory.SearchDAO.FindFileAttachments(TableID.Customer, customer.Oid.Value);
DAOFactory.GenericDAO.Delete(fileAttachments);
}
DAOFactory.GenericDAO.Update(customer);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
// TODO: Den ersten Buchstaben des Klienten und den Namen des Mitarbeiters speichern, der ihn gelöscht hat. -> Neue Tabelle
public void DeleteCustomerForGood(long pCustomerOid)
{
try
{
var deletionHistoryEntry = new DeletionHistory();
var appointments = DAOFactory.SearchDAO.FindAppointmentsForCustomer(pCustomerOid);
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(pCustomerOid);
var supportConceptOids = customer.SupportConcepts.Select(sc => sc.Oid.Value).ToList();
UserDC user;
2020-04-08 14:25:01 +02:00
if (LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null)
{
user = MapperFactory.UserDC_User.MapToNewDC(LoggedInUserOperationContextExt.Current.User);
}
else
{
user = MapperFactory.UserDC_User.MapToNewDC(SessionFacade.LoggedInUser);
}
2020-04-08 14:25:01 +02:00
if (user != null)
{
string initial;
2020-04-08 14:25:01 +02:00
if (customer.Person.FirstName.Length > 0)
{
initial = customer.Person.FirstName[0].ToString();
}
2020-04-08 14:25:01 +02:00
else if (customer.Person.LastName.Length > 0)
{
initial = customer.Person.LastName[0].ToString();
}
2020-04-08 14:25:01 +02:00
else if (customer.CustomerAlias?.Length > 0)
{
initial = customer.CustomerAlias[0].ToString();
}
else
{
initial = "unbekannt";
}
deletionHistoryEntry.DeletingEmployeeName = $"{user.Employee.FirstName} {user.Employee.LastName}";
deletionHistoryEntry.DeletedEntityName = initial;
deletionHistoryEntry.DeletedEntityTableId = TableID.Customer;
}
appointments.DoForEach(app => app.CustomerList.Remove(customer));
DAOFactory.GenericDAO.Update(appointments);
var costBearer2SupportConcepts = new List<CostBearer2SupportConcept>();
var groupsToGetReferencesRemoved = new List<GroupOfPeople>();
2020-04-08 14:25:01 +02:00
foreach (var sc in customer.SupportConcepts)
{
2020-04-08 14:25:01 +02:00
foreach (var cb2sc in sc.CostBearer2SupportConceptList)
{
groupsToGetReferencesRemoved.AddRangeIfElementsNotIn(DAOFactory.SearchDAO.GroupOfPeopleForSupportConcept(cb2sc.Oid.Value));
costBearer2SupportConcepts.AddIfNotIn(cb2sc);
}
}
2020-04-08 14:25:01 +02:00
foreach (var group in groupsToGetReferencesRemoved)
{
group.CostBearer2SupportConceptList.RemoveRange(costBearer2SupportConcepts);
}
DAOFactory.GenericDAO.Update(groupsToGetReferencesRemoved);
DAOFactory.GenericDAO.Update(customer.SupportConcepts);
var additionalServiceGroups = DAOFactory.SearchDAO.GetAdditionalServiceGroupOfPeopleForCustomer(customer.Oid.Value);
2020-04-08 14:25:01 +02:00
foreach (var additionalServiceGroup in additionalServiceGroups)
{
additionalServiceGroup.CustomerList.Remove(customer);
}
DAOFactory.GenericDAO.Update(additionalServiceGroups);
var additionalServiceBookings = DAOFactory.SearchDAO.GetAllAdditionalServiceBookingsForCustomer(customer.Oid.Value);
DAOFactory.GenericDAO.Delete(additionalServiceBookings);
var images2delete = customer.Person.Images;
customer.Person.Images.Clear();
DAOFactory.GenericDAO.Delete(images2delete);
DAOFactory.GenericDAO.Update(customer);
customer.SupportConcepts.DoForEach(s => s.CostBearer2SupportConceptList?.Clear());
2020-04-08 14:25:01 +02:00
foreach (var assessmentSheetCategory in customer.AssessmentSheetCategoryList)
{
assessmentSheetCategory.Customers.Remove(customer);
}
var assessmentSheetEntries = DAOFactory.SearchDAO.GetAssessmentSheetEntriesForCustomer(customer.Oid.Value, DateTime.MinValue, DateTime.MaxValue);
var invoiceBases2Delete = DAOFactory.SearchDAO.GetInvoiceBasesBySupportConceptOids(supportConceptOids);
invoiceBases2Delete.DoForEach(ib => ib.InvoiceItems.Clear());
var settlementInvoices = DAOFactory.SearchDAO.GetSettlementInvoiceBySupportConceptOids(supportConceptOids);
var serviceInvoices = DAOFactory.SearchDAO.GetServiceInvoicesByInvoiceBaseOids(invoiceBases2Delete.Select(s => s.Oid.Value).ToList());
var invoiceItems = new List<InvoiceItem>();
invoiceBases2Delete.DoForEach(ib => invoiceItems.AddRange(ib.InvoiceItems));
DAOFactory.GenericDAO.Update(invoiceBases2Delete);
2020-04-08 14:25:01 +02:00
if (supportConceptOids.Any())
{
var tasksAndAppointments2Delete = DAOFactory.SearchDAO.GetTasksAndAppointmentsBySupportConceptOids(supportConceptOids);
DAOFactory.GenericDAO.Delete(tasksAndAppointments2Delete);
}
DAOFactory.GenericDAO.Delete(invoiceItems);
DAOFactory.GenericDAO.Delete(settlementInvoices);
DAOFactory.GenericDAO.Delete(serviceInvoices);
invoiceBases2Delete = DAOFactory.SearchDAO.GetInvoiceBasesBySupportConceptOids(supportConceptOids);
DAOFactory.GenericDAO.Delete(invoiceBases2Delete);
var customer2Tokens2Delete = DAOFactory.SearchDAO.GetCustomer2TokensByCustomerOid(customer.Oid.Value);
DAOFactory.GenericDAO.Delete(customer2Tokens2Delete);
DAOFactory.GenericDAO.Delete(assessmentSheetEntries);
DAOFactory.GenericDAO.Update(customer);
DAOFactory.GenericDAO.Delete(customer.SupportConcepts);
DAOFactory.GenericDAO.Delete(DAOFactory.GenericDAO.LoadByID<Customer>(customer.Oid.Value));
2020-04-08 14:25:01 +02:00
if (deletionHistoryEntry.DeletingEmployeeName != null)
{
DAOFactory.GenericDAO.Insert(deletionHistoryEntry);
}
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
// TODO: implementieren!
public void DeletePersonForGood(long pPersonOid)
{
try
{
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
// TODO: implementieren!
public void DeleteEmployeeForGood(long pEmployeeOid)
{
try
{
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
// TODO: implementieren!
public void AnonymizeEmployee(long pEmployeeOid)
{
try
{
var employee = DAOFactory.GenericDAO.LoadByID<Employee>(pEmployeeOid);
2020-04-08 14:25:01 +02:00
if (employee.Person.Oid != null)
{
AnonymizePerson(employee.Person.Oid.Value);
}
var fileAttachments = DAOFactory.SearchDAO.FindFileAttachments(TableID.Employee, pEmployeeOid);
DAOFactory.GenericDAO.Delete(fileAttachments);
employee.AbsenceTimes?.Clear();
DAOFactory.GenericDAO.Update(employee);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
// TODO: implementieren!
public void DeleteAppointmentsInInterval(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, DateTime pIntervalEnd, List<long> pSelectedEmployees, List<long> pSelectedCustomers, List<long> pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, Dictionary<UserRightType, bool> pUserRights)
{
try
{
var appointments2Delete = DAOFactory.SearchDAO.LoadFilteredAppointments(pHasRightToSeeAllEmployeeAppointments, pEmployeeOid, new DateTime(1, 1, 1), pIntervalEnd, pSelectedEmployees, pSelectedCustomers, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, true);
DAOFactory.GenericDAO.Delete(appointments2Delete);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public string GetMessageFromServer(TableID pObjectTid, long? pObjectOid, MessageType pMessageType)
{
try
{
var actualTextMessage = "";
const string foreground = "Foreground=\"Red\"";
const string fontWeight = "FontWeight=\"Bold\"";
2020-04-08 14:25:01 +02:00
if (pObjectTid == TableID.Customer && pMessageType == MessageType.Anonymization)
{
actualTextMessage = "Achtung!&#x0a;&#x0a;Das Anonymisieren eines Klienten kann nicht rückgängig gemacht werden!&#x0a;";
}
2020-04-08 14:25:01 +02:00
if (pObjectTid == TableID.Customer && pMessageType == MessageType.DeleteForGood)
{
actualTextMessage = "Achtung!&#x0a;&#x0a;Das endgültige Löschen eines Klienten kann nicht rückgängig gemacht werden!&#x0a;";
}
2020-04-08 14:25:01 +02:00
if (pObjectTid == TableID.Person && pMessageType == MessageType.DeleteForGood)
{
actualTextMessage = "Achtung!&#x0a;&#x0a;Das endgültige Löschen einer Person kann nicht rückgängig gemacht werden!&#x0a;";
}
2020-04-08 14:25:01 +02:00
if (pObjectTid == TableID.Employee && pMessageType == MessageType.Anonymization)
{
actualTextMessage = "Achtung!&#x0a;&#x0a;Das Anonymisieren eines Mitarbeiters kann nicht rückgängig gemacht werden!&#x0a;";
}
2020-04-08 14:25:01 +02:00
if (pObjectTid == TableID.Employee && pMessageType == MessageType.DeleteForGood)
{
actualTextMessage = "Achtung!&#x0a;&#x0a;Das endgültige Löschen eines Mitarbeiters kann nicht rückgängig gemacht werden!&#x0a;";
}
return $"<TextBlock xmlns =\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" Grid.Row=\"0\" TextAlignment=\"Center\" {fontWeight} TextWrapping=\"Wrap\" Background=\"Transparent\" FontSize=\"14\" Margin=\"3\" {foreground} HorizontalAlignment=\"Center\" Text=\"{actualTextMessage}\"/>";
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public string GetMessageFromServerForDeletingAppointments(bool pHasRightToSeeAllEmployeeAppointments, long pEmployeeOid, DateTime pIntervalEnd, List<long> pSelectedEmployees, List<long> pSelectedCustomers, List<long> pSelectedResources, bool pEmployeesOnly, bool pCustomersOnly, bool pResourcesOnly, bool pPrivateAppointmentsOnly, bool pOnlyMyAppointments, Dictionary<UserRightType, bool> pUserRights)
{
var appointments2Delete = DAOFactory.SearchDAO.LoadFilteredAppointments(pHasRightToSeeAllEmployeeAppointments, pEmployeeOid, new DateTime(1, 1, 1), pIntervalEnd, pSelectedEmployees, pSelectedCustomers, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, true);
var actualTextMessage = $"Achtung!&#x0a;&#x0a;Das Löschen von {appointments2Delete.Count} {(appointments2Delete.Count == 1 ? "Termin" : "Terminen")} bis zum {pIntervalEnd.ToShortDateString()} kann nicht rückgängig gemacht werden!&#x0a;";
return $"<TextBlock xmlns =\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" Grid.Row=\"0\" TextAlignment=\"Center\" FontWeight=\"Bold\" TextWrapping=\"Wrap\" Background=\"Transparent\" FontSize=\"14\" Margin=\"3\" Foreground=\"Red\" HorizontalAlignment=\"Center\" Text=\"{actualTextMessage}\"/>";
}
public SignatureDC GetSignature(long pSignatureOid)
{
try
{
var lOriginal = DAOFactory.GenericDAO.LoadByID<Signature>(pSignatureOid);
return MapperFactory.SignatureDC_Signature.MapToNewDC(lOriginal);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2019-07-10 10:11:10 +02:00
public List<BudgetDC> GetAllBudgets()
{
try
{
var list = DAOFactory.GenericDAO.GetAllActive<Budget>();
return MapperFactory.BudgetDC_Budget.MapToNewDCs(list);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2019-07-10 10:11:10 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertNewBudget(List<BudgetDC> budgets)
{
try
{
var budget = MapperFactory.BudgetDC_Budget.MapToNewEntities(budgets);
DAOFactory.GenericDAO.Insert(budget);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2019-07-10 10:11:10 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateBudget(Dictionary<long, long> pOid2Version)
{
try
{
ServiceLogic.SetActivationType<Budget>(pOid2Version, ActivationTypeId.Deleted);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2019-07-10 10:11:10 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateBudget(List<BudgetDC> budgets)
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<Budget>(budgets.Select(sc => sc.BudgetOid.Value));
MapperFactory.BudgetDC_Budget.MergeWithEntitys(budgets, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2019-07-10 10:11:10 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public FlexibleReportResultDC GetFlexibleReportResult(FlexibleReportFilterDC filter)
2019-07-10 10:11:10 +02:00
{
try
{
var s = PluginLoader.FindClass<FlexibleReportService>();
return s.GetAllFlexibleReportEntrys(filter);
2019-07-10 10:11:10 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
2019-07-10 10:11:10 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<FlexibleReportLayoutDC> GetFlexibleReportLayouts()
2019-07-10 10:11:10 +02:00
{
var result = new List<FlexibleReportLayoutDC>();
2019-07-10 10:11:10 +02:00
2020-04-08 14:25:01 +02:00
foreach (var item in DAOFactory.GenericDAO.GetAllActive<FlexibleReportLayout>().Where(x => x.CreatorOid == LoggedInUserOperationContextExt.Current.User.Oid.Value))
2019-07-10 10:11:10 +02:00
{
result.Add(MapperFactory.FlexibleReportLayoutDC_FlexibleReportLayout.MapToNewDC(item));
2019-07-10 10:11:10 +02:00
}
return result;
2019-07-10 10:11:10 +02:00
}
public void InsertNewFlexibleReportLayout(FlexibleReportLayoutDC flexibleReportLayoutDC)
2019-07-10 10:11:10 +02:00
{
try
2019-07-10 10:11:10 +02:00
{
var flexibleReportLayout = MapperFactory.FlexibleReportLayoutDC_FlexibleReportLayout.MapToNewEntity(flexibleReportLayoutDC);
flexibleReportLayout.CreatorOid = LoggedInUserOperationContextExt.Current.User.Oid.Value;
DAOFactory.GenericDAO.Insert(flexibleReportLayout);
2019-07-10 10:11:10 +02:00
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateFlexibleReportLayouts(IList<FlexibleReportLayoutDC> flexibleReportLayouts)
{
try
2019-07-10 10:11:10 +02:00
{
//Enity
var flexOriList = DAOFactory.GenericDAO.GetAllActive<FlexibleReportLayout>().Where(x => x.CreatorOid == LoggedInUserOperationContextExt.Current.User.Oid.Value);
//DC
var flexNewList = flexibleReportLayouts;
2019-07-10 10:11:10 +02:00
var toUpdate = new List<FlexibleReportLayout>();
var toDelete = new List<FlexibleReportLayout>();
2019-07-10 10:11:10 +02:00
2020-04-08 14:25:01 +02:00
foreach (var flexOri in flexOriList)
2019-07-10 10:11:10 +02:00
{
bool gefunden = false;
2020-04-08 14:25:01 +02:00
foreach (var flexNew in flexNewList)
{
2020-04-08 14:25:01 +02:00
if (flexOri.Oid == flexNew.FlexibleReportOid)
{
gefunden = true;
2020-04-08 14:25:01 +02:00
if (flexOri.LayoutName != flexNew.LayoutName)
{
flexOri.LayoutName = flexNew.LayoutName;
DAOFactory.GenericDAO.Update(flexOri);
}
break;
}
}
2020-04-08 14:25:01 +02:00
if (!gefunden)
DAOFactory.GenericDAO.Deactivate(flexOri);
}
}
2020-04-08 14:25:01 +02:00
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public bool CheckForOverlappingSubstitutionEntries(DateTime startDate, DateTime endDate, long? employeeOid, long? customerOid, long? substitutionOid)
{
try
{
return DAOFactory.SearchDAO.CheckForOverlappingSubstitutions(employeeOid, customerOid, startDate, endDate, substitutionOid);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2019-08-12 16:49:42 +02:00
public IList<HomeViewPanelDC> GetHomeViewPanels()
{
try
{
return MapperFactory.HomeViewPanelDC_HomeViewPanel.MapToNewDCs(
DAOFactory.GenericDAO.GetAllActive<HomeViewPanel>());
}
2020-04-08 14:25:01 +02:00
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public bool CheckForOverlappingAbsenceTimes(DateTime startDate, DateTime endDate, long? employeeOid, long? customerOid)
{
try
{
return DAOFactory.SearchDAO.CheckForOverlappingAbsenceTimes(startDate, endDate, employeeOid, customerOid);
}
catch (Exception e)
2019-08-12 16:49:42 +02:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
2020-04-08 14:25:01 +02:00
public IList<ValueListEntryDC> GetIcf()
{
try
2019-08-12 16:49:42 +02:00
{
//string key = "2BT%eGprU\"E$!\"5Flq@l^^KZaYa\"u/icq@MMSWsy$XFo@#q3Arbnx@Plzv7s\\+$a";
2019-09-17 17:44:57 +02:00
//string url = "https://support.bewoplaner.de/api/geticf.php?k=[TENANT]";
2019-09-17 17:44:57 +02:00
//if (MultitenancyOperationContextExt.Current != null)
//{
// url = url.Replace("[TENANT]", MultitenancyOperationContextExt.Current.Tenant);
//}
//else
//{
// url = url.Replace("[TENANT]", SessionFacade.Tenant);
//}
2019-09-17 17:44:57 +02:00
//String json = "";
2019-09-17 17:44:57 +02:00
//using (var client = new WebClient())
//{
// byte[] response = client.UploadValues(url, "POST", new NameValueCollection()
// {
// {"API-KEY", key}
// });
2019-09-17 17:44:57 +02:00
// json = System.Text.Encoding.ASCII.GetString(response);
2019-09-17 17:44:57 +02:00
//}
2019-09-17 17:44:57 +02:00
//[{"Oid":"1","Code":"","Bezeichnung":"Kapitel 1: Lernen und Wissensanwendung","Beschreibung":"","ParentOID":""}
//var icfentry = new { Oid = 0, Code = "", Bezeichnung = "", Beschreibung = "", ParentOid = 0 };
//var icfList = JsonConvert.DeserializeObject<List<Icf>>(json);
2019-09-17 17:44:57 +02:00
////var rawList = DAOFactory.GenericDAO.GetAll<Icf>().ToList();
//var icfs = new List<ValueListEntryDC>
//{
// new ValueListEntryDC() {ParentOid = -1, TypeDescription = "ICF"}
//};
//icfs.AddRange(icfList.Select(x => new ValueListEntryDC()
//{
// ValueListEntryOid = x.Oid,
// ParentOid = x.ParentOID,
// TypeDescription = x.Bezeichnung,
// Abbreviation = x.Code,
// Notice = x.Beschreibung
//}));
return ICFDAO.GetIcf();
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public IList<ReportTemplateDC> GetReportTemplates(string url)
{
try
{
if (url.IsNullOrEmpty())
return null;
var index = url.IndexOf("type=") + 5;
var typeString = url.Substring(index);
if (!Enum.TryParse(typeString, out ReportTypes reportType))
return null;
2020-04-08 14:25:01 +02:00
return MapperFactory.ReportTemplateDC_ReportTemplate.MapToNewDCs(DAOFactory.GenericDAO
.GetAllActive<ReportTemplate>().Where(x => x.ReportTemplateType == reportType));
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
2019-08-12 16:49:42 +02:00
}
}
2019-12-12 18:30:58 +01:00
//public Tuple<IList<AbsenceTimeDC>, IList<EmployeeDC>> GetAbsenceTimeDCEmployee11()
//{
// try
// {
// return GetAbsenceTimeDCEmployee41(DateTime.MinValue, DateTime.MaxValue, null, null);
// }
// catch (Exception e)
// {
// throw Utils.CreateBeWoFaultException(e);
// }
//}
//public Tuple<IList<AbsenceTimeDC>, IList<EmployeeDC>> GetAbsenceTimeDCEmployee21(List<AbsenceReasonDC> absenceReasons, List<EmploymentTypeDC> employmentTypes)
//{
// try
// {
// return GetAbsenceTimeDCEmployee41(DateTime.MinValue, DateTime.MaxValue, absenceReasons, employmentTypes);
// }
// catch (Exception e)
// {
// throw Utils.CreateBeWoFaultException(e);
// }
//}
//public Tuple<IList<AbsenceTimeDC>, IList<EmployeeDC>> GetAbsenceTimeDCEmployee31(DateTime start, DateTime end)
//{
// try
// {
// return GetAbsenceTimeDCEmployee41(start, end, null, null);
// }
// catch (Exception e)
// {
// throw Utils.CreateBeWoFaultException(e);
// }
//}
//public Tuple<IList<AbsenceTimeDC>, IList<EmployeeDC>> GetAbsenceTimeDCEmployee41(DateTime start, DateTime end, List<AbsenceReasonDC> absenceReasons, List<EmploymentTypeDC> employmentTypes)
//{
// try
// {
// var absenceReasonIDs = (absenceReasons == null || !absenceReasons.Any()) ? null : absenceReasons.Select(x => x.AbsenceReasonOid.Value).ToList();
// var employmentTypeIDs = (employmentTypes == null || !employmentTypes.Any()) ? null : employmentTypes.Select(x => x.EmploymentTypeOid.Value).ToList();
// return GetAbsenceTimeDCEmployee51(start, end, absenceReasonIDs, employmentTypeIDs);
// }
// catch (Exception e)
// {
// throw Utils.CreateBeWoFaultException(e);
// }
//}
//public Tuple<IList<AbsenceTimeDC>, IList<EmployeeDC>> GetAbsenceTimeDCEmployee51(DateTime start, DateTime end, List<long> absenceReasonIDs, List<long> employmentTypeIDs)
//{
// try
// {
// Func<AbsenceTime, bool> endHasValueMatch = (x) => x.End.HasValue;
// Func<AbsenceTime, bool> leftMatch;
// Func<AbsenceTime, bool> rightMatch;
// Func<AbsenceTime, bool> absenceReasonMatch;
// Func<Employee, bool> employmentTypeMatch;
// if (start != DateTime.MinValue) leftMatch = (x) => start <= x.End;
// else leftMatch = (x) => true;
// if (end != DateTime.MaxValue) rightMatch = (x) => end >= x.Start;
// else rightMatch = (x) => true;
// if (absenceReasonIDs != null) absenceReasonMatch = (x) => absenceReasonIDs.Contains(x.AbsenceReason.Oid.Value);
// else absenceReasonMatch = (x) => true;
// if (employmentTypeIDs != null) employmentTypeMatch = (x) => employmentTypeIDs.Contains(x.Oid.Value);
// else employmentTypeMatch = (x) => true;
// Func<AbsenceTime, bool> absenceMatch = (x) => rightMatch(x) && (!endHasValueMatch(x) || leftMatch(x)) && absenceReasonMatch(x);
// //startMatch(x) && (!endHasValueMatch(x) || endMatch(x)) && absenceReasonMatch(x);
// var res1 = new List<AbsenceTime>();
// var res2 = new HashSet<Employee>();
// var allAbsences = DAOFactory.GenericDAO.GetAllActive<AbsenceTime>().Where(x => x.EmployeeOid.HasValue);
// var allEmployees = DAOFactory.GenericDAO.GetAllActive<Employee>().ToList();
// foreach (var absence in allAbsences.Where(absenceMatch)) //allAbsences.Where(absenceMatch))
// {
// var employee = allEmployees.Find(x => x.Oid == absence.EmployeeOid.Value);
// if (!employmentTypeMatch(employee))
// continue;
// res1.Add(absence);
// res2.Add(employee);
// }
// return new Tuple<IList<AbsenceTimeDC>, IList<EmployeeDC>>(MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(res1), MapperFactory.EmployeeDC_Employee.MapToNewDCs(res2.ToList()));
// }
// catch (Exception e)
// {
// throw Utils.CreateBeWoFaultException(e);
// }
//}
2019-12-12 18:30:58 +01:00
public IList<AbsenceReasonDC> GetAllAbsenceReason()
{
2020-09-30 10:00:31 +02:00
try
{
var list = DAOFactory.GenericDAO.GetAllActive<AbsenceReason>();
return MapperFactory.AbsenceReasonDC_AbsenceReason.MapToNewDCs(list);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
2019-12-12 18:30:58 +01:00
}
public AbsenceTimeDC UpdateAbsenceTimeWithReturn(AbsenceTimeDC abs)
{
try
{
var testbefore = abs.AbsenceTimeVersion;
var x = DAOFactory.GenericDAO.LoadByID<AbsenceTime>(abs.AbsenceTimeOid.Value);
MapperFactory.AbsenceTimeDC_AbsenceTime.MergeWithEntity(abs, x);
DAOFactory.GenericDAO.Update(x);
var y = DAOFactory.GenericDAO.LoadByID<AbsenceTime>(abs.AbsenceTimeOid.Value);
var z = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDC(y);
return z;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public AbsenceTimeDC InsertAbsenceTimeWithReturn(AbsenceTimeDC absenceTimeDC)
{
try
{
var emp = DAOFactory.GenericDAO.GetByID<Employee>(absenceTimeDC.EmployeeOid.Value);
emp.AbsenceTimes.Add(MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewEntity(absenceTimeDC));
DAOFactory.GenericDAO.Update(emp);
emp = DAOFactory.GenericDAO.LoadByID<Employee>(absenceTimeDC.EmployeeOid.Value);
var newAbsenceTimeOid = emp.AbsenceTimes.Max(x => x.Oid);
var newAbsenceTimeDC = DAOFactory.GenericDAO.GetByID<AbsenceTime>(newAbsenceTimeOid.Value);
newAbsenceTimeDC.EmployeeOid = emp.Oid;
return MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDC(newAbsenceTimeDC);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteAbsenceTime(AbsenceTimeDC absenceTimeDC)
{
try
{
var emp = DAOFactory.GenericDAO.GetByID<Employee>(absenceTimeDC.EmployeeOid.Value);
emp.AbsenceTimes.Remove(emp.AbsenceTimes.First(a => a.Oid == absenceTimeDC.AbsenceTimeOid));
DAOFactory.GenericDAO.Update(emp);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<SupportConceptCostBearerRelDC> GetSupportConceptCostBearerRelDCsByOids(List<long> supportConcept2CostbearerOids)
{
var costbearer2SupportConcepts = DAOFactory.SearchDAO.FindCostBearer2SupportConceptsByOids(supportConcept2CostbearerOids);
return MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDCs(costbearer2SupportConcepts);
}
2020-09-30 10:00:31 +02:00
public List<DienstInfoDC> GetAllDienste()
2020-04-08 14:25:01 +02:00
{
2020-09-30 10:00:31 +02:00
try
{
var temp = DAOFactory.GenericDAO.GetAllActive<DienstInfo>();
return MapperFactory.DienstInfoDC_DienstInfo.MapToNewDCs(temp);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
2020-04-08 14:25:01 +02:00
}
2020-09-30 10:00:31 +02:00
public void InsertNewDienst(List<DienstInfoDC> dienst)
2020-04-08 14:25:01 +02:00
{
try
{
2020-09-30 10:00:31 +02:00
var temp = MapperFactory.DienstInfoDC_DienstInfo.MapToNewEntities(dienst);
2020-04-08 14:25:01 +02:00
DAOFactory.GenericDAO.Insert(temp);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateDienst(Dictionary<long, long> pOid2Version)
{
try
{
2020-09-30 10:00:31 +02:00
ServiceLogic.SetActivationType<DienstInfo>(pOid2Version, ActivationTypeId.Deleted);
2020-04-08 14:25:01 +02:00
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2020-09-30 10:00:31 +02:00
public void UpdateDienst(List<DienstInfoDC> dienste)
2020-04-08 14:25:01 +02:00
{
try
{
2020-09-30 10:00:31 +02:00
var temp = DAOFactory.GenericDAO.LoadByIDs<DienstInfo>(dienste.Select(sc => sc.Oid.Value));
2020-04-08 14:25:01 +02:00
2020-09-30 10:00:31 +02:00
MapperFactory.DienstInfoDC_DienstInfo.MergeWithEntitys(dienste, temp);
2020-04-08 14:25:01 +02:00
DAOFactory.GenericDAO.Update(temp);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<RatingTypeDC> GetAllRatingTypes()
{
try
{
var list = DAOFactory.GenericDAO.GetAllActive<RatingType>();
var result = MapperFactory.RatingTypeDC_RatingType.MapToNewDCs(list);
return result.OrderBy(r => r.Position).ToList();
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertNewRatingType(List<RatingTypeDC> ratingTypes)
{
try
{
var ratingType = MapperFactory.RatingTypeDC_RatingType.MapToNewEntities(ratingTypes);
DAOFactory.GenericDAO.Insert(ratingType);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeactivateRatingType(Dictionary<long, long> pOid2Version)
{
try
{
ServiceLogic.SetActivationType<RatingType>(pOid2Version, ActivationTypeId.Deleted);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateRatingType(List<RatingTypeDC> ratingTypes)
{
try
{
var lOriginals = DAOFactory.GenericDAO.LoadByIDs<RatingType>(ratingTypes.Select(r => r.RatingTypeOid.Value));
MapperFactory.RatingTypeDC_RatingType.MergeWithEntitys(ratingTypes, lOriginals);
DAOFactory.GenericDAO.Update(lOriginals);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<GoalRatingDC> FetchServiceRecordRatings(long? supportConceptOid, long? costBearer2SupportConceptOid, long? supportConceptApprovalPeriodOid, long? serviceCategoryOid, DateTime? start, DateTime? end)
{
try
{
var types = new List<ValueListEntryType>();
types.Add(ValueListEntryType.SupportConceptGoalCategoryType);
types.Add(ValueListEntryType.SupportConceptIndividualGoalCategoryType);
var goals = DAOFactory.SearchDAO.FindValueListEntries(types);
Dictionary<long, ValueListEntryDC> oid2Entry = new Dictionary<long, ValueListEntryDC>();
foreach (var valueListEntry in goals)
{
if (!oid2Entry.ContainsKey(valueListEntry.Oid.Value))
{
oid2Entry.Add(valueListEntry.Oid.Value, MapperFactory.ValueListEntryDC_ValueListEntry.MapToNewDC(valueListEntry));
}
}
var allRatingTypes = MapperFactory.RatingTypeDC_RatingType.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<RatingType>());
List<GoalRatingDC> result = new List<GoalRatingDC>();
var records = DAOFactory.SearchDAO.FindServiceRecords(supportConceptOid, costBearer2SupportConceptOid, serviceCategoryOid, start, end);
foreach (var serviceRecord in records)
{
var dc = CreateServiceRecordDCCompact(serviceRecord);
if (dc.Goals != null)
{
foreach (var ve in dc.Goals)
{
if (ve.RatingTypeOid.HasValue)
{
var ratingtype = allRatingTypes.FirstOrDefault(r => r.RatingTypeOid.HasValue && r.RatingTypeOid == ve.RatingTypeOid);
if (ratingtype != null)
{
var gr = new GoalRatingDC();
gr.GoalEntry = ve;
gr.ServiceRecord = dc;
gr.RatingType = ratingtype;
if (ve.Type == ValueListEntryType.SupportConceptGoalType ||
ve.Type == ValueListEntryType.SupportConceptIndividualGoalType)
{
//Bei Maßnahmen nimm das übergeordnete Ziel
if (ve.ParentOid.HasValue && oid2Entry.ContainsKey(ve.ParentOid.Value))
{
gr.GoalEntry = oid2Entry[ve.ParentOid.Value];
}
}
result.Add(gr);
}
}
}
}
}
return result;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2020-09-30 10:00:31 +02:00
public List<DienstBlockDC> GetDienstEintraege(long wOid, int year, int month)
{
try
{
var res = new List<DienstBlockDC>();
var date = new DateTime(year, month, 1);
var date2 = date.AddMonths(1).AddTicks(-1);
var dienstEintraege = DAOFactory.GenericDAO.GetAllActive<DienstEintrag>().Where(x =>
x.WohnheimOid == wOid &&
x.Datum.Month == month &&
x.Datum.Year == year);
var dienstEintraegeDC = MapperFactory.DienstEintragDC_DienstEintrag.MapToNewDCs(dienstEintraege);
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wOid);
var whDC = MapperFactory.CompactWohnheimDC_Wohnheim.MapToNewDC(wh);
//var empOids = new HashSet<long>(dienstEintraege.Select(x => x.EmployeeOid)).ToList();
//var emps = DAOFactory.GenericDAO.GetActiveByIDs<Employee>(wh);
//var empsDC = MapperFactory.EmployeeDC_Employee.MapToNewDCs(emps);
var emps = wh.Employee2WohnheimList.Select(x => x.Employee);
var empsDC = MapperFactory.EmployeeDC_Employee.MapToNewDCs(emps).Distinct();
foreach (var emp in empsDC)
{
var contracts = emp.Contracts.Where(x => (!x.EntryDate.HasValue || x.EntryDate.Value <= date2) &&
(!x.ContractEndDate.HasValue || x.ContractEndDate.Value >= date))
.OrderBy(x => x.EntryDate)
.ToList();
if (!contracts.Any())
continue;
var zeile = new DienstBlockDC
{
Employee = emp,
Contracts = contracts,
Wohnheim = whDC,
DienstDictArray = new Dictionary<int, long>[3]
};
for (int i = 0; i < zeile.DienstDictArray.Length; i++)
{
var empDienste = dienstEintraegeDC
.Where(x => x.EmployeeOid == emp.EmployeeOid && x.Zeile == i); //i + 1 wegen der Statuszeile, die jetzt die vorherige erste Zeile mach unten geschoben hat
2020-09-30 10:00:31 +02:00
zeile.DienstDictArray[i] = empDienste
.ToDictionary(x => x.Datum.Day, x => x.DienstOid);
}
res.Add(zeile);
}
return res;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2020-09-30 10:00:31 +02:00
public void InsertNewDienstEintrag(DienstEintragDC dienstEintrag)
{
try
{
DAOFactory.GenericDAO.Insert(MapperFactory.DienstEintragDC_DienstEintrag.MapToNewEntity(dienstEintrag));
2020-09-30 10:00:31 +02:00
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateDienstEintrag(DienstEintragDC dienstEintrag)
{
try
{
throw new NotImplementedException();
2020-09-30 10:00:31 +02:00
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteDienstEintrag(long empId, long wohnId, int zeile, DateTime date)
{
try
{
var toDel = DAOFactory.GenericDAO.GetAll<DienstEintrag>()
.FirstOrDefault(x =>
x.EmployeeOid == empId &&
x.WohnheimOid == wohnId &&
x.Zeile == zeile &&
x.Datum == date);
if (toDel != null)
DAOFactory.GenericDAO.Delete(toDel);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteCertainDienstEintragOutOfTable(long dienstEintragOid)
{
try
{
var toDelete = DAOFactory.GenericDAO.GetAll<DienstEintrag>();
for (int i = toDelete.Count - 1; i >= 0; i--)
{
if (toDelete[i].DienstOid == dienstEintragOid)
DAOFactory.GenericDAO.Delete(toDelete[i]);
}
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
2020-09-30 10:00:31 +02:00
public virtual List<FeiertagDC> ErstelleDefaultFeiertage(int year)
{
try
{
var vs = PluginLoader.FindClass<VacationService>();
var list = vs.GetFeiertage(year, "NRW");
return list;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<AbsenceTimeDC> GetAbsenceTimeVacationByWohnheim(long wohnId, int year, int month)
{
try
{
var date = new DateTime(year, month, 1);
var date2 = date.AddMonths(1).AddTicks(-1);
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wohnId);
var emps = wh.Employee2WohnheimList.Select(x => x.Employee.Oid);
var allAbsences = DAOFactory.GenericDAO.GetAllActive<AbsenceTime>().Where(x =>
x.EmployeeOid.HasValue);
var res = allAbsences.Where(x => emps.Contains(x.EmployeeOid.Value) && x.Start <= date2 && (!x.End.HasValue || x.End.Value >= date));
return MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(res);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertConfirmationReceiptSignature(ConfirmationReceiptSignatureDC confirmationReceiptSignature)
{
try
{
var confRecSig = MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewEntity(confirmationReceiptSignature);
DAOFactory.GenericDAO.Insert(confRecSig);
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public void InsertConfirmationReceiptSignatures(List<ConfirmationReceiptSignatureDC> confirmationReceiptSignatures)
{
try
{
var confRecSigs = MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewEntities(confirmationReceiptSignatures);
DAOFactory.GenericDAO.Insert(confRecSigs);
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public void DeleteConfirmationReceiptSignature(long confirmationReceiptSignatureOid)
{
try
{
var confirmationReceiptSignatureToDelete = DAOFactory.GenericDAO.LoadByID<ConfirmationReceiptSignature>(confirmationReceiptSignatureOid);
DAOFactory.GenericDAO.Delete(confirmationReceiptSignatureToDelete);
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public ConfirmationReceiptSignatureDC UpdateConfirmationReceiptSignature(ConfirmationReceiptSignatureDC confirmationReceiptSignature)
{
try
{
var confirmationReceiptSignatureToUpdate = DAOFactory.GenericDAO.LoadByID<ConfirmationReceiptSignature>(confirmationReceiptSignature.ConfirmationReceiptSignatureOid.Value);
MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MergeWithEntity(confirmationReceiptSignature, confirmationReceiptSignatureToUpdate);
DAOFactory.GenericDAO.Update(confirmationReceiptSignatureToUpdate);
var updatedConfirmationReceiptSignature = DAOFactory.GenericDAO.LoadByID<ConfirmationReceiptSignature>(confirmationReceiptSignature.ConfirmationReceiptSignatureOid.Value);
return MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewDC(updatedConfirmationReceiptSignature);
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public List<ConfirmationReceiptSignatureDC> GetConfirmationReceiptSignaturesByEmployee(long employeeOid, DateTimeSpan timeSpan)
{
try
{
var signatures = DAOFactory.SearchDAO.GetConfirmationReceiptSignaturesByEmployee(employeeOid, timeSpan);
var signatureDCs = MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewDCs(signatures);
return signatureDCs;
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public List<ConfirmationReceiptSignatureDC> GetConfirmationReceiptSignaturesByServiceRecord(long serviceRecordOid)
{
try
{
var signatures = DAOFactory.SearchDAO.GetConfirmationReceiptSignaturesByServiceRecord(serviceRecordOid);
var signatureDCs = MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewDCs(signatures);
return signatureDCs;
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public List<EmployeeDC> GetAbsenceOverview(AbsenceOverviewFilterDC filter)
{
try
{
var res = new List<EmployeeDC>();
var vs = PluginLoader.FindClass<VacationService>();
var allEmployees = DAOFactory.GenericDAO.GetAllActive<Employee>().ToList();
foreach (var emp in allEmployees.OrderBy(x => x.Person.LastNameFirstName))
{
if (filter.EmploymentType != null)
if (!emp.Contracts.Any(x => x.EmploymentType != null && filter.EmploymentType.Contains(x.EmploymentType.Oid.Value)))
continue;
var dict = vs.BerechneUrlaubskonto(emp, filter.Year);
if (filter.AbsenceReasons != null)
emp.AbsenceTimes.RemoveRange(x => !filter.AbsenceReasons.Contains(x.AbsenceReason.Oid.Value));
var empDC = MapperFactory.EmployeeDC_Employee.MapToNewDC(emp);
2021-01-12 01:12:03 +01:00
if (dict.ContainsKey(filter.Year))
{
empDC.Urlaubskonto = dict[filter.Year];
}
else
{
int test = 0;
}
res.Add(empDC);
}
return res;
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public UrlaubskontoDC GetUrlaubskontoByEmployee(long empOid, int year)
{
try
{
var vs = PluginLoader.FindClass<VacationService>();
var emp = DAOFactory.GenericDAO.GetByID<Employee>(empOid);
return vs.BerechneUrlaubskonto(emp, year)[year];
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public List<ConfirmationReceiptSignatureDC> GetAllConfirmationReceiptSignatures()
{
try
{
return MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<ConfirmationReceiptSignature>());
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public List<ServiceRecordDC> GetServiceRecordsByIds(List<long> serviceRecordOids)
{
try
{
return MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDCs(DAOFactory.GenericDAO.LoadByIDs<ServiceRecord>(serviceRecordOids));
}
catch (Exception exception)
{
throw Utils.CreateBeWoFaultException(exception);
}
}
2020-11-10 02:25:15 +01:00
2020-11-10 02:25:15 +01:00
public String GetOwnChatSettingsUrl()
{
//var url = ConfigurationManager.AppSettings.Get("OwnChatSettingsUrl");
//url = url.Replace("[TENANT]", MultitenancyOperationContextExt.Current.Tenant);
//return url;
return "http://www.bewoplaner.de";
}
2020-11-09 17:55:01 +01:00
public bool HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(long employeeOid, IEnumerable<long> serviceRecordOids)
{
try
{
return DAOFactory.SearchDAO.HasConfirmationReceiptSignaturesByEmployeeAndServiceRecords(employeeOid, serviceRecordOids);
}
catch (Exception exception)
2020-11-09 17:55:01 +01:00
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public bool HasConfirmationReceiptSignatureByDateAndCustomer(long customerOid, DateTimeSpan timeSpan)
{
try
{
return DAOFactory.SearchDAO.HasConfirmationReceiptSignatureByDateAndCustomer(customerOid, timeSpan);
}
catch (Exception exception)
2020-11-09 17:55:01 +01:00
{
throw Utils.CreateBeWoFaultException(exception);
}
}
public ServiceCategoryDC LoadServiceCategory(long serviceCategoryOid)
{
try
{
var serviceCategory = DAOFactory.GenericDAO.LoadByID<ServiceCategory>(serviceCategoryOid);
return MapperFactory.ServiceCategoryDC_ServiceCategory.MapToNewDC(serviceCategory);
}
catch (Exception e)
2020-11-09 17:55:01 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
}
public List<ConfirmationReceiptSignatureDC> FindConfirmationReceiptSignaturesByEmployeeAndServiceRecords(long employeeOid, IEnumerable<long> serviceRecordOids)
{
try
{
var confirmationReceiptSignatureEntities = DAOFactory.SearchDAO.FindConfirmationReceiptSignaturesByEmployeeAndServiceRecords(employeeOid, serviceRecordOids);
return MapperFactory.ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.MapToNewDCs(confirmationReceiptSignatureEntities);
}
catch (Exception e)
2020-11-09 17:55:01 +01:00
{
throw Utils.CreateBeWoFaultException(e);
}
2020-11-10 02:25:15 +01:00
}
public List<VorlagentabelleDC> GetVorlagentabelleDCs()
{
try
{
var alleVorlagentabellen = DAOFactory.GenericDAO.GetAllActive<Vorlagentabelle>();
//var alle = DAOFactory.SearchDAO.GetAllActiveVorlagentabellen();
return MapperFactory.VorlagentabelleDC_Vorlagentabelle.MapToNewDCs(alleVorlagentabellen);
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
2021-01-13 11:21:51 +01:00
public DokumentvorlageDC InsertTemplate(DokumentvorlageDC dc)
{
try
{
if (dc.DokumentvorlageOid == null)
{
var entity = MapperFactory.DokumentvorlageDC_Dokumentvorlage.MapToNewEntity(dc);
DAOFactory.GenericDAO.Insert(entity);
2021-01-13 11:21:51 +01:00
return dc;
}
else
{
var origTemplate = DAOFactory.GenericDAO.LoadByID<Dokumentvorlage>((long)dc.DokumentvorlageOid);
MapperFactory.DokumentvorlageDC_Dokumentvorlage.MergeWithEntity(dc, origTemplate);
DAOFactory.GenericDAO.Update(origTemplate);
2021-01-13 11:21:51 +01:00
var updatedTemplateDC = MapperFactory.DokumentvorlageDC_Dokumentvorlage.MapToNewDC(origTemplate);
return updatedTemplateDC;
}
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
public List<PlatzhalterDC> GetPlatzhalterForCustomer()
{
try
{
List<PlatzhalterDC> liste = new List<PlatzhalterDC>();
2021-01-13 11:21:51 +01:00
PlatzhalterDC personendaten = new PlatzhalterDC()
{
2021-01-13 11:21:51 +01:00
Bezeichnung = "-Personendaten-",
Children = new List<PlatzhalterDC>()
};
#region Children Personendaten
2021-01-13 11:21:51 +01:00
PlatzhalterDC anrede = new PlatzhalterDC() { Bezeichnung = "Anrede", Platzhalter = "Anrede" };
personendaten.Children.Add(anrede);
2021-01-13 11:21:51 +01:00
PlatzhalterDC vorname = new PlatzhalterDC() { Bezeichnung = "Vorname", Platzhalter = "Vorname" };
personendaten.Children.Add(vorname);
2021-01-13 11:21:51 +01:00
PlatzhalterDC nachname = new PlatzhalterDC() { Bezeichnung = "Nachname", Platzhalter = "Nachname" };
personendaten.Children.Add(nachname);
2021-01-13 11:21:51 +01:00
PlatzhalterDC gebDatum = new PlatzhalterDC() { Bezeichnung = "Geburtsdatum", Platzhalter = "Geburtsdatum" };
personendaten.Children.Add(gebDatum);
2021-01-13 11:21:51 +01:00
PlatzhalterDC telefonnummer = new PlatzhalterDC() { Bezeichnung = "Telefonnummer", Platzhalter = "Telefonnummer" };
personendaten.Children.Add(telefonnummer);
2021-01-13 11:21:51 +01:00
PlatzhalterDC handynummer = new PlatzhalterDC() { Bezeichnung = "Handynummer", Platzhalter = "Handynummer" };
personendaten.Children.Add(handynummer);
PlatzhalterDC email = new PlatzhalterDC() { Bezeichnung = "E-Mail-Adresse", Platzhalter = "Email" };
personendaten.Children.Add(email);
2021-01-13 11:21:51 +01:00
PlatzhalterDC fax = new PlatzhalterDC() { Bezeichnung = "Fax", Platzhalter = "Fax" };
personendaten.Children.Add(fax);
PlatzhalterDC berufsbezeichnung = new PlatzhalterDC() { Bezeichnung = "Berufsbezeichnung", Platzhalter = "Berufsbezeichnung" };
personendaten.Children.Add(berufsbezeichnung);
#endregion Children Personendaten
PlatzhalterDC adressdatenKlient = new PlatzhalterDC()
{
2021-01-13 11:21:51 +01:00
Bezeichnung = "-Adressdaten Klient/-in-",
Children = new List<PlatzhalterDC>()
};
2021-01-13 11:21:51 +01:00
#region Children Adressdaten Klient/-in
PlatzhalterDC strasse = new PlatzhalterDC() { Bezeichnung = "Straße", Platzhalter = "KlientStrasse" };
adressdatenKlient.Children.Add(strasse);
2021-01-13 11:21:51 +01:00
PlatzhalterDC plz = new PlatzhalterDC() { Bezeichnung = "PLZ", Platzhalter = "KlientPLZ" };
adressdatenKlient.Children.Add(plz);
2021-01-13 11:21:51 +01:00
PlatzhalterDC ort = new PlatzhalterDC() { Bezeichnung = "Ort", Platzhalter = "KlientOrt" };
adressdatenKlient.Children.Add(ort);
#endregion
2021-01-13 11:21:51 +01:00
PlatzhalterDC betreuung = new PlatzhalterDC()
{
2021-01-13 11:21:51 +01:00
Bezeichnung = "-Betreuung-",
Children = new List<PlatzhalterDC>()
};
2021-01-13 11:21:51 +01:00
#region Children Betreuung
//PlatzhalterDC ansprechpartner = new PlatzhalterDC() { Bezeichnung = "Ansprechpartner/-in", Platzhalter = "Ansprechpartner/-in" };
//betreuung.Children.Add(ansprechpartner);
//PlatzhalterDC kostenstelle = new PlatzhalterDC() { Bezeichnung = "Kostenstelle", Platzhalter = "Kostenstelle" };
//betreuung.Children.Add(kostenstelle);
#endregion
2021-01-13 11:21:51 +01:00
PlatzhalterDC sonstiges = new PlatzhalterDC()
{
Bezeichnung = "-Sonstiges-",
Children = new List<PlatzhalterDC>()
};
#region Children Sonstiges
PlatzhalterDC datum = new PlatzhalterDC() { Bezeichnung = "Datum", Platzhalter = "Datum" };
sonstiges.Children.Add(datum);
#endregion
liste.Add(personendaten);
liste.Add(adressdatenKlient);
2021-01-13 11:21:51 +01:00
//liste.Add(adressdatenOrganisation);
liste.Add(betreuung);
liste.Add(sonstiges);
return liste;
2021-01-13 11:21:51 +01:00
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
public List<PlatzhalterDC> GetPlatzhalterForSupportConcept()
{
try
{
List<PlatzhalterDC> liste = new List<PlatzhalterDC>();
2021-01-13 11:21:51 +01:00
PlatzhalterDC hilfeplanDaten = new PlatzhalterDC()
{
Bezeichnung = "-Hilfeplandaten-",
Children = new List<PlatzhalterDC>()
};
#region Children HilfeplanDaten
//PlatzhalterDC klient = new PlatzhalterDC() { Bezeichnung = "Klient", Platzhalter = "Klient" };
//hilfeplanDaten.Children.Add(klient);
PlatzhalterDC bewilligungsdatum = new PlatzhalterDC() { Bezeichnung = "Bewilligungsdatum", Platzhalter = "Bewilligungsdatum" };
hilfeplanDaten.Children.Add(bewilligungsdatum);
#endregion
PlatzhalterDC klient = new PlatzhalterDC()
{
Bezeichnung = "-Klient-",
Children = new List<PlatzhalterDC>()
};
#region Children Klient
PlatzhalterDC klientanrede = new PlatzhalterDC() { Bezeichnung = "Anrede", Platzhalter = "KlientAnrede" };
klient.Children.Add(klientanrede);
PlatzhalterDC klientnachname = new PlatzhalterDC() { Bezeichnung = "Nachname", Platzhalter = "KlientNachname" };
klient.Children.Add(klientnachname);
PlatzhalterDC klientvorname = new PlatzhalterDC() { Bezeichnung = "Vorname", Platzhalter = "KlientVorname" };
klient.Children.Add(klientvorname);
PlatzhalterDC klientgeburtsdatum = new PlatzhalterDC() { Bezeichnung = "Geburtsdatum", Platzhalter = "KlientGeburtsdatum" };
klient.Children.Add(klientgeburtsdatum);
PlatzhalterDC klienttelefonnummer = new PlatzhalterDC() { Bezeichnung = "Telefonnummer", Platzhalter = "KlientTelefonnummer" };
klient.Children.Add(klienttelefonnummer);
PlatzhalterDC klienthandynummer = new PlatzhalterDC() { Bezeichnung = "Handynummer", Platzhalter = "KlientHandynummer" };
klient.Children.Add(klienthandynummer);
PlatzhalterDC klientemail = new PlatzhalterDC() { Bezeichnung = "E-Mail-Adresse", Platzhalter = "KlientEmail" };
klient.Children.Add(klientemail);
PlatzhalterDC klientfax = new PlatzhalterDC() { Bezeichnung = "Fax", Platzhalter = "KlientFax" };
klient.Children.Add(klientfax);
#endregion
PlatzhalterDC betreuer = new PlatzhalterDC()
{
Bezeichnung = "-Betreuer-",
Children = new List<PlatzhalterDC>()
};
#region Children Betreuer
PlatzhalterDC betreueranrede = new PlatzhalterDC() { Bezeichnung = "Anrede", Platzhalter = "BetreuerAnrede" };
betreuer.Children.Add(betreueranrede);
PlatzhalterDC betreuernachname = new PlatzhalterDC() { Bezeichnung = "Nachname", Platzhalter = "BetreuerNachname" };
betreuer.Children.Add(betreuernachname);
PlatzhalterDC betreuervorname = new PlatzhalterDC() { Bezeichnung = "Vorname", Platzhalter = "BetreuerVorname" };
betreuer.Children.Add(betreuervorname);
PlatzhalterDC mitarbeiternummer = new PlatzhalterDC() { Bezeichnung = "Mitarbeiternummer", Platzhalter = "Mitarbeiternummer" };
betreuer.Children.Add(mitarbeiternummer);
#endregion
PlatzhalterDC sonstiges = new PlatzhalterDC()
{
Bezeichnung = "-Sonstiges-",
Children = new List<PlatzhalterDC>()
};
#region Children Sonstiges
PlatzhalterDC datum = new PlatzhalterDC() { Bezeichnung = "Datum", Platzhalter = "Datum" };
sonstiges.Children.Add(datum);
#endregion
liste.Add(hilfeplanDaten);
liste.Add(betreuer);
liste.Add(klient);
liste.Add(sonstiges);
return liste;
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
public List<PlatzhalterDC> GetPlatzhalterForEmployee()
{
try
{
List<PlatzhalterDC> liste = new List<PlatzhalterDC>();
2021-01-13 11:21:51 +01:00
PlatzhalterDC mitarbeiterdaten = new PlatzhalterDC()
{
Bezeichnung = "-Mitarbeiterdaten-",
Children = new List<PlatzhalterDC>()
};
#region Children Mitarbeiterdaten
PlatzhalterDC anrede = new PlatzhalterDC() { Bezeichnung = "Anrede", Platzhalter = "Anrede" };
mitarbeiterdaten.Children.Add(anrede);
PlatzhalterDC vorname = new PlatzhalterDC() { Bezeichnung = "Vorname", Platzhalter = "Vorname" };
mitarbeiterdaten.Children.Add(vorname);
PlatzhalterDC nachname = new PlatzhalterDC() { Bezeichnung = "Nachname", Platzhalter = "Nachname" };
mitarbeiterdaten.Children.Add(nachname);
PlatzhalterDC gebDatum = new PlatzhalterDC() { Bezeichnung = "Geburtsdatum", Platzhalter = "Geburtsdatum" };
mitarbeiterdaten.Children.Add(gebDatum);
PlatzhalterDC telefonnummer = new PlatzhalterDC() { Bezeichnung = "Telefonnummer", Platzhalter = "Telefonnummer" };
mitarbeiterdaten.Children.Add(telefonnummer);
PlatzhalterDC handynummer = new PlatzhalterDC() { Bezeichnung = "Handynummer", Platzhalter = "Handynummer" };
mitarbeiterdaten.Children.Add(handynummer);
PlatzhalterDC email = new PlatzhalterDC() { Bezeichnung = "E-Mail-Adresse", Platzhalter = "Email" };
mitarbeiterdaten.Children.Add(email);
PlatzhalterDC emailPrivat = new PlatzhalterDC() { Bezeichnung = "E-Mail-Adresse Privat", Platzhalter = "EmailPrivat" };
mitarbeiterdaten.Children.Add(emailPrivat);
PlatzhalterDC fax = new PlatzhalterDC() { Bezeichnung = "Fax", Platzhalter = "Fax" };
mitarbeiterdaten.Children.Add(fax);
PlatzhalterDC mitarbeiternummer = new PlatzhalterDC() { Bezeichnung = "Angestelltennummer", Platzhalter = "Angestelltennummer" };
mitarbeiterdaten.Children.Add(mitarbeiternummer);
PlatzhalterDC steuernummer = new PlatzhalterDC() { Bezeichnung = "Steuernummer", Platzhalter = "Steuernummer" };
mitarbeiterdaten.Children.Add(steuernummer);
PlatzhalterDC krankenkasse = new PlatzhalterDC() { Bezeichnung = "Krankenkasse", Platzhalter = "Krankenkasse" };
mitarbeiterdaten.Children.Add(krankenkasse);
PlatzhalterDC versicherungsnummer = new PlatzhalterDC() { Bezeichnung = "Versichertennummer", Platzhalter = "Versichertennummer" };
mitarbeiterdaten.Children.Add(versicherungsnummer);
#endregion
PlatzhalterDC adressdatenMitarbeiter = new PlatzhalterDC()
{
Bezeichnung = "-Adressdaten Mitarbeiter/-in-",
Children = new List<PlatzhalterDC>()
};
#region Children Adressdaten Mitarbeiter/-in
PlatzhalterDC strasse = new PlatzhalterDC() { Bezeichnung = "Straße", Platzhalter = "MitarbeiterStrasse" };
adressdatenMitarbeiter.Children.Add(strasse);
PlatzhalterDC plz = new PlatzhalterDC() { Bezeichnung = "PLZ", Platzhalter = "MitarbeiterPLZ" };
adressdatenMitarbeiter.Children.Add(plz);
PlatzhalterDC ort = new PlatzhalterDC() { Bezeichnung = "Ort", Platzhalter = "MitarbeiterOrt" };
adressdatenMitarbeiter.Children.Add(ort);
#endregion
//PlatzhalterDC adressdatenOrganisation = new PlatzhalterDC()
//{
// Bezeichnung = "-Adressdaten Organisation-",
// Children = new List<PlatzhalterDC>()
//};
#region Children Adressdaten Organisation
//PlatzhalterDC adressat = new PlatzhalterDC() { Bezeichnung = "Organisation", Platzhalter = "Organisation" };
//adressdatenOrganisation.Children.Add(adressat);
//PlatzhalterDC strasseOrga = new PlatzhalterDC() { Bezeichnung = "Straße", Platzhalter = "OrgaStrasse" };
//adressdatenOrganisation.Children.Add(strasseOrga);
//PlatzhalterDC plzOrga = new PlatzhalterDC() { Bezeichnung = "PLZ", Platzhalter = "OrgaPLZ" };
//adressdatenOrganisation.Children.Add(plzOrga);
//PlatzhalterDC ortOrga = new PlatzhalterDC() { Bezeichnung = "Ort", Platzhalter = "OrgaOrt" };
//adressdatenOrganisation.Children.Add(ortOrga);
#endregion
PlatzhalterDC sonstiges = new PlatzhalterDC()
{
Bezeichnung = "-Sonstiges-",
Children = new List<PlatzhalterDC>()
};
#region Children Sonstiges
PlatzhalterDC datum = new PlatzhalterDC() { Bezeichnung = "Datum", Platzhalter = "Datum" };
sonstiges.Children.Add(datum);
#endregion
liste.Add(mitarbeiterdaten);
liste.Add(adressdatenMitarbeiter);
//liste.Add(adressdatenOrganisation);
liste.Add(sonstiges);
return liste;
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
public BeWoFolderDC GetFolderById(long oid)
{
try
{
BeWoFolder folder = DAOFactory.GenericDAO.GetByID<BeWoFolder>(oid);
var dc = MapperFactory.BeWoFolderDC_BeWoFolder.MapToNewDC(folder);
return dc;
}
catch (Exception ex)
{
throw Utils.CreateBeWoFaultException(ex);
}
}
public VorlagentabelleDC GetVorlagentabelleById(long oid)
{
Vorlagentabelle tabelle = DAOFactory.GenericDAO.GetByID<Vorlagentabelle>(oid);
var dc = MapperFactory.VorlagentabelleDC_Vorlagentabelle.MapToNewDC(tabelle);
return dc;
}
public List<DokumentvorlageDC> GetDokumentvorlagenInFolder(long folderOid)
{
List<Dokumentvorlage> liste = DAOFactory.SearchDAO.GetAllDokumentvorlagenInFolder(folderOid) as List<Dokumentvorlage>;
var DCs = MapperFactory.DokumentvorlageDC_Dokumentvorlage.MapToNewDCs(liste);
return DCs;
}
public List<SupportConceptDC> GetSupportConceptsById(IEnumerable<long> supportConceptOids)
{
try
{
var supportConcepts = DAOFactory.GenericDAO.LoadByIDs<SupportConcept>(supportConceptOids);
return MapperFactory.SupportConceptDC_SupportConcept.MapToNewDCs(supportConcepts);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void DeleteTemplates(List<DokumentvorlageDC> vorlagen)
{
try
{
for (int i = vorlagen.Count - 1; i >= 0; i--)
{
var origTemplate = DAOFactory.GenericDAO.LoadByID<Dokumentvorlage>((long)vorlagen[i].DokumentvorlageOid);
MapperFactory.DokumentvorlageDC_Dokumentvorlage.ConcurrencyCheck(vorlagen[i].DokumentvorlageVersion, origTemplate);
DAOFactory.GenericDAO.Delete(origTemplate);
}
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public bool HasConfirmationReceiptSignature(IEnumerable<long> customerOids, long? employeeOid, long? costbearerOid, long? serviceCategoryOid, DateTimeSpan timeSpan)
{
try
{
return DAOFactory.SearchDAO.HasConfirmationReceiptSignature(customerOids, employeeOid, costbearerOid, serviceCategoryOid, timeSpan);
}
catch(Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
2021-01-14 17:03:49 +01:00
2021-01-13 11:21:51 +01:00
public string ReplacePlaceholdersInTemplate(DokumentvorlageDC template, long? objectOid, long? tableOid)
{
try
{
string adaptedRTF = "";
switch(tableOid)
{
case 2: adaptedRTF = EmployeeTemplate(objectOid, template.RTFText);break;
case 8: adaptedRTF = CustomerTemplate(objectOid, template.RTFText);break;
case 15: adaptedRTF = SupportConceptTemplate(objectOid, template.RTFText);break;
}
return adaptedRTF;
}
catch(Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
private string EmployeeTemplate(long? objectOid, string RTFWithPlaceholders)
{
try
{
bool allSet = true;
List<string> attributeList = new List<string>();
string attributeString = "";
var employee = DAOFactory.GenericDAO.GetByID<Employee>((long)objectOid);
var contacts = employee.Person.Contacts;
string RTFText = RTFWithPlaceholders;
#region Auf verschiedene Platzhalter prüfen
if (RTFText.Contains("[Anrede]") || RTFText.Contains("[Anrede") || RTFText.Contains("Anrede]"))
{
if (employee.Person.Sex == Sex.Male)
RTFText = RTFText.Replace("Anrede", "Sehr geehrter Herr");
else if (employee.Person.Sex == Sex.Female)
RTFText = RTFText.Replace("Anrede", "Sehr geehrte Frau");
//else
//{
// attributeList.Add("Geschlecht");
// allSet = false;
//}
}
if (RTFText.Contains("[Vorname]") || RTFText.Contains("[Vorname") || RTFText.Contains("Vorname]"))
{
//if (employee.Person.FirstName.IsNullOrEmpty())
//{
// attributeList.Add("Vorname");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Vorname", employee.Person.FirstName);
}
if (RTFText.Contains("[Nachname]") || RTFText.Contains("[Nachname") || RTFText.Contains("Nachname]"))
{
//if (employee.Person.LastName.IsNullOrEmpty())
//{
// attributeList.Add("Nachname");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Nachname", employee.Person.LastName);
}
if (RTFText.Contains("[Geburtsdatum]") || RTFText.Contains("[Geburtsdatum") || RTFText.Contains("Geburtsdatum]"))
{
string[] dateAndTime = employee.Person.DateOfBirth.ToString().Split(' ');
//if (dateAndTime[0].IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Geburtsdatum");
//}
//else
RTFText = RTFText.Replace("Geburtsdatum", dateAndTime[0]);
}
if (RTFText.Contains("[Geburtsort]") || RTFText.Contains("[Geburtsort") || RTFText.Contains("Geburtsort]"))
{
//if (employee.TaxNumber.IsNullOrEmpty())
//{
// attributeList.Add("Steuernummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Steuernummer", employee.TaxNumber);
}
if (RTFText.Contains("[Telefonnummer]") || RTFText.Contains("[Telefonnummer") || RTFText.Contains("Telefonnummer]"))
{
string phone = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Phone)
{
phone = c.Value;
break;
}
}
//if (phone.IsNullOrEmpty())
//{
// attributeList.Add("Telefonnummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Telefonnummer", phone);
}
if (RTFText.Contains("[Handynummer]") || RTFText.Contains("[Handynummer") || RTFText.Contains("Handynummer]"))
{
string mobile = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_MobilePhone)
{
mobile = c.Value;
break;
}
}
//if (mobile.IsNullOrEmpty())
//{
// attributeList.Add("Handynummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Handynummer", mobile);
}
if (RTFText.Contains("[EmailPrivat]") || RTFText.Contains("[EmailPrivat") || RTFText.Contains("EmailPrivat]"))
{
string email = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.private_Mail)
{
email = c.Value;
break;
}
}
//if (email.IsNullOrEmpty())
//{
// attributeList.Add("private Email-Adresse");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("EmailPrivat", email);
}
if (RTFText.Contains("[Email]") || RTFText.Contains("[Email") || RTFText.Contains("Email]"))
{
string email = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Mail)
{
email = c.Value;
break;
}
}
//if (email.IsNullOrEmpty())
//{
// attributeList.Add("Email-Adresse");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Email", email);
}
if (RTFText.Contains("[Fax]") || RTFText.Contains("[Fax") || RTFText.Contains("Fax]"))
{
string fax = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Fax)
{
fax = c.Value;
break;
}
}
//if (fax.IsNullOrEmpty())
//{
// attributeList.Add("Fax");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Fax", fax);
}
if (RTFText.Contains("[Angestelltennummer]") || RTFText.Contains("[Angestelltennummer") || RTFText.Contains("Angestelltennummer]"))
{
//if (employee.PersonnelNumber.IsNullOrEmpty())
//{
// attributeList.Add("Mitarbeiternummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Angestelltennummer", employee.PersonnelNumber);
}
if (RTFText.Contains("[Steuernummer]") || RTFText.Contains("[Steuernummer") || RTFText.Contains("Steuernummer]"))
{
//if (employee.TaxNumber.IsNullOrEmpty())
//{
// attributeList.Add("Steuernummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Steuernummer", employee.TaxNumber);
}
if (RTFText.Contains("[Krankenkasse]") || RTFText.Contains("[Krankenkasse") || RTFText.Contains("Krankenkasse]"))
{
//if (employee.HealthInsurance.IsNullOrEmpty())
//{
// attributeList.Add("Krankenkasse");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Krankenkasse", employee.HealthInsurance);
}
if (RTFText.Contains("[Versichertennummer]") || RTFText.Contains("[Versichertennummer") || RTFText.Contains("Versichertennummer]"))
{
//if (employee.InsuranceNumber.IsNullOrEmpty())
//{
// attributeList.Add("Versichertennummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Versichertennummer", employee.InsuranceNumber);
}
//Adressdaten
if(employee.Person.Address != null)
{
if (RTFText.Contains("[MitarbeiterStrasse]") || RTFText.Contains("[MitarbeiterStrasse") || RTFText.Contains("MitarbeiterStrasse]"))
{
//if (employee.Person.Address.Street.IsNullOrEmpty())
//{
// attributeList.Add("Straße");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("MitarbeiterStrasse", employee.Person.Address.Street);
}
if (RTFText.Contains("[MitarbeiterPLZ]") || RTFText.Contains("[MitarbeiterPLZ") || RTFText.Contains("MitarbeiterPLZ]"))
{
//if (employee.Person.Address.PostalCode.IsNullOrEmpty())
//{
// attributeList.Add("Postleitzahl");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("MitarbeiterPLZ", employee.Person.Address.PostalCode);
}
if (RTFText.Contains("[MitarbeiterOrt]") || RTFText.Contains("[MitarbeiterOrt") || RTFText.Contains("MitarbeiterOrt]"))
{
//if (employee.Person.Address.Town.IsNullOrEmpty())
//{
// attributeList.Add("Ort");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("MitarbeiterOrt", employee.Person.Address.Town);
}
}
//Sonstiges
if (RTFText.Contains("[Datum]") || RTFText.Contains("[Datum") || RTFText.Contains("Datum]"))
{
string[] datum = DateTime.Now.ToString().Split(' ');
RTFText = RTFText.Replace("Datum", datum[0]);
}
RTFText = RTFText.Replace("[", "");
RTFText = RTFText.Replace("]", "");
#endregion
if (allSet)
return RTFText;
else
{
foreach (var s in attributeList)
{
attributeString += (s != attributeList.Last()) ? s + ", " : s;
}
MessageBox.Show("Seite für " + employee.Person.FirstNameLastName + " kann nicht erstellt werden, da folgende Attribute des Mitarbeiters nicht gesetzt sind:\n" +
attributeString + "\nSetzen Sie die Attribute und erstellen Sie die Druckvorscheu für den Mitarbeiter erneut.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
return "";
}
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
private string CustomerTemplate(long? objectOid, string RTFWithPlaceholders)
{
try
{
bool allSet = true;
List<string> attributeList = new List<string>();
string attributeString = "";
var customer = DAOFactory.GenericDAO.GetByID<Customer>((long)objectOid);
var contacts = customer.Person.Contacts;
string RTFText = RTFWithPlaceholders;
#region Auf verschiedene Platzhalter prüfen
if (RTFText.Contains("[Anrede]") || RTFText.Contains("[Anrede") || RTFText.Contains("Anrede]"))
{
if (customer.Person.Sex == Sex.Male)
RTFText = RTFText.Replace("Anrede", "Sehr geehrter Herr");
else if (customer.Person.Sex == Sex.Female)
RTFText = RTFText.Replace("Anrede", "Sehr geehrte Frau");
//else
//{
// attributeList.Add("Geschlecht");
// allSet = false;
//}
}
if (RTFText.Contains("[Vorname]") || RTFText.Contains("[Vorname") || RTFText.Contains("Vorname]"))
{
//if(customer.Person.FirstName.IsNullOrEmpty())
//{
// attributeList.Add("Vorname");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Vorname", customer.Person.FirstName);
}
if (RTFText.Contains("[Nachname]") || RTFText.Contains("[Nachname") || RTFText.Contains("Nachname]"))
{
//if (customer.Person.LastName.IsNullOrEmpty())
//{
// attributeList.Add("Nachname");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Nachname", customer.Person.LastName);
}
if (RTFText.Contains("[Geburtsdatum]") || RTFText.Contains("[Geburtsdatum") || RTFText.Contains("Geburtsdatum]"))
{
string[] dateAndTime = customer.Person.DateOfBirth.ToString().Split(' ');
//if(dateAndTime[0].IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Geburtsdatum");
//}
//else
RTFText = RTFText.Replace("Geburtsdatum", dateAndTime[0]);
}
if (RTFText.Contains("[Telefonnummer]") || RTFText.Contains("[Telefonnummer") || RTFText.Contains("Telefonnummer]"))
{
string phone = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Phone)
{
phone = c.Value;
break;
}
}
//if (phone.IsNullOrEmpty())
//{
// attributeList.Add("Telefonnummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Telefonnummer", phone);
}
if (RTFText.Contains("[Handynummer]") || RTFText.Contains("[Handynummer") || RTFText.Contains("Handynummer]"))
{
string mobile = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_MobilePhone)
{
mobile = c.Value;
break;
}
}
//if (mobile.IsNullOrEmpty())
//{
// attributeList.Add("Handynummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Handynummer", mobile);
}
if (RTFText.Contains("[Email]") || RTFText.Contains("[Email") || RTFText.Contains("Email]"))
{
string email = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Mail)
{
email = c.Value;
break;
}
}
//if (email.IsNullOrEmpty())
//{
// attributeList.Add("Email-Adresse");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Email", email);
}
if (RTFText.Contains("[Fax]") || RTFText.Contains("[Fax") || RTFText.Contains("Fax]"))
{
string fax = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Fax)
{
fax = c.Value;
break;
}
}
//if (fax.IsNullOrEmpty())
//{
// attributeList.Add("Fax");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Fax", fax);
}
if (RTFText.Contains("[Berufsbezeichnung]") || RTFText.Contains("[Berufsbezeichnung") || RTFText.Contains("Berufsbezeichnung]"))
{
//if(customer.Person.Profession.IsNullOrEmpty())
//{
// attributeList.Add("Berufsbezeichnung");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Berufsbezeichnung", customer.Person.Profession);
}
//Adressdaten
if (customer.Person.Address != null)
{
if (RTFText.Contains("[KlientStrasse]") || RTFText.Contains("[KlientStrasse") || RTFText.Contains("KlientStrasse]"))
{
//if (customer.Person.Address.Street.IsNullOrEmpty())
//{
// attributeList.Add("Straße");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientStrasse", customer.Person.Address.Street);
}
if (RTFText.Contains("[KlientPLZ]") || RTFText.Contains("[KlientPLZ") || RTFText.Contains("KlientPLZ]"))
{
//if (customer.Person.Address.PostalCode.IsNullOrEmpty())
//{
// attributeList.Add("Postleitzahl");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientPLZ", customer.Person.Address.PostalCode);
}
if (RTFText.Contains("[KlientOrt]") || RTFText.Contains("[KlientOrt") || RTFText.Contains("KlientOrt]"))
{
//if (customer.Person.Address.Town.IsNullOrEmpty())
//{
// attributeList.Add("Ort");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientOrt", customer.Person.Address.Town);
}
}
//Betreuung
if (RTFText.Contains("[Ansprechpartner/-in]") || RTFText.Contains("[Ansprechpartner/-in") || RTFText.Contains("Ansprechpartner/-in]"))
{
//if (customer.Ansprechpartner == null)
//{
// attributeList.Add("Ansprechpartner");
// allSet = false;
//}
//else
//{
string anrede = (customer.Ansprechpartner.Sex == 0) ? "Herr " : "Frau ";
RTFText = RTFText.Replace("Ansprechpartner/-in", anrede + customer.Ansprechpartner.FirstNameLastName);
//}
}
if (RTFText.Contains("[Kostenstelle]") || RTFText.Contains("[Kostenstelle") || RTFText.Contains("Kostenstelle]"))
{
//if(customer.CostCenter.IsNullOrEmpty())
//{
// attributeList.Add("Kostenstelle");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("Kostenstelle", customer.CostCenter);
}
//Sonstiges
if (RTFText.Contains("[Datum]") || RTFText.Contains("[Datum") || RTFText.Contains("Datum]"))
{
string[] datum = DateTime.Now.ToString().Split(' ');
RTFText = RTFText.Replace("Datum", datum[0]);
}
RTFText = RTFText.Replace("[", "");
RTFText = RTFText.Replace("]", "");
#endregion
if (allSet)
return RTFText;
else
{
foreach (var s in attributeList)
{
attributeString += (s != attributeList.Last()) ? s + ", " : s;
}
MessageBox.Show("Seite für " + customer.Person.FirstNameLastName + " kann nicht erstellt werden, da folgende Attribute des Klienten nicht gesetzt sind:\n" +
attributeString + "\nSetzen Sie die Attribute und erstellen Sie die Druckvorscheu für den Klienten erneut.","BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
return "";
}
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
private string SupportConceptTemplate(long? objectOid, string RTFWithPlaceholders)
{
try
{
var supportConcept = DAOFactory.GenericDAO.GetByID<SupportConcept>((long)objectOid);
bool allSet = true;
List<string> attributeList = new List<string>();
string attributeString = "";
string RTFText = RTFWithPlaceholders;
//Hilfeplan
if (RTFText.Contains("[Bewilligungsdatum]") || RTFText.Contains("[Bewilligungsdatum") || RTFText.Contains("Bewilligungsdatum]"))
{
string[] datum = supportConcept.ApprovalDate.ToString().Split(' ');
//if (datum[0].IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Bewilligungsdatum");
//}
//else
RTFText = RTFText.Replace("Bewilligungsdatum", datum[0]);
}
//Klient
var contacts = supportConcept.Customer.Person.Contacts;
if (RTFText.Contains("[KlientAnrede]") || RTFText.Contains("[KlientAnrede") || RTFText.Contains("KlientAnrede]"))
{
if (supportConcept.Customer.Person.Sex == Sex.Male)
RTFText = RTFText.Replace("KlientAnrede", "Sehr geehrter Herr");
else if (supportConcept.Customer.Person.Sex == Sex.Female)
RTFText = RTFText.Replace("KlientAnrede", "Sehr geehrte Frau");
//else
//{
// attributeList.Add("Klientengeschlecht");
// allSet = false;
//}
}
if (RTFText.Contains("[KlientNachname]") || RTFText.Contains("[KlientNachname") || RTFText.Contains("KlientNachname]"))
{
//if (supportConcept.Customer.Person.LastName.IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Klientennachname");
//}
//else
RTFText = RTFText.Replace("KlientNachname", supportConcept.Customer.Person.LastName);
}
if (RTFText.Contains("[KlientVorname]") || RTFText.Contains("[KlientVorname") || RTFText.Contains("KlientVorname]"))
{
//if (supportConcept.Customer.Person.FirstName.IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Klientenvorname");
//}
//else
RTFText = RTFText.Replace("KlientVorname", supportConcept.Customer.Person.FirstName);
}
if (RTFText.Contains("[KlientGeburtsdatum]") || RTFText.Contains("[KlientGeburtsdatum") || RTFText.Contains("KlientGeburtsdatum]"))
{
string[] dateAndTime = supportConcept.Customer.Person.DateOfBirth.ToString().Split(' ');
//if (dateAndTime[0].IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Geburtsdatum");
//}
//else
RTFText = RTFText.Replace("KlientGeburtsdatum", dateAndTime[0]);
}
if (RTFText.Contains("[KlientTelefonnummer]") || RTFText.Contains("[KlientTelefonnummer") || RTFText.Contains("KlientTelefonnummer]"))
{
string phone = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Phone)
{
phone = c.Value;
break;
}
}
//if (phone.IsNullOrEmpty())
//{
// attributeList.Add("Kliententelefonnummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientTelefonnummer", phone);
}
if (RTFText.Contains("[KlientHandynummer]") || RTFText.Contains("[KlientHandynummer") || RTFText.Contains("KlientHandynummer]"))
{
string mobile = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_MobilePhone)
{
mobile = c.Value;
break;
}
}
//if (mobile.IsNullOrEmpty())
//{
// attributeList.Add("Klientenhandynummer");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientHandynummer", mobile);
}
if (RTFText.Contains("[KlientEmail]") || RTFText.Contains("[KlientEmail") || RTFText.Contains("KlientEmail]"))
{
string email = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Mail)
{
email = c.Value;
break;
}
}
//if (email.IsNullOrEmpty())
//{
// attributeList.Add("Klienten-Email-Adresse");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientEmail", email);
}
if (RTFText.Contains("[KlientFax]") || RTFText.Contains("[KlientFax") || RTFText.Contains("KlientFax]"))
{
string fax = "";
foreach (Contact c in contacts)
{
if (c.Type == ContactType.business_Fax)
{
fax = c.Value;
break;
}
}
//if (fax.IsNullOrEmpty())
//{
// attributeList.Add("Klientenfax");
// allSet = false;
//}
//else
RTFText = RTFText.Replace("KlientFax", fax);
}
//Betreuer
if (RTFText.Contains("[BetreuerAnrede]") || RTFText.Contains("[BetreuerAnrede") || RTFText.Contains("BetreuerAnrede]"))
{
if (supportConcept.Customer.Person.Sex == Sex.Male)
RTFText = RTFText.Replace("BetreuerAnrede", "Sehr geehrter Herr");
else if (supportConcept.Customer.Person.Sex == Sex.Female)
RTFText = RTFText.Replace("BetreuerAnrede", "Sehr geehrte Frau");
//else
//{
// attributeList.Add("Betreuergeschlecht");
// allSet = false;
//}
}
if (RTFText.Contains("[BetreuerNachname]") || RTFText.Contains("[BetreuerNachname") || RTFText.Contains("BetreuerNachname]"))
{
//if (supportConcept.Originator.Person.LastName.IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Betreuernachname");
//}
//else
RTFText = RTFText.Replace("BetreuerNachname", supportConcept.Originator.Person.LastName);
}
if (RTFText.Contains("[BetreuerVorname]") || RTFText.Contains("[BetreuerVorname") || RTFText.Contains("BetreuerVorname]"))
{
//if (supportConcept.Originator.Person.FirstName.IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Betreuervorname");
//}
//else
RTFText = RTFText.Replace("BetreuerVorname", supportConcept.Originator.Person.FirstName);
}
if (RTFText.Contains("[Mitarbeiternummer]") || RTFText.Contains("[Mitarbeiternummer") || RTFText.Contains("Mitarbeiternummer]"))
{
//if (supportConcept.Originator.PersonnelNumber.IsNullOrEmpty())
//{
// allSet = false;
// attributeList.Add("Mitarbeiternummer");
//}
//else
RTFText = RTFText.Replace("Mitarbeiternummer", supportConcept.Originator.PersonnelNumber);
}
//Sonstiges
if (RTFText.Contains("[Datum]") || RTFText.Contains("[Datum") || RTFText.Contains("Datum]"))
{
string[] datum = DateTime.Now.ToString().Split(' ');
RTFText = RTFText.Replace("Datum", datum[0]);
}
RTFText = RTFText.Replace("[", "");
RTFText = RTFText.Replace("]", "");
if (allSet)
return RTFText;
else
{
foreach (var s in attributeList)
{
attributeString += (s != attributeList.Last()) ? s + ", " : s;
}
MessageBox.Show("Seite für " + supportConcept.Customer.Person.FirstNameLastName + " kann nicht erstellt werden, da folgende Attribute des Hilfeplans nicht gesetzt sind:\n" +
attributeString + "\nSetzen Sie die Attribute und erstellen Sie die Druckvorschau für den Hilfeplan erneut.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
return "";
}
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void InsertFileAttachment(FileAttachmentDC fileAttachmentDC)
{
var entity = new FileAttachment()
{
BeWoFolderOid = fileAttachmentDC.BeWoFolderOid,
Data = fileAttachmentDC.BinaryData,
InsTs = fileAttachmentDC.InsertedOn,
InsUser = fileAttachmentDC.InsertedBy,
IsActive = ActivationTypeId.Active,
ObjectOid = fileAttachmentDC.ObjectOid,
ObjectTid = fileAttachmentDC.ObjectTid,
Type = FileAttachmentType.NotSpecified,
Version = 1,
Path = fileAttachmentDC.FileName
};
entity = MapperFactory.FileAttachmentDC_FileAttachment.MergeWithEntity(fileAttachmentDC, entity);
DAOFactory.GenericDAO.Insert(entity);
}
public List<FileAttachmentDC> SearchForFiles(string nutzereingabe)
{
List<FileAttachmentDC> allFiles = MapperFactory.FileAttachmentDC_FileAttachment.MapToNewDCs(DAOFactory.GenericDAO.GetAllActive<FileAttachment>());
var list = DAOFactory.SearchDAO.FindFileattachmentOids(nutzereingabe);
List<FileAttachmentDC> files = new List<FileAttachmentDC>();
//foreach (var file in allFiles)
//{
// if (file.FileName.ToLower().Contains(nutzereingabe.ToLower()))
// files.Add(file);
//}
foreach (object[] info in list)
{
var dc = new FileAttachmentDC();
dc.FileAttachmentOid = info[0] as long?;
dc.BeWoFolderOid = info[1] as long?;
dc.ObjectOid = info[2] as long?;
dc.ObjectTid = (TableID)info[3];
dc.FileName = info[4].ToString();
files.Add(dc);
}
return files;
}
public string GetObjectForFilePath(TableID table, long? oid)
{
string objectName = "";
switch(table)
{
case TableID.ApplicationUser: objectName = (DAOFactory.GenericDAO.GetByID<ApplicationUser>((long)oid)).LoginName; break;
case TableID.SupportConcept: var sc = DAOFactory.GenericDAO.GetByID<SupportConcept>((long)oid);
objectName = sc.Customer.Person.LastNameFirstName + " " + CustomizeDates(sc.StartDate, sc.EndDate); break;
case TableID.Customer: objectName = (DAOFactory.GenericDAO.GetByID<Customer>((long)oid)).Person.LastNameFirstName; break;
case TableID.Organisation: objectName = (DAOFactory.GenericDAO.GetByID<Organisation>((long)oid)).Name; break;
case TableID.Person: objectName = (DAOFactory.GenericDAO.GetByID<Person>((long)oid)).LastNameFirstName; break;
case TableID.Employee: objectName = (DAOFactory.GenericDAO.GetByID<Employee>((long)oid)).Person.LastNameFirstName; break;
case TableID.Team: objectName = (DAOFactory.GenericDAO.GetByID<Team>((long)oid)).Name; break;
case TableID.UserGroup: objectName = (DAOFactory.GenericDAO.GetByID<UserGroup>((long)oid)).Name; break;
}
return objectName;
}
private string CustomizeDates(DateTime? startdate, DateTime? enddate)
{
string span = "";
string startday, endday, startmonth, endmonth;
startday = (startdate.Value.Day < 10) ? "0" + startdate.Value.Day : startdate.Value.Day.ToString();
endday = (enddate.Value.Day < 10) ? "0" + enddate.Value.Day : enddate.Value.Day.ToString();
startmonth = (startdate.Value.Month < 10) ? "0" + startdate.Value.Month : startdate.Value.Month.ToString();
endmonth = (enddate.Value.Month < 10) ? "0" + enddate.Value.Month : enddate.Value.Month.ToString();
span = "(" + startday + "." + startmonth + "." + startdate.Value.Year + " - " + endday + "." + endmonth + "." + enddate.Value.Year + ")";
return span;
}
public void RemoveAllDiensteForOneMonth(DateTime month)
{
var alleDienste = DAOFactory.GenericDAO.GetAll<DienstEintrag>();
foreach (var dienst in alleDienste)
{
if (dienst.Datum.Month == month.Month)
DAOFactory.GenericDAO.Delete(dienst);
}
}
public string GetColorForStatus(bool status)
{
return (status) ? "#FF228B22" : "#FFCD5C5C";
}
2021-01-13 11:21:51 +01:00
}
}