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); } } }
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); } }