Example #1
0
        // GET: Statistics
        public async Task <IActionResult> Index()
        {
            var vehicles = await _context.ParkedVehicle.ToListAsync();

            var currentParkedVehicles = vehicles.Where(a => a.TimeStampCheckOut == null).ToList();

            double totalCurrentParkedVehicleMinutes = 0;
            int    totalNumberOfWheels = 0;
            var    currentTime         = DateTime.Now;

            currentParkedVehicles.ForEach(a => {
                totalNumberOfWheels += a.NumberOfWheels;
                var timeSpan         = currentTime - a.TimeStampCheckIn;
                totalCurrentParkedVehicleMinutes += timeSpan.TotalMinutes;
            });

            var statisticsModel = new StatisticsViewModel()
            {
                TotalNumberOfParkedVehicles  = currentParkedVehicles.Count,
                TotalNumberOfWheels          = totalNumberOfWheels,
                CurrentSumMinutes            = totalCurrentParkedVehicleMinutes,
                CurrentSumParkingFeesDisplay = ParkingFee.DisplayAsCurrency(totalCurrentParkedVehicleMinutes) + $" (Minutes: {Math.Round(totalCurrentParkedVehicleMinutes, 2)}) "
            };

            return(View(statisticsModel));
        }
        public async Task <IActionResult> Receipt(ParkedVehicle vehout)
        {
            var vehicleType = await _context.VehicleType.FirstOrDefaultAsync(a => a.Id == vehout.VehicleTypeId);

            var member = await _context.Member.FirstOrDefaultAsync(a => a.Id == vehout.MemberId);

            var     tin       = vehout.TimeStampCheckIn;
            var     tout      = vehout.TimeStampCheckOut ?? DateTime.Now;
            Receipt prReceipt = new Receipt
            {
                MemberName        = member.Name,
                LicenseNumber     = vehout.LicenseNumber,
                Type              = vehicleType.Name,
                Color             = vehout.Color,
                Model             = vehout.Model,
                NumberOfWheels    = vehout.NumberOfWheels,
                TimeStampCheckIn  = tin,
                TimeStampCheckOut = tout,
                //Cash = Math.Round((tout - tin).TotalMinutes),
                FeeDisplay = ParkingFee.DisplayAsCurrency(tin, tout)
            };

            return(View(prReceipt));
        }