コード例 #1
0
        /// <summary>
        /// Attempts to update a RealEstateCompany instance in the Collection. Returns 1 if succeeds, 0 if fails.
        /// </summary>
        /// <param name="realEstateCompany"></param>
        /// <returns></returns>
        public int Update(RealEstateCompany realEstateCompany)
        {
            if (realEstateCompany != null)
            {
                int realEstateCompanyIDX         = _recoList.FindIndex(r => r.CompanyID == realEstateCompany.CompanyID);
                RealEstateCompany collectionRECo = null;

                if (realEstateCompanyIDX > -1)
                {
                    collectionRECo = _recoList[realEstateCompanyIDX];
                }

                if (collectionRECo != null)
                {
                    if (LogicBroker.UpdateExistingItem <RealEstateCompany>(realEstateCompany))
                    {
                        RealEstateCompany storedRECo = LogicBroker.GetReCompany(realEstateCompany.CompanyID);

                        if (storedRECo != null)
                        {
                            this._recoList[realEstateCompanyIDX] = storedRECo;
                            collectionMonitor.SendNotifications(1, "RECo");
                            return(1);
                        }
                    }
                }
                else
                {
                    return(this.Add(realEstateCompany));
                }
            }

            return(0);
        }
コード例 #2
0
        /// <summary>
        /// Add a HomeSale instance to this collection. Will only accept object whose MarketDate and SaleAmount members are not null
        /// and the homesale instance is not already in the collection.
        /// </summary>
        /// <param name="homeSale"></param>
        public int Add(HomeSale homeSale)
        {
            if (homeSale != null)
            {
                int      preCount           = this.Count;
                HomeSale collectionHomeSale = _homeSalesList.SingleOrDefault(hs => hs.MarketDate == homeSale.MarketDate &&
                                                                             hs.SaleAmount == homeSale.SaleAmount);

                if (collectionHomeSale == null)
                {
                    if (LogicBroker.StoreItem <HomeSale>(homeSale))
                    {
                        HomeSale storedHomeSale = LogicBroker.GetHomeSale(homeSale.SaleID);

                        if (storedHomeSale != null)
                        {
                            _homeSalesList.Add(storedHomeSale);

                            if (this.Count > preCount)
                            {
                                collectionMonitor.SendNotifications(1, "HomeSale");
                                return(1);
                            }
                        }
                    }
                }
            }

            return(0);
        }
コード例 #3
0
        /// <summary>
        /// Allows caller to add a Person to the Collection based on PersonID
        /// </summary>
        /// <param name="person"></param>
        public int Add(T person)
        {
            if (person != null)
            {
                int    preCount         = this.Count;
                Person collectionPerson = _peopleList.SingleOrDefault(p =>
                                                                      p.FirstName == person.FirstName && p.LastName == person.LastName);

                if (collectionPerson == null)
                {
                    if (LogicBroker.StoreItem <Person>(person))
                    {
                        Person storedPerson = LogicBroker.GetPerson(person.PersonID);

                        if (storedPerson != null)
                        {
                            _peopleList.Add((T)storedPerson);

                            if (this.Count > preCount)
                            {
                                collectionMonitor.SendNotifications(1, "Person");
                                return(1);
                            }
                        }
                    }
                }
            }

            return(0);
        }
コード例 #4
0
        /// <summary>
        /// Updates an existing home instance in database and Collection using Home arg. Returns 1 if change(s) applied, 0 if no changes made.
        /// </summary>
        /// <param name="home"></param>
        /// <returns name="int"></returns>
        public int Update(Home home)
        {
            if (home != null)
            {
                int  homeIDX        = _homesList.FindIndex(h => h.HomeID == home.HomeID);
                Home collectionHome = null;

                if (homeIDX > -1)
                {
                    collectionHome = _homesList[homeIDX];
                }

                if (collectionHome != null)
                {
                    if (LogicBroker.UpdateExistingItem <Home>(home))
                    {
                        Home storedHome = LogicBroker.GetHome(home.HomeID);

                        if (storedHome != null)
                        {
                            this._homesList[homeIDX] = storedHome;
                            collectionMonitor.SendNotifications(1, "Home");
                            return(1);
                        }
                    }
                }
                else
                {
                    return(this.Add(home));
                }
            }

            return(0);
        }
コード例 #5
0
        /// <summary>
        /// Attempts to add a RealEstateCompany instance to the Collection and the Database. Returns True if succeeds, False if otherwise.
        /// </summary>
        /// <param name="realEstateCompany"></param>
        /// <returns></returns>
        public int Add(RealEstateCompany realEstateCompany)
        {
            if (realEstateCompany != null)
            {
                int preCount = this.Count;
                RealEstateCompany collectionReco = _recoList
                                                   .SingleOrDefault(re =>
                                                                    re.CompanyName == realEstateCompany.CompanyName);

                if (collectionReco == null)
                {
                    if (LogicBroker.StoreItem <RealEstateCompany>(realEstateCompany))
                    {
                        RealEstateCompany storedReco = LogicBroker.GetReCompany(realEstateCompany.CompanyID);

                        if (storedReco != null)
                        {
                            this._recoList.Add(storedReco);

                            if (this.Count > preCount)
                            {
                                collectionMonitor.SendNotifications(1, "RECo");
                                return(1);
                            }
                        }
                    }
                }
            }

            return(0);
        }
