public void CheckOut(int userId) { var parking = _context.Parkings.SingleOrDefault(p => p.UserId == userId); if (parking == null) { throw new AppException("Can't Find Your Parking"); } parking.isActive = false; parking.UserCheckOut = DateTime.Now; var space = _context.Spaces.Find(parking.SpaceId); var garage = _context.Garages.Find(parking.GarageId); TimeSpan interval = parking.UserCheckOut - parking.UserCheckIn; int parkingRate = Int32.Parse(garage.ParkingRate); double parkingCost = (parkingRate * interval.TotalMinutes) / 60; int cleaningCost = 0; if (parking.withCleaningService) { cleaningCost = Int32.Parse(garage.CleaningRate); } double Cost = parkingCost + cleaningCost; Console.WriteLine("\n" + parkingCost + cleaningCost + "\n"); parking.CleaningCost = cleaningCost.ToString(); parking.ParkingCost = parkingCost.ToString(); parking.Cost = Cost.ToString(); _context.Parkings.Update(parking); _context.SaveChanges(); ParkingHistory parkingHistory = new ParkingHistory(); parkingHistory.UserId = parking.UserId; parkingHistory.VehicleNumber = parking.VehicleNumber; parkingHistory.DriverName = parking.DriverName; parkingHistory.SpaceId = parking.SpaceId; parkingHistory.AllocationMangerId = parking.AllocationMangerId; parkingHistory.GarageId = parking.GarageId; parkingHistory.UserCheckIn = parking.UserCheckIn; parkingHistory.UserCheckOut = parking.UserCheckOut; parkingHistory.withCleaningService = parking.withCleaningService; parkingHistory.Cost = parking.Cost; parkingHistory.ParkingCost = parking.ParkingCost; parkingHistory.CleaningCost = parking.CleaningCost; parkingHistory.interval = ToReadableString(interval); _context.ParkingHistories.Add(parkingHistory); _context.SaveChanges(); _context.Parkings.Remove(parking); _context.SaveChanges(); _spaceService.MinusSpaceCapacity(space); _garageService.MinusGarageCapacity(garage); }