public virtual CircuitStatistics GetCircuitStatistics(Circuit circuit) { var races = _raceRepository.GetRacesAllAtCircuit(circuit); var lastRace = races.OrderBy(x => x.StartDate).LastOrDefault(x => x.Entries.Count() > 0); var previousWinner = new DriverContract { Driver = new Driver() { AtomicName = "* None *", Name = "* None *" } }; if (lastRace != null) { var previousWinningResult = lastRace.GetRaceResults().FirstOrDefault(x => x.Position == 1); if (previousWinningResult != null) { previousWinner = previousWinningResult.Entrant; } } // Qualifying Record var record = decimal.MaxValue; var qualifyingRecordHolder = new DriverContract { Driver = new Driver() { AtomicName = "* None *", Name = "* None *" } }; foreach (var race in races) { var polePosition = race.GetQualificationResults().Where(x => x.LapTime > 0).OrderBy(x => x.LapTime).FirstOrDefault(); if (polePosition != null) { if (polePosition.LapTime < record) { record = polePosition.LapTime; qualifyingRecordHolder = polePosition.Entrant; } } } return new CircuitStatistics(circuit, previousWinner, record, qualifyingRecordHolder); }
public void ActiveContracts_does_not_contain_terminated_contracts() { var driver = FakesFactory.Driver("Driver 1"); var driver2 = FakesFactory.Driver("Driver 2"); var contract = new DriverContract { Id = 1, Driver = driver, SignedDate = DateTime.Parse("2010-05-01"), TerminatedDate = DateTime.Parse("2011-05-01") }; var contract2 = new DriverContract { Id = 2, Driver = driver2, SignedDate = DateTime.Parse("2010-05-01") }; var team = FakesFactory.Team(new List<DriverContract> { contract, contract2 }); Assert.AreEqual(1, team.ActiveContracts.Count()); }
public QualifiyingStatistic(DriverContract entrant) { _totalPositions = 0; _totalQualifyingSessions = 0; _totalQualifyingSessionsWithTime = 0; _totalTime = 0; _bestLap = Decimal.MaxValue; Entrant = entrant; }
public void Drivers_contains_only_active_drivers() { var driver = FakesFactory.Driver("Driver 1"); var driver2 = FakesFactory.Driver("Driver 2"); var contract = new DriverContract { Id = 1, Driver = driver, SignedDate = DateTime.Parse("2010-05-01"), TerminatedDate = DateTime.Parse("2011-05-01") }; var contract2 = new DriverContract { Id = 2, Driver = driver2, SignedDate = DateTime.Parse("2010-05-01") }; var team = FakesFactory.Team(new List<DriverContract> { contract, contract2 }); Assert.AreEqual(1, team.Drivers.Count()); Assert.AreEqual(driver2.Id, team.Drivers.First().Id); }
public void Fire_driver_terminates_contract() { var driver = FakesFactory.Driver(); var contract = new DriverContract { Id = 1, Driver = driver, SignedDate = DateTime.Parse("2010-05-01")}; var team = FakesFactory.Team(new List<DriverContract> {contract}); Assert.AreEqual(1, team.Drivers.Count()); team.FireDriver(driver); //contract = team.Contracts.Single(c => c.Id == 1); Assert.AreEqual(0, team.Drivers.Count()); Assert.IsNull(driver.CurrentTeam); Assert.IsTrue(contract.TerminatedDate.HasValue); Assert.IsFalse(contract.IsActive); }
public Champion(DriverContract entrant, string season) { Entrant = entrant; Season = season; }
public async Task <IActionResult> SaveContract([FromBody] SaveContractRequest req) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } repository.SetTimeout(120); PortalUser user = await repository.AuthenticateUserToken(req.CurrentUser.UserId, req.CurrentUser.UserToken); if (user == null) { return(NotFound()); } var existingContract = await repository.GetContractById(req.CurrentContract.ContractId); if (existingContract == null && req.CurrentContract.ContractId > 0) { return(NotFound()); } else if (existingContract == null) { existingContract = new Contract() { CreatedBy = req.CurrentUser.UserName, CreatedDate = DateTime.UtcNow, }; } else if (existingContract.CompanyId != user.CompanyId) { return(NotFound()); } existingContract.AccountingContractId = req.CurrentContract.AccountingContractId; existingContract.ContractName = req.CurrentContract.ContractName; existingContract.ContractNumber = req.CurrentContract.ContractNumber; if (req.CurrentContract.ContractStartDate > DateTime.MinValue) { existingContract.ContractStartDate = req.CurrentContract.ContractStartDate; } if (req.CurrentContract.ContractEndDate > DateTime.MinValue) { existingContract.ContractEndDate = req.CurrentContract.ContractEndDate; } existingContract.ResponsibleParty = req.CurrentContract.ResponsibleParty; existingContract.TIN = req.CurrentContract.TIN; existingContract.PayrollId = req.CurrentContract.PayrollId; existingContract.IsDirectDeposit = req.CurrentContract.IsDirectDeposit; existingContract.Is1099Vendor = req.CurrentContract.Is1099Vendor; existingContract.InitialDeposit = req.CurrentContract.InitialDeposit; existingContract.PercentRetained = req.CurrentContract.PercentRetained; existingContract.CompanyId = user.CompanyId; existingContract.IsActive = req.CurrentContract.IsActive; existingContract.ModifiedBy = req.CurrentUser.UserName; existingContract.ModifiedDate = DateTime.UtcNow; // Determine if it is an insert. If not it will be an update. if (req.CurrentContract.ContractId == 0) { repository.Insert(existingContract); } await repository.SaveChanges(); Contract temp = new Contract(); List <DriverContract> driverContracts = await repository.GetDriverContractsByContractId(existingContract.ContractId); List <ContractTruck> contractTrucks = await repository.GetContractTrucksByContractId(existingContract.ContractId); List <ContractFinanceAgreement> contractFinanceAgreement = await repository.GetContractFinanceAgreementsByContractId(existingContract.ContractId); foreach (AssignedDriverModel driver in req.CurrentContract.AssignedDrivers) { DriverContract existingDriverContract = await repository.GetDriverContractById(driver.DriverContractId); if (existingDriverContract == null && driver.DriverContractId > 0) { // Skip this record. no longer exists or wrong data. continue; } else if (existingDriverContract == null) { existingDriverContract = new DriverContract(); repository.Insert(existingDriverContract); } existingDriverContract.DriverId = driver.DriverId; existingDriverContract.ContractId = existingContract.ContractId; existingDriverContract.StartDate = driver.StartDate; existingDriverContract.EndDate = driver.EndDate; existingDriverContract.IsActive = true; if (driver.DriverContractId == 0) { existingDriverContract.CreatedBy = req.CurrentUser.UserName; existingDriverContract.CreatedDate = DateTime.UtcNow; } if (repository.IsChanged(existingDriverContract)) { existingDriverContract.ModifiedBy = req.CurrentUser.UserName; existingDriverContract.ModifiedDate = DateTime.UtcNow; } driverContracts.RemoveAll(x => x.DriverContractId == existingDriverContract.DriverContractId); temp.DriverContract.Add(existingDriverContract); } foreach (AssignedTruckModel truck in req.CurrentContract.AssignedTrucks) { ContractTruck exisingContractTruck = await repository.GetContractTruckById(truck.ContractTruckId); if (exisingContractTruck == null && truck.ContractTruckId > 0) { // Skip this record. no longer exists or wrong data. continue; } else if (exisingContractTruck == null) { exisingContractTruck = new ContractTruck(); repository.Insert(exisingContractTruck); } exisingContractTruck.TruckId = truck.TruckId; exisingContractTruck.ContractId = existingContract.ContractId; exisingContractTruck.StartDate = truck.StartDate; exisingContractTruck.EndDate = truck.EndDate; exisingContractTruck.IsActive = true; if (truck.ContractTruckId == 0) { exisingContractTruck.CreatedBy = req.CurrentUser.UserName; exisingContractTruck.CreatedDate = DateTime.UtcNow; } if (repository.IsChanged(exisingContractTruck)) { exisingContractTruck.ModifiedBy = req.CurrentUser.UserName; exisingContractTruck.ModifiedDate = DateTime.UtcNow; } contractTrucks.RemoveAll(x => x.ContractTruckId == exisingContractTruck.ContractTruckId); temp.ContractTruck.Add(exisingContractTruck); } foreach (AssignedFinanceAgreementModel financialAgreement in req.CurrentContract.AssignedFinanceAgreements) { ContractFinanceAgreement existingFinancialAgreement = await repository.GetContractFinanceAgreementById(financialAgreement.ContractFinanceAgreementId); if (existingFinancialAgreement == null && financialAgreement.ContractFinanceAgreementId > 0) { // Skip this record. no longer exists or wrong data. continue; } else if (existingFinancialAgreement == null) { existingFinancialAgreement = new ContractFinanceAgreement(); existingFinancialAgreement.CompanyId = user.CompanyId; repository.Insert(existingFinancialAgreement); } existingFinancialAgreement.ContractId = existingContract.ContractId; existingFinancialAgreement.IsActive = true; if (financialAgreement.ContractFinanceAgreementId == 0) { existingFinancialAgreement.CreatedBy = req.CurrentUser.UserName; existingFinancialAgreement.CreatedDate = DateTime.UtcNow; } if (repository.IsChanged(existingFinancialAgreement)) { existingFinancialAgreement.ModifiedBy = req.CurrentUser.UserName; existingFinancialAgreement.ModifiedDate = DateTime.UtcNow; } existingFinancialAgreement.StartDate = financialAgreement.StartDate; existingFinancialAgreement.EndDate = (financialAgreement.EndDate ?? DateTime.MinValue); existingFinancialAgreement.PaymentAmount = financialAgreement.PaymentAmount; existingFinancialAgreement.FinanceAgreementName = financialAgreement.FinanceAgreementName; existingFinancialAgreement.LoanAmount = financialAgreement.LoanAmount; existingFinancialAgreement.RemainingBalance = financialAgreement.RemainingBalance; var typeQuery = await repository.GetFinanceTypeByName(financialAgreement.FinanceTypeName); if (typeQuery == null) { return(NotFound()); } existingFinancialAgreement.FinanceTypeId = typeQuery.FinanceTypeId; contractFinanceAgreement.RemoveAll(x => x.ContractFinanceAgreementId == existingFinancialAgreement.ContractFinanceAgreementId); temp.ContractFinanceAgreement.Add(existingFinancialAgreement); } // Delete any unincluded elements in the collection. foreach (DriverContract driver in driverContracts) { repository.Delete(driver); } foreach (ContractTruck truck in contractTrucks) { repository.Delete(truck); } foreach (ContractFinanceAgreement financialAgreement in contractFinanceAgreement) { repository.Delete(financialAgreement); } existingContract.DriverContract = temp.DriverContract; existingContract.ContractTruck = temp.ContractTruck; existingContract.ContractFinanceAgreement = temp.ContractFinanceAgreement; repository.Ignore(existingContract); await repository.SaveChanges(); return(Ok(LoadContract(existingContract))); }