Esempio n. 1
0
        /// <summary>
        /// Прибавляет заданную наработку к уже существующей
        /// </summary>
        /// <param name="lifelength"></param>
        public void Add(Lifelength lifelength)
        {
            // прибавляем к this
            // null + cycles = cycles
            // cycles + null = cycles
            // null + null = null
            // cycles + cycles = cycles + cycles
            if (Cycles == null && lifelength.Cycles != null)
            {
                Cycles = lifelength.Cycles;
            }
            else if (Cycles != null && lifelength.Cycles != null)
            {
                Cycles += lifelength.Cycles;
            }

            if (Days == null && lifelength.Days != null)
            {
                Days = lifelength.Days;
            }
            else if (Days != null && lifelength.Days != null)
            {
                Days += lifelength.Days;
            }

            if (TotalMinutes == null && lifelength.TotalMinutes != null)
            {
                TotalMinutes = lifelength.TotalMinutes;
            }
            else if (TotalMinutes != null && lifelength.TotalMinutes != null)
            {
                TotalMinutes += lifelength.TotalMinutes;
            }
        }
 public DirectiveRecordView(DirectiveRecord source)
 {
     if (source == null)
     {
         return;
     }
     Id                           = source.Id;
     NumGroup                     = source.NumGroup;
     RecordTypeID                 = source.RecordTypeID;
     ParentID                     = source.ParentID;
     ParentTypeId                 = source.ParentTypeId;
     Remarks                      = source.Remarks;
     RecordDate                   = source.RecordDate;
     WorkPackageID                = source.WorkPackageID;
     Dispatched                   = source.Dispatched;
     Completed                    = source.Completed;
     Reference                    = source.Reference;
     ODR                          = source.ODR;
     MaintenanceOrganization      = source.MaintenanceOrganization;
     MaintenanceDirectiveRecordId = source.MaintenanceDirectiveRecordId;
     MaintenanceCheckRecordId     = source.MaintenanceCheckRecordId;
     PerformanceNum               = source.PerformanceNum.HasValue ? source.PerformanceNum.Value : 0;
     IsControlPoint               = source.IsControlPoint;
     ComplianceCheckName          = source.ComplianceCheckName;
     OnLifelength                 = Lifelength.ConvertFromByteArray(source.OnLifelength);
     Unused                       = Lifelength.ConvertFromByteArray(source.Unused);
     CalculatedPerformanceSource  = Lifelength.ConvertFromByteArray(source.CalculatedPerformanceSource);
     Overused                     = Lifelength.ConvertFromByteArray(source.Overused);
 }
 public ComponentView(Component source)
 {
     if (source == null)
     {
         return;
     }
     Id                       = source.Id;
     AircaraftId              = source.AircaraftId;
     PartNumber               = source.PartNumber;
     ManufactureDate          = source.ManufactureDate.Value;
     IsBaseComponent          = source.IsBaseComponent;
     LLPMark                  = source.LLPMark;
     LLPCategories            = source.LLPCategories;
     _threshold               = new Threshold();
     Warranty                 = Lifelength.ConvertFromByteArray(source.Warranty);
     WarrantyNotify           = Lifelength.ConvertFromByteArray(source.WarrantyNotify);
     LifeLimit                = Lifelength.ConvertFromByteArray(source.LifeLimit);
     LifeLimitNotify          = Lifelength.ConvertFromByteArray(source.LifeLimitNotify);
     ActualStateRecords       = source.ActualStateRecords?.Select(i => new ActualStateRecordView(i)).ToList();
     TransferRecords          = source.TransferRecords?.Select(i => new TransferRecordView(i)).ToList();
     ChangeLLPCategoryRecords = source.ChangeLLPCategoryRecords?.Select(i => new ComponentLLPCategoryChangeRecordView(i)).ToList();
     ComponentDirectives      = source.ComponentDirectives?.Select(i => new ComponentDirectiveView(i)).ToList();
     LLPData                  = source.LLPData?.Select(i => new ComponentLLPCategoryDataView(i)).ToList();
     AverageUtilization       = AverageUtilization.ConvertFromByteArray(source.AverageUtilization);
 }
