public List <(Scooter, TimeSpan)> GetUsageTime() { var usageTimeList = new List <(Scooter, TimeSpan)>(); using (var context = new RentalContext()) { var group = context.Rentals.GroupBy(g => g.ScooterId); foreach (var scooter in group) { TimeSpan totalUsageTime = new TimeSpan(0); foreach (var rental in scooter) { if (rental.RentalEnd != null) { totalUsageTime += (DateTime)rental.RentalEnd - rental.RentalStart; } } usageTimeList.Add((ScooterDtoToModel(context.Scooters.First(s => s.ScooterId == scooter.Key)), totalUsageTime)); } return(usageTimeList); } }
public int GetNumberOfAvailableScooters() { using (var context = new RentalContext()) { var availableScooters = context.Scooters.Where(s => s.Defected == false && s.Rented == false); return(availableScooters.Count()); } }
public void RentScooter(int scooterId) { using (var context = new RentalContext()) { var scooter = context.Scooters.First(s => s.ScooterId == scooterId); scooter.Rented = true; context.SaveChanges(); } }
public void DefectResolved(int scooterId) { using (var context = new RentalContext()) { var scooter = context.Scooters.First(s => s.ScooterId == scooterId); scooter.Rented = false; context.SaveChanges(); } }
public void AddDefect(Defect defect) { using (var context = new RentalContext()) { var defectDto = ModelToDto(defect); context.Defects.Add(defectDto); context.SaveChanges(); } }
public void DefectResolved(int scooterId) { using (var context = new RentalContext()) { var defect = context.Defects.First(d => d.ScooterId == scooterId && d.Resolved == false); defect.Resolved = true; context.SaveChanges(); } }
public void EndRental(Guid userId, int scooterId, DateTime now) { using (var context = new RentalContext()) { var rental = context.Rentals.First(r => r.UserId == userId.ToString() && r.ScooterId == scooterId && r.RentalEnd == null); rental.RentalEnd = now; context.SaveChanges(); } }
public void AddRental(Rental rental) { var rentalDto = ModeltoDto(rental); using (var context = new RentalContext()) { context.Rentals.Add(rentalDto); context.SaveChanges(); } }
public bool UserCanReportDefect(Guid userId, int scooterId) { using (var context = new RentalContext()) { var rental = context.Rentals.FirstOrDefault(r => r.ScooterId == scooterId && r.UserId == userId.ToString() && (r.RentalEnd == null || (DateTime.Now - r.RentalEnd) < new TimeSpan(0, 15, 0))); if (rental == null) { return(false); } return(true); } }
public User[] GetTopTenUsers() { using (var context = new RentalContext()) { var rentals = context.Rentals.GroupBy(r => r.UserId).Select(s => new { ClientId = s.Key, RentalCount = s.Count() }).OrderByDescending(r => r.RentalCount).Take(10); var users = new User[10]; var counter = 0; foreach (var rental in rentals) { users[counter++] = DtoToModel(context.Users.First(u => u.UserId == rental.ClientId)); } return(users); } }