Exemple #1
0
        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);
            }
        }
Exemple #2
0
 public int GetNumberOfAvailableScooters()
 {
     using (var context = new RentalContext())
     {
         var availableScooters = context.Scooters.Where(s => s.Defected == false && s.Rented == false);
         return(availableScooters.Count());
     }
 }
Exemple #3
0
 public void RentScooter(int scooterId)
 {
     using (var context = new RentalContext())
     {
         var scooter = context.Scooters.First(s => s.ScooterId == scooterId);
         scooter.Rented = true;
         context.SaveChanges();
     }
 }
Exemple #4
0
 public void DefectResolved(int scooterId)
 {
     using (var context = new RentalContext())
     {
         var scooter = context.Scooters.First(s => s.ScooterId == scooterId);
         scooter.Rented = false;
         context.SaveChanges();
     }
 }
Exemple #5
0
 public void AddDefect(Defect defect)
 {
     using (var context = new RentalContext())
     {
         var defectDto = ModelToDto(defect);
         context.Defects.Add(defectDto);
         context.SaveChanges();
     }
 }
Exemple #6
0
 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();
     }
 }
Exemple #7
0
 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();
     }
 }
Exemple #8
0
        public void AddRental(Rental rental)
        {
            var rentalDto = ModeltoDto(rental);

            using (var context = new RentalContext())
            {
                context.Rentals.Add(rentalDto);
                context.SaveChanges();
            }
        }
Exemple #9
0
 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);
     }
 }
Exemple #10
0
        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);
            }
        }