示例#1
0
 /// <summary>
 /// Контрол редактирует данные о залитом масле для одного агрегата
 /// </summary>
 public PassengerControl(AircraftFlight flight)
     : this()
 {
     AttachedObject = new FlightPassengerRecord {
         FlightId = flight.ItemId
     };
 }
示例#2
0
 /// <summary>
 /// Создает форму для редактирования данных полета ВС
 /// </summary>
 /// <param name="aircraftFlight">Полет ВС</param>
 public AircraftFlightForm(AircraftFlight aircraftFlight)
 {
     currentAircraftFlight = aircraftFlight;
     mode = ScreenMode.Edit;
     InitializeComponent();
     UpdateInformation();
 }
 private void aircraftFlight_Reloading(object sender, CancelEventArgs e)
 {
     if (!InvokeRequired)
     {
         aircraftFlightBeforeReload = (AircraftFlight)sender;
     }
 }
示例#4
0
 /// <summary>
 /// Контрол редактирует данные о залитом масле для одного агрегата
 /// </summary>
 public CargoRecordControl(AircraftFlight flight)
     : this()
 {
     AttachedObject = new FlightCargoRecord {
         FlightId = flight.ItemId
     };
 }
示例#5
0
        ///<summary>
        /// Создает страницу для отображения информации об одной директиве
        ///</summary>
        /// <param name="flight">Директива</param>
        public FlightScreen(AircraftFlight flight, bool showDeffects = false, bool allView = false)
            : this()
        {
            if (flight == null)
            {
                throw new ArgumentNullException("flight", "Argument cannot be null");
            }
            _showDeffects = showDeffects;

            if (flight.AircraftId > 0)
            {
                _currentFlight  = flight;
                CurrentAircraft = GlobalObjects.AircraftsCore.GetAircraftById(flight.AircraftId);
            }
            else
            {
                throw new ArgumentException("flight.AircraftId cannot be 0", "flight");
            }

            if (allView)
            {
                UpdateControls();
            }

            AnimatedThreadWorker.DoWork -= AnimatedThreadWorkerDoWork;
            AnimatedThreadWorker.DoWork -= AnimatedThreadWorkerDoWorkWithCreateFlight;
            AnimatedThreadWorker.DoWork += AnimatedThreadWorkerDoWork;
        }
示例#6
0
        public void ImportFlights()
        {
            var env = GetEnviroment();

            var codes      = env.GetDictionary <AirportsCodes>().ToArray().Cast <AirportsCodes>();
            var flightNums = env.GetDictionary <FlightNum>().Cast <FlightNum>().ToList();

            //Экспортируем полеты в Dataset из Excel файла
            var ds = ExcelToDataTableUsingExcelDataReader(@"H:\AZV.xlsx", false);

            foreach (DataTable table in ds.Tables)
            {
                foreach (DataRow row in table.Rows)
                {
                    var flight = new AircraftFlight();
                    flight.ATLBId          = 151;
                    flight.AircraftId      = 2335;
                    flight.DistanceMeasure = Measure.Kilometres;
                    flight.PageNo          = row[0].ToString();
                    flight.FlightDate      = DateTime.Parse(row[1].ToString());

                    var flightNum = flightNums.FirstOrDefault(x => x.FullName == row[2].ToString());
                    if (flightNum != null)
                    {
                        flight.FlightNumber = flightNum;
                    }
                    else
                    {
                        var newFlightNum = new FlightNum {
                            FullName = flight.FlightNo
                        };
                        env.NewKeeper.Save(newFlightNum);
                        flightNums.Add(newFlightNum);

                        flight.FlightNumber = newFlightNum;
                    }

                    if (row[3] != null)
                    {
                        flight.StationFromId = codes.FirstOrDefault(c => c.ShortName.ToUpper() == row[3].ToString().Trim().ToUpper());
                    }
                    if (row[4] != null)
                    {
                        flight.StationToId = codes.FirstOrDefault(c => c.ShortName.ToUpper() == row[4].ToString().Trim().ToUpper());
                    }

                    var dateOut = DateTime.Parse(row[5].ToString());
                    var dateIn  = DateTime.Parse(row[6].ToString());

                    flight.OutTime     = (int)dateOut.TimeOfDay.TotalMinutes;
                    flight.InTime      = (int)dateIn.TimeOfDay.TotalMinutes;
                    flight.TakeOffTime = flight.OutTime;
                    flight.LDGTime     = flight.InTime;


                    env.NewKeeper.Save(flight);
                }
            }
        }
