示例#1
0
        public async Task <IActionResult> PutLikes([FromRoute] int id, [FromBody] ParkRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != request.Id)
            {
                return(BadRequest());
            }

            var oldPark = await _dataContext.Parks.Include(p => p.Manager)
                          .Include(p => p.Zones)
                          .Include(p => p.Contents)
                          .Include(p => p.Locations)
                          .FirstOrDefaultAsync(c => c.Id == request.Id);

            if (oldPark == null)
            {
                return(BadRequest("El Parque No Existe."));
            }



            oldPark.Like    = request.like;
            oldPark.DisLike = request.dislike;


            _dataContext.Parks.Update(oldPark);
            await _dataContext.SaveChangesAsync();

            return(Ok(true));
        }
示例#2
0
 public async Task <IActionResult> ParkAsync(ParkRequest parkRequest)
 {
     try
     {
         return(Ok(await _ooParkingLotRepository.GetNearestAvailableParkingAsync(parkRequest)));
     }
     catch (Exception ex)
     {
         _logger.LogError(JsonConvert.SerializeObject(ex));
         return(BadRequest());
     }
 }
示例#3
0
 public ParkResponse ParkVehicle(int securityID, ParkRequest parkDetails)
 {
     if (parkDetails != null)
     {
         var responseData = _parkingRepository.ParkVehicle(securityID, parkDetails);
         return(responseData);
     }
     else
     {
         return(null);
     }
 }
        public IActionResult GetCost([FromBody] ParkRequest parkRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            if ((parkRequest.ExitDate - parkRequest.EntryDate).Value.TotalMinutes < 0)
            {
                return(BadRequest("Entry date time cannot be less than exit date time!"));
            }
            var costDetails = _costService.CalculateCost(parkRequest);

            return(Ok(costDetails));
        }
 public ParkResponse ParkVehicle(int securityID, ParkRequest parkDetails)
 {
     try
     {
         var securityExists = _appDBContext.Users.
                              Any(security => security.ID == securityID);
         if (securityExists)
         {
             ParkingDetails parkData = new ParkingDetails
             {
                 OwnerName     = parkDetails.OwnerName,
                 VehicleNumber = parkDetails.VehicleNumber,
                 VehicleBrand  = parkDetails.VehicleBrand,
                 Color         = parkDetails.Color,
                 IsParked      = true,
                 AttendantName = parkDetails.AttendantName,
                 Disability    = parkDetails.Disability,
                 ParkingDate   = DateTime.Now
             };
             if (parkDetails.Disability)
             {
                 parkingSlot = GetParkingSlotForHandicap();
             }
             else
             {
                 parkingSlot = GetParkingSlot();
             }
             if (parkingSlot == null)
             {
                 return(null);
             }
             parkData.ParkingSlot = parkingSlot;
             _appDBContext.ParkingDetails.Add(parkData);
             _appDBContext.SaveChanges();
             ParkResponse responseData = ParkedVehicleResponse(parkData);
             return(responseData);
         }
         return(null);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
示例#6
0
        public IActionResult Park([FromBody] ParkRequest request)
        {
            Parking parking = new Parking();

            parking.car.car_number = request.car_number;

            ServiceResponse response = unitOfWork.ParkingRepository.ParkCar(parking);

            _logger.LogInformation("Request received for Car Parking");

            if (response.isSuccessful)
            {
                return(Ok(response));
            }
            else
            {
                return(BadRequest(response));
            }
        }
示例#7
0
 public async Task <object> GetNearestAvailableParkingAsync(ParkRequest parkRequest)
 {
     return(await(from pa in _ooParkingLotDbContext.ParkingAvailablities
                  where pa.CarCategoryId == parkRequest.CarCategoryId
                  join ps in _ooParkingLotDbContext.ParkingSpaces on pa.ParkingCategoryId equals ps.ParkingCategoryId
                  where ps.IsOccupied == false
                  join pd in _ooParkingLotDbContext.ParkingDistances on ps.Id equals pd.ParkingSpaceId
                  where pd.EntryPointId == parkRequest.EntryPointId
                  join pc in _ooParkingLotDbContext.ParkingCategories on ps.ParkingCategoryId equals pc.Id
                  orderby pa.Priority, pd.DistanceInMeters
                  select new
     {
         pd.ParkingSpaceId,
         pd.DistanceInMeters,
         ParkingSpaceCode = ps.Code,
         ParkingCategoryCode = pc.Code,
         ParkingCategoryDescription = pc.Description,
         pc.HourlyRate
     }).FirstOrDefaultAsync());
 }
示例#8
0
 public async Task <object> RequestAsync(ParkRequest parkRequest)
 {
     try
     {
         var httpClientHelperRequest = new HttpClientHelperRequest
         {
             Url        = "https://localhost:44358/api/Parking/Request",
             HttpMethod = "POST",
             Content    = JsonConvert.SerializeObject(parkRequest)
         };
         httpClientHelperRequest.Headers.Add("accept", "*/*");
         httpClientHelperRequest.Headers.Add("Content-Type", "application/json");
         return(await _httpClientHelper.SendAsync(httpClientHelperRequest));
     }
     catch (Exception ex)
     {
         _logger.LogError(ex.Message);
         return(BadRequest());
     }
 }
示例#9
0
        public async Task <IActionResult> Park2Async(ParkRequest parkRequest)
        {
            try
            {
                List <ParkingAvailablity> parkingAvailablities = await _ooParkingLotRepository.GetParkingAvailablitiesByCarCategoryIdAsync(parkRequest.CarCategoryId);

                Guid[] parkingCategoryIds = parkingAvailablities.Select(s => s.ParkingCategoryId).Distinct().ToArray();

                List <ParkingSpace> parkingSpaces = await _ooParkingLotRepository.GetAllParkingSpacesByParkingCategoryIdsAsync(parkingCategoryIds);

                Guid[] parkingSpaceIds = parkingSpaces.Select(s => s.Id).Distinct().ToArray();

                List <ParkingDistance> parkingDistance = await _ooParkingLotRepository.GetDistanceByEntryIdAndSpaceIdsAsync(parkRequest.EntryPointId, parkingSpaceIds);

                List <ParkingCategory> parkingCategories = await _ooParkingLotRepository.GetAllParkingCategoriesAsync();

                object res = (from pa in parkingAvailablities
                              join ps in parkingSpaces on pa.ParkingCategoryId equals ps.ParkingCategoryId
                              join pc in parkingCategories on ps.ParkingCategoryId equals pc.Id
                              join pd in parkingDistance on ps.Id equals pd.ParkingSpaceId
                              orderby pa.Priority, pd.DistanceInMeters
                              select new
                {
                    pd.ParkingSpaceId,
                    pd.DistanceInMeters,
                    ParkingSpaceCode = ps.Code,
                    ParkingCategoryCode = pc.Code,
                    ParkingCategoryDescription = pc.Description,
                    pc.HourlyRate
                }).FirstOrDefault();


                return(Ok(res));
            }
            catch (Exception ex)
            {
                _logger.LogError(JsonConvert.SerializeObject(ex));
                return(BadRequest());
            }
        }
        /// <summary>
        ///     Calculate the parking cost
        /// </summary>
        /// <param name="parkRequest">Request represent the parking lot (type) and parking duration</param>
        /// <returns></returns>
        public CostDetails CalculateCost(ParkRequest parkRequest)
        {
            var costCalculator = CalculatorFactory.Get <ICostCalc>(parkRequest.ParkType.ToString());

            if (costCalculator == null)
            {
                return(null);
            }

            var totalMinutes = (parkRequest.ExitDate - parkRequest.EntryDate).Value.TotalMinutes;
            var totalCost    = costCalculator.CalculateCost(totalMinutes);

            var duration = TimeSpan.FromMinutes(totalMinutes);

            return(new CostDetails
            {
                Cost = decimal.Round(totalCost, 2),
                Days = duration.Days,
                Hours = duration.Hours,
                Minutes = duration.Minutes
            });
        }