コード例 #1
0
            //Execution method that will do the "work"
            private bool Execution_Exists(string name, bool isAccountName)
            {
                if (isAccountName)
                {
                    var result    = false;
                    var dbHandler = new StarWarsContext {
                        ConnectionString = ConnectionString
                    };
                    foreach (var account in dbHandler.Accounts)
                    {
                        if (account.AccountName == name)
                        {
                            result = true;
                        }
                    }

                    return(result);
                }
                else
                {
                    var result    = false;
                    var dbHandler = new StarWarsContext {
                        ConnectionString = ConnectionString
                    };
                    foreach (var account in dbHandler.Users)
                    {
                        if (account.Name == name)
                        {
                            result = true;
                        }
                    }

                    return(result);
                }
            }
コード例 #2
0
            private Receipt Execution_SendInvoice(Account account, double minutes)
            {
                var price   = _CalculatePrice(account.SpaceShip, minutes);
                var endTime = DateTime.Now.AddMinutes(minutes);
                var receipt = new Receipt
                {
                    Account   = account,
                    Price     = price,
                    StartTime = DateTime.Now.ToString("g"),
                    EndTime   = endTime.ToString("g")
                };

                if (ConnectionString == null)
                {
                    throw new Exception("The static property ConnectionString has not been assigned.",
                                        new Exception(
                                            "Please assign a value to the static property ConnectionString before calling any methods"));
                }
                var dbHandler = new StarWarsContext {
                    ConnectionString = ConnectionString
                };

                dbHandler.Receipts.Update(receipt);
                dbHandler.SaveChanges(); //TODO
                return(receipt);
            }
コード例 #3
0
            private List <Receipt> _GetAccountReceipts(Account account)
            {
                var dbHandler = new StarWarsContext {
                    ConnectionString = ConnectionString
                };

                return(dbHandler.Receipts.Include(a => a.Account)
                       .Where(receipt => receipt.Account.AccountName == account.AccountName).ToList());
            }
コード例 #4
0
            public static void ReRegisterShip(Account account, SpaceShip ship)
            {
                ship.SpaceShipID  = account.SpaceShip.SpaceShipID;
                account.SpaceShip = ship;

                var dbHandler = new StarWarsContext {
                    ConnectionString = ConnectionString
                };

                dbHandler.SpaceShips.Update(ship);
                dbHandler.SaveChanges();
            }
コード例 #5
0
            private List <Receipt> GetAccountReceipts(int accountId)
            {
                var receiptList = new List <Receipt>();
                var dbHandler   = new StarWarsContext {
                    ConnectionString = ConnectionString
                };

                foreach (var receipt in dbHandler.Receipts)
                {
                    if (receipt.Account.AccountID == accountId)
                    {
                        receiptList.Add(receipt);
                    }
                }
                return(receiptList);
            }
コード例 #6
0
            private Account Execution_ValidateLogin(string accountName, string passwordInput)
            {
                Account accountHolder = null;
                var     dbHandler     = new StarWarsContext {
                    ConnectionString = ConnectionString
                };

                foreach (var account in dbHandler.Accounts.Include(a => a.User).Include(a => a.SpaceShip)
                         .Include(h => h.User.Homeplanet))
                {
                    if (account.AccountName == accountName && account.Password == passwordInput)
                    {
                        accountHolder = account;
                    }
                }
                return(accountHolder);
            }
コード例 #7
0
            private bool Execution_Exists(User inputUser)
            {
                var result    = false;
                var dbHandler = new StarWarsContext {
                    ConnectionString = ConnectionString
                };

                foreach (var user in dbHandler.Users)
                {
                    if (user.Name == inputUser.Name)
                    {
                        result = true;
                    }
                }

                return(result);
            }
コード例 #8
0
            //Async method. Below will call upon a private corresponding method in another thread.
            private void _Register(User inputUser, SpaceShip inputShip, string accountName, string password)
            {
                var dbHandler = new StarWarsContext {
                    ConnectionString = ConnectionString
                };
                var outputAccount = new Account
                {
                    AccountName = accountName,
                    Password    = PasswordHashing.HashPassword(password),
                    User        = inputUser,
                    SpaceShip   = inputShip
                };

                inputUser.Homeplanet = dbHandler.Homeworlds.FirstOrDefault(g => g.Name == inputUser.Homeplanet.Name) ??
                                       inputUser.Homeplanet;
                dbHandler.Accounts.Add(outputAccount);
                dbHandler.SaveChanges();
            }
コード例 #9
0
            private (bool isOpen, DateTime nextAvailable) _CheckParkingStatus()
            {
                var dbHandler = new StarWarsContext {
                    ConnectionString = ConnectionString
                };
                var ongoingParkings = new List <Receipt>();

                foreach (var receipts in dbHandler.Receipts)
                {
                    if (DateTime.Parse(receipts.EndTime) > DateTime.Now)
                    {
                        ongoingParkings.Add(receipts);
                    }
                }
                var nextAvailable = DateTime.Now;
                var isOpen        = false;

                if (ongoingParkings.Count >= ParkingSlots)
                {
                    //Setting nextAvailable 10 years ahead so the loop will always start running.
                    nextAvailable = DateTime.Now.AddYears(10);
                    var cachedNow = DateTime.Now;
                    //Caching DateTimeNow in case loops takes longer than expected, to ensure that time moving forward doesn't break the loop.
                    foreach (var receipt in ongoingParkings)
                    {
                        var endTime = DateTime.Parse(receipt.EndTime);
                        if (endTime > cachedNow && endTime < nextAvailable)
                        {
                            nextAvailable = endTime;
                        }
                    }
                }
                else
                {
                    isOpen = true;
                }

                return(isOpen, nextAvailable);
            }