Example #1
0
        public static async Task <bool> IsCarAvailable(TravelPlanRequest request, long carId,
                                                       IUnitOfWork unitOfWork, long?excludedTravelPlanId = null)
        {
            var travelPlansForCar = await unitOfWork.TravelPlans.GetByCarId(carId, excludedTravelPlanId);

            var isAvailable = !travelPlansForCar.Any(tp => request.StartDate.IsBetweenDates(tp.StartDate, tp.EndDate) ||
                                                     request.EndDate.IsBetweenDates(tp.StartDate, tp.EndDate));

            return(isAvailable);
        }
Example #2
0
        public static async Task <IList <long> > GetUnavailableEmployeeIds(TravelPlanRequest request,
                                                                           IEnumerable <long> employeeIds, IUnitOfWork unitOfWork, long?excludedTravelPlanId = null)
        {
            var unavailableEmployees = new List <long>();

            foreach (var employeeId in employeeIds)
            {
                var travelPlansForEmployee = await unitOfWork.TravelPlans.GetByEmployeeId(employeeId, excludedTravelPlanId);

                var isAvailable = !travelPlansForEmployee.Any(tp => request.StartDate.IsBetweenDates(tp.StartDate, tp.EndDate) ||
                                                              request.EndDate.IsBetweenDates(tp.StartDate, tp.EndDate));
                if (!isAvailable)
                {
                    unavailableEmployees.Add(employeeId);
                }
            }

            return(unavailableEmployees);
        }