Esempio n. 1
0
        public OwnersViewModel()
        {
            DeleteOwner = new RelayCommand(Delete, () => { return(OwnersList.Contains(SelectedOwner)); });
            SaveOwner   = new RelayCommand(Save, () => { return(!string.IsNullOrEmpty(SelectedOwner.FNAME) && !string.IsNullOrEmpty(SelectedOwner.LNAME) && !string.IsNullOrEmpty(SelectedOwner.PHONE)); });
            NewOwner    = new RelayCommand(New, () => { return(!string.IsNullOrEmpty(SelectedOwner.FNAME) || !string.IsNullOrEmpty(SelectedOwner.LNAME) || !string.IsNullOrEmpty(SelectedOwner.PHONE)); });

            SelectedOwner = new OwnerViewModel();
            OwnersList    = GetOwners();
        }
Esempio n. 2
0
        public void Add()
        {
            OWNERS dbOwner = new OWNERS();

            dbOwner.FNAME         = SelectedOwner.FNAME;
            dbOwner.LNAME         = SelectedOwner.LNAME;
            dbOwner.PHONE         = SelectedOwner.PHONE;
            SelectedOwner.FNAME   = "";
            SelectedOwner.LNAME   = "";
            SelectedOwner.PHONE   = "";
            SelectedOwner.OWNERID = 0;
            DbContext.OWNERS.Add(dbOwner);
            DbContext.SaveChanges();
            OwnersList.Add(new OwnerViewModel(dbOwner));
        }
Esempio n. 3
0
 public void Delete()
 {
     if (DeleteYesNoHelper.DeleteYesNoMessageBox("Искате ли да изтриете този собственик", "Изтриване"))
     {
         try
         {
             DbContext.OWNERS.Remove(DbContext.OWNERS.Where(o => o.OWNERID == SelectedOwner.OWNERID).FirstOrDefault());
             DbContext.SaveChanges();
             OwnersList.Remove(SelectedOwner);
             SelectedOwner = new OwnerViewModel();
         }
         catch
         {
             MessageBox.Show("No item Selected");
         }
     }
 }
Esempio n. 4
0
        private void PrepareData(Apartment apartment, int year)
        {
            var owner    = OwnersList.FirstOrDefault(x => x.OwnerId == apartment.OwnerId);
            var building = BuildingsNames.FirstOrDefault(x => x.BuildingId == apartment.BuildingId);

            OwnerName          = owner.OwnerName;
            BuildingFullName   = building.FullName;
            ApartmentNumber    = apartment.ApartmentNumber.ToString();
            Locators           = apartment.Locators.ToString();
            ApartmentTotalArea = (apartment.AdditionalArea + apartment.ApartmentArea).ToString() + " m2";

            using (var db = new DB.DomenaDBContext())
            {
                var apArea  = db.Apartments.Where(x => x.BuildingId == apartment.BuildingId && !x.IsDeleted).Select(x => x.ApartmentArea).DefaultIfEmpty(0).Sum();
                var addArea = db.Apartments.Where(x => x.BuildingId == apartment.BuildingId && !x.IsDeleted).Select(x => x.AdditionalArea).DefaultIfEmpty(0).Sum();
                OwnedPercentage = (Math.Floor(((apartment.AdditionalArea + apartment.ApartmentArea) / (apArea + addArea) * 100) * 100) / 100).ToString() + "%";

                var groups = db.Invoices.Where(x => !x.IsDeleted && x.BuildingId == apartment.BuildingId).Select(x => x.InvoiceCategoryId).Distinct().ToList();

                var dataGridGroups   = new List <InvoiceCategory>();
                var settleableGroups = db.BuildingInvoceBindings.Include(x => x.Building).Include(x => x.InvoiceCategory).Where(x => !x.IsDeleted && x.Building.BuildingId == building.BuildingId).ToList();

                foreach (var g in groups)
                {
                    if (settleableGroups.Any(x => x.InvoiceCategory.CategoryId == g))
                    {
                        dataGridGroups.Add(db.InvoiceCategories.FirstOrDefault(x => x.CategoryId == g));
                    }
                }

                int i = 1;
                CostsCollection = new ObservableCollection <AnalysisDataGrid>();

                //
                var buildingTotalArea = apArea + addArea;
                var apartmentsCount   = db.Apartments.Where(x => !x.IsDeleted && x.BuildingId == apartment.BuildingId).Count();
                var totalLocators     = db.Apartments.Where(x => !x.IsDeleted && x.BuildingId == apartment.BuildingId).Select(x => x.Locators).DefaultIfEmpty(0).Sum();

                foreach (var inv in dataGridGroups)
                {
                    var cc = new AnalysisDataGrid()
                    {
                        Id           = i.ToString(),
                        Group        = inv.CategoryName,
                        TotalCost    = Math.Floor(db.Invoices.Where(x => x.InvoiceDate.Year == year && !x.IsDeleted && x.BuildingId == apartment.BuildingId && x.InvoiceCategoryId == inv.CategoryId && x.IsSettled).Select(x => x.CostAmountGross).DefaultIfEmpty(0).Sum() * 100) / 100,
                        IsRepairFund = inv.CategoryId == InvoiceCategory.RepairFundInvoiceCategoryId,
                    };
                    double scale;
                    switch (settleableGroups.FirstOrDefault(x => x.InvoiceCategory.CategoryId == inv.CategoryId).Distribution)
                    {
                    default:
                        break;

                    case CostDistribution.PerAdditionalArea:
                        scale            = Math.Floor(10000 * (apartment.AdditionalArea / addArea)) / 10000;
                        cc.ApartmentCost = Math.Floor(100 * (cc.TotalCost * Convert.ToDecimal(scale))) / 100;
                        break;

                    case CostDistribution.PerApartment:
                        scale            = Math.Floor(10000 * (1 / (double)apartmentsCount)) / 10000;
                        cc.ApartmentCost = Math.Floor(100 * (cc.TotalCost * Convert.ToDecimal(scale))) / 100;
                        break;

                    case CostDistribution.PerApartmentArea:
                        scale            = Math.Floor(10000 * (apartment.ApartmentArea / apArea)) / 10000;
                        cc.ApartmentCost = Math.Floor(100 * (cc.TotalCost * Convert.ToDecimal(scale))) / 100;
                        break;

                    case CostDistribution.PerApartmentTotalArea:
                        scale            = Math.Floor(10000 * ((apartment.ApartmentArea + apartment.AdditionalArea) / buildingTotalArea)) / 10000;
                        cc.ApartmentCost = Math.Floor(100 * (cc.TotalCost * Convert.ToDecimal(scale))) / 100;
                        break;

                    case CostDistribution.PerLocators:
                        scale            = Math.Floor(10000 * ((double)apartment.Locators / (double)totalLocators)) / 10000;
                        cc.ApartmentCost = Math.Floor(100 * (cc.TotalCost * Convert.ToDecimal(scale))) / 100;
                        break;
                    }
                    CostsCollection.Add(cc);
                    i++;
                }
                CostsCollection.Add(new AnalysisDataGrid()
                {
                    Id            = i.ToString(),
                    Group         = "Razem: ",
                    TotalCost     = CostsCollection.Where(x => !x.IsRepairFund).Sum(x => x.TotalCost),
                    ApartmentCost = CostsCollection.Where(x => !x.IsRepairFund).Sum(x => x.ApartmentCost),
                    IsRepairFund  = false,
                });
            }
        }