public IActionResult Park([FromBody] ParkingModel parkingDetails) { try { DeleteCacheData(); if (parkingDetails.VehicalOwnerName == null || parkingDetails.VehicalNumber == null || parkingDetails.VehicalOwnerEmail == null || parkingDetails.Brand == null || parkingDetails.Color == null || parkingDetails.DriverName == null) { throw new Exception(ParkingLotExceptions.ExceptionType.NULL_EXCEPTION.ToString()); } if (parkingDetails.VehicalOwnerName == "" || parkingDetails.VehicalNumber == "" || parkingDetails.VehicalOwnerEmail == "" || parkingDetails.Brand == "" || parkingDetails.Color == "" || parkingDetails.DriverName == "") { throw new Exception(ParkingLotExceptions.ExceptionType.EMPTY_EXCEPTION.ToString()); } RParkingModel parkResponse = parkingLotBL.Park(parkingDetails); if (parkResponse != null) { //Message For MSMQ. string message = "\n Hello " + Convert.ToString(parkResponse.VehicalOwnerName) + "\n Your " + " Vehicle Park Succesfully" + "\n Driver Name :" + Convert.ToString(parkResponse.DriverName) + "\n Email :" + Convert.ToString(parkResponse.VehicalOwnerEmail) + "\n Vehicle Number: " + Convert.ToString(parkResponse.VehicalNumber) + "\n Vehicle Brand : " + Convert.ToString(parkResponse.Brand) + "\n Vehicle Color : " + Convert.ToString(parkResponse.Color) + "\n Parking Slot : " + Convert.ToString(parkResponse.ParkingSlot) + "\n Parking Date : " + Convert.ToString(parkResponse.ParkingDate) + "\n Handicapped : " + Convert.ToString(parkResponse.IsHandicap) + "\n"; string status = "parked"; senderObject.Send(message, status); bool Success = true; var Message = "Vehical Parked"; return(Ok(new { Success, Message, Data = parkResponse })); } else if (parkResponse == null) { bool Success = false; var Message = "Vehical Is Already Parked"; return(Conflict(new { Success, Message })); } else { bool Success = false; var Message = "Lot Is Full"; return(NotFound(new { Success, Message })); } } catch (Exception exception) { return(BadRequest(new { Success = false, Message = exception.Message })); } }
/// <summary> /// Function To Find Vehical By Number. /// </summary> /// <param name="vehicalNumber"></param> /// <returns></returns> public List <RParkingModel> CheckUnParkVehical() { try { int status = 0; List <RParkingModel> ParkingModelsList = new List <RParkingModel>(); SqlCommand sqlCommand = new SqlCommand("spParkDetails", this.sqlConnectionVariable); sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.Parameters.AddWithValue("@Status", "UnParked"); this.sqlConnectionVariable.Open(); SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while (sqlDataReader.Read()) { status = sqlDataReader.GetInt32(0); if (status > 0) { RParkingModel pmode = new RParkingModel(); pmode.ReceiptNumber = Convert.ToInt32(sqlDataReader["ReceiptNumber"]); pmode.VehicalOwnerEmail = sqlDataReader["VehicalOwnerEmail"].ToString(); pmode.VehicalOwnerName = sqlDataReader["VehicalOwnerName"].ToString(); pmode.Brand = sqlDataReader["Brand"].ToString(); pmode.Color = sqlDataReader["Color"].ToString(); pmode.DriverName = sqlDataReader["DriverName"].ToString(); pmode.ParkingDate = sqlDataReader["ParkingDate"].ToString(); pmode.ParkingSlot = sqlDataReader["ParkingSlot"].ToString(); pmode.Status = sqlDataReader["Status"].ToString(); pmode.VehicalNumber = sqlDataReader["VehicalNumber"].ToString(); pmode.VehicalNumber = sqlDataReader["UnparkDate"].ToString(); pmode.VehicalNumber = sqlDataReader["TotalTime"].ToString(); pmode.VehicalNumber = sqlDataReader["TotalAmount"].ToString(); if (Convert.ToInt32(sqlDataReader["IsHandicap"]) == 1) { pmode.IsHandicap = "Yes"; } else { pmode.IsHandicap = "No"; } ParkingModelsList.Add(pmode); } else { return(null); } } return(ParkingModelsList); } catch (Exception exception) { throw exception; } }
public IActionResult GetVehicalByNumber([FromRoute] string VehicalNumber) { try { int Flag = 0, i, Count = 0; //Throws Custom Exception If VehicalNumber Is Not in Valid Format. if (!Regex.IsMatch(VehicalNumber, @"^[A-Z]{2}\s[0-9]{2}\s[A-Z]{1,2}\s[0-9]{4}$")) { throw new Exception(ParkingLotExceptions.ExceptionType.INVALID_VEHICAL_NUMBER.ToString() + " Please Enter Vehical In 'MH 01 AZ 2005' This Format."); } RParkingModel employee = null; string cacheKey = VehicalNumber; string serializedEmployee; var Vehicledetail = distributedCache.Get(cacheKey); //If Redis has employee detail then it will fetch from Redis else it will fetch from Database. if (Vehicledetail != null) { serializedEmployee = Encoding.UTF8.GetString(Vehicledetail); employee = JsonConvert.DeserializeObject <RParkingModel>(serializedEmployee); } else { employee = parkingLotBL.GetVehicalByNumber(VehicalNumber); serializedEmployee = JsonConvert.SerializeObject(employee); Vehicledetail = Encoding.UTF8.GetBytes(serializedEmployee); var options = new DistributedCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromMinutes(5)) .SetAbsoluteExpiration(DateTime.Now.AddHours(6)); distributedCache.Set(cacheKey, Vehicledetail, options); } if (!employee.Equals(null)) { bool Success = true; var Message = "Vehical Available"; return(Ok(new { Success, Message, Data = employee })); } else { bool Success = false; var Message = "Vehical Not Available"; return(NotFound(new { Success, Message })); } } catch (Exception exception) { return(BadRequest(new { Success = false, Message = exception.Message })); } }
private RParkingModel DataCopy(RParkingModel usermodel, ParkingModel user) { usermodel.VehicalOwnerName = user.VehicalOwnerName; usermodel.VehicalOwnerEmail = user.VehicalOwnerEmail; usermodel.VehicalNumber = user.VehicalNumber; usermodel.Brand = user.Brand; usermodel.Color = user.Color; usermodel.DriverName = user.DriverName; usermodel.IsHandicap = user.IsHandicap; return(usermodel); }
/// <summary> /// Function To Find Vehical By Number. /// </summary> /// <param name="vehicalNumber"></param> /// <returns></returns> public RParkingModel GetVehicalByNumber(string VehicalNumber) { try { int status = 0; RParkingModel pmode = new RParkingModel(); SqlCommand sqlCommand = new SqlCommand("spGetVehicalByNumber", this.sqlConnectionVariable); sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.Parameters.AddWithValue("@VehicalNumber", VehicalNumber); this.sqlConnectionVariable.Open(); SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while (sqlDataReader.Read()) { status = sqlDataReader.GetInt32(0); if (status > 0) { pmode.ReceiptNumber = Convert.ToInt32(sqlDataReader["ReceiptNumber"]); pmode.VehicalOwnerEmail = sqlDataReader["VehicalOwnerEmail"].ToString(); pmode.VehicalOwnerName = sqlDataReader["VehicalOwnerName"].ToString(); pmode.Brand = sqlDataReader["Brand"].ToString(); pmode.Color = sqlDataReader["Color"].ToString(); pmode.DriverName = sqlDataReader["DriverName"].ToString(); pmode.ParkingDate = sqlDataReader["ParkingDate"].ToString(); pmode.ParkingSlot = sqlDataReader["ParkingSlot"].ToString(); pmode.Status = sqlDataReader["Status"].ToString(); pmode.VehicalNumber = sqlDataReader["VehicalNumber"].ToString(); if (Convert.ToInt32(sqlDataReader["IsHandicap"]) == 1) { pmode.IsHandicap = "Yes"; } else { pmode.IsHandicap = "No"; } return(pmode); } else { return(null); } } return(null); } catch (Exception exception) { throw exception; } }
public RParkingModel Park(ParkingModel parkingAttribute) { try { int HandicaptStatus; if (parkingAttribute.IsHandicap == "y" || parkingAttribute.IsHandicap == "Y" || parkingAttribute.IsHandicap == "yes" || parkingAttribute.IsHandicap == "Yes") { HandicaptStatus = 1; } else { HandicaptStatus = 0; } //Assiging ParkingSlot string ParkingSlot = AssignSlot(parkingAttribute); if (ParkingSlot == "A" || ParkingSlot == "B" || ParkingSlot == "C" || ParkingSlot == "D") { int status = 0; RParkingModel usermodel = new RParkingModel(); SqlCommand sqlCommand = new SqlCommand("spParkVehical", this.sqlConnectionVariable); sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.Parameters.AddWithValue("@VehicalOwnerName", parkingAttribute.VehicalOwnerName); sqlCommand.Parameters.AddWithValue("@VehicalOwnerEmail", parkingAttribute.VehicalOwnerEmail); sqlCommand.Parameters.AddWithValue("@VehicalNumber", parkingAttribute.VehicalNumber); sqlCommand.Parameters.AddWithValue("@Brand", parkingAttribute.Brand); sqlCommand.Parameters.AddWithValue("@Color", parkingAttribute.Color); sqlCommand.Parameters.AddWithValue("@DriverName", parkingAttribute.DriverName); sqlCommand.Parameters.AddWithValue("@IsHandicap", HandicaptStatus); sqlCommand.Parameters.AddWithValue("@ParkingSlot", ParkingSlot); sqlCommand.Parameters.AddWithValue("@Status", "Parked"); this.sqlConnectionVariable.Open(); SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while (sqlDataReader.Read()) { status = sqlDataReader.GetInt32(0); if (status > 0) { usermodel.ReceiptNumber = Convert.ToInt32(sqlDataReader["ReceiptNumber"]); usermodel.Status = sqlDataReader["Status"].ToString(); usermodel.ParkingDate = sqlDataReader["ParkingDate"].ToString(); usermodel.ParkingSlot = ParkingSlot; return(DataCopy(usermodel, parkingAttribute)); } else { return(null); } } } else { throw new ParkingLotExceptions(ParkingLotExceptions.ExceptionType.SLOT_NOT_AVAILABLE, "Slot Not Available"); } return(null); } catch (Exception exception) { throw exception; } }