示例#7
0
 /// <summary>
 /// Создает форму для редактирования данных полета ВС
 /// </summary>
 /// <param name="aircraft">Бортовой журнал ВС</param>
 public AircraftFlightForm(Aircraft aircraft)
 {
     parentAircraft        = aircraft;
     currentAircraftFlight = aircraft.ProposeNextFlight();
     mode = ScreenMode.Add;
     InitializeComponent();
     UpdateInformation();
 }
示例#8
0
 /// <summary>
 /// Контрол редактирует данные о залитом масле для одного агрегата
 /// </summary>
 public PowerUnitRunupControl(Aircraft aircraft, AircraftFlight flight, RunUp runup)
     : this()
 {
     _currentAircraft = aircraft;
     _componentType   = runup.BaseComponent.BaseComponentType;
     _outTime         = flight.FlightDate.Date.AddMinutes(flight.OutTime);
     _takeOffTime     = flight.FlightDate.Date.AddMinutes(flight.TakeOffTime);
     _landingTime     = flight.FlightDate.Date.AddMinutes(flight.LDGTime);
     _inTime          = flight.FlightDate.Date.AddMinutes(flight.InTime);
     AttachedObject   = runup;
 }
示例#9
0
        /// <summary>
        /// Возвращает все директивы базового агрегата, самолета, или задачи созданные в рамках страницы бортжурнала
        /// </summary>
        /// <returns></returns>
        public DirectiveCollection GetDeferredItems(BaseComponent parentBaseComponent   = null,
                                                    Aircraft parentAircraft             = null,
                                                    AircraftFlight parentFlight         = null,
                                                    IEnumerable <ICommonFilter> filters = null)
        {
            if (parentAircraft == null && parentBaseComponent == null && parentFlight == null && filters == null)
            {
                throw new ArgumentNullException();
            }

            List <DbQuery> qrs;

            if (parentBaseComponent != null)
            {
                qrs = DeferredItemQueries.GetSelectQuery(parentBaseComponent, filters, true);
            }
            else if (parentAircraft != null)
            {
                qrs = DeferredItemQueries.GetSelectQuery(parentAircraft.ItemId, filters, true);
            }
            else if (parentFlight != null)
            {
                qrs = DeferredItemQueries.GetSelectQuery(parentFlight, filters, true);
            }
            else
            {
                qrs = BaseQueries.GetSelectQueryWithWhereAll <DeferredItem>(filters.ToArray(), true);
            }

            var directives = new DirectiveCollection();

            directives.AddRange(_loader.GetObjectListAll <DeferredItem>(qrs, true).ToArray());

            if (directives.Count == 0)
            {
                return(directives);
            }

            var directiveIds   = directives.Select(d => d.ItemId).ToList();
            var itemsRelations = _itemsRelationsDataAccess.GetRelations(directiveIds, SmartCoreType.Directive.ItemId);

            if (itemsRelations.Count > 0)
            {
                foreach (var directive in directives)
                {
                    directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId));
                }
            }

            return(directives);
        }
示例#10
0
        /// <summary>
        /// Возвращает все директивы базового агрегата, самолета, или задачи созданные в рамках страницы бортжурнала
        /// </summary>
        /// <returns></returns>
        private DirectiveCollection GetDirectives(BaseComponent parentBaseComponent,
                                                  Aircraft parentAircraft,
                                                  AircraftFlight parentFlight,
                                                  DirectiveType directiveType)
        {
            if (parentAircraft == null && parentBaseComponent == null && parentFlight == null)
            {
                throw new ArgumentNullException();
            }
            if (directiveType == null)
            {
                directiveType = DirectiveType.AirworthenessDirectives;
            }

            List <DbQuery> qrs;

            if (parentBaseComponent != null)
            {
                qrs = DirectiveQueries.GetSelectQuery(parentBaseComponent, directiveType, loadChild: true);
            }
            else if (parentAircraft != null)
            {
                qrs = DirectiveQueries.GetAircraftDirectivesSelectQuery(parentAircraft.ItemId, directiveType, loadChild: true);
            }
            else
            {
                qrs = DirectiveQueries.GetSelectQuery(parentFlight, directiveType, loadChild: true);
            }

            var directives = new DirectiveCollection();

            directives.AddRange(_loader.GetObjectListAll <Directive>(qrs, true));

            if (directives.Count == 0)
            {
                return(directives);
            }

            var directiveIds   = directives.Select(d => d.ItemId).ToList();
            var itemsRelations = _itemsRelationsDataAccess.GetRelations(directiveIds, SmartCoreType.Directive.ItemId);

            if (itemsRelations.Count > 0)
            {
                foreach (var directive in directives)
                {
                    directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId));
                }
            }

            return(directives);
        }
