/// <summary> /// Updates an existing rental agreement. /// </summary> /// <param name="theRentalAgreement">The modified rental agreement</param> /// <exception cref="InvalidPermissionsException">InvalidPermissionsException will be thrown /// if the user attempting to modify the rental agreement is not an employee</exception> /// <returns></returns> public RentalAgreement UpdateRentalAgreement(RentalAgreement theRentalAgreement) { var aUser = _userRepository.GetUser(theRentalAgreement.EmployeeId); if (!aUser.IsEmployee) throw new InvalidPermissionsException( $"The user {aUser.LastName}, {aUser.FirstName} is not an employee and cannot modify a rental agreement"); _rentalAgreementRepository.UpdateRentalAgreement(theRentalAgreement); return GetRentalAgreement(theRentalAgreement.Id); }
/// <summary> /// Saves a new rental agreement. /// </summary> /// <exception cref="InvalidRentalAgreementException">Will throw InvalidRentalAgreementException if there is a validation error</exception> /// <param name="theRentalAgreement">The rental agreement to save</param> /// <returns>The id of the rental agreement (maybe change to rental agreement with id?)</returns> public int AddRentalAgreement(RentalAgreement theRentalAgreement) { var aCustomer = _customerRepository.GetCustomer(theRentalAgreement.Customer); if (!aCustomer.AllowsAdditionalDrivers && theRentalAgreement.AdditionalDrivers.Any()) throw new InvalidRentalAgreementException("No additional drivers are allowed", theRentalAgreement); if (!aCustomer.AllowsAdditions && theRentalAgreement.Additions.Any()) throw new InvalidRentalAgreementException("No additions are allowed", theRentalAgreement); var aTimeSpan = theRentalAgreement.InDate.Subtract(theRentalAgreement.OutDate).Days; if (aCustomer.HasMaxRentalDays && aTimeSpan > aCustomer.MaxRentalDays) throw new InvalidRentalAgreementException("Rental agreement exceed the maximum number of rental days allowed for this customer", theRentalAgreement); return _rentalAgreementRepository.AddRentalAgreement(theRentalAgreement); }
public async Task<RentalAgreement> UpdateRentalAgreementAsync(RentalAgreement theRentalAgreement) { var aUser = await _userRepository.GetUserAsync(theRentalAgreement.EmployeeId); if (!aUser.IsEmployee) throw new InvalidPermissionsException( $"The user {aUser.LastName}, {aUser.FirstName} is not an employee and cannot modify a rental agreement"); await _rentalAgreementRepository.UpdateRentalAgreementAsync(theRentalAgreement); return await GetRentalAgreementAsync(theRentalAgreement.Id); }
public async Task<int> AddRentalAgreementAsync(RentalAgreement theRentalAgreement) { return await _rentalAgreementRepository.AddRentalAgreementAsync(theRentalAgreement); }
public void AddValidRentalAgreementTest() { var aRentalAgreement = new RentalAgreement { AdditionalDrivers = new List<int> { 1, 2, 3, 4, 5 }, Additions = new List<string> { "gps", "baby seat" }, Automobile = 1, Customer = PassingCustomerId, EmployeeId = 1, InDate = DateTime.Now.AddDays(2), Location = 1, OutDate = DateTime.Now, Renter = 1, Status = "Reservation" }; var aAgreementNumber = _service.AddRentalAgreement(aRentalAgreement); Assert.Equal(RentalAgreementId, aAgreementNumber); }
public async Task DeleteRentalAgreementAsync(RentalAgreement theRentalAgreement) { await _rentalAgreementRepository.DeleteRentalAgreementAsync(theRentalAgreement); }
public void UpdateRentalAgreementPassingTest() { var aRentalAgreement = new RentalAgreement { AdditionalDrivers = new List<int> { 1, 2, 3, 4, 5 }, Additions = new List<string> { "gps", "baby seat" }, Automobile = 1, Customer = PassingCustomerId, EmployeeId = EmployeeUser, InDate = DateTime.Now.AddDays(2), Location = 1, OutDate = DateTime.Now, Renter = 1, Status = "Reservation" }; _service.UpdateRentalAgreement(aRentalAgreement); }
public void UpdateRentalAgreementInvalidPermissionsTest() { var aRentalAgreement = new RentalAgreement { AdditionalDrivers = new List<int> { 1, 2, 3, 4, 5 }, Additions = new List<string> { "gps", "baby seat" }, Automobile = 1, Customer = PassingCustomerId, EmployeeId = NonEmployeeUser, InDate = DateTime.Now.AddDays(2), Location = 1, OutDate = DateTime.Now, Renter = 1, Status = "Reservation" }; Assert.Throws<InvalidPermissionsException>(() => _service.UpdateRentalAgreement(aRentalAgreement)); }
public async Task UpdateRentalAgreementAsync(RentalAgreement theRentalAgreement) { await ConnectionAsync.UpdateAsync(theRentalAgreement); }
public async Task DeleteRentalAgreementAsync(RentalAgreement theRentalAgreement) { await ConnectionAsync.DeleteAsync(theRentalAgreement); }
public async Task<int> AddRentalAgreementAsync(RentalAgreement theRentalAgreement) { return await ConnectionAsync.InsertAsync(theRentalAgreement); }
public void DeleteRentalAgreement(RentalAgreement theRentalAgreement) { Connection.Delete<RentalAgreementDTO>(theRentalAgreement.Id); }
public void UpdateRentalAgreement(RentalAgreement theRentalAgreement) { Connection.Update(theRentalAgreement.ToDTO()); }
public int AddRentalAgreement(RentalAgreement theRentalAgreement) { return Connection.Insert(theRentalAgreement.ToDTO()); }
public InvalidRentalAgreementException(string theMessage, RentalAgreement theRentalAgreement) : base(theMessage) { RentalAgreement = theRentalAgreement; }