示例#1
0
        public override string ToString()
        {
            var returnString =
                $"Key: {Key.ToKeyString()}," +
                $" Text: {Text}," +
                $" Flag: {Flag}," +
                $" Number: {Number}," +
                $" Amount: {Amount}," +
                $" Amount4: {Amount4}," +
                $" Amount5: {Amount5}," +
                $" PreciseDecimal: {PreciseDecimal}," +
                $" SampleState: {SampleState}," +
                $" DateOnly: {DateOnly.ToShortDateString()}," +
                $" TimeOnly: {TimeOnly}," +
                $" DateTimeTicks: {DateTimeTicks}," +
                $" DateTimeMinute: {DateTimeMinute}," +
                $" DateTimeSecond: {DateTimeSecond}," +
                $" OneMaster: {OneMaster?.ToShortString()}," +
                $" OtherMaster: {OtherMaster?.ToShortString()}," +
                $" Optional: {Optional}," +
                $" SampleDetails: {SampleDetails.Count};";

            onToString(ref returnString);
            return(returnString);
        }
示例#2
0
        public string ToShortString()
        {
            var returnString =
                $"{Key.ToKeyString()}," +
                $" {Text}," +
                $" {Flag}," +
                $" {Number}," +
                $" {Amount}," +
                $" {Amount4}," +
                $" {Amount5}," +
                $" {PreciseDecimal}," +
                $" {SampleState}," +
                $" {DateOnly.ToShortDateString()}," +
                $" {TimeOnly}," +
                $" {DateTimeTicks}," +
                $" {DateTimeMinute}," +
                $" {DateTimeSecond}," +
                $" {OneMaster?.ToShortString()}," +
                $" {OtherMaster?.ToShortString()}," +
                $" {Optional}";

            onToShortString(ref returnString);
            return(returnString);
        }
示例#3
0
        public string ToTraceString()
        {
            var returnString =
                $"{this.GetKeyOrHash()}|" +
                $" {Text}|" +
                $" {Flag}|" +
                $" {Number}|" +
                $" {Amount}|" +
                $" {Amount4}|" +
                $" {Amount5}|" +
                $" {PreciseDecimal}|" +
                $" {SampleState}|" +
                $" {DateOnly.ToShortDateString()}|" +
                $" {TimeOnly}|" +
                $" {DateTimeTicks}|" +
                $" {DateTimeMinute}|" +
                $" {DateTimeSecond}|" +
                $" OneMaster {OneMaster?.GetKeyOrHash()}|" +
                $" OtherMaster {OtherMaster?.GetKeyOrHash()}|" +
                $" {Optional}";

            onToTraceString(ref returnString);
            return(returnString);
        }