示例#11
0
        ///<summary>
        /// Создается объект, описывающий отображение добавления директивы
        /// (данный конструктор используется в DiscrepancyControl через Reflection)
        ///</summary>
        /// <param name="parentAircraft">Родительский объект, в который добавляется директива</param>
        ///<param name="aircraftFlight">Родительский полет, в рамках которого создается директива</param>
        public DeferredScreen(Aircraft parentAircraft, AircraftFlight aircraftFlight) : this()
        {
            _defferedGeneralInformation.DiscoveryDateEnabled = false;
            _defferedGeneralInformation.EffectiveDate        = aircraftFlight.FlightDate.Date;
            var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(parentAircraft.AircraftFrameId);

            _defferedItem = new DeferredItem
            {
                ParentBaseComponent = aircraftFrame,
                Threshold           = { EffectiveDate = aircraftFlight.FlightDate.Date }
            };

            Initialize();
        }
示例#12
0
        private void buttonRegisterFlight_DisplayerRequested(object sender, ReferenceEventArgs e)
        {
            Aircraft a = currentATLB.Parent as Aircraft;

            if (a != null)
            {
                AircraftFlight flight = a.ProposeNextFlight();
                // todo: Сергей Фролов, нужно сохранить Flight в открытом бортовом журнале (в гуях)
                //flight.ATLB = currentATLB;
                FlightDialog.Show(flight);
            }

            /*e.RequestedEntity = new DispatcheredDetailAddingScreen(currentATLB);
             * e.DisplayerText = currentATLB.RegistrationNumber + ". New Component";*/
            e.Cancel = true;
        }
示例#13
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            var items = dataGridViewFlights.Rows.Cast <DataGridViewRow>().ToList();

            foreach (var row in items)
            {
                var tripRecord = row.Tag as FlightTrackRecord;

                var includeRow = (bool)row.Cells[0].Value;
                if (!includeRow)
                {
                    continue;
                }

                var flightNo   = row.Cells[1].Value as FlightNum;
                var from       = row.Cells[2].Tag as AirportsCodes;
                var to         = row.Cells[3].Tag as AirportsCodes;
                var flightDate = (DateTime)row.Cells[4].Value;
                var arrival    = (int)TimeSpan.Parse(row.Cells[5].Value.ToString()).TotalMinutes;
                var departure  = (int)TimeSpan.Parse(row.Cells[6].Value.ToString()).TotalMinutes;

                var flight = new AircraftFlight();
                flight.ParentATLB = _atlb;
                flight.ATLBId     = _atlb.ItemId;
                flight.AircraftId = _currentAircraft.ItemId;

                GlobalObjects.AircraftFlightsCore.GetAircraftInformationToFlight(_currentAircraft.ItemId, flight);

                flight.DistanceMeasure    = Measure.Kilometres;
                flight.FlightDate         = flightDate;
                flight.FlightNumber       = flightNo;
                flight.StationFromId      = from;
                flight.StationToId        = to;
                flight.TakeOffTime        = arrival;
                flight.LDGTime            = departure;
                flight.OutTime            = arrival;
                flight.InTime             = departure;
                flight.FlightAircraftCode = tripRecord.FlightAircraftCode;
                flight.FlightCategory     = tripRecord.FlightCategory;
                flight.FlightType         = tripRecord.FlightType;


                GlobalObjects.AircraftFlightsCore.AddAircraftFlight(flight);
            }

            DialogResult = DialogResult.OK;
        }
