Files
BeWoPlaner/Shared/DataContracts/SchedulerAppointmentDC.cs
Lyndon Jetten 197c1b8da6 FaC:
Termine in die Zeiterfassung übernehmen hat jetzt eine Link-Table, um das entsprechende Icon zuverlässig anzuzeigen.

MoK:
Löschen von Quittierungsbelegunterschriften eingebaut.
Bewerten von Zielen/Maßnahmen an das entsprechende Recht gekoppelt.
2023-01-26 12:55:56 +01:00

196 lines
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace BS.Shared.DataContracts
{
[DataContract]
public class SchedulerAppointmentDC : IDataContract
{
[DataMember]
public ActivationTypeId ActivationType { get; set; }
[DataMember]
public long? SchedulerAppointmentOid { get; set; }
[DataMember]
public long? NewSchedulerAppointmentVersion { get; set; }
[DataMember]
public bool IsPrivate { get; set; }
[DataMember]
public string Subject { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public DateTime? StartDate { get; set; }
[DataMember]
public DateTime? EndDate { get; set; }
[DataMember]
public CompactEmployeeDC Originator { get; set; }
[DataMember]
public bool AllDay { get; set; }
[DataMember]
public int Status { get; set; }
[DataMember]
public int Type { get; set; }
[DataMember]
public string Location { get; set; }
[DataMember]
public string RecurrenceInfo { get; set; }
[DataMember]
public string ReminderInfo { get; set; }
[DataMember]
public List<CompactCustomerDC> CustomerList { get; set; }// = new List<CompactCustomerDC>();
[DataMember]
public List<Employee2SchedulerAppointmentDC> EmployeeList { get; set; }// = new List<Employee2SchedulerAppointmentDC>();
[DataMember]
public List<ResourceDC> ResourceList { get; set; }// = new List<ResourceDC>();
[DataMember]
public long? FormerBookingSequenceOid { get; set; }
[DataMember]
public bool IsTeilnahmeBestaetigung { get; set; }
[DataMember]
public bool IsTask { get; set; }
[DataMember]
public string CompletedNotice { get; set; }
[DataMember]
public string CompletedUser { get; set; }
[DataMember]
public string TaskDescription { get; set; }
[DataMember]
public DateTime? CompletedDate { get; set; }
[DataMember]
public DateTime? DueDate { get; set; }
[DataMember]
public List<CompactSupportConceptDC> SupportConceptList { get; set; }
[DataMember]
public long? LabelKey { get; set; }
public int RecurrenceIndex { get; set; }
public string RecurrenceId { get; set; }
private static readonly Regex RecurrenceIdRegex = new Regex("(Id=\\\"[a-z0-9-]+\\\")");
public string RecurrenceIdReference
{
get
{
if (!(RecurrenceInfo is null))
{
var match = RecurrenceIdRegex.Match(RecurrenceInfo);
if (match.Success)
{
var matchValue = match.Value;
var idValue = matchValue.Split("\"");
return idValue[1];
}
}
return null;
}
}
private static readonly Regex RecurrenceIndexRegex = new Regex("(Index=\\\"[0-9]+\\\")");
public int? RecurrenceIndexReference
{
get
{
if (!(RecurrenceInfo is null))
{
var match = RecurrenceIndexRegex.Match(RecurrenceInfo);
if (match.Success)
{
var matchValue = match.Value;
var indexValue = matchValue.Split("\"");
return int.TryParse(indexValue[1], out var indexInt) ? (int?)indexInt : null;
}
}
return null;
}
}
[DataMember]
public long? FormerTaskOid { get; set; }
[DataMember]
public bool HasServiceRecordEntry { get; set; }
[DataMember]
public bool CanBeEdited { get; set; } = true;
[DataMember]
public List<ServiceRecordDC> ServiceRecordList { get; set; }
public override bool Equals(object obj)
{
if (!(obj is SchedulerAppointmentDC schedulerAppointmentDC))
{
return false;
}
if (SchedulerAppointmentOid is null && schedulerAppointmentDC.SchedulerAppointmentOid is null)
{
return GetHashCode() == schedulerAppointmentDC.GetHashCode();
}
if (SchedulerAppointmentOid != null && schedulerAppointmentDC.SchedulerAppointmentOid != null)
{
return SchedulerAppointmentOid == schedulerAppointmentDC.SchedulerAppointmentOid;
}
var value = StartDate == schedulerAppointmentDC.StartDate && EndDate == schedulerAppointmentDC.EndDate && Type == schedulerAppointmentDC.Type && Description == schedulerAppointmentDC.Description &&
EmployeeList.SequenceEqual(schedulerAppointmentDC.EmployeeList) &&
ResourceList.SequenceEqual(schedulerAppointmentDC.ResourceList) &&
CustomerList.SequenceEqual(schedulerAppointmentDC.CustomerList) &&
ServiceRecordList.SequenceEqual(schedulerAppointmentDC.ServiceRecordList) &&
SupportConceptList.SequenceEqual(schedulerAppointmentDC.SupportConceptList);
return value;
}
public override int GetHashCode()
{
return SchedulerAppointmentOid.HasValue
? GetType().Name.GetHashCode() ^ SchedulerAppointmentOid.GetHashCode()
: base.GetHashCode();
}
public override string ToString() => $"{SchedulerAppointmentOid} {StartDate:dd.MM.yyyy HH:mm}-{EndDate:dd.MM.yyyy HH:mm}: {Subject}";
}
}