예제 #1
0
        /// <summary>
        /// Save selected button handler
        /// </summary>
        private async void SaveSelectedDrivers()
        {
            //Update Drivers for backup count property
            MaximumProgress = DriversForBackpCount;
            MessageDialog   = null;
            //check for empty selection
            if (!Drivers.Any(x => x.IsSelected))
            {
                MessageDialog =
                    new MessageDialogViewModel(new ObservableCollection <ActionButton>(new List <ActionButton>()
                {
                    new ActionButton(StringResources.OK,
                                     () => { MessageDialog = null; }, ActionButton.ButtonType.Deafult)
                }), StringResources.NothingToSave, StringResources.NoDriversSelected);
                return;
            }

            var folder = new FolderBrowserDialog();

            if (folder.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            string path = folder.SelectedPath;

            Progress             = 0;
            ShowInProgressDialog = true;
            InProgressTest       = StringResources.SavingDriversDots;
            cts = new CancellationTokenSource();

            await SaveDriversAsync(Drivers.Where(x => x.IsSelected), path, cts.Token);
        }
예제 #2
0
        public PolicyValidationResult Validate()
        {
            if (StartDate < DateTime.UtcNow)
            {
                return(new PolicyValidationResult("Start Date of Policy"));
            }

            if (!Drivers.Any())
            {
                return(new PolicyValidationResult("A minimum of 1 driver must be added to a policy"));
            }

            if (Drivers.Count > 5)
            {
                return(new PolicyValidationResult("A maximum of 5 drivers can be added to a policy"));
            }

            if (Drivers.Any(d => d.DateOfBirth > DateTime.UtcNow))
            {
                return(new PolicyValidationResult("Date of Birth for all drivers must not be in the future"));
            }

            if (Drivers.SelectMany(d => d.Claims).Any(c => c.DateOfClaim > DateTime.UtcNow))
            {
                return(new PolicyValidationResult("Claims must not have a date in the future"));
            }

            var youngestDriver      = YoungestDriver;
            var ageOfYoungestDriver = youngestDriver.DateOfBirth.CalculateAgeOnDate(StartDate);

            if (ageOfYoungestDriver < 21)
            {
                return(new PolicyValidationResult(string.Format("Age of Youngest Driver: {0}", youngestDriver.Name)));
            }

            var oldestDriver      = OldestDriver;
            var ageOfOldestDriver = oldestDriver.DateOfBirth.CalculateAgeOnDate(StartDate);

            if (ageOfOldestDriver > 75)
            {
                return(new PolicyValidationResult(string.Format("Age of Oldest Driver: {0}", oldestDriver.Name)));
            }

            var driverWithMoreThan2Claims = Drivers.FirstOrDefault(d => d.Claims.Count > 2);

            if (driverWithMoreThan2Claims != null)
            {
                return(new PolicyValidationResult(string.Format("Driver has more than 2 claims: {0}", driverWithMoreThan2Claims.Name)));
            }

            var totalClaims = Drivers.Sum(d => d.Claims.Count);

            if (totalClaims > 3)
            {
                return(new PolicyValidationResult("Policy has more than 3 claims"));
            }

            return(new PolicyValidationResult(PolicyValidResult.Succeeded));
        }
예제 #3
0
        /// <summary>
        /// Return driver.
        /// </summary>
        /// <param name="driverTypeId">
        /// </param>
        /// <returns>
        /// The <see cref="IDriver"/>.
        /// </returns>
        public static IDriver ReturnDriver(Guid driverTypeId)
        {
            if (Drivers == null || !Drivers.Any())
            {
                return(null);
            }

            return(Drivers.FirstOrDefault(
                       d => d.Metadata["ValueMetaData"].ToString().ToLower() == driverTypeId.ToString().ToLower()).Value);
        }
        private void EnableDisableReportTypeDropdown()
        {
            IsReportTypeDropdownEnabled = Drivers != null?Drivers.Any(x => x.IsSelected) : false;

            if (!IsReportTypeDropdownEnabled)
            {
                _previouslySelectedReportType = SelectedReportType;
                _previouslySelectedExportType = SelectedExportType;
                SelectedReportType            = null;
                SelectedExportType            = null;
            }
            else
            {
                SelectedReportType = _previouslySelectedReportType;
                SelectedExportType = _previouslySelectedExportType;
            }
        }
예제 #5
0
        public void Can_prepare_mock_data()
        {
            Assert.That(StartLocation != null);
            Assert.That(Locations != null && Locations.Any(), "Mock Locations not ready");
            Assert.That(Drivers != null && Drivers.Any(), "Mock Drivers not ready");
            Assert.That(Jobs != null && Jobs.Any(), "Mock Jobs not ready");

            var hazmatJobs    = Jobs.Where(p => p.IsHazmat);
            var shortHaulJobs = Jobs.Where(p => p.IsShortHaul);
            var longHaulJobs  = Jobs.Where(p => p.IsLongHaul);
            var type1Jobs     = Jobs.Where(p => p.OrderType == 1);
            var type2Jobs     = Jobs.Where(p => p.OrderType == 2);
            var type3Jobs     = Jobs.Where(p => p.OrderType == 3);
            var p1Jobs        = Jobs.Where(p => p.Priority == 1);
            var p2Jobs        = Jobs.Where(p => p.Priority == 2);
            var p3Jobs        = Jobs.Where(p => p.Priority == 3);

            Assert.That(hazmatJobs != null && hazmatJobs.Any());
            Assert.That(shortHaulJobs != null && shortHaulJobs.Any());
            Assert.That(longHaulJobs != null && longHaulJobs.Any());
            Assert.That(type1Jobs != null && type1Jobs.Any());
            Assert.That(type2Jobs != null && type2Jobs.Any());
            Assert.That(type3Jobs != null && type3Jobs.Any());
            Assert.That(p1Jobs != null && p1Jobs.Any());
            Assert.That(p2Jobs != null && p2Jobs.Any());
            Assert.That(p3Jobs != null && p3Jobs.Any());

            var hazmatDrivers    = Drivers.Where(p => p.IsHazmatEligible);
            var shortHaulDrivers = Drivers.Where(p => p.IsShortHaulEligible);
            var longHaulDrivers  = Drivers.Where(p => p.IsLongHaulEligible);
            var type1Drivers     = Drivers.Where(p => p.OrderType == 1);
            var type2Drivers     = Drivers.Where(p => p.OrderType == 2);
            var type3Drivers     = Drivers.Where(p => p.OrderType == 3);

            Assert.That(hazmatDrivers != null && hazmatDrivers.Any());
            Assert.That(shortHaulDrivers != null && shortHaulDrivers.Any());
            Assert.That(longHaulDrivers != null && longHaulDrivers.Any());
            Assert.That(type1Drivers != null && type1Drivers.Any());
            Assert.That(type2Drivers != null && type2Drivers.Any());
            Assert.That(type3Drivers != null && type3Drivers.Any());
        }
예제 #6
0
 public bool HasDrivers()
 {
     return(Drivers.Any());
 }
예제 #7
0
        public void InitialDbData()
        {
            if (!Cars.Any())
            {
                List <Vehicle> cars = new List <Vehicle>()
                {
                    new Car()
                    {
                        CarId = Guid.Parse("7295a624-dea8-479c-b920-a3254f92af77"), CurrentDistance = 20.3, RegistrationNumber = "KRA2436", Status = Status.wolny, TotalDistance = 15034.5, XPosition = 2.4, YPosition = 5.2
                    },
                    new Car()
                    {
                        CarId = Guid.Parse("6291ffd4-cb73-4c37-aa9a-1591247f554d"), CurrentDistance = 13.7, RegistrationNumber = "KOL0201", Status = Status.wypożyczony, TotalDistance = 20134.5, XPosition = 1.4, YPosition = -2.2
                    },
                    new Car()
                    {
                        CarId = Guid.Parse("7fb934b4-dae2-4659-a9ee-d5af7af36f40"), CurrentDistance = 20.3, RegistrationNumber = "KRA2436", Status = Status.wolny, TotalDistance = 15034.5, XPosition = 2.4, YPosition = 5.2
                    }
                };
                foreach (Car item in cars)
                {
                    Cars.Add(item);
                    var carReadModel = new CarViewModel()
                    {
                        CarId              = item.CarId,
                        CurrentDistance    = item.CurrentDistance,
                        RegistrationNumber = item.RegistrationNumber,
                        Status             = item.Status,
                        TotalDistance      = item.TotalDistance,
                        XPosition          = item.XPosition,
                        YPosition          = item.YPosition
                    };
                    CarViewModels.Add(carReadModel);
                }
            }

            if (!Drivers.Any())
            {
                Driver driver = new Driver("42222/12/01118", "Jan", "Kowalski");
                driver.DriverId = Guid.Parse("0871afd6-dae6-45f2-b9cf-8f91f184d6af");

                Drivers.Add(driver);

                DriverViewModel driverViewModel = new DriverViewModel()
                {
                    DriverId      = driver.DriverId,
                    FirstName     = driver.FirstName,
                    LastName      = driver.LastName,
                    LicenceNumber = driver.LicenceNumber
                };

                DriverViewModels.Add(driverViewModel);
            }

            if (!Rentals.Any())
            {
                Rental rental = new Rental()
                {
                    RentalId = Guid.Parse("1c3444e1-e09c-48a1-9cf2-db713731b5b1"),
                    CarId    = Guid.Parse("6291ffd4-cb73-4c37-aa9a-1591247f554d"),
                    Started  = DateTime.ParseExact("21/05/2020 07:25:47", "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture),
                    DriverId = Guid.Parse("0871afd6-dae6-45f2-b9cf-8f91f184d6af")
                };

                Rentals.Add(rental);

                if (Cars.Any())
                {
                    var carToUpdate = Cars.FirstOrDefault(x => x.CarId == rental.CarId);
                    carToUpdate.ChangeStatus();
                }

                RentalReadModel rentalReadModel = new RentalReadModel()
                {
                    RentalId           = rental.RentalId,
                    RegistrationNumber = "KOL0201",
                    CarId          = rental.CarId,
                    DriverId       = rental.DriverId,
                    Driver         = "Jan Kowalski",
                    Created        = rental.Started,
                    StartXPosition = 1.4,
                    StartYPosition = -2.2
                };

                RentalReadModels.Add(rentalReadModel);
            }

            this.SaveChanges();
        }
예제 #8
0
        protected virtual void UpdateDrivers()
        {
            if (Session.Cars != _drivers.Count)
            {
                var driversAdded   = new List <TelemetryDriver>();
                var driversRemoved = new List <TelemetryDriver>();

                // Get a new list of drivers
                var driverList      = Memory.Get("Simulator").ReadAs <int[]>("Drivers");
                var validDriverList = driverList.Where(x => Provider.CheckDriverQuick(Memory, x)).ToArray();
                var playerDriverPtr = Memory.Get("Simulator").ReadAs <int>("CarPlayer");
                // Update the drivers.))
                foreach (var validDriverPtr in validDriverList)
                {
                    if (Drivers.Any(x => x.BaseAddress == validDriverPtr))
                    {
                        continue;
                    }

                    var isPlayer = validDriverPtr == playerDriverPtr;
                    var memPool  = Memory.Get("DriverTemplate").Clone("Driver " + validDriverPtr, validDriverPtr);
                    Provider.CreateDriver((MemoryPool)memPool, isPlayer);

                    Memory.Add(memPool);

                    var td = new TelemetryDriver(memPool);
                    _drivers.Add(td);
                    driversAdded.Add(td);

                    if (isPlayer)
                    {
                        _player = td;
                    }
                }


                foreach (var driver in _drivers)
                {
                    if (!validDriverList.Any(x => x == driver.BaseAddress))
                    {
                        // This driver is now invalid
                        driversRemoved.Add(driver);
                    }
                }

                for (int i = 0; i < driversRemoved.Count; i++)
                {
                    Memory.Remove(driversRemoved[i].Pool);
                    _drivers.Remove(driversRemoved[i]);

                    if (driversRemoved[i] == _player)
                    {
                        _player = null;
                    }
                }

                if (driversAdded.Count > 0)
                {
                    GlobalEvents.Fire(new DriversAdded(this, driversAdded), true);
                }
                if (driversRemoved.Count > 0)
                {
                    GlobalEvents.Fire(new DriversRemoved(this, driversAdded), true);
                }
            }
        }