Esempio n. 4
0
 /// <summary>
 /// Метод проверяет, является ли данная наработка строго меньшей заданной по всем трем параметрам
 /// </summary>
 /// <param name="lifelength"></param>
 /// <param name="strictCompare"></param>
 /// <returns></returns>
 public bool IsLess(Lifelength lifelength, bool strictCompare = true)
 {
     if (Cycles != null && lifelength.Cycles != null && Cycles < lifelength.Cycles &&
         TotalMinutes != null && lifelength.TotalMinutes != null && TotalMinutes < lifelength.TotalMinutes &&
         Days != null && lifelength.Days != null && Days < lifelength.Days)
     {
         return(true);
     }
     return(false);
 }
 public ComponentLLPCategoryChangeRecordView(ComponentLLPCategoryChangeRecord source)
 {
     if (source == null)
     {
         return;
     }
     Id           = source.Id;
     ParentId     = source.ParentId;
     RecordDate   = source.RecordDate.Value;
     OnLifeLength = Lifelength.ConvertFromByteArray(source.OnLifeLengthByte);
 }
Esempio n. 6
0
 /// <summary>
 /// Копирует наработку (Создает новую наработку с такими же параметрами)
 /// </summary>
 /// <param name="source"></param>
 public Lifelength(Lifelength source)
 {
     if (source == null)
     {
         return;
     }
     //
     Cycles       = source.Cycles;
     CalendarSpan = new CalendarSpan(source.CalendarSpan);
     TotalMinutes = source.TotalMinutes;
 }
 public ComponentLLPCategoryDataView(ComponentLLPCategoryData source)
 {
     if (source == null)
     {
         return;
     }
     Id                   = source.Id;
     LLPLifeLength        = Lifelength.ConvertFromByteArray(source.LLPLifeLength);
     LLPLifeLimit         = Lifelength.ConvertFromByteArray(source.LLPLifeLimit);
     Notify               = Lifelength.ConvertFromByteArray(source.Notify);
     LLPLifeLengthCurrent = Lifelength.ConvertFromByteArray(source.LLPLifeLengthCurrent);
     LLPLifeLengthForDate = Lifelength.ConvertFromByteArray(source.LLPLifeLengthForDate);
     Date                 = source.Date;
 }
Esempio n. 8
0
        /// <summary>
        /// Получает свойства из массива байт
        /// </summary>
        /// <param name="data"></param>
        public static Threshold ConvertForCMaintenanceDirective(byte[] data)
        {
            var item = new Threshold();

            if (data == null)
            {
                data = new byte[SerializedDataLengthMaintenance];
            }
            int currentPos = 0;

            byte[] serializedEffectivityDate = new byte[sizeof(long)];
            Array.Copy(data, currentPos, serializedEffectivityDate, 0, sizeof(long));
            item.EffectiveDate = new DateTime(DbTypes.Int64FromByteArray(serializedEffectivityDate, 0));
            currentPos        += sizeof(long);

            byte[] serializedPerformSinceNew = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, currentPos, serializedPerformSinceNew, 0, Lifelength.SerializedDataLength);
            item.FirstPerformanceSinceNew = Lifelength.ConvertFromByteArray(serializedPerformSinceNew);
            currentPos += Lifelength.SerializedDataLength;

            byte[] serializedSinceEffectivityLifelength = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, currentPos, serializedSinceEffectivityLifelength, 0, Lifelength.SerializedDataLength);
            item.FirstPerformanceSinceEffectiveDate = Lifelength.ConvertFromByteArray(serializedSinceEffectivityLifelength);
            currentPos += Lifelength.SerializedDataLength;

            byte[] serializedNotification = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, currentPos, serializedNotification, 0, Lifelength.SerializedDataLength);
            item.FirstNotification = Lifelength.ConvertFromByteArray(serializedNotification);
            currentPos            += Lifelength.SerializedDataLength;

            item.FirstPerformanceConditionType = data[currentPos] == 1 ? ThresholdConditionType.WhicheverLater : ThresholdConditionType.WhicheverFirst;
            currentPos += 1;

            item.PerformRepeatedly = data[currentPos] == 1;
            currentPos            += 1;

            byte[] serializedrepeatPerform = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, currentPos, serializedrepeatPerform, 0, Lifelength.SerializedDataLength);
            item.RepeatInterval = Lifelength.ConvertFromByteArray(serializedrepeatPerform);
            currentPos         += Lifelength.SerializedDataLength;

            byte[] serializedRepeatNotificaction = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, currentPos, serializedRepeatNotificaction, 0, Lifelength.SerializedDataLength);
            item.RepeatNotification = Lifelength.ConvertFromByteArray(serializedRepeatNotificaction);
            currentPos += Lifelength.SerializedDataLength;

            item.RepeatPerformanceConditionType = data[currentPos] == 1 ? ThresholdConditionType.WhicheverLater : ThresholdConditionType.WhicheverFirst;

            return(item);
        }
