/// <summary> /// Invoked when the Buy Now button is clicked. /// </summary> /// <param name="obj">The Object</param> private async void BuyNowClicked(object obj) { if (SelectedRange == null || SelectedRange.StartDate == null || SelectedRange.EndDate == null) { await Application.Current.MainPage.DisplayAlert("Greška", "Odabir termina je obavezan.", "OK"); return; } this.cartItemCount = this.cartItemCount ?? 0; this.CartItemCount += 1; var request = new Model.Requests.BiciklOdaberiTerminRequest { Id = ProductDetail.Id, Kolicina = 1, DatumPreuzimanja = SelectedRange.StartDate, DatumVracanja = SelectedRange.EndDate }; var stavka = await _serviceBicikl.Insert <bool>(request, "OdaberiTermin"); if (stavka == true) { await Navigation.PushAsync(new CartPage()); } else { await UpdateCartItemCount(); } }
public bool OdaberiTermin(Model.Requests.BiciklOdaberiTerminRequest request) { int StanjeInt = (int)Stanje.Korišteno; Data.EntityModels.Stanje StanjeEnum = (Data.EntityModels.Stanje)StanjeInt; Bicikl Bicikl = _context.Bicikl .Include(x => x.BiciklStanje) .Where(x => x.BiciklId == request.Id) .Where(x => x.Stanje == StanjeEnum) .FirstOrDefault(); if (Bicikl == null) { throw new UserException("Biciklo nije pronađeno."); } if (request.DatumPreuzimanja.Date < DateTime.Now.Date || request.DatumPreuzimanja.Date > request.DatumVracanja.Date) { throw new UserException("Forma nije ispravno popunjena."); } var Klijent = korisnikService.GetCurrentUser().Klijent; int ukupno_u_skladistu = Bicikl.BiciklStanje.Where(x => x.Aktivan == true).Sum(x => x.Kolicina); int ukupno_u_kosarici = _context.TerminStavka.Where(x => x.KlijentId == Klijent.Id && x.BiciklId == request.Id) .Where(x => ( (x.DatumPreuzimanja.Date >= request.DatumPreuzimanja.Date && x.DatumPreuzimanja.Date <= request.DatumVracanja.Date) || (x.DatumVracanja.Date >= request.DatumPreuzimanja.Date && x.DatumVracanja.Date <= request.DatumVracanja.Date) ) || ( (request.DatumPreuzimanja.Date >= x.DatumPreuzimanja.Date && request.DatumPreuzimanja.Date <= x.DatumVracanja.Date) || (request.DatumVracanja.Date >= x.DatumPreuzimanja.Date && request.DatumVracanja.Date <= x.DatumVracanja.Date) )) .Sum(x => x.Kolicina); var broj_termina_kolizija = _context.RezervacijaIznajmljenaBicikla .Where(x => x.BiciklStanje.BiciklId == request.Id) .Where(x => ( (x.DatumPreuzimanja.Date >= request.DatumPreuzimanja.Date && x.DatumPreuzimanja.Date <= request.DatumVracanja.Date) || (x.DatumVracanja.Date >= request.DatumPreuzimanja.Date && x.DatumVracanja.Date <= request.DatumVracanja.Date) ) || ( (request.DatumPreuzimanja.Date >= x.DatumPreuzimanja.Date && request.DatumPreuzimanja.Date <= x.DatumVracanja.Date) || (request.DatumVracanja.Date >= x.DatumPreuzimanja.Date && request.DatumVracanja.Date <= x.DatumVracanja.Date) ) ) .ToList(); int ukupno_dostupno = ukupno_u_skladistu - ukupno_u_kosarici - broj_termina_kolizija.Count(); if (request.Kolicina > ukupno_dostupno) { if (ukupno_dostupno == 0) { throw new UserException("Nema dostupnih termina za odabrani dan ili vremenski opseg."); } throw new UserException("Biciklo nije dostupno u traženoj količini za odabrani vremenski opseg."); } var PostojecaStvaka = _context.TerminStavka.Where(x => x.KlijentId == Klijent.Id && x.BiciklId == request.Id && x.DatumPreuzimanja == request.DatumPreuzimanja && x.DatumVracanja == request.DatumVracanja).FirstOrDefault(); if (PostojecaStvaka != null) { PostojecaStvaka.Kolicina += request.Kolicina; } else { _context.TerminStavka.Add(new TerminStavka { KlijentId = Klijent.Id, BiciklId = request.Id, Kolicina = request.Kolicina, DatumPreuzimanja = request.DatumPreuzimanja.Date, DatumVracanja = request.DatumVracanja.Date.AddHours(23).AddMinutes(59).AddSeconds(59) }); } _context.SaveChanges(); return(true); }
public bool OdaberiTermin([FromBody] Model.Requests.BiciklOdaberiTerminRequest request) { return(_service.OdaberiTermin(request)); }