using System.Collections.Generic; using System.Linq; using BeWo.Data.Entities; using BeWo.Data.ICD10; using BeWo.Service.DCEntityMapper; using BS.Shared; using BS.Shared.DataContracts; namespace BeWo.Report.ReportObjects { public class SBDEmployeeRO : AbstractBeWoReportObject { public long EmployeeOid { get; set; } public string DateOfBirth { get; set; } public List CustomerRelations { get; set; } public List Abwesenheiten { get; set; } public string FamilyStatus { get; set; } public string Fax { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Mail { get; set; } public string Mobile { get; set; } public string Name => FirstName + " " + LastName; public string Notice { get; set; } public string Phone { get; set; } public string PostCode { get; set; } public string Sex { get; set; } public string Street { get; set; } public string Town { get; set; } public object VarField1 { get; set; } public object VarField2 { get; set; } public object VarField3 { get; set; } public object VarField4 { get; set; } public object VarField5 { get; set; } public object VarField6 { get; set; } public object VarField7 { get; set; } public object VarField8 { get; set; } public object VarField9 { get; set; } public object VarField10 { get; set; } public EmployeeDC Employee { get; set; } public static SBDEmployeeRO Create(Employee employee) { var result = new SBDEmployeeRO(); var employeeDC = MapperFactory.EmployeeDC_Employee.MapToNewDC(employee); result.Employee = employeeDC; if (employeeDC.AbsenceTimes != null) { result.Abwesenheiten = employeeDC.AbsenceTimes.OrderBy(a => a.Start).ToList(); } result.EmployeeOid = employeeDC.EmployeeOid.Value; result.FirstName = employeeDC.FirstName; result.LastName = employeeDC.LastName; if (employeeDC.DateOfBirth.HasValue) { result.DateOfBirth = employeeDC.DateOfBirth.Value.ToShortDateString(); } result.Sex = employeeDC.Sex == BS.Shared.Sex.Female ? "weiblich" : "männlich"; if (employeeDC.FamilyStatus.HasValue) { switch (employeeDC.FamilyStatus.Value) { case BS.Shared.FamilyStatus.Divorced: result.FamilyStatus = "geschieden"; break; case BS.Shared.FamilyStatus.Married: result.FamilyStatus = "verheiratet"; break; case BS.Shared.FamilyStatus.Single: result.FamilyStatus = "ledig"; break; case BS.Shared.FamilyStatus.Widowed: result.FamilyStatus = "verwitwet"; break; case BS.Shared.FamilyStatus.Partner: result.FamilyStatus = "in Partnerschaft"; break; case BS.Shared.FamilyStatus.PartnerDivorced: result.FamilyStatus = "getrennt lebend"; break; case BS.Shared.FamilyStatus.PartnerDead: result.FamilyStatus = "partnerhinterblieben"; break; case BS.Shared.FamilyStatus.PartnerMarried: result.FamilyStatus = "verpartnert"; break; case BS.Shared.FamilyStatus.Entpartnert: result.FamilyStatus = "entpartnert"; break; } } result.Street = employeeDC.Street; result.Town = employeeDC.Town; result.PostCode = employeeDC.PostalCode; foreach (var iContact in employeeDC.ContactInformations) { switch (iContact.ContactType) { case ContactType.business_Phone: result.Phone = iContact.ContactValue; break; case ContactType.business_MobilePhone: result.Mobile = iContact.ContactValue; break; case ContactType.business_Mail: result.Mail = iContact.ContactValue; break; case ContactType.business_Fax: result.Fax = iContact.ContactValue; break; } } result.Notice = employee.Notice; result.CustomerRelations = employeeDC.RelatedCustomers; if (employeeDC.VarFields != null) { if (employeeDC.VarFields.Count > 0) { result.VarField1 = employeeDC.VarFields[0].VarFieldValue; } if (employeeDC.VarFields.Count > 1) { result.VarField2 = employeeDC.VarFields[1].VarFieldValue; } if (employeeDC.VarFields.Count > 2) { result.VarField3 = employeeDC.VarFields[2].VarFieldValue; } if (employeeDC.VarFields.Count > 3) { result.VarField4 = employeeDC.VarFields[3].VarFieldValue; } if (employeeDC.VarFields.Count > 4) { result.VarField5 = employeeDC.VarFields[4].VarFieldValue; } if (employeeDC.VarFields.Count > 5) { result.VarField6 = employeeDC.VarFields[5].VarFieldValue; } if (employeeDC.VarFields.Count > 6) { result.VarField7 = employeeDC.VarFields[6].VarFieldValue; } if (employeeDC.VarFields.Count > 7) { result.VarField8 = employeeDC.VarFields[7].VarFieldValue; } if (employeeDC.VarFields.Count > 8) { result.VarField9 = employeeDC.VarFields[8].VarFieldValue; } if (employeeDC.VarFields.Count > 9) { result.VarField10 = employeeDC.VarFields[9].VarFieldValue; } } return result; } } }