示例#4
0
        public void Update(
            string text,
            bool flag,
            int number,
            decimal amount,
            decimal amount4,
            decimal?amount5,
            decimal preciseDecimal,
            SampleStateEnum sampleState,
            DateTime dateOnly,
            TimeSpan timeOnly,
            DateTime dateTimeTicks,
            DateTime dateTimeMinute,
            DateTime dateTimeSecond,
            SampleMaster?oneMaster,
            SampleMaster?otherMaster,
            string?optional)
        {
            if (Key >= 0)
            {
                if (oneMaster?.Key < 0)
                {
                    throw new Exception($"Sample.Update(): It is illegal to add stored Sample '{this}'" + Environment.NewLine +
                                        $"to OneMaster '{oneMaster}', which is not stored.");
                }
                if (otherMaster?.Key < 0)
                {
                    throw new Exception($"Sample.Update(): It is illegal to add stored Sample '{this}'" + Environment.NewLine +
                                        $"to OtherMaster '{otherMaster}', which is not stored.");
                }
            }
            var clone       = new Sample(this);
            var isCancelled = false;

            onUpdating(
                text,
                flag,
                number,
                amount,
                amount4,
                amount5,
                preciseDecimal,
                sampleState,
                dateOnly,
                timeOnly,
                dateTimeTicks,
                dateTimeMinute,
                dateTimeSecond,
                oneMaster,
                otherMaster,
                optional,
                ref isCancelled);
            if (isCancelled)
            {
                return;
            }

#if DEBUG
            DC.Trace?.Invoke($"Updating Sample: {ToTraceString()}");
#endif
            var isChangeDetected = false;
            if (Text != text)
            {
                Text             = text;
                isChangeDetected = true;
            }
            if (Flag != flag)
            {
                Flag             = flag;
                isChangeDetected = true;
            }
            if (Number != number)
            {
                Number           = number;
                isChangeDetected = true;
            }
            var amountRounded = amount.Round(2);
            if (Amount != amountRounded)
            {
                Amount           = amountRounded;
                isChangeDetected = true;
            }
            var amount4Rounded = amount4.Round(4);
            if (Amount4 != amount4Rounded)
            {
                Amount4          = amount4Rounded;
                isChangeDetected = true;
            }
            var amount5Rounded = amount5.Round(5);
            if (Amount5 != amount5Rounded)
            {
                Amount5          = amount5Rounded;
                isChangeDetected = true;
            }
            if (PreciseDecimal != preciseDecimal)
            {
                PreciseDecimal   = preciseDecimal;
                isChangeDetected = true;
            }
            if (SampleState != sampleState)
            {
                SampleState      = sampleState;
                isChangeDetected = true;
            }
            var dateOnlyRounded = dateOnly.Floor(Rounding.Days);
            if (DateOnly != dateOnlyRounded)
            {
                DateOnly         = dateOnlyRounded;
                isChangeDetected = true;
            }
            var timeOnlyRounded = timeOnly.Round(Rounding.Seconds);
            if (TimeOnly != timeOnlyRounded)
            {
                TimeOnly         = timeOnlyRounded;
                isChangeDetected = true;
            }
            if (DateTimeTicks != dateTimeTicks)
            {
                DateTimeTicks    = dateTimeTicks;
                isChangeDetected = true;
            }
            var dateTimeMinuteRounded = dateTimeMinute.Round(Rounding.Minutes);
            if (DateTimeMinute != dateTimeMinuteRounded)
            {
                DateTimeMinute   = dateTimeMinuteRounded;
                isChangeDetected = true;
            }
            var dateTimeSecondRounded = dateTimeSecond.Round(Rounding.Seconds);
            if (DateTimeSecond != dateTimeSecondRounded)
            {
                DateTimeSecond   = dateTimeSecondRounded;
                isChangeDetected = true;
            }
            if (OneMaster is null)
            {
                if (oneMaster is null)
                {
                    //nothing to do
                }
                else
                {
                    OneMaster = oneMaster;
                    OneMaster.AddToSampleX(this);
                    isChangeDetected = true;
                }
            }
            else
            {
                if (oneMaster is null)
                {
                    OneMaster.RemoveFromSampleX(this);
                    OneMaster        = null;
                    isChangeDetected = true;
                }
                else
                {
                    if (OneMaster != oneMaster)
                    {
                        OneMaster.RemoveFromSampleX(this);
                        OneMaster = oneMaster;
                        OneMaster.AddToSampleX(this);
                        isChangeDetected = true;
                    }
                }
            }
            if (OtherMaster is null)
            {
                if (otherMaster is null)
                {
                    //nothing to do
                }
                else
                {
                    OtherMaster = otherMaster;
                    OtherMaster.AddToSampleX(this);
                    isChangeDetected = true;
                }
            }
            else
            {
                if (otherMaster is null)
                {
                    OtherMaster.RemoveFromSampleX(this);
                    OtherMaster      = null;
                    isChangeDetected = true;
                }
                else
                {
                    if (OtherMaster != otherMaster)
                    {
                        OtherMaster.RemoveFromSampleX(this);
                        OtherMaster = otherMaster;
                        OtherMaster.AddToSampleX(this);
                        isChangeDetected = true;
                    }
                }
            }
            if (Optional != optional)
            {
                Optional         = optional;
                isChangeDetected = true;
            }
            if (isChangeDetected)
            {
                onUpdated(clone);
                if (Key >= 0)
                {
                    DC.Data.SampleX.ItemHasChanged(clone, this);
                }
                else if (DC.Data.IsTransaction)
                {
                    DC.Data.AddTransaction(new TransactionItem(7, TransactionActivityEnum.Update, Key, this, oldItem: clone));
                }
                HasChanged?.Invoke(clone, this);
            }
#if DEBUG
            DC.Trace?.Invoke($"Updated Sample: {ToTraceString()}");
#endif
        }