// GET aircraft/details/id
        public async Task <IActionResult> Details(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var aircraft = await _aircraftRepository.GetById(id);

            if (aircraft == null)
            {
                return(NotFound());
            }
            return(View(aircraft));
        }
예제 #2
0
        public async Task <List <WorkPackageView> > GetWorkPackages(List <int> aircraftIds)
        {
            var res = new List <WorkPackageView>();

            foreach (var aircraftId in aircraftIds)
            {
                var wp = await _db.WorkPackages
                         .Where(i => i.ParentId == aircraftId)
                         .OnlyActive()
                         .AsNoTracking()
                         .ToListAsync();

                if (wp.Count == 0)
                {
                    continue;
                }

                var view = wp.ToBlView();


                var aircraft = await _aircraftRepository.GetById(aircraftId);

                var airportIds = new List <int>();
                airportIds.AddRange(view.Select(i => i.PerfAfter.AirportFromId));
                airportIds.AddRange(view.Select(i => i.PerfAfter.AirportToId));

                var airports = await _db.AirportCodes
                               .Where(i => airportIds.Contains(i.Id))
                               .OnlyActive()
                               .AsNoTracking()
                               .ToListAsync();

                var airportView = airports.ToBlView();

                var flightNumIds = view.Select(i => i.PerfAfter.FlightNumId);
                var flightNums   = await _db.FlightNums
                                   .Where(i => flightNumIds.Contains(i.Id))
                                   .OnlyActive()
                                   .AsNoTracking()
                                   .ToListAsync();

                var flightNum = flightNums.ToBlView();

                var calc = await CalculateMh(view.Select(i => i.Id));

                foreach (var workPackageView in view)
                {
                    workPackageView.ManHours              = calc?.FirstOrDefault(i => i.Id == workPackageView.Id)?.ManHours ?? 0;
                    workPackageView.RegistrationNumber    = aircraft.RegistrationNumber;
                    workPackageView.PerfAfter.AirportFrom = airportView.FirstOrDefault(i => i.Id == workPackageView.PerfAfter.AirportFromId);
                    workPackageView.PerfAfter.AirportTo   = airportView.FirstOrDefault(i => i.Id == workPackageView.PerfAfter.AirportToId);
                    workPackageView.PerfAfter.FlightNum   = flightNum.FirstOrDefault(i => i.Id == workPackageView.PerfAfter.FlightNumId);
                }

                res.AddRange(view);
            }

            return(res.ToList());
        }
예제 #3
0
        public async Task <IActionResult> Index([FromRoute] int aircraftId)
        {
            GlobalObject.AircraftMainMenu = new AircraftMainMenu(Url, aircraftId);

            var bc = await _componentRepository.GetAircraftBaseComponents(aircraftId);

            foreach (var view in bc)
            {
                view.ParentAircraftId = aircraftId;
            }
            GlobalObject.BaseComponent = new List <BaseComponentView>(bc);

            var aircraft = await _aircraftRepository.GetById(aircraftId);

            GlobalObject.Aircraft = aircraft;
            ViewData["Operator"]  = await _db.Operators.FirstOrDefaultAsync();

            ViewData["BaseComponents"] = bc;
            return(View(aircraft));
        }
예제 #4
0
 public Aircraft GetById(int id)
 {
     return(_aircraftRepository.GetById(id));
 }