コード例 #6
0
        /// <summary>
        /// Adds an instance to this item list.
        /// </summary>
        /// <param name="home"></param>
        public int Add(Home home)
        {
            if (home != null)
            {
                int  preCount       = this.Count;
                Home collectionHome = _homesList.SingleOrDefault(h => h.Address == home.Address &&
                                                                 h.Zip == home.Zip);

                if (collectionHome == null)
                {
                    if (LogicBroker.StoreItem <Home>(home))
                    {
                        Home storedHome = LogicBroker.GetHome(home.HomeID);

                        if (storedHome != null)
                        {
                            this._homesList.Add(storedHome);

                            if (this.Count > preCount)
                            {
                                collectionMonitor.SendNotifications(1, "Home");
                                return(1);
                            }
                        }
                    }
                }
            }

            return(0);
        }
コード例 #7
0
        /// <summary>
        /// Takes a Person, Agent, Buyer, or Owner instance and attempts to remove it from the Collection and the Database. Returns True if succeeds, False if otherwise.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public bool Remove(T item)
        {
            bool result = false;

            if (item != null)
            {
                if (item.GetType().Name == "Agent")
                {
                    var agent = item as Agent;
                    result = this.RemoveAgent(agent);
                }
                if (item.GetType().Name == "Buyer")
                {
                    var buyer = item as Buyer;
                    result = this.RemoveBuyer(buyer);
                }
                if (item.GetType().Name == "Owner")
                {
                    var owner = item as Owner;
                    result = this.RemoveOwner(owner);
                }
                if (item.GetType().Name == "Person")
                {
                    Person person = item as Person;

                    if (_peopleList.Contains(person))
                    {
                        var personIDX = _peopleList.FindIndex(p => p.PersonID == person.PersonID);

                        if (person.Agent != null)
                        {
                            this.RemoveAgent(person.Agent);
                        }
                        if (person.Buyer != null)
                        {
                            this.RemoveBuyer(person.Buyer);
                        }
                        if (person.Owner != null)
                        {
                            this.RemoveOwner(person.Owner);
                        }
                        if (LogicBroker.RemoveEntity <Person>(person))
                        {
                            collectionMonitor.SendNotifications(1, "Person");
                            _peopleList.RemoveAt(personIDX);
                            return(true);
                        }
                    }
                }
            }

            return(result);
        }
コード例 #8
0
 private void Application_Exit(object sender, ExitEventArgs e)
 {
     if (LogicBroker.BackUpDatabase())
     {
         HSTLogger.Data("App Exit", "Backup of files complete.");
     }
     else
     {
         HSTLogger.Data("App Exit", "Unable to backup to file system.");
         MessageBox.Show("Backup failed.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
     }
     HSTLogger.Flush();
 }
コード例 #9
0
        public void InitDatabaseTest()
        {
            var result = false;

            if (LogicBroker.InitDatabase())
            {
                Console.WriteLine("Database initialization completed successfully");
                result = true;
            }
            else
            {
                Console.WriteLine("Database initialization failed.");
            }

            Assert.IsTrue(result);
        }
コード例 #10
0
        public void LoadDatabaseDataTest()
        {
            var result = false;

            if (LogicBroker.LoadData())
            {
                Console.WriteLine("Database data loaded successfully.");
                result = true;
            }
            else
            {
                Console.WriteLine("Database data load failed.");
            }

            Assert.IsTrue(result);
        }
コード例 #11
0
        /// <summary>
        /// Attempts to update Person information (Phone or EMail) in the DB and Collection. Agent, Buyer, or Owner are delegated. Returns zero if no changes were made.
        /// </summary>
        /// <param name="person"></param>
        /// <returns></returns>
        public int UpdatePerson(T person)
        {
            if (person == null)
            {
                return(0);
            }

            int    result           = 0;
            int    personIDX        = _peopleList.FindIndex(p => p.PersonID == person.PersonID);
            Person collectionPerson = null;

            if (personIDX > -1)
            {
                collectionPerson = _peopleList[personIDX];
            }

            if (collectionPerson != null)
            {
                if (LogicBroker.UpdateExistingItem <Person>(person))
                {
                    Person storedPerson = LogicBroker.GetPerson(person.PersonID);

                    if (storedPerson != null)
                    {
                        this[personIDX] = (T)storedPerson;
                        result          = 1;
                    }
                }
            }

            if (collectionPerson == null)
            {
                result = this.Add(person);
            }

            result += UpdateAgent(person.Agent);
            result += UpdateBuyer(person.Buyer);
            result += UpdateOwner(person.Owner);

            if (result > 0)
            {
                collectionMonitor.SendNotifications(1, "Person");
            }

            return(result);
        }
コード例 #12
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //  portions of code are thanks to a Gist by Ronnie Overby at https://gist.github.com/ronnieoverby/7568387
            HSTLogger = new Logger();
            if (HSTLogger.IsEnabled)
            {
                AppDomain.CurrentDomain.UnhandledException += (sig, exc) =>
                                                              LogUnhandledException((Exception)exc.ExceptionObject, "AppDomain.CurrentDomain.UnhandledException");

                DispatcherUnhandledException += (sig, exc) =>
                                                LogUnhandledException(exc.Exception, "Application.Current.DispatcherUnhandledException");

                TaskScheduler.UnobservedTaskException += (sig, exc) =>
                                                         LogUnhandledException(exc.Exception, "TaskScheduler.UnobservedTaskException");

                HSTLogger.Data("Application Startup", "Initialize Database called");
                try
                {
                    if (DatabaseInitLoaded = LogicBroker.InitDatabase())
                    {
                        HSTLogger.Data("Application Startup", "Initialize Database completed. Launching UI.");
                        DoDbBackup           = true;
                        _peopleCollection    = Factory.CollectionFactory.GetPeopleCollectionObject();
                        _homesCollection     = Factory.CollectionFactory.GetHomesCollectionObject();
                        _homeSalesCollection = Factory.CollectionFactory.GetHomeSalesCollectionObject();
                        _recosCollection     = Factory.CollectionFactory.GetRECosCollectionObject();
                        new MainWindow().Show();
                    }
                    else
                    {
                        HSTLogger.Data("Application Startup", "Application Startup failed to load file data.");
                    }
                    HSTLogger.Flush();
                }
                catch (Exception ex)
                {
                    HSTLogger.Data("WindowLoading Exception thrown", ex.Message);
                    LogInnerExceptionMessages(ex, "WindowLoading InnerException");
                    HSTLogger.Flush();
                    _          = MessageBox.Show($"While launching, the application was unable to load the backup files. Application will now close.", "Unable to load file data.", MessageBoxButton.OK);
                    DoDbBackup = false;
                    App.Current.Shutdown();
                }
            }
        }
