Die Abfrage nach der Ressourcenbelegung kommt nur ein mal und das Abbrechen des Speicherns hat keinen "kaputten" Reload zur Folge
Das Löschen eines Serientermins mit veränderten oder gelöschten Elementen führt zu keiner Exception mehr, da ich den Service-Aufruf auf synchron geändert habe.
Es gibt allerdings noch Bugs! -> Serientermin erstellen und ein Element davon ändern führt zu einer doppelten Abfrage, ausgelöst durch die Überlappungsprüfung, die eine Überlappung mit der Serie selbst feststellt!
130 lines
5.0 KiB
C#
130 lines
5.0 KiB
C#
using System;
|
|
using System.Linq;
|
|
|
|
using BeWo.Data.Access;
|
|
using BeWo.Data.Entities;
|
|
|
|
using BS.Shared.DataContracts;
|
|
|
|
using DevExpress.XtraCharts.Native;
|
|
|
|
namespace BeWo.Service.DCEntityMapper
|
|
{
|
|
public class SchedulerAppointmentDC_SchedulerAppointment : AbstractIDCEntityMapper<SchedulerAppointment, SchedulerAppointmentDC>
|
|
{
|
|
public override SchedulerAppointmentDC MergeWithDC(SchedulerAppointment pEntity, SchedulerAppointmentDC pDataContract)
|
|
{
|
|
pDataContract.SchedulerAppointmentOid = pEntity.Oid;
|
|
pDataContract.NewSchedulerAppointmentVersion = pEntity.Version;
|
|
|
|
pDataContract.AllDay = pEntity.AllDay;
|
|
pDataContract.EndDate = pEntity.EndDate;
|
|
pDataContract.StartDate = pEntity.StartDate;
|
|
pDataContract.Status = pEntity.Status;
|
|
pDataContract.Subject = pEntity.Subject;
|
|
pDataContract.Type = pEntity.Type;
|
|
pDataContract.Location = pEntity.Location;
|
|
pDataContract.Description = pEntity.Notice;
|
|
pDataContract.RecurrenceInfo = pEntity.RecurrenceInfo;
|
|
pDataContract.ReminderInfo = pEntity.ReminderInfo;
|
|
|
|
pDataContract.IsPrivate = pEntity.IsPrivate;
|
|
pDataContract.CustomerList = MapperFactory.CompactCustomerDC_Customer.MapToNewDCs(pEntity.CustomerList);
|
|
pDataContract.ResourceList = MapperFactory.ResourceDC_Resource.MapToNewDCs(pEntity.ResourceList);
|
|
pDataContract.EmployeeList = MapperFactory.Employee2SchedulerAppointmentDC_Employee2SchedulerAppointment.MapToNewDCs(pEntity.EmployeeList);
|
|
|
|
pDataContract.IsTask = pEntity.IsTask;
|
|
pDataContract.TaskDescription = pEntity.TaskDescription;
|
|
pDataContract.CompletedNotice = pEntity.CompletedNotice;
|
|
pDataContract.CompletedDate = pEntity.CompletedDate;
|
|
|
|
pDataContract.DueDate = pEntity.DueDate;
|
|
|
|
pDataContract.FormerBookingSequenceOid = pEntity.FormerBookingSequenceOid;
|
|
pDataContract.SupportConceptList = MapperFactory.CompactSupportConceptDC_SupportConcept.MapToNewDCs(pEntity.SupportConceptList);
|
|
|
|
pDataContract.FormerTaskOid = pEntity.FormerTaskOid;
|
|
|
|
pDataContract.HasServiceRecordEntry = pEntity.HasServiceRecordEntry;
|
|
|
|
if (pEntity.Originator != null)
|
|
{
|
|
pDataContract.Originator = MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(pEntity.Originator);
|
|
}
|
|
|
|
pDataContract.ActivationType = pEntity.IsActive;
|
|
|
|
return pDataContract;
|
|
}
|
|
|
|
public override SchedulerAppointment MergeWithEntity(SchedulerAppointmentDC pDataContract, SchedulerAppointment pEntity)
|
|
{
|
|
ConcurrencyCheck(pDataContract.NewSchedulerAppointmentVersion, pEntity);
|
|
|
|
pEntity.Oid = pDataContract.SchedulerAppointmentOid;
|
|
pEntity.Version = pDataContract.NewSchedulerAppointmentVersion;
|
|
|
|
pEntity.AllDay = pDataContract.AllDay;
|
|
pEntity.EndDate = pDataContract.EndDate;
|
|
pEntity.StartDate = pDataContract.StartDate;
|
|
pEntity.Status = pDataContract.Status;
|
|
pEntity.Subject = pDataContract.Subject;
|
|
pEntity.Type = pDataContract.Type;
|
|
pEntity.Location = pDataContract.Location;
|
|
pEntity.Notice = pDataContract.Description;
|
|
pEntity.RecurrenceInfo = pDataContract.RecurrenceInfo;
|
|
pEntity.ReminderInfo = pDataContract.ReminderInfo;
|
|
|
|
pEntity.FormerBookingSequenceOid = pDataContract.FormerBookingSequenceOid;
|
|
|
|
pEntity.IsTask = pDataContract.IsTask;
|
|
pEntity.TaskDescription = pDataContract.TaskDescription;
|
|
pEntity.CompletedNotice = pDataContract.CompletedNotice;
|
|
pEntity.CompletedDate = pDataContract.CompletedDate;
|
|
pEntity.DueDate = pDataContract.DueDate;
|
|
|
|
pEntity.FormerTaskOid = pDataContract.FormerTaskOid;
|
|
|
|
if (pDataContract.Originator != null)
|
|
{
|
|
pEntity.Originator = MapperFactory.CompactEmployeeDC_Employee.MapToNewEntity(pDataContract.Originator);
|
|
}
|
|
|
|
pEntity.IsPrivate = pDataContract.IsPrivate;
|
|
|
|
pEntity.HasServiceRecordEntry = pDataContract.HasServiceRecordEntry;
|
|
|
|
try
|
|
{
|
|
pEntity.EmployeeList = DAOFactory.GenericDAO.LoadByIDs<Employee2SchedulerAppointment>(pDataContract.EmployeeList.Select(e => e.Employee2SchedulerAppointmentOid.Value));
|
|
pEntity.CustomerList = DAOFactory.GenericDAO.LoadByIDs<Customer>(pDataContract.CustomerList.Select(c => c.CustomerOid));
|
|
pEntity.ResourceList = DAOFactory.GenericDAO.LoadByIDs<Resource>(pDataContract.ResourceList.Select(r => r.ResourceOid.Value));
|
|
if (pDataContract.SupportConceptList != null)
|
|
{
|
|
pEntity.SupportConceptList =
|
|
DAOFactory.GenericDAO.LoadByIDs<SupportConcept>(
|
|
pDataContract.SupportConceptList.Select(s => s.SupportConceptOid));
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new InternalException(e.Message);
|
|
}
|
|
|
|
pEntity.IsActive = pDataContract.ActivationType;
|
|
|
|
return pEntity;
|
|
}
|
|
|
|
protected override bool AreDCAndEntityEqual(SchedulerAppointmentDC pDC, SchedulerAppointment pEntity)
|
|
{
|
|
if (pDC.SchedulerAppointmentOid == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return pDC.SchedulerAppointmentOid == pEntity.Oid;
|
|
}
|
|
}
|
|
}
|