Esempio n. 9
0
 /// <summary>
 /// Дополняет пустые параметры текущего объекта параметрами из источника
 /// </summary>
 /// <param name="source"></param>
 public void CompleteNullParameters(Lifelength source)
 {
     if (Cycles == null)
     {
         Cycles = source.Cycles;
     }
     if (TotalMinutes == null)
     {
         TotalMinutes = source.TotalMinutes;
     }
     if (Days == null)
     {
         Days = source.Days;
     }
 }
Esempio n. 10
0
 /*
  * Методы
  */
 #region public void Resemble(Lifelength sample)
 /// <summary>
 /// Сделать похожим на заданный ресурс. Т.е. если не заданы часы - сделать часы n/a и т.д.
 /// </summary>
 /// <param name="sample"></param>
 public void Resemble(Lifelength sample)
 {
     if (sample.TotalMinutes == null)
     {
         TotalMinutes = null;
     }
     if (sample.Cycles == null)
     {
         Cycles = null;
     }
     if (sample.Days == null)
     {
         Days = null;
     }
 }
Esempio n. 11
0
        /// <summary>
        /// Конвертирует данные из БД в Lifelength
        /// </summary>
        /// <param name="data"></param>
        public static Lifelength ConvertFromByteArray(byte[] data)
        {
            Lifelength item = new Lifelength();

            byte[] binaryData = data;
            if (null == binaryData)
            {
                return(null);
            }

            if (binaryData == null || binaryData.Length != SerializedDataLength)
            {
                return(null);               //на случай если -1 пришел
            }
            //throw new ArgumentException("Data cannot be converted to Lifelength");

            item.Cycles = DbTypes.Int32FromByteArray(binaryData, 1);

            var calendar = DbTypes.Int64FromByteArray(binaryData, 5);
            var cal      = new TimeSpan(calendar);

            item.CalendarSpan = new CalendarSpan(cal.Days, (CalendarTypes)cal.Milliseconds);

            var ticks = DbTypes.Int64FromByteArray(binaryData, 13);
            var ts    = new TimeSpan(ticks);

            item.TotalMinutes = ts.Minutes + ((int)ts.TotalHours) * 60;

            if ((binaryData[0] & 1) == 0)
            {
                item.Days = null;
            }
            if ((binaryData[0] >> 1 & 1) == 0)
            {
                item.Cycles = null;
            }
            if ((binaryData[0] >> 2 & 1) == 0)
            {
                item.Hours = null;
            }

            return(item);
        }
