private IList <KMDAbsenceReport> Build(VacationReport report, KMDAbsenceOperation kmdAbsenceOperation) { var list = new List <KMDAbsenceReport>(); var baseAbsence = BuildBase(report, kmdAbsenceOperation); var sameDay = baseAbsence.StartDate.Date == baseAbsence.EndDate.Date; if (sameDay || (report.StartTime == null && report.EndTime == null)) { // Single report; baseAbsence.StartTime = report.StartTime; baseAbsence.EndTime = report.EndTime; list.Add(baseAbsence); return(list); } if (report.StartTime != null) { list.Add(BuildStart(report, kmdAbsenceOperation)); } list.Add(BuildCenter(report, kmdAbsenceOperation)); if (report.EndTime != null) { list.Add(BuildEnd(report, kmdAbsenceOperation)); } return(list); }
public IList <KMDAbsenceReport> Edit(VacationReport oldReport, VacationReport newReport) { var list = new List <KMDAbsenceReport>(); var oldStartIsWithHalfDay = oldReport.StartTime != null; var newStartIsWithHalfDay = newReport.StartTime != null; if (oldStartIsWithHalfDay && !newStartIsWithHalfDay) { // We have to delete the old absence var absence = BuildStart(oldReport, KMDAbsenceOperation.Delete); list.Add(absence); } else if (!oldStartIsWithHalfDay && newStartIsWithHalfDay) { var absence = BuildStart(newReport, KMDAbsenceOperation.Create); list.Add(absence); } else if (oldStartIsWithHalfDay) { var oldStartAbsence = BuildStart(oldReport, KMDAbsenceOperation.Create); var newStartAbsence = BuildStart(newReport, KMDAbsenceOperation.Edit); UpdateAbsence(oldStartAbsence, newStartAbsence); list.Add(newStartAbsence); } var oldCenterAbsence = BuildCenter(oldReport, KMDAbsenceOperation.Create); var newCenterAbsence = BuildCenter(newReport, KMDAbsenceOperation.Edit); UpdateAbsence(oldCenterAbsence, newCenterAbsence); list.Add(newCenterAbsence); var oldEndsWithHalfDay = oldReport.EndTime != null; var newEndsWithHalfDay = newReport.EndTime != null; if (oldEndsWithHalfDay && !newEndsWithHalfDay) { // We have to delete the old absence var absence = BuildEnd(oldReport, KMDAbsenceOperation.Delete); list.Add(absence); } else if (!oldEndsWithHalfDay && newEndsWithHalfDay) { var absence = BuildEnd(newReport, KMDAbsenceOperation.Create); list.Add(absence); } else if (oldEndsWithHalfDay) { var oldEndAbsence = BuildEnd(oldReport, KMDAbsenceOperation.Create); var newEndAbsence = BuildEnd(newReport, KMDAbsenceOperation.Edit); UpdateAbsence(oldEndAbsence, newEndAbsence); list.Add(newEndAbsence); } return(list); }
private KMDAbsenceReport BuildEnd(VacationReport report, KMDAbsenceOperation kmdAbsenceOperation) { var absence = BuildBase(report, kmdAbsenceOperation); absence.StartDate = absence.EndDate; absence.EndDate = absence.EndDate; absence.StartTime = null; absence.EndTime = report.EndTime; return(absence); }
private KMDAbsenceReport BuildCenter(VacationReport report, KMDAbsenceOperation kmdAbsenceOperation) { var absence = BuildBase(report, kmdAbsenceOperation); if (report.StartTime != null) { absence.StartDate = absence.StartDate.AddDays(1); } if (report.EndTime != null) { absence.EndDate = absence.EndDate.AddDays(-1); } return(absence); }
private KMDAbsenceReport BuildBase(VacationReport report, KMDAbsenceOperation kmdAbsenceOperation) { var startDate = report.StartTimestamp.ToDateTime(); var endDate = report.EndTimestamp.ToDateTime(); string extraData = ""; if (report.VacationType == VacationType.Care) { extraData = report.AdditionalData.PadLeft(2, '0'); } return(new KMDAbsenceReport { EmploymentId = report.Employment.EmploymentId, KmdAbsenceOperation = kmdAbsenceOperation, Type = report.VacationType, StartDate = startDate, EndDate = endDate, ExtraData = extraData }); }
public IList <KMDAbsenceReport> Create(VacationReport report) { return(Build(report, KMDAbsenceOperation.Create)); }