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); }
private void btnExit_Click(object sender, EventArgs e) { if (ddlType.Text == "Select") { ParkingHistory parkingDetail = new ParkingHistory(); if (txtVehicleNo.Text.Trim().Length > 0) { parkingDetail = objBAL.GetVehicleDetail(txtVehicleNo.Text.Trim()); if (parkingDetail.ParkingSlot != null) { string type = parkingDetail.ParkingSlot.Substring(0, 1); if (type == "S") { typeId = 1; } if (type == "M") { typeId = 2; } if (type == "L") { typeId = 3; } GetProperParking(typeId); string updateQry = "Update ParkingHistory Set ExitTime=GETDATE() where VehicleNo='" + parkingDetail.VehicleNo + "' and Id='" + parkingDetail.Id + "'"; string exitParkQuery = "Update " + tableName + " Set ExitTime=GETDATE(), IsAvailable=1 where VehicleNo='" + parkingDetail.VehicleNo + "' and SlotNo='" + parkingDetail.ParkingSlot + "';" + updateQry; bool status = objBAL.SaveDetail(exitParkQuery); if (status) { MessageBox.Show("Thank you for visiting."); txtVehicleNo.Clear(); } } else { MessageBox.Show("This vehicle does not exist, Please provide the valid vehicle number."); } } else { MessageBox.Show("Please provide the vehicle number."); } } }
public async Task <ActionResult <HttpResponseMessage> > BuyPlace([FromRoute] Guid id, [FromBody] ParkingHistory parkingHistory) { parkingHistory.StartTime = DateTime.Now; parkingHistory.EndTime = DateTime.Now.AddHours(parkingHistory.HowLong); parkingHistory.ParkingId = id; parkingHistory.UserId = new Guid(User.FindFirst(ClaimTypes.NameIdentifier)?.Value); var parking = await _context.Parkings.Where(p => p.Id == id).FirstOrDefaultAsync(); parking.NumberOfFreeCarsPlaces--; _context.Parkings.Update(parking); _context.ParkingHistories.Add(parkingHistory); await _context.SaveChangesAsync(); return(Ok("Wykupiono miejsce parkingowe")); }