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); }
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); }