// POST: Garages/Delete/5 //[HttpPost, ActionName("UnParked")] //[ValidateAntiForgeryToken] public async Task <IActionResult> UnparkVehicle(int?id)//Todo -Add to Remove action for Receipt { // Unpark. Updates Vehicle and ParkingPlace in db UnparkTheVehicle(id); //Create Receipt ReceiptViewModel receipt = null; var vehicle = await dbGarage.Vehicle.FindAsync(id); if (vehicle != null) { var member = dbGarage.Membership .FirstOrDefault(m => m.MembershipId == vehicle.MembershipId); receipt = new ReceiptViewModel { Id = vehicle.VehicleId, RegistrationNumber = vehicle.RegistrationNumber, MemberNumber = member.Personnummer, CheckIn = vehicle.CheckInTime, StayPro = member.StayPro, IsPro = VehicleHelper.IsPro(member), MemberSpaces = dbGarage.Vehicle.Where(v => v.IsParked && v.MembershipId == member.MembershipId) .Select(v => v.VehicleType.Size) .Count() }; dbGarage.Vehicle.Update(vehicle); await dbGarage.SaveChangesAsync(); TempData["message"] = $"You have unparked your {vehicle.VehicleType}!"; return(View("Receipt", receipt)); } return(View()); }
//------------------------------------CONVERSIONS------------------------------------------------------------------ public ReceiptViewModel ToReceiptViewModel(Vehicle vehicle) { var owner = _context.Owners.FirstOrDefault(o => o.MemberNumber == vehicle.MemberNumber); var model = new ReceiptViewModel { RegNum = vehicle.RegNum, VehicleType = vehicle.VehicleType, UserName = owner.UserName, ArrivalTime = vehicle.ArrivalTime, DepartureTime = vehicle.DepartureTime }; model.TotalParkedTime = model.DepartureTime - model.ArrivalTime; model.Price = model.TotalParkedTime.Hours * 100; model.Price += model.TotalParkedTime.Days * 24 * 100; return(model); }