public void StartAt() { var startAt = new DateTime(2018, 06, 01); var endAt = new DateTime(2018, 07, 01); var interval = new HolidayInterval(startAt, endAt); Assert.Equal(startAt, interval.GetStartAt()); }
private async Task <Result> Validations(HolidayInterval entity, CancellationToken cancellationToken) { var errors = new List <string>(); if (entity == null) { return(Result.Failure(new List <string> { "No valid holiday interval found" })); } var dateNow = _dateTime.Now.Date; var isInPast = entity.EndDate.Date <= dateNow || entity.EndDate.Date > dateNow && entity.StartDate.Date <= dateNow; if (isInPast) { errors.Add("Holiday interval is in past. You can't restore it!"); } if (entity.Employee == null || entity.Employee != null && entity.Employee.Deleted) { errors.Add("Employee is deleted. You must update that first."); } var startDate = entity.StartDate.Date; var localEndDate = entity.EndDate.Date; var res = !await _context.HolidayIntervals.AnyAsync(x => x.StartDate.Date >= startDate && x.EndDate.Date <= localEndDate && !x.Deleted && x.EmployeeId == entity.EmployeeId, cancellationToken); if (res == false) { errors.Add("Employee has other holiday intervals in this period"); } res = !await _context.MedicalChecks.AnyAsync(x => x.EmployeeId == entity.EmployeeId && x.Appointment.Date >= startDate && x.Appointment.Date <= localEndDate && !x.Deleted, cancellationToken); if (res == false) { errors.Add("Employee has medical checks in this period"); } return(errors.Any() ? Result.Failure(errors) : Result.Success()); }
public async Task <Result> Handle(AddHolidayIntervalCommand request, CancellationToken cancellationToken) { var entity = new HolidayInterval { EmployeeId = request.EmployeeId, StartDate = request.StartDate.ToLocalTime(), EndDate = request.EndDate.ToLocalTime() }; await _context.HolidayIntervals.AddAsync(entity, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(Result.Success("Holiday interval was created successfully")); }
private static void Main(string[] args) { var requester = new Employee("James", "Darmody"); var manager = new Employee("Nucky", "Thompson"); var oneWeekHolidayStartingTomorrow = new HolidayInterval(DateTime.Now.AddDays(1), DateTime.Now.AddDays(8)); var holidayApplication = new HolidayApplication( requester, manager, oneWeekHolidayStartingTomorrow); var holidayRequest = new Holiday(new EmailNotifier()); holidayRequest.Request(holidayApplication); holidayRequest.Approve(holidayApplication); holidayRequest.Reject(holidayApplication); }
private static void Main(string[] args) { var requester = new Employee("James", "Darmody"); var manager = new Employee("Nucky", "Thompson"); var oneWeekHolidayStartingTomorrow = new HolidayInterval(DateTime.Now.AddDays(1), DateTime.Now.AddDays(8)); var holidayApplication = new HolidayApplication( requester, manager, oneWeekHolidayStartingTomorrow); EmailSender.Send(holidayApplication.Create(EmailContentType.Request), "requesterPassword"); EmailSender.Send(holidayApplication.Create(EmailContentType.Approval), "managerPassword"); EmailSender.Send(holidayApplication.Create(EmailContentType.Rejection), "managerPassword"); }
public HolidayRequest(Employee employee, HolidayInterval holidayInterval) { Employee = employee; HolidayInterval = holidayInterval; }
public HolidayApplication(Employee employee, Employee manager, HolidayInterval holidayInterval) { Employee = employee; Manager = manager; HolidayInterval = holidayInterval; }