Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
 }