コード例 #13
0
        /// <summary>
        /// Attempts to remove a RealEstateCompany instance from the Collection and the Database. Returns True if succeeds, False if otherwise.
        /// </summary>
        /// <param name="realEstateCompany"></param>
        /// <returns></returns>
        public bool Remove(RealEstateCompany realEstateCompany)
        {
            if (realEstateCompany != null)
            {
                if (_recoList.Contains(realEstateCompany))
                {
                    if (LogicBroker.RemoveEntity <RealEstateCompany>(realEstateCompany))
                    {
                        if (_recoList.Remove(realEstateCompany))
                        {
                            collectionMonitor.SendNotifications(1, "RECo");
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
コード例 #14
0
        /// <summary>
        /// Accepts a Home instance and attempts to remove from the Database and the Collection. Returns True if succeeds, False if no changes made.
        /// </summary>
        /// <param name="home"></param>
        /// <returns></returns>
        public bool Remove(Home home)
        {
            if (home != null)
            {
                if (_homesList.Contains(home))
                {
                    if (LogicBroker.RemoveEntity <Home>(home))
                    {
                        if (_homesList.Remove(home))
                        {
                            collectionMonitor.SendNotifications(1, "Home");
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
コード例 #15
0
        /// <summary>
        /// Attempts to update the Buyer Object in the database and updates the Person instance in the Collection with the updated Buyer info.
        /// </summary>
        /// <param name="buyer"></param>
        /// <returns></returns>
        internal int UpdateBuyer(Buyer buyer)
        {
            if (buyer == null || buyer.BuyerID < 0)
            {
                return(0);
            }

            Buyer  dbBuyer          = null;
            int    personIDX        = _peopleList.FindIndex(p => p.PersonID == buyer.BuyerID);
            Person collectionPerson = _peopleList[personIDX];

            if (collectionPerson.Buyer == buyer)
            {
                return(0);
            }

            int  result      = 0;
            bool buyerStored = false;

            dbBuyer = LogicBroker.GetBuyer(collectionPerson.PersonID);

            if (dbBuyer == null)
            {
                buyerStored = LogicBroker.StoreItem <Buyer>(buyer);
            }
            else
            {
                buyerStored = LogicBroker.UpdateExistingItem <Buyer>(buyer);
            }

            if (buyerStored)
            {
                dbBuyer = LogicBroker.GetBuyer(collectionPerson.PersonID);
                this[personIDX].Buyer = dbBuyer;
                result = 1;
                collectionMonitor.SendNotifications(1, "Person");
                collectionMonitor.SendNotifications(1, "Buyer");
            }

            return(result);
        }
コード例 #16
0
        /// <summary>
        /// Attempts to update the Agent Object in the database and updates the Person instance in the Collection with the updated Agent info.
        /// </summary>
        /// <param name="agent"></param>
        /// <returns></returns>
        internal int UpdateAgent(Agent agent)
        {
            if (agent == null || agent.AgentID < 0)
            {
                return(0);
            }

            Agent  dbAgent          = null;
            int    personIDX        = _peopleList.FindIndex(p => p.PersonID == agent.AgentID);
            Person collectionPerson = _peopleList[personIDX];

            if (collectionPerson.Agent == agent)
            {
                return(0);
            }

            int  result      = 0;
            bool agentStored = false;

            dbAgent = LogicBroker.GetAgent(collectionPerson.PersonID);

            if (dbAgent == null)
            {
                agentStored = LogicBroker.StoreItem <Agent>(agent);
            }
            else
            {
                agentStored = LogicBroker.UpdateExistingItem <Agent>(agent);
            }

            if (agentStored)
            {
                dbAgent = LogicBroker.GetAgent(collectionPerson.PersonID);
                this[personIDX].Agent = dbAgent;
                result = 1;
                collectionMonitor.SendNotifications(1, "Person");
                collectionMonitor.SendNotifications(1, "Agent");
            }

            return(result);
        }
コード例 #17
0
        /// <summary>
        /// Attempts to update the Owner Object in the database and updates the Person instance in the Collection with the updated Owner info.
        /// </summary>
        /// <param name="owner"></param>
        /// <returns></returns>
        internal int UpdateOwner(Owner owner)
        {
            if (owner == null || owner.OwnerID < 0)
            {
                return(0);
            }

            Owner  dbOwner          = null;
            int    personIDX        = _peopleList.FindIndex(p => p.PersonID == owner.OwnerID);
            Person collectionPerson = _peopleList[personIDX];

            int  result      = 0;
            bool ownerStored = false;

            dbOwner = LogicBroker.GetOwner(collectionPerson.PersonID);

            if (dbOwner == null)
            {
                ownerStored = LogicBroker.StoreItem <Owner>(owner);
            }
            else
            {
                ownerStored = LogicBroker.UpdateExistingItem <Owner>(owner);
            }

            if (ownerStored)
            {
                dbOwner = LogicBroker.GetOwner(collectionPerson.PersonID);
                this[personIDX].Owner = dbOwner;
                result = 1;
                collectionMonitor.SendNotifications(1, "Person");
                collectionMonitor.SendNotifications(1, "Owner");
            }

            return(result);
        }
コード例 #18
0
 /// <summary>
 /// Private helper method removes Agent instance from the DB.
 /// </summary>
 /// <param name="agent"></param>
 /// <returns></returns>
 private bool RemoveAgent(Agent agent)
 {
     return(LogicBroker.RemoveEntity <Agent>(agent));
 }
コード例 #19
0
        public void OneBigTest()
        {
            {
                #region LogicBrokerTests
                //  GetPerson(PersonID)
                {
                    var expectedPerson = new Person()
                    {
                        FirstName = "John",
                        LastName  = "Smith",
                        Email     = "*****@*****.**",
                        Phone     = "1112223333"
                    };

                    int    personID     = 1;
                    Person actualPerson = LogicBroker.GetPerson(personID);

                    bool areEqual = expectedPerson.Equals(actualPerson);
                    Assert.IsTrue(areEqual);
                }

                //  GetPerson(firstname, lastname)
                {
                    string firstName = "John";
                    string lastName  = "Smith";

                    var expectedPerson = new Person()
                    {
                        FirstName = firstName,
                        LastName  = lastName,
                        Email     = "*****@*****.**",
                        Phone     = "1112223333"
                    };

                    Person actualPerson = LogicBroker.GetPerson(firstName, lastName);

                    bool areEqual = expectedPerson.Equals(actualPerson);
                    Assert.IsTrue(areEqual);
                }

                //  GetHome(homeID)
                {
                    var address = "23 Oak St.";
                    var zip     = "955551111";

                    var expectedHome = new Home()
                    {
                        Address = address,
                        City    = "Johnsonville",
                        State   = "CA",
                        Zip     = zip
                    };

                    int  homeID     = 1;
                    Home actualHome = LogicBroker.GetHome(homeID);

                    bool areEqual = expectedHome.Equals(actualHome);
                    Assert.IsTrue(areEqual);
                }

                //  GetHome(address, zip)
                {
                    var address = "23 Oak St.";
                    var zip     = "955551111";

                    var expectedHome = new Home()
                    {
                        Address = address,
                        City    = "Johnsonville",
                        State   = "CA",
                        Zip     = zip
                    };

                    Home actualHome = LogicBroker.GetHome(address, zip);

                    bool areEqual = expectedHome.Equals(actualHome);
                    Assert.IsTrue(areEqual);
                }

                //  GetHomeSale(saleID)
                //  SOLD
                {
                    int homesaleID = 6;

                    var expectedHomeSale = new HomeSale()
                    {
                        SaleID     = homesaleID,
                        HomeID     = 3,
                        SoldDate   = new DateTime(2014, 06, 13),
                        AgentID    = 1,
                        SaleAmount = 550_000m,
                        BuyerID    = 5,
                        MarketDate = new DateTime(2014, 06, 01),
                        CompanyID  = 4
                    };

                    var actualHomeSale = LogicBroker.GetHomeSale(homesaleID);

                    bool areEqual = expectedHomeSale.Equals(actualHomeSale);
                    if (!areEqual)
                    {
                        var items = new List <HomeSale>()
                        {
                            expectedHomeSale, actualHomeSale
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetHomeSale(marketDate, saleAmount)
                //  SOLD
                {
                    int homesaleID = 6;
                    var marketDate = new DateTime(2015, 03, 01);
                    var saleAmount = 335_000m;

                    var expectedHomeSale = new HomeSale()
                    {
                        SaleID     = homesaleID,
                        HomeID     = 1,
                        SoldDate   = new DateTime(2010, 03, 15),
                        AgentID    = 1,
                        SaleAmount = saleAmount,
                        BuyerID    = 1,
                        MarketDate = marketDate,
                        CompanyID  = 2
                    };

                    var actualHomeSale = LogicBroker.GetHomeSale(marketDate, saleAmount);

                    bool areEqual = expectedHomeSale.Equals(actualHomeSale);
                    if (!areEqual)
                    {
                        var items = new List <HomeSale>()
                        {
                            expectedHomeSale, actualHomeSale
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetHomeSale(saleID)
                //  FOR SALE
                {
                    var saleID = 1;

                    var expectedHomeForSale = new HomeSale()
                    {
                        SaleID     = saleID,
                        HomeID     = 3,
                        SoldDate   = null,
                        AgentID    = 4,
                        SaleAmount = 700_000m,
                        MarketDate = new DateTime(2016, 08, 15),
                        CompanyID  = 1
                    };

                    var actualHomeForSale = LogicBroker.GetHomeSale(saleID);

                    bool areEqual = expectedHomeForSale.Equals(actualHomeForSale);
                    if (!areEqual)
                    {
                        var items = new List <HomeSale>()
                        {
                            expectedHomeForSale, actualHomeForSale
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetReCompany(companyID)
                {
                    int companyID = 3;

                    var expectedRECo = new RealEstateCompany()
                    {
                        CompanyID   = companyID,
                        CompanyName = "Rapid Real Estate",
                        Phone       = "6662221111"
                    };

                    var actualRECo = LogicBroker.GetReCompany(companyID);

                    bool areEqual = expectedRECo.Equals(actualRECo);
                    if (!areEqual)
                    {
                        var items = new List <RealEstateCompany>()
                        {
                            expectedRECo, actualRECo
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetReCompany(companyName)
                {
                    int companyID   = 3;
                    var companyName = "Rapid Real Estate";

                    var expectedRECo = new RealEstateCompany()
                    {
                        CompanyID   = companyID,
                        CompanyName = companyName,
                        Phone       = "6662221111"
                    };

                    var actualRECo = LogicBroker.GetReCompany(companyName);

                    bool areEqual = expectedRECo.Equals(actualRECo);
                    if (!areEqual)
                    {
                        var items = new List <RealEstateCompany>()
                        {
                            expectedRECo, actualRECo
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetAgent(AgentID)
                {
                    var agentID = 4;

                    var expectedAgent = new Agent()
                    {
                        AgentID           = agentID,
                        CompanyID         = 1,
                        CommissionPercent = 0.03m
                    };

                    var actualAgent = LogicBroker.GetAgent(agentID);

                    bool areEqual = expectedAgent.Equals(actualAgent);
                    if (!areEqual)
                    {
                        var items = new List <Agent>()
                        {
                            expectedAgent, actualAgent
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetBuyer(BuyerID)
                {
                    var buyerID = 7;

                    var expectedBuyer = new Buyer()
                    {
                        BuyerID      = buyerID,
                        CreditRating = 780
                    };

                    var actualBuyer = LogicBroker.GetBuyer(buyerID);

                    bool areEqual = expectedBuyer.Equals(actualBuyer);
                    if (!areEqual)
                    {
                        var items = new List <Buyer>()
                        {
                            expectedBuyer, actualBuyer
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  GetOwner(OwnerID)
                {
                    var ownerID = 7;

                    var expectedOwner = new Owner()
                    {
                        OwnerID         = ownerID,
                        PreferredLender = "Unique Mortgaging"
                    };

                    var actualOwner = LogicBroker.GetOwner(ownerID);

                    bool areEqual = expectedOwner.Equals(actualOwner);
                    if (!areEqual)
                    {
                        var items = new List <Owner>()
                        {
                            expectedOwner, actualOwner
                        };

                        PrintObjects(items);
                    }

                    Assert.IsTrue(areEqual);
                }

                //  UpdateExistingItem<Person>(person)
                {
                    var updatePersonFirstName = "p1FirstName";
                    var updatePersonLastName  = "p2LastName";
                    var addUpdateRemovePerson = new Person
                    {
                        FirstName = updatePersonFirstName,
                        LastName  = updatePersonLastName,
                        Phone     = "123456789",
                        Email     = "*****@*****.**"
                    };

                    var expectedStoreResult = true;
                    var actualStoreResult   = LogicBroker.StoreItem <Person>(addUpdateRemovePerson);

                    PrintObject <Person>(addUpdateRemovePerson, "Update Existing Item addUpdateRemovePerson.");
                    PrintObject <bool>(actualStoreResult, "Return value from StoreItem().");

                    if (!actualStoreResult)
                    {
                        Console.WriteLine(addUpdateRemovePerson.ToString());
                    }

                    Assert.AreEqual(expectedStoreResult, actualStoreResult);

                    var personToUpdate = LogicBroker.GetPerson(updatePersonFirstName, updatePersonLastName);
                    PrintObject <Person>(personToUpdate, "Returned Person from GetPerson(firstname, lastname).");

                    var expectedUpdateResult = true;
                    var updatePerson         = new Person()
                    {
                        PersonID  = personToUpdate.PersonID,
                        FirstName = personToUpdate.FirstName,
                        LastName  = personToUpdate.LastName,
                        Phone     = "0000000000",
                        Email     = "*****@*****.**"
                    };

                    var actualUpdateResult = LogicBroker.UpdateExistingItem <Person>(updatePerson);

                    PrintObject <bool>(actualUpdateResult, "Return value from UpdateExistingItem().");

                    if (actualUpdateResult)
                    {
                        Person resultPerson = LogicBroker.GetPerson(addUpdateRemovePerson.FirstName, addUpdateRemovePerson.LastName);
                        Console.WriteLine(resultPerson.ToString());
                    }

                    Assert.AreEqual(expectedUpdateResult, actualUpdateResult);

                    var expectedRemoveResult = true;
                    var actualRemoveResult   = LogicBroker.RemoveEntity <Person>(updatePerson);

                    PrintObject <bool>(actualRemoveResult, "Return value from RemoveEntity<Person>().");

                    if (!actualRemoveResult)
                    {
                        Console.WriteLine("RemoveEntity<Person>(addUpdateRemovePerson) failed.");
                        Console.WriteLine(addUpdateRemovePerson.ToString());
                    }

                    Assert.AreEqual(expectedRemoveResult, actualRemoveResult);
                }
            }
            #endregion LogicBrokerTests

            #region InitializeCollections

            DbPeopleCollection = new PeopleCollection <Person>(EntityLists.GetListOfPeople());
            Assert.IsTrue(DbPeopleCollection.Count == 10);

            DbHomesCollection = new HomesCollection(EntityLists.GetTreeListOfHomes());
            Assert.IsTrue(DbHomesCollection.Count == 5);

            DbHomesalesCollection = new HomeSalesCollection(EntityLists.GetListOfHomeSales());
            Assert.IsTrue(DbHomesalesCollection.Count == 8);

            DbRECosCollection = new RealEstateCosCollection(EntityLists.GetTreeListOfRECompanies());
            Assert.IsTrue(DbRECosCollection.Count == 4);
            #endregion InitializeCollections

            #region PeopleCollectionTests
            {
                //  COUNT
                var expectedCount = 10;
                var actualCount   = DbPeopleCollection.Count;
                Assert.AreEqual(expectedCount, actualCount);

                //  ADD
                var personPerson = new Person()
                {
                    FirstName = "Owen",
                    LastName  = "Owner",
                    Phone     = "123456789",
                    Email     = "*****@*****.**"
                };
                var personAddedCount = DbPeopleCollection.Add(personPerson);
                PrintObject <Person>(personPerson, $"Attempted to add Person to PersonCollection. Result: { personAddedCount }.");
                Assert.IsTrue(personAddedCount == 1);   //  Add plain Person

                //  GET (PersonID by F+L Names)
                int addedPersonID = 0;
                addedPersonID = DbPeopleCollection.GetPersonIDbyName(personPerson.FirstName, personPerson.LastName);
                PrintObject <int>(addedPersonID, "Returned PersonID from GetPersonIDbyName(Owen, Owner).");
                Assert.IsTrue(addedPersonID > 10);

                //  GET (Person by Person)
                Person addedPerson = null;
                addedPerson = DbPeopleCollection.Get(addedPersonID);
                PrintObject <Person>(addedPerson, "Returned Person from Get(addedPersonID).");
                Assert.IsTrue(addedPerson != null);

                //  UPDATE (Person's Phone)
                addedPerson.Phone = "3254678451";
                var addedPersonUpdated = DbPeopleCollection.UpdatePerson(addedPerson);
                PrintObject <Person>(addedPerson, $"UpdatePerson(addedPerson) result: { addedPersonUpdated }.");
                Assert.IsTrue(addedPersonUpdated == 1);

                //  UPDATE (Person as an Owner)
                var existingUpdatePerson = DbPeopleCollection.Get(addedPersonID);
                var owner = new Owner()
                {
                    OwnerID         = addedPerson.PersonID,
                    PreferredLender = "Lender Test"
                };
                existingUpdatePerson.Owner = owner;
                var ownerPersonUpdated = DbPeopleCollection.UpdatePerson(existingUpdatePerson);
                PrintObject <Person>(existingUpdatePerson, $"UpdatePerson(addedPerson) with Owner result: { ownerPersonUpdated }.");
                Assert.IsTrue(ownerPersonUpdated > 0);

                //  REMOVE
                var updatePersonWithOwner = DbPeopleCollection.Get(addedPersonID);
                var personRemoved         = DbPeopleCollection.Remove(updatePersonWithOwner);
                PrintObject <Person>(updatePersonWithOwner, $"Removing person from collection result: { personRemoved }.");
                Assert.IsTrue(personRemoved);           //  Remove Person with Owner FK

                //  CLEAR
                DbPeopleCollection.Clear();
                expectedCount = 0;
                actualCount   = DbPeopleCollection.Count;

                //  REINIT
                DbPeopleCollection = new PeopleCollection <Person>(EntityLists.GetListOfPeople());
                Assert.IsTrue(DbPeopleCollection.Count == 10);
            }
            #endregion

            #region HomesCollectionTests
            {
                var newHome = new Home()
                {
                    Address = "4412 153rd Ave SE",
                    City    = "Bellevue",
                    State   = "WA",
                    Zip     = "980060000"
                };

                //  GET HOME BY ADDRESS AND ZIP
                //  var homeByAddress = DbHomesCollection.GetHome(anAddress, aZipCode);


                //  GET HOME BY ID
                var homeID   = 1;
                var homeByID = DbHomesCollection.Retreive(homeID);

                var expectedHome = new Home()
                {
                    HomeID  = 1,
                    Address = "23 Oak St.",
                    City    = "Johnsonville",
                    State   = "CA",
                    Zip     = "955551111",
                    OwnerID = 1
                };
                var expectedResult = true;
                var actualResult   = expectedHome.Equals(homeByID);
                PrintObject <Home>(homeByID, "Get Home by ID Result.");
                PrintObject <bool>(actualResult, "Get Home by id actual result:");
                Assert.AreEqual(expectedResult, actualResult);

                //  UPDATE HOME
                newHome.OwnerID = 3;
                var actualUpdateResult   = DbHomesCollection.Update(newHome);
                var expectedUpdateResult = 1;
                PrintObject <int>(actualUpdateResult, "Update Home actual update result:");
                Assert.AreEqual(expectedUpdateResult, actualUpdateResult);

                //  REMOVE HOME
                var expectedRemoveResult = true;
                var actualRemoveResult   = DbHomesCollection.Remove(newHome.HomeID);
                PrintObject <bool>(actualRemoveResult, "Remove Home actual result:");
                Assert.AreEqual(expectedRemoveResult, actualRemoveResult);

                //  CLEAR
                //DbHomesCollection.Clear();
                //expectedCount = 0;
                //actualCount = DbHomesCollection.Count;
                //Assert.AreEqual(expectedCount, actualCount);

                //  REINIT
                DbHomesCollection = new HomesCollection(EntityLists.GetTreeListOfHomes());

                var expectedCount = 5;
                var actualCount   = DbHomesCollection.Count;
                PrintObject <int>(actualCount, "Actual Count of reinitialized Homes collection.");
                Assert.AreEqual(expectedCount, actualCount);
            }
            #endregion

            #region HomeSalesCollectionTests
            {
                //  GET BY ID
                var existingSaleID = 1;
                var getHomesale    = DbHomesalesCollection.Retreive(existingSaleID);
                PrintObject <HomeSale>(getHomesale, "Retreived Homesale with SaleID=1: ");
                var marketDate       = new DateTime(2016, 08, 15);
                var expectedHomesale = new HomeSale()
                {
                    SaleID     = 6,
                    HomeID     = 3,
                    AgentID    = 4,
                    SaleAmount = 700000m,
                    MarketDate = new DateTime(2016, 08, 15),
                    CompanyID  = 1
                };

                var expectedResult = true;
                var actualResult   = expectedHomesale.Equals(getHomesale);
                Assert.AreEqual(expectedResult, actualResult);

                //  GET BY ITEM?
                //  TODO: Implement if necessary

                //  UPDATE E.G. SELLHOME
                var preNewHomesale = DbHomesalesCollection.Retreive(1); //  so it can be put back into DB at end of tests
                PrintObject <HomeSale>(preNewHomesale, "PreNewHomesale instance, SaleID=1: ");

                var newHomeSale = new HomeSale()
                {
                    SaleID     = 1,
                    HomeID     = 3,
                    AgentID    = 4,
                    SaleAmount = 766666m,
                    MarketDate = new DateTime(2016, 08, 15),
                    CompanyID  = 1,
                    SoldDate   = new DateTime(2020, 08, 15),
                    BuyerID    = 1
                };

                var actualUpdateResult = DbHomesalesCollection.Update(newHomeSale);
                PrintObject <HomeSale>(newHomeSale, "NewHomeSale instance sent to Update method: ");
                PrintObject <int>(actualUpdateResult, "UPDATE Home as sold result: ");
                var expectedUpdateResult = 1;
                Assert.AreEqual(expectedUpdateResult, actualUpdateResult);

                //  REMOVE
                var actualRemoveResult = DbHomesalesCollection.Remove(newHomeSale);
                PrintObject <HomeSale>(newHomeSale, "Item sent to Remove() method: ");

                var expectedRemoveResult = true;
                Assert.AreEqual(expectedRemoveResult, actualRemoveResult);

                //  GET UPDATE REMOVEFROMMARKET (put homesale back, then remove from market)
                var expectedPostRemoveFromMarketCount = DbHomesalesCollection.Count;
                var resetHomesale = new HomeSale()
                {
                    SaleID     = 6,
                    HomeID     = 3,
                    AgentID    = 4,
                    SaleAmount = 700000m,
                    MarketDate = new DateTime(2016, 08, 15),
                    CompanyID  = 1
                };
                var reAddHomeForSaleToCollectionResult = DbHomesalesCollection.Add(resetHomesale);
                PrintObject <HomeSale>(resetHomesale, "ResetHomesale, SaleID=6, sent to Add method: ");

                var expectedReAddHomeForSaleToCollectionResult = 1;
                Assert.AreEqual(expectedReAddHomeForSaleToCollectionResult, reAddHomeForSaleToCollectionResult);

                var expectedPostRemoveFromMarketResult = true;
                var actualPostRemoveFromMarketResult   = DbHomesalesCollection.Remove(resetHomesale);
                PrintObject <HomeSale>(resetHomesale, "ResetHomesale, SaleID=6, sent to Remove method: ");

                var actualPostRemoveFromMarketCount = DbHomesalesCollection.Count;

                Assert.AreEqual(expectedPostRemoveFromMarketResult, actualPostRemoveFromMarketResult);
                Assert.AreEqual(expectedPostRemoveFromMarketCount, actualPostRemoveFromMarketCount);

                //  CLEAR
                //  TODO: Implement Clear method if necessary.
            }
            #endregion

            #region RealEstateCompaniesTests
            {
                //  RETREIVE
                var recoToRetreiveID = 3;
                var retreivedRECo    = DbRECosCollection.Retrieve(recoToRetreiveID);
                var expectedRECo     = new RealEstateCompany()
                {
                    CompanyID   = 3,
                    CompanyName = "Rapid Real Estate",
                    Phone       = "6662221111",
                };
                var expectedAgentsCount    = 1;
                var expectedHomesalesCount = 2;
                PrintObject <RealEstateCompany>(retreivedRECo, "Expecting Rapid Real Estate. RECo retreived from Collection: ");
                var actualRetreivedRECoAgentsCount    = retreivedRECo.Agents.Count;
                var actualRetreivedRECoHomesalesCount = retreivedRECo.HomeSales.Count;
                PrintObject <int>(actualRetreivedRECoAgentsCount, "Expected: 1; Actual AGENTS in retreived RECo instance: ");
                PrintObject <int>(actualRetreivedRECoHomesalesCount, "Expected: 2; Actual HOMESALES in retreived RECo instance: ");
                Assert.AreEqual(expectedAgentsCount, retreivedRECo.Agents.Count);
                Assert.AreEqual(expectedHomesalesCount, retreivedRECo.HomeSales.Count);
                var expectedRECoRetreiveResult = true;
                var actualRECoRetreiveResult   = expectedRECo.Equals(retreivedRECo);
                PrintObject <bool>(actualRECoRetreiveResult, "Expected .Equals(): True; Actual comparison result: ");
                Assert.AreEqual(expectedRECoRetreiveResult, actualRECoRetreiveResult);

                //  ADD
                var expectedPreCount = DbRECosCollection.Count;
                var recoToAdd        = new RealEstateCompany()
                {
                    CompanyName = "TestCompany",
                    Phone       = "2061234567"
                };
                var expectedAddResult = 1;
                var actualAddResult   = DbRECosCollection.Add(recoToAdd);
                Assert.AreEqual(expectedAddResult, actualAddResult);

                //  SEARCH and store
                var recoToRemove = DbRECosCollection.Where(re => re.CompanyName == recoToAdd.CompanyName).FirstOrDefault();
                if (recoToRemove == null)
                {
                    Assert.Fail($"Unable to recover added RECo: { recoToAdd }");
                }

                //  Remove
                var expectedRemoveResult = true;
                var recoRemovalPreCount  = DbRECosCollection.Count;
                var expectedPostCount    = recoRemovalPreCount - 1;
                var actualRemoveResult   = DbRECosCollection.Remove(recoToRemove.CompanyID); //  this exercizes BOTH remove methods
                var actualPostCount      = DbRECosCollection.Count;
                Assert.AreEqual(expectedPostCount, actualPostCount);
                Assert.AreEqual(expectedRemoveResult, actualRemoveResult);
            }
            #endregion
        }
    }
}
コード例 #20
0
 /// <summary>
 /// Private helper method removes Buyer instance from the DB.
 /// </summary>
 /// <param name="buyer"></param>
 /// <returns></returns>
 private bool RemoveBuyer(Buyer buyer)
 {
     return(LogicBroker.RemoveEntity <Buyer>(buyer));
 }
コード例 #21
0
 /// <summary>
 /// Private helper method removes Owner instance from the DB.
 /// </summary>
 /// <param name="owner"></param>
 /// <returns></returns>
 private bool RemoveOwner(Owner owner)
 {
     return(LogicBroker.RemoveEntity <Owner>(owner));
 }