Esempio n. 1
0
        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);
        }