Esempio n. 12
0
        /// <summary>
        /// Метод проверяет, является ли данная наработка меньше заданной по любому из трех параметров
        /// </summary>
        /// <param name="lifelength"></param>
        /// <returns></returns>
        public bool IsLessByAnyParameter(Lifelength lifelength)
        {
            //Cycles
            if (Cycles != null && lifelength.Cycles != null && Cycles < lifelength.Cycles)
            {
                return(true);
            }
            // TotalMinutes
            if (TotalMinutes != null && lifelength.TotalMinutes != null && TotalMinutes < lifelength.TotalMinutes)
            {
                return(true);
            }
            // Days
            if (Days != null && lifelength.Days != null && Days < lifelength.Days)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 13
0
        /// <summary>
        /// По выходу объект будет представлять содержитать минимальных ресурсов от обоих объектов (whichever first)
        /// </summary>
        /// <param name="candidate"></param>
        public void SetMin(Lifelength candidate)
        {
            // Если у кандидата циклы меньше чем у текущего объекта - присваиваем минимальные циклы
            if (candidate.Cycles != null && (Cycles == null || Cycles > candidate.Cycles))
            {
                Cycles = candidate.Cycles;
            }

            // то же по часам
            if (candidate.TotalMinutes != null && (TotalMinutes == null || TotalMinutes > candidate.TotalMinutes))
            {
                TotalMinutes = candidate.TotalMinutes;
            }

            // то же по календарю
            if (candidate.Days != null && (Days == null || Days > candidate.Days))
            {
                Days = candidate.Days;
            }
        }
Esempio n. 14
0
        /*
         * Арифметика
         */
        #region public bool IsGreaterByAnyParameter(Lifelength lifelength)
        /// <summary>
        /// Метод проверяет, является ли данная наработка больше заданной по любому из трех параметров
        /// </summary>
        /// <param name="lifelength"></param>
        /// <returns></returns>
        public bool IsGreaterByAnyParameter(Lifelength lifelength)
        {
            // 10, 10, 10 > 5, 5, 5
            // 10, 10, 10 > 5, 20, 5
            //Cycles
            if (Cycles != null && lifelength.Cycles != null && Cycles > lifelength.Cycles)
            {
                return(true);
            }
            // TotalMinutes
            if (TotalMinutes != null && lifelength.TotalMinutes != null && TotalMinutes > lifelength.TotalMinutes)
            {
                return(true);
            }
            // Days
            if (Days != null && lifelength.Days != null && Days > lifelength.Days)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 15
0
        /// <summary>
        /// Прибавляет заданную наработку к уже существующей
        /// </summary>
        /// <param name="from"></param>
        /// <param name="lifelength"></param>
        public void Add(DateTime from, Lifelength lifelength)
        {
            // прибавляем к this
            // null + cycles = cycles
            // cycles + null = cycles
            // null + null = null
            // cycles + cycles = cycles + cycles
            if (Cycles == null && lifelength.Cycles != null)
            {
                Cycles = lifelength.Cycles;
            }
            else if (Cycles != null && lifelength.Cycles != null)
            {
                Cycles += lifelength.Cycles;
            }

            if (TotalMinutes == null && lifelength.TotalMinutes != null)
            {
                TotalMinutes = lifelength.TotalMinutes;
            }
            else if (TotalMinutes != null && lifelength.TotalMinutes != null)
            {
                TotalMinutes += lifelength.TotalMinutes;
            }

            if (CalendarValue == null && lifelength.CalendarValue != null)
            {
                DateTime to = from.AddCalendarSpan(lifelength.CalendarSpan);
                Days = (to - from).Days;
            }
            else if (Days != null && lifelength.Days != null)
            {
                DateTime to = from.AddCalendarSpan(lifelength.CalendarSpan);
                Days += (to - from).Days;
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Получает свойства из массива байт
        /// </summary>
        /// <param name="data"></param>
        /// <param name="serializedDataLength"></param>
        public static Threshold ConvertForComponentDirective(byte[] data)
        {
            var item = new Threshold();

            if (data == null)
            {
                data = new byte[SerializedDataLengthComponentDirective];
            }
            var serializedFirstPerformance = new byte[Lifelength.SerializedDataLength];

            Array.Copy(data, 0, serializedFirstPerformance, 0, Lifelength.SerializedDataLength);

            item.FirstPerformanceSinceNew = Lifelength.ConvertFromByteArray(serializedFirstPerformance);

            var serializedFirstNotification = new byte[Lifelength.SerializedDataLength];

            Array.Copy(data, Lifelength.SerializedDataLength, serializedFirstNotification, 0, Lifelength.SerializedDataLength);

            item.FirstNotification = Lifelength.ConvertFromByteArray(serializedFirstNotification);

            var serializedrepeatPerform = new byte[Lifelength.SerializedDataLength];

            Array.Copy(data, Lifelength.SerializedDataLength * 2, serializedrepeatPerform, 0, Lifelength.SerializedDataLength);

            item.RepeatInterval = Lifelength.ConvertFromByteArray(serializedrepeatPerform);

            var serializedNotification = new byte[Lifelength.SerializedDataLength];

            Array.Copy(data, Lifelength.SerializedDataLength * 3, serializedNotification, 0, Lifelength.SerializedDataLength);

            item.RepeatNotification = Lifelength.ConvertFromByteArray(serializedNotification);

            var serializedWarranty = new byte[Lifelength.SerializedDataLength];

            Array.Copy(data, Lifelength.SerializedDataLength * 4, serializedWarranty, 0, Lifelength.SerializedDataLength);

            item.Warranty = Lifelength.ConvertFromByteArray(serializedWarranty);

            var serializedWarrantyNotification = new byte[Lifelength.SerializedDataLength];

            Array.Copy(data, Lifelength.SerializedDataLength * 5, serializedWarrantyNotification, 0, Lifelength.SerializedDataLength);

            item.WarrantyNotification = Lifelength.ConvertFromByteArray(serializedWarrantyNotification);

            item.PerformRepeatedly = data[Lifelength.SerializedDataLength * 6] == 1;

            item.FirstPerformanceConditionType = data[Lifelength.SerializedDataLength * 6 + 1] == 1 ? ThresholdConditionType.WhicheverLater : ThresholdConditionType.WhicheverFirst;

            // если еще есть данные то рекурсивно считываем и его
            var dataIndex = SerializedDataLengthComponentDirective;
            var dataLeft  = data.Length - dataIndex;

            if (dataLeft >= sizeof(long))
            {
                var serializedEffectivityDate = new byte[sizeof(long)];
                Array.Copy(data, dataIndex, serializedEffectivityDate, 0, sizeof(long));

                item.EffectiveDate = new DateTime(DbTypes.Int64FromByteArray(serializedEffectivityDate, 0));
            }

            dataLeft  -= sizeof(long);
            dataIndex += sizeof(long);

            if (dataLeft >= Lifelength.SerializedDataLength)
            {
                var serializedRepeatNotificaction = new byte[Lifelength.SerializedDataLength];
                Array.Copy(data, dataIndex, serializedRepeatNotificaction, 0, Lifelength.SerializedDataLength);

                item.FirstPerformanceSinceEffectiveDate = Lifelength.ConvertFromByteArray(serializedRepeatNotificaction);
            }

            return(item);
        }
Esempio n. 17
0
        /// <summary>
        /// Получает свойства из массива байт
        /// </summary>
        /// <param name="data"></param>
        public static Threshold ConvertForDirective(byte[] data)
        {
            Threshold item = new Threshold();

            if (data == null)
            {
                data = new byte[SerializedDataLength];
            }
            byte[] serializedEffectivityDate = new byte[sizeof(long)];
            Array.Copy(data, 0, serializedEffectivityDate, 0, sizeof(long));

            item.EffectiveDate = new DateTime(DbTypes.Int64FromByteArray(serializedEffectivityDate, 0));

            byte[] serializedPerformSinceNew = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, sizeof(long), serializedPerformSinceNew, 0, Lifelength.SerializedDataLength);

            item.FirstPerformanceSinceNew = Lifelength.ConvertFromByteArray(serializedPerformSinceNew);

            byte[] serializedrepeatPerform = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, sizeof(long) + Lifelength.SerializedDataLength, serializedrepeatPerform, 0, Lifelength.SerializedDataLength);

            item.RepeatInterval = Lifelength.ConvertFromByteArray(serializedrepeatPerform);

            byte[] serializedNotification = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, sizeof(long) + Lifelength.SerializedDataLength * 2, serializedNotification, 0, Lifelength.SerializedDataLength);

            item.FirstNotification = Lifelength.ConvertFromByteArray(serializedNotification);

            item.PerformSinceNew           = data[sizeof(long) + Lifelength.SerializedDataLength * 3] == 1;
            item.PerformSinceEffectiveDate = data[sizeof(long) + Lifelength.SerializedDataLength * 3 + 1] == 1;
            item.PerformRepeatedly         = data[sizeof(long) + Lifelength.SerializedDataLength * 3 + 2] == 1;

            byte[] serializedSinceEffectivityLifelength = new byte[Lifelength.SerializedDataLength];
            Array.Copy(data, sizeof(long) + Lifelength.SerializedDataLength * 3 + 3, serializedSinceEffectivityLifelength, 0, Lifelength.SerializedDataLength);

            item.FirstPerformanceSinceEffectiveDate = Lifelength.ConvertFromByteArray(serializedSinceEffectivityLifelength);

            // если у нас еще есть данные то рекурсивно считываем и его
            int dataIndex = SerializedDataLength;
            int dataLeft  = data.Length - SerializedDataLength;

            if (dataLeft >= Lifelength.SerializedDataLength)
            {
                byte[] serializedRepeatNotificaction = new byte[Lifelength.SerializedDataLength];
                Array.Copy(data, sizeof(long) + Lifelength.SerializedDataLength * 4 + 3, serializedRepeatNotificaction, 0, Lifelength.SerializedDataLength);

                item.RepeatNotification = Lifelength.ConvertFromByteArray(serializedRepeatNotificaction);

                dataLeft  -= Lifelength.SerializedDataLength;
                dataIndex += Lifelength.SerializedDataLength;
            }

            if (dataLeft >= sizeof(byte))
            {
                item.FirstPerformanceConditionType = data[dataIndex] == 0
                                                                                                        ? ThresholdConditionType.WhicheverFirst
                                                                                                        : ThresholdConditionType.WhicheverLater;
                dataLeft  -= sizeof(byte);
                dataIndex += sizeof(byte);
            }

            if (dataLeft >= sizeof(byte))
            {
                item.RepeatPerformanceConditionType = data[dataIndex] == 0
                                                                                                        ? ThresholdConditionType.WhicheverFirst
                                                                                                        : ThresholdConditionType.WhicheverLater;
            }

            return(item);
        }
Esempio n. 18
0
        /// <summary>
        /// Отнимает заданную наработку от уже существующей
        /// </summary>
        /// <param name="lifelength"></param>
        public void Substract(Lifelength lifelength)
        {
            Lifelength lifelength2 = new Lifelength(-lifelength.Days, -lifelength.Cycles, -lifelength.TotalMinutes);

            Add(lifelength2);
        }