public IEnumerable<BusinessTripEntity> GetBusinessTripsBy(BusinessTripFilter filter, string[] userRole) { IQueryable<BusinessTripEntity> businessTrips = storage.GetStorageFor<BusinessTripEntity>(); if (!string.IsNullOrEmpty(filter.UserId)) { Guid filterGuid = GetGuidBy(filter.UserId); return businessTrips.Where(m => m.Id == filterGuid); } if (userRole.Contains(Role.Hr.ToString())) { if (filter.Status.HasValue) { businessTrips = businessTrips.Where(m => m.Status == filter.Status); } else { businessTrips = businessTrips.Where(AllStatusFilter()); } } else { businessTrips = businessTrips.Where(RegularUserStatusFilter()); } if (filter.StartingDate.HasValue) { businessTrips = businessTrips.Where(m => m.StartingDate >= filter.StartingDate); } if (filter.EndingDate.HasValue) { businessTrips = businessTrips.Where(m => m.EndingDate <= filter.EndingDate); } if (!string.IsNullOrEmpty(filter.Location)) { businessTrips = businessTrips.Where(m => m.ClientLocation.Contains(filter.Location)); } if (!string.IsNullOrEmpty(filter.Person)) { businessTrips = businessTrips.Where(m => m.User.Name.Contains(filter.Person)); } if (!string.IsNullOrEmpty(filter.MeansOfTransportation)) { businessTrips = businessTrips.Where(m => m.MeansOfTransportation.Contains(filter.MeansOfTransportation)); } if (!string.IsNullOrEmpty(filter.Accommodation)) { businessTrips = businessTrips.Where(m => m.Accomodation.Contains(filter.Accommodation)); } return businessTrips; }
public IEnumerable <BusinessTripViewModel> GetBusinessTripsBy(BusinessTripFilter filter, string[] userRole) { var businessTripsRepository = new BusinessTripsRepository(); return(businessTripsRepository.GetBusinessTripsBy(filter, userRole).Select(m => new BusinessTripViewModel(m))); }