public override void MakeLeaveDayRequest(DayStatus dayStatus) { var leaveDay = new LeaveDay(dayStatus, this); History.Add(leaveDay.DeepClone()); Approver.Approve(leaveDay); }
public override bool Approve(LeaveDay leaveDay) { if (CurrentStatus != DayStatus.Working && CurrentStatus != DayStatus.HomeOffice) { return(GetNextApprover().Approve(leaveDay)); } var random = new Random().NextDouble(); var approved = true; if (random < 0.5) { leaveDay.Status = LeaveDayStatus.APPROVED; } else { leaveDay.Status = LeaveDayStatus.REJECTED; approved = false; } Thread.Sleep(3000); leaveDay.Employee.ChangeStatus(leaveDay.DayStatus); leaveDay.Approver = this; leaveDay.RequestDate = DateTime.Now; leaveDay.Employee.History.Add(leaveDay.DeepClone()); var notificationStrategy = leaveDay.Employee.NotificationStrategy; if (notificationStrategy != null) { notificationStrategy.SendMessage(leaveDay.Employee, "Your leave day request was modified"); } return(approved); }