public async Task <IList <DepartureDetailsDTO> > GetAllDetailsAsync() { var departures = await _unitOfWork.Set <Departure>().DetailsAsync(); var crews = await _unitOfWork.Set <Crew>() .DetailsAsync(x => departures.Any(y => x.Id == y.CrewId)); var planes = await _unitOfWork.Set <Plane>() .DetailsAsync(x => departures.Any(y => x.Id == y.PlaneId)); return(await departures.ToAsyncEnumerable().Select(x => { var plane = planes.First(p => p.Id == x.PlaneId); var crew = crews.First(c => c.Id == x.CrewId); return DepartureDetailsDTO.Create(x, PlaneDetailsDTO.Create(plane), CrewDetailsDTO.Create(crew)); }).ToList()); }
public async Task <DepartureDetailsDTO> GetDetailsAsync(int id) { var departure = await _unitOfWork.Set <Departure>() .DetailsAsync(id); if (departure == null) { throw new NotFoundException("Departure with such id was not found"); } var crew = await _unitOfWork.Set <Crew>() .DetailsAsync(departure.CrewId); var plane = await _unitOfWork.Set <Plane>() .DetailsAsync(departure.PlaneId); return(DepartureDetailsDTO.Create(departure, PlaneDetailsDTO.Create(plane), CrewDetailsDTO.Create(crew))); }
public DepartureDetailsDTO GetDetails(int id) { var departure = _unitOfWork.Set <Departure>() .Details(x => x.Id == id).FirstOrDefault(); if (departure == null) { throw new NotFoundException("Departure with such id was not found"); } var crew = _unitOfWork.Set <Crew>() .Details(x => x.Id == departure.CrewId) .Select(CrewDetailsDTO.Create).First(); var plane = _unitOfWork.Set <Plane>() .Details(x => x.Id == departure.PlaneId) .Select(PlaneDetailsDTO.Create).First(); return(DepartureDetailsDTO.Create(departure, plane, crew)); }
public IList <DepartureDetailsDTO> GetAllDetails() { var departures = _unitOfWork.Set <Departure>().Details(); var crews = _unitOfWork.Set <Crew>() .Details(x => departures.Any(y => x.Id == y.CrewId)) .Select(CrewDetailsDTO.Create); var planes = _unitOfWork.Set <Plane>() .Details(x => departures.Any(y => x.Id == y.PlaneId)) .Select(PlaneDetailsDTO.Create); return(departures.Select(x => { var plane = planes.First(p => p.Id == x.PlaneId); var crew = crews.First(c => c.Id == x.CrewId); return DepartureDetailsDTO.Create(x, plane, crew); }).ToList()); }