Example #1
0
        private async Task <bool> ValidateRent()
        {
            if (dtpEnd.Value.Date <= dtpFrom.Value.Date)
            {
                err.SetError(dtpEnd, "End date can not be in past or same as start day.");
                return(false);
            }
            else if (dtpFrom.Value.Date < DateTime.Now.Date)
            {
                err.SetError(dtpFrom, "Start day can not be in past.");
                return(false);
            }
            else
            {
                lblInfo.Visible = false;
                err.Clear();
                var request = new Model.Requests.Rent.RentSearchRequest()
                {
                    VehicleId = id,
                    EndDate   = dtpEnd.Value,
                    StartDate = dtpFrom.Value
                };
                var rent = await _serviceRentCheck.CheckAvailibility <List <Model.Rent> >(request);

                if (rent == null)
                {
                    lblNextTime.Visible          = false;
                    lblAvailableStatus.Visible   = true;
                    lblAvailableStatus.ForeColor = Color.Green;
                    lblAvailableStatus.Text      = "Available";
                    var days = (dtpEnd.Value.Date - dtpFrom.Value.Date).Days;
                    lblTotalPrice.Text    = "Total price is " + Math.Round((price * days), 2).ToString() + " BAM";
                    lblTotalPrice.Visible = true;
                    return(true);
                }
                else
                {
                    DateTime next = rent[0].EndDate;
                    for (int i = 0; i < rent.Count - 1; ++i)
                    {
                        if (next < rent[i + 1].EndDate)
                        {
                            next = rent[i + 1].EndDate;
                        }
                    }
                    lblNextTime.Visible          = true;
                    lblNextTime.Text             = "Available after: " + next.Date.ToString().Substring(0, 9);
                    lblAvailableStatus.Visible   = true;
                    lblAvailableStatus.ForeColor = Color.Red;
                    lblAvailableStatus.Text      = "Unavailable";
                    return(false);
                }
            }
        }
Example #2
0
        private async Task RentVehicle()
        {
            if (EndDate.Date < StartDate.Date)
            {
                await Application.Current.MainPage.DisplayAlert("Status", "End date can not be lower then start date.", "Try again");

                return;
            }
            if (EndDate.Date == StartDate.Date)
            {
                await Application.Current.MainPage.DisplayAlert("Status", "End date can not be same as start date.", "Try again");

                return;
            }
            var request = new Model.Requests.Rent.RentSearchRequest()
            {
                VehicleId = Vehicle.Id,
                EndDate   = EndDate.Date,
                StartDate = StartDate.Date
            };
            var rent = await _serviceCheck.CheckAvailibility <List <Rent> >(request);

            if (rent == null || rent.Count == 0)
            {
                RentStatus                 = "Available. Proceed to checkout.";
                RentAvailable              = true;
                RentButton                 = false;
                CheckoutService._vehicle   = Vehicle;
                CheckoutService._stardDate = StartDate;
                CheckoutService._endDate   = EndDate;
            }
            else
            {
                DateTime next = rent[0].EndDate;
                for (int i = 0; i < rent.Count - 1; ++i)
                {
                    if (next < rent[i + 1].EndDate)
                    {
                        next = rent[i + 1].EndDate;
                    }
                }
                RentStatus = "Available after " + next.Date.ToString().Substring(0, 9);
            }
        }