public async override void RefreshView()
        {
            Heading = string.Format("Detailed CGT Report for {0}/{1} Financial Year", _Parameter.FinancialYear - 1, _Parameter.FinancialYear);

            DetailedUnrealisedGainsResponse response;

            if (_Parameter.Stock.Id == Guid.Empty)
            {
                response = await _Parameter.RestClient.Portfolio.GetDetailedCapitalGains(_Parameter.Date);
            }
            else
            {
                response = await _Parameter.RestClient.Holdings.GetDetailedCapitalGains(_Parameter.Stock.Id, _Parameter.Date);
            }
            if (response == null)
            {
                return;
            }

            Parcels.Clear();
            foreach (var item in response.UnrealisedGains.OrderBy(x => x.Stock.Name).ThenBy(x => x.AquisitionDate))
            {
                Parcels.Add(new ParcelCostBaseViewItem(item));
            }

            OnPropertyChanged("");
        }
        /// <summary>
        /// Отменяет все внесенные изменения
        /// </summary>
        protected void UndoChanges()
        {
            if (!SaveUndoCommandCanExecute)
            {
                return;
            }

            //Помечаем к удалению записи, которые больше не связаны с земельным участком
            DeleteDetailRecordTogetherRelationship();

            //Удаляем из кэша участков добавленные в данном сеансе редактирования
            var addParcel = ContextDb.ChangeTracker.Entries <Parcelle>().Where(p => p.State == EntityState.Added);

            foreach (var del in addParcel)
            {
                Parcels.Remove(del.Entity);
            }

            //Отменяем все изменения в БД
            ContextDb.DiscardAllChanges();


            //Возвращаем из кэша удаленные земельные участки
            foreach (var del in ParcelsDelete)
            {
                Parcels.Add(del);
            }
            ParcelsDelete.Clear();

            //Уведомляем об изменении свойств
            RaisePropertyChanged(nameof(Parcels));
            RaisePropertyChanged(nameof(ParcelsViewSource));
        }
예제 #3
0
        public void AddParcel(Parcel parcel)
        {
            if (parcel is null)
            {
                throw new DomainValidationException($"Parameter {nameof(parcel)} cannot be null");
            }

            Parcels.Add(parcel);

            SetUpdateDate();
        }
        public bool DivideParcel(UGUI requestingAgent, int start_x, int start_y, int end_x, int end_y)
        {
            ParcelInfo pInfo;

            if (!Parcels.TryGetValue(new Vector3(start_x, start_y, 0), out pInfo))
            {
                return(false);
            }
            ParcelInfo.ParcelDataLandBitmap bmap = pInfo.LandBitmap;
            if (!bmap[start_x, end_y - 1] || !bmap[end_x - 1, start_x] || !bmap[end_x - 1, end_y - 1])
            {
                /* not dividable */
                return(false);
            }

            start_x &= (~3);
            start_y &= (~3);
            end_x   &= (~3);
            end_y   &= (~3);
            for (int py = start_y; py < end_y; py += 4)
            {
                for (int px = start_x; px < end_x; px += 4)
                {
                    if (!bmap[px, py])
                    {
                        return(false);
                    }
                }
            }

            if (!CanDivideJoinParcel(requestingAgent, pInfo))
            {
                return(false);
            }

            var newParcel = new ParcelInfo(pInfo, true);

            newParcel.ID = UUID.Random;
            Parcels.Add(newParcel);
            ParcelInfo.ParcelDataLandBitmap newBmap = newParcel.LandBitmap;
            for (int py = start_y; py < end_y; ++py)
            {
                for (int px = start_x; px < end_x; ++px)
                {
                    newBmap[px, py] = true;
                    bmap[px, py]    = false;
                }
            }
            TriggerParcelUpdate(pInfo);
            TriggerParcelUpdate(newParcel);
            return(true);
        }
        /// <summary>
        /// Добавляет новый земельный участок к БД, присваивая ему новый кадастровый номер
        /// </summary>
        /// <param name="newParcel"></param>
        public void AddNewParcelInDb(Parcelle newParcel)
        {
            using (var context = ContextFactory.Create())
            {
                context.CadastraleSecteurs_v.Load();
                var cadSect = context.CadastraleSecteurs_v.Local;
                newParcel.CadSecteurNumero = cadSect.Where(s => s.Shape.Intersects(newParcel.Shape)).First().Numero;

                newParcel.ParcelleSurCadSecteurNumero = (Parcels.Where(p => p.CadSecteurNumero == newParcel.CadSecteurNumero)
                                                         .Max(p => p.ParcelleSurCadSecteurNumero) ?? 0) + 1;
                newParcel.NUP = string.Format("{0}-{1:D4}", newParcel.CadSecteurNumero, newParcel.ParcelleSurCadSecteurNumero);
                ContextDb.JuridiqueObjets.Attach(newParcel);
                ContextDb.Entry(newParcel).State = EntityState.Added;

                Parcels.Add(newParcel);


                //Уведомляем об изменении свойств
                RaisePropertyChanged(nameof(ParcelsViewSource));
                RaisePropertyChanged(nameof(Parcels));
            }
        }
예제 #6
0
 public void AddParcelToOrder(Parcel parcel)
 {
     Parcels.Add(parcel);
 }
예제 #7
0
 public ParcelOrder(Parcel parcel, bool speedyShipping = false)
 {
     Parcels.Add(parcel);
     SetCost();
     SetSpeedyShipping(speedyShipping);
 }
        public bool ClaimParcel(UGUI requestingAgent, int start_x, int start_y, int end_x, int end_y, int soldforprice)
        {
            ParcelInfo pInfo;

            if (!Parcels.TryGetValue(new Vector3(start_x, start_y, 0), out pInfo))
            {
                return(false);
            }
            ParcelInfo.ParcelDataLandBitmap bmap = pInfo.LandBitmap;
            if (!bmap[start_x, end_y - 1] || !bmap[end_x - 1, start_x] || !bmap[end_x - 1, end_y - 1])
            {
                /* not dividable */
                return(false);
            }

            start_x &= (~3);
            start_y &= (~3);
            end_x   &= (~3);
            end_y   &= (~3);
            for (int py = start_y; py < end_y; py += 4)
            {
                for (int px = start_x; px < end_x; px += 4)
                {
                    if (!bmap[px, py])
                    {
                        return(false);
                    }
                }
            }

            if (!pInfo.Owner.EqualsGrid(UGUI.Unknown))
            {
                return(false);
            }

            var newParcel = new ParcelInfo(pInfo, true);

            newParcel.ID         = UUID.Random;
            newParcel.Owner      = requestingAgent;
            newParcel.Group      = UGI.Unknown;
            newParcel.GroupOwned = false;
            newParcel.ClaimDate  = Date.Now;
            newParcel.ClaimPrice = soldforprice;
            newParcel.SalePrice  = 0;
            newParcel.AuthBuyer  = UGUI.Unknown;
            newParcel.Flags     &= ~(ParcelFlags.ForSale | ParcelFlags.ForSaleObjects | ParcelFlags.SellParcelObjects | ParcelFlags.ShowDirectory);

            Parcels.Add(newParcel);
            ParcelInfo.ParcelDataLandBitmap newBmap = newParcel.LandBitmap;
            for (int py = start_y; py < end_y; ++py)
            {
                for (int px = start_x; px < end_x; ++px)
                {
                    newBmap[px, py] = true;
                    bmap[px, py]    = false;
                }
            }
            TriggerParcelUpdate(pInfo);
            TriggerParcelUpdate(newParcel);
            return(true);
        }