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 }));
            }
        }
Пример #2
0
        /// <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 }));
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        /// <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;
            }
        }
Пример #6
0
        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;
            }
        }