示例#14
0
        /// <summary>
        /// Возвращает строку запроса на получение всех облуживания воздушного судна
        /// </summary>
        /// <param name="aircraftId">ВС, диретивы которого необходимо получить</param>
        /// <param name="aircraftFlight"></param>
        /// <param name="filters">Фильтры для Maintenance Directives</param>
        /// <param name="loadChild">Загружать дочерние элементы</param>
        /// <param name="getDeleted">Загружать недействительные записи</param>
        /// <returns></returns>
        public static List <DbQuery> GetLastSelectQuery(int aircraftId,
                                                        AircraftFlight aircraftFlight,
                                                        IEnumerable <ICommonFilter> filters = null,
                                                        bool loadChild  = false,
                                                        bool getDeleted = false)
        {
            if (aircraftFlight == null || aircraftFlight.ItemId < 0)
            {
                return(GetSelectQuery(aircraftId, filters, loadChild, getDeleted));
            }

            string s = string.Format(@"-- не имеющие статус Closed
                                       directives.IsClosed <> 1
                                       or
                                       -- не имеющие записей о выполнении
                                       directives.ItemId not in (Select DR.ParentId
                                                                 from dbo.DirectivesRecords DR
                                                                 where DR.IsDeleted = 0
                                                                 and DR.ParentTypeId = {0})
                                       or
                                       -- дата последнего выполения которых >= дате текущего полета при наличии статуса Closed
                                           (    directives.IsClosed = 1
                                            and directives.ItemId in (Select top 1 DR.ParentId
                                                                        from dbo.DirectivesRecords DR
                                                                        where DR.IsDeleted = 0
                                                                        and DR.ParentId = directives.ItemId
                                                                        and DR.ParentTypeId = {0} 
                                                                        and DR.RecordDate >= convert(datetime, '{1}', 104)
                                                                        Order by DR.RecordDate desc))",
                                     SmartCoreType.Directive.ItemId, DbTypes.DbObject(aircraftFlight.FlightDate.Date));

            List <ICommonFilter> allFilters = new List <ICommonFilter>
            {
                new CommonFilter <int> (Directive.AircraftFlightIdProperty, FilterType.NotEqual, new[] { 0 }),
                new CommonFilter <int> (Directive.AircraftFlightIdProperty, FilterType.NotEqual, new[] { aircraftFlight.ItemId }),
                new CommonFilter <string> (s)
            };

            if (filters != null && filters.Count() > 0)
            {
                allFilters.AddRange(filters);
            }
            List <DbQuery> qrs = GetSelectQuery(aircraftId, allFilters, loadChild, getDeleted);

            return(qrs);
        }
示例#15
0
        /*
         * Перегруженные методы
         */

        #region public static void Show(AircraftFlight Flight)
        /// <summary>
        /// Вызывает диалог редактирования объекта.
        /// Данный метод придется вручную переписать.
        /// </summary>
        /// <param name="Flight"></param>
        public static void Show(AircraftFlight Flight)
        {
            FlightDialog dlg = GetDialogByObject(Flight) as FlightDialog;

            if (dlg == null)
            {
                dlg = new FlightDialog(Flight);
                RegisterDialog(dlg);
            }
            dlg.Show();
            try
            {
                dlg.Activate();
            }
            catch
            {
            }
        }
示例#16
0
        /// <summary>
        /// Возвращает строку запроса на получение всех облуживания воздушного судна
        /// </summary>
        /// <param name="aircraftFlight">полет ВС, диретивы которого необходимо получить</param>
        /// <param name="filters">Фильтры для Maintenance Directives</param>
        /// <param name="loadChild">Загружать дочерние элементы</param>
        /// <param name="getDeleted">Загружать недействительные записи</param>
        /// <returns></returns>
        public static List <DbQuery> GetSelectQuery(AircraftFlight aircraftFlight,
                                                    IEnumerable <ICommonFilter> filters = null,
                                                    bool loadChild  = false,
                                                    bool getDeleted = false)
        {
            List <ICommonFilter> allFilters =
                new List <ICommonFilter> {
                new CommonFilter <int>(Directive.AircraftFlightIdProperty, aircraftFlight.ItemId)
            };

            if (filters != null && filters.Count() > 0)
            {
                allFilters.AddRange(filters);
            }
            List <DbQuery> qrs = BaseQueries.GetSelectQueryWithWhereAll <DeferredItem>(allFilters.ToArray(), loadChild, getDeleted);

            return(qrs);
        }
示例#17
0
        /// <summary>
        /// Возвращает строку запроса на получение всех облуживания воздушного судна
        /// </summary>
        /// <param name="aircraftFlight">полет ВС, диретивы которого необходимо получить</param>
        /// <param name="directiveType">Тип загружаемых задач</param>
        /// <param name="filters">Фильтры для Maintenance Directives</param>
        /// <param name="loadChild">Загружать дочерние элементы</param>
        /// <param name="getDeleted">Загружать недействительные записи</param>
        /// <returns></returns>
        public static List <DbQuery> GetSelectQuery(AircraftFlight aircraftFlight,
                                                    DirectiveType directiveType,
                                                    ICommonFilter[] filters = null,
                                                    bool loadChild          = false,
                                                    bool getDeleted         = false)
        {
            List <ICommonFilter> allFilters =
                new List <ICommonFilter> {
                new CommonFilter <int>(Directive.AircraftFlightIdProperty, aircraftFlight.ItemId)
            };

            if (filters != null && filters.Length > 0)
            {
                allFilters.AddRange(filters);
            }
            allFilters.Add(GetWhereStatement(directiveType));
            List <DbQuery> qrs = BaseQueries.GetSelectQueryWithWhereAll <Directive>(allFilters.ToArray(), loadChild, getDeleted);

            return(qrs);
        }
示例#18
0
        ///<summary>
        /// Создает страницу для отображения информации об одной директиве
        ///</summary>
        /// <param name="flight">Директива</param>
        public FlightScreenLight(AircraftFlight flight)
            : this()
        {
            if (flight == null)
            {
                throw new ArgumentNullException("flight", "Argument cannot be null");
            }

            if (flight.AircraftId > 0)
            {
                _currentFlight  = flight;
                CurrentAircraft = GlobalObjects.AircraftsCore.GetAircraftById(flight.AircraftId);
            }
            else
            {
                throw new ArgumentException("flight.AircraftId cannot be 0", "flight");
            }

            AnimatedThreadWorker.DoWork -= AnimatedThreadWorkerDoWork;
            AnimatedThreadWorker.DoWork -= AnimatedThreadWorkerDoWorkWithCreateFlight;
            AnimatedThreadWorker.DoWork += AnimatedThreadWorkerDoWork;
        }
示例#19
0
        public void SmartCoreFileTest_AircraftFlight()
        {
            var enviroment = GetEnviroment();

            var aircraftFlight = new AircraftFlight
            {
                AttachedFile = new AttachedFile {
                    FileName = "AttachedFile.test"
                },
            };

            enviroment.NewKeeper.Save(aircraftFlight);

            Assert.IsTrue(aircraftFlight.ItemId > 0, "ItemId должен быть больше 0");

            var forCheck = enviroment.NewLoader.GetObject <AircraftFlightDTO, AircraftFlight>(new Filter("ItemId", aircraftFlight.ItemId), true);

            enviroment.NewKeeper.Delete(aircraftFlight);

            Assert.IsTrue(forCheck != null, "значение не должно быть null");
            Assert.AreEqual(forCheck.Files.Count, 1, "Кол-во файлов должно быть 1");
            Assert.IsTrue(forCheck.AttachedFile != null);
            Assert.AreEqual(forCheck.AttachedFile.FileName, "AttachedFile.test");
        }
示例#20
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            AnimatedThreadWorker.ReportProgress(0, "load flight");

            try
            {
                _currentFlight = GlobalObjects.AircraftFlightsCore.LoadFullAircraftFlightById(_currentFlight.ItemId, CurrentAircraft.ItemId);
                if (_currentFlight.ParentATLB == null || _currentFlight.ParentATLB.ItemId != _currentFlight.ATLBId)
                {
                    _currentFlight.ParentATLB = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(_currentFlight.ATLBId);
                }
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while loading flight", ex);
            }

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            ATLB           lastAtlb = null;
            AircraftFlight lastAircraftFlight;

            _lastFlightString = "Unknown";
            _lastAtlbString   = "Unknown";
            _flightsOnPage    = 0;
            _flightsOnPageMax = 0;

            if (_currentFlight.ATLBId > 0)
            {
                lastAtlb = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(_currentFlight.ATLBId);
                if (lastAtlb != null)
                {
                    _lastAtlbString   = lastAtlb.ATLBNo;
                    _flightsOnPageMax = lastAtlb.PageFlightCount;
                }

                var flights = GlobalObjects.AircraftFlightsCore.GetAircraftFlightsByAircraftId(CurrentAircraft.ItemId);

                lastAircraftFlight = _currentFlight.ItemId <= 0
                                        ? flights.GetLastFlightInAtlb(_currentFlight.ATLBId)
                                        : flights.GetPreviousKnownRecord(_currentFlight.FlightDate);
                if (lastAircraftFlight != null)
                {
                    _lastFlightString = lastAircraftFlight.PageNo;
                    _flightsOnPage    = flights.GetFlightWithPageNumInAtlb(_currentFlight.PageNo, _currentFlight.ATLBId).Count;
                }
            }
            else
            {
                var flights = GlobalObjects.AircraftFlightsCore.GetAircraftFlightsByAircraftId(CurrentAircraft.ItemId);
                lastAircraftFlight = _currentFlight.ItemId <= 0
                                   ? flights.GetLast()
                                   : flights.GetPreviousKnownRecord(_currentFlight.FlightDate);
                if (lastAircraftFlight != null)
                {
                    _lastFlightString = lastAircraftFlight.PageNo;
                    lastAtlb          = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(lastAircraftFlight.ATLBId);
                }
                if (lastAtlb != null)
                {
                    _lastAtlbString   = lastAtlb.ATLBNo;
                    _flightsOnPageMax = lastAtlb.PageFlightCount;
                }
            }

            discrepancies.Clear();
            discrepancies.AddRange(GlobalObjects.DiscrepanciesCore.GetDiscrepancies(CurrentAircraft).Distinct());

            workpackages.Clear();
            workpackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackages(CurrentAircraft));

            transferRecords.Clear();
            transferRecords.AddRange(GlobalObjects.TransferRecordCore.GetTransferRecord(CurrentAircraft.ItemId));

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
示例#21
0
 /// <summary>
 /// Диалог редактирует информацию по полету
 /// </summary>
 /// <param name="Flight"></param>
 protected FlightDialog(AircraftFlight Flight) : this()
 {
     AttachedObject = Flight;
 }
 private void aircraftFlight_Saving(object sender, CancelEventArgs e)
 {
     aircraftFlightBeforeSave = (AircraftFlight)sender;
 }
示例#23
0
 public Lifelength GetFlightLifelength(AircraftFlight flight, BaseComponent bd, FlightRegime flightRegime)
 {
     return(_provider.GetFlightLifelengthWithRegimeBaseComponent(flight.ItemId, bd.ItemId, flightRegime.ItemId));
 }
示例#24
0
 public Lifelength GetFlightLifelengthIncludingThisFlight(BaseComponent baseComponent, AircraftFlight flight)
 {
     return(_provider.GetFlightLifelengthIncludingThisFlightBaseComponent(baseComponent.ItemId, flight.ItemId));
 }
示例#25
0
        private void _animatedThreadWorker_DoLoadFlight(object sender, DoWorkEventArgs e)
        {
            aircraftFlightEdit = GlobalObjects.CasEnvironment.NewLoader.GetObject <AircraftFlightDTO, AircraftFlight>(new List <Filter>()
            {
                new Filter("AircraftId", _currentAircraft.ItemId),
                new Filter("FlightNumberId", _planOpsRecord.FlightTrackRecord.FlightNo.ItemId),
                new Filter("StationFromId", _planOpsRecord.FlightTrackRecord.StationFrom.ItemId),
                new Filter("StationToId", _planOpsRecord.FlightTrackRecord.StationTo.ItemId),
                new Filter("FlightDate", _planOpsRecord.Date)
            });
            if (aircraftFlightEdit != null)
            {
                aircraftFlightEdit.ParentATLB = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(aircraftFlightEdit.ATLBId);
                aircraftFlightEdit.Document   = GlobalObjects.CasEnvironment.NewLoader.GetObject <DocumentDTO, Document>(new List <Filter>
                {
                    new Filter("ParentID", aircraftFlightEdit.ItemId),
                    new Filter("ParentTypeId", SmartCoreType.AircraftFlight.ItemId)
                }, true);
            }
            else
            {
                var atlb = GlobalObjects.AircraftFlightsCore.GetATLBsByAircraftId(_currentAircraft.ItemId).FirstOrDefault(a => a.AtlbStatus == AtlbStatus.Opened);

                aircraftFlightEdit            = new AircraftFlight();
                aircraftFlightEdit.ParentATLB = atlb;
                aircraftFlightEdit.ATLBId     = atlb.ItemId;
                aircraftFlightEdit.AircraftId = _currentAircraft.ItemId;

                aircraftFlightEdit.PageNo = GlobalObjects.AircraftFlightsCore.GetNextPageNoFromAtlb(atlb.ItemId, _currentAircraft.ItemId);

                //Если полет Schedule то берем дату на день прогноза, если Unschedule то берем дату вылета
                if (_planOpsRecord.FlightTrackRecord.FlightType == FlightType.Schedule)
                {
                    aircraftFlightEdit.FlightDate = _planOpsRecord.Date;
                }
                else
                {
                    aircraftFlightEdit.FlightDate = _planOpsRecord.FlightTrackRecord.FlightNumberPeriod.DepartureDate;
                }

                aircraftFlightEdit.DistanceMeasure    = Measure.Kilometres;
                aircraftFlightEdit.FlightNumber       = _planOpsRecord.FlightTrackRecord.FlightNo;
                aircraftFlightEdit.StationFromId      = _planOpsRecord.FlightTrackRecord.StationFrom;
                aircraftFlightEdit.StationToId        = _planOpsRecord.FlightTrackRecord.StationTo;
                aircraftFlightEdit.FlightAircraftCode = _planOpsRecord.FlightTrackRecord.FlightAircraftCode;
                aircraftFlightEdit.FlightCategory     = _planOpsRecord.FlightTrackRecord.FlightCategory;
                aircraftFlightEdit.FlightType         = _planOpsRecord.FlightTrackRecord.FlightType;

                if (_planOpsRecord.IsDispatcherEditLdg)
                {
                    aircraftFlightEdit.LDGTime = (int)dateTimePickerLDGD.Value.TimeOfDay.TotalMinutes;
                }
                else
                {
                    aircraftFlightEdit.LDGTime = _planOpsRecord.FlightTrackRecord.FlightNumberPeriod.PeriodTo;
                }

                if (_planOpsRecord.IsDispatcherEdit)
                {
                    aircraftFlightEdit.TakeOffTime = (int)dateTimePickerTakeOffD.Value.TimeOfDay.TotalMinutes;
                }
                else
                {
                    aircraftFlightEdit.TakeOffTime = _planOpsRecord.FlightTrackRecord.FlightNumberPeriod.PeriodFrom;
                }
            }
        }
示例#26
0
 public Lifelength GetFlightLifelength(AircraftFlight flight, BaseComponent bd)
 {
     return(_provider.GetFlightLifelengthBaseComponent(flight.ItemId, bd.ItemId));
 }
示例#27
0
        private void AnimatedThreadWorkerDoWorkWithCreateFlight(object sender, DoWorkEventArgs e)
        {
            AnimatedThreadWorker.ReportProgress(0, "create flight");

            _currentFlight = new AircraftFlight();            //создание нового объекта полета

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            AnimatedThreadWorker.ReportProgress(30, "loading information to flight");

            ATLB lastAtlb;

            if (CurrentAircraft != null)
            {
                if (_currentAtlb != null)
                {
                    _currentFlight.ATLBId       = _currentAtlb.ItemId;           //присваивание идентификатора бортового журнала
                    _currentFlight.AttachedFile = _currentAtlb.AttachedFile;     //присваивание идентификатора файла бортового журнала
                    _currentFlight.ParentATLB   = _currentAtlb;                  //присваивание обратной ссылки на объект бортового журнала
                }
                else
                {
                    var lastFlight = GlobalObjects.AircraftFlightsCore.GetLastAircraftFlight(CurrentAircraft.ItemId);

                    lastAtlb = lastFlight != null
                                                ? GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(lastFlight.ATLBId)
                                                : null;

                    if (lastAtlb != null)
                    {
                        _currentFlight.ATLBId       = lastAtlb.ItemId;               //присваивание идентификатора бортового журнала
                        _currentFlight.AttachedFile = lastAtlb.AttachedFile;         //присваивание идентификатора файла бортового журнала
                        _currentFlight.ParentATLB   = lastAtlb;                      //присваивание обратной ссылки на объект бортового журнала
                    }
                }
                _currentFlight.AircraftId = CurrentAircraft.ItemId;                //присваивание обратной на родительский самолет

                //загрузка данных Воздушного судно в объект полета
                try
                {
                    GlobalObjects.AircraftFlightsCore.GetAircraftInformationToFlight(CurrentAircraft.ItemId, _currentFlight);
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while loading flight on Aircrat: " + CurrentAircraft, ex);
                }

                lastAtlb = null;
                AircraftFlight lastAircraftFlight;
                _lastFlightString = "Unknown";
                _lastAtlbString   = "Unknown";
                _flightsOnPage    = 0;
                _flightsOnPageMax = 0;

                if (_currentFlight.ATLBId > 0)
                {
                    lastAtlb = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(_currentFlight.ATLBId);
                    if (lastAtlb != null)
                    {
                        _lastAtlbString   = lastAtlb.ATLBNo;
                        _flightsOnPageMax = lastAtlb.PageFlightCount;
                    }

                    var flights = GlobalObjects.AircraftFlightsCore.GetAircraftFlightsByAircraftId(CurrentAircraft.ItemId);

                    lastAircraftFlight = _currentFlight.ItemId <= 0
                                                ? flights.GetLastFlightInAtlb(_currentFlight.ATLBId)
                                                : flights.GetPreviousKnownRecord(_currentFlight.FlightDate);
                    if (lastAircraftFlight != null)
                    {
                        _lastFlightString = lastAircraftFlight.PageNo;
                        _flightsOnPage    = flights.GetFlightWithPageNumInAtlb(_currentFlight.PageNo, _currentFlight.ATLBId).Count;
                    }
                }
                else
                {
                    var flights = GlobalObjects.AircraftFlightsCore.GetAircraftFlightsByAircraftId(CurrentAircraft.ItemId);
                    lastAircraftFlight = _currentFlight.ItemId <= 0
                                           ? flights.GetLast()
                                           : flights.GetPreviousKnownRecord(_currentFlight.FlightDate);
                    if (lastAircraftFlight != null)
                    {
                        _lastFlightString = lastAircraftFlight.PageNo;
                        lastAtlb          = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <ATLBDTO, ATLB>(lastAircraftFlight.ATLBId);
                    }
                    if (lastAtlb != null)
                    {
                        _lastAtlbString   = lastAtlb.ATLBNo;
                        _flightsOnPageMax = lastAtlb.PageFlightCount;
                    }
                }
            }

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            discrepancies.Clear();
            discrepancies.AddRange(GlobalObjects.DiscrepanciesCore.GetDiscrepancies(CurrentAircraft).Distinct());

            workpackages.Clear();
            workpackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackages(CurrentAircraft));

            transferRecords.Clear();
            transferRecords.AddRange(GlobalObjects.TransferRecordCore.GetTransferRecord(CurrentAircraft.ItemId));

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
示例#28
0
 public Lifelength GetFlightLifelengthIncludingThisFlight(AircraftFlight flight)
 {
     return(_provider.GetFlightLifelengthIncludingThisFlightCalculator(flight.ItemId));
 }
示例#29
0
        /// <summary>
        /// Возвращает все директивы базового агрегата, самолета, или задачи созданные в рамках страницы бортжурнала
        /// </summary>
        /// <returns></returns>
        private DirectiveCollection GetDirectives(BaseComponent parentBaseComponent,
                                                  Aircraft parentAircraft,
                                                  AircraftFlight parentFlight,
                                                  DirectiveType directiveType)
        {
            if (parentAircraft == null && parentBaseComponent == null && parentFlight == null)
            {
                throw new ArgumentNullException();
            }
            if (directiveType == null)
            {
                directiveType = DirectiveType.AirworthenessDirectives;
            }

            List <DbQuery> qrs;

            if (parentBaseComponent != null)
            {
                qrs = DirectiveQueries.GetSelectQuery(parentBaseComponent, directiveType, loadChild: true);
            }
            else if (parentAircraft != null)
            {
                qrs = DirectiveQueries.GetAircraftDirectivesSelectQuery(parentAircraft.ItemId, directiveType, loadChild: true);
            }
            else
            {
                qrs = DirectiveQueries.GetSelectQuery(parentFlight, directiveType, loadChild: true);
            }

            var directives = new DirectiveCollection();

            directives.AddRange(_loader.GetObjectListAll <Directive>(qrs, true));

            if (directives.Count == 0)
            {
                return(directives);
            }

            var directiveIds     = directives.Select(d => d.ItemId).ToList();
            var itemsRelations   = _itemsRelationsDataAccess.GetRelations(directiveIds, SmartCoreType.Directive.ItemId);
            var mpdCompRelations = _itemsRelationsDataAccess.GetCustomRelations(itemsRelations.Select(i => i.FirstItemId).Concat(itemsRelations.Select(i => i.SecondItemId)), SmartCoreType.ComponentDirective.ItemId);


            if (itemsRelations.Count > 0)
            {
                foreach (var directive in directives)
                {
                    directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId));

                    var mpdLink = directive.ItemRelations.FirstOrDefault(i =>
                                                                         i.FirtsItemTypeId == SmartCoreType.MaintenanceDirective.ItemId ||
                                                                         i.SecondItemTypeId == SmartCoreType.MaintenanceDirective.ItemId);
                    if (mpdLink != null)
                    {
                        var mpdId = mpdLink.FirtsItemTypeId == SmartCoreType.MaintenanceDirective.ItemId
                                                        ? mpdLink.FirstItemId
                                                        : mpdLink.SecondItemId;
                        var mpdComLink = mpdCompRelations.FirstOrDefault(i => i.FirstItemId == mpdId || i.SecondItemId == mpdId);
                        directive.LinkComp = mpdComLink?.AdditionalInformation?.Component;
                    }
                }
            }

            return(directives);
        }
示例#30
0
 private bool ItWasRealFlight(AircraftFlight flight)
 {
     return(flight.AtlbRecordType == AtlbRecordType.Flight && flight.CancelReason == null);
 }