示例#1
0
        /// <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();
            }
        }
示例#2
0
        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);
        }
示例#3
0
 public bool OdaberiTermin([FromBody] Model.Requests.BiciklOdaberiTerminRequest request)
 {
     return(_service.OdaberiTermin(request));
 }