예제 #1
0
        public async Task Potvrdi()
        {
            RezervacijaInsertRequest request = new RezervacijaInsertRequest
            {
                BrojDjece           = BrojDjece,
                BrojOdraslih        = BrojOdraslih,
                DatumRezervacije    = DatumRezervacije,
                KlijentId           = KlijentId,
                RezervacijaDo       = RezervacijaDo,
                RezervacijaOd       = RezervacijaOd,
                StatusRezervacijeId = 2,
                Sobe = new List <SobaModel>()
            };

            foreach (SobaModel s in Sobe)
            {
                request.Sobe.Add(s);
            }

            await _rezervacijaService.Insert <RezervacijaInsertRequest>(request);

            KorisnikModel k = returnKorisnik();

            Application.Current.MainPage = new MainPage(k);
        }
예제 #2
0
        public RezervacijaInsertRequest Insert(RezervacijaInsertRequest model)
        {
            Klijent     k = _context.Klijent.Where(x => x.KorisnikId == model.KlijentId).SingleOrDefault();
            Rezervacija r = new Rezervacija
            {
                BrojDjece           = model.BrojDjece,
                BrojOdraslih        = model.BrojOdraslih,
                KlijentId           = k.KlijentId,
                RezervacijaDo       = model.RezervacijaDo,
                RezervacijaOd       = model.RezervacijaOd,
                StatusRezervacijeId = 1,
                DatumRezervacije    = model.DatumRezervacije,
            };

            _context.Rezervacija.Add(r);
            _context.SaveChanges();
            foreach (SobaModel s in model.Sobe)
            {
                RezervacijaSoba rs = new RezervacijaSoba
                {
                    SobaId        = s.SobaId,
                    RezervacijaId = r.RezervacijaId
                };
                _context.RezervacijaSoba.Add(rs);
            }
            _context.SaveChanges();
            return(model);
        }
예제 #3
0
        public Model.Rezervacija Update(int id, RezervacijaInsertRequest update)
        {
            var entity = _context.Rezervacija.Find(id);

            _mapper.Map(update, entity);
            _context.SaveChanges();
            return(_mapper.Map <Model.Rezervacija>(entity));
        }
예제 #4
0
        public Model.Rezervacija Insert(RezervacijaInsertRequest insert)
        {
            var entity = _mapper.Map <Database.Rezervacija>(insert);

            _context.Rezervacija.Add(entity);
            _context.SaveChanges();
            return(_mapper.Map <Model.Rezervacija>(entity));
        }
예제 #5
0
        public async Task <RezervacijaResponse> Insert(int korisnikID, RezervacijaInsertRequest request)
        {
            var entity = _mapper.Map <Rezervacija>(request);

            entity.KorisnikID = korisnikID;

            _context.Rezervacije.Add(entity);
            await _context.SaveChangesAsync();

            return(_mapper.Map <RezervacijaResponse>(entity));
        }
예제 #6
0
        private async void AddReservaction_Clicked(object sender, EventArgs e)
        {
            RezervacijaInsertRequest request = new RezervacijaInsertRequest()
            {
                DatumRezervacije = ResrvationDatePicker.Date,
                Vrijeme          = TimePickerReservation.Time.ToString(),
                KlijentId        = 1,
                Otkazano         = false,
                Prihvaceno       = false,
                UslugeId         = model.SelectedUsluga.Id,
                BrojOsoba        = Convert.ToInt32(BrojGostiju.Text)
            };
            await RezervacijaService.Insert <Rezervacija>(request);

            await Application.Current.MainPage.DisplayAlert("Rezervacija", "Uspjesna operacija!", "OK");
        }
예제 #7
0
        public async Task <IActionResult> RezervisiAsync(Rezervacija rezervacija)
        {
            if (ModelState.IsValid)
            {
                RezervacijaInsertRequest insertRequest = new RezervacijaInsertRequest
                {
                    Telefon = rezervacija.Telefon,
                    DatumVrijemeRezervacije = (DateTime)rezervacija.DatumVrijemeRezervacije,
                    BrojMjesta = (int)rezervacija.BrojMjesta
                };

                await _restoranApi.CreateRezervacijaAsync(insertRequest);

                return(RedirectToAction("UspjesnaRezervacija"));
            }
            return(View(rezervacija));
        }
예제 #8
0
        public async Task ButtonInit(int id)
        {
            Putnici p = await GetPutnik();


            KartaInsertRequest kInsert = new KartaInsertRequest()
            {
                DatumIzdavanja        = DateTime.Now,
                RezervacijaSjedistaId = 1,
                BrojKarte             = getBrojKarte()
            };

            if (SelectedVrstaKarte == null)
            {
                kInsert.VrstaKarteId = 1;
            }
            else
            {
                kInsert.VrstaKarteId = SelectedVrstaKarte.VrstaKarteId;
            }

            await _Karta.Insert <Karta>(kInsert);

            KartaSearchRequest searchKarta = new KartaSearchRequest()
            {
                BrojKarte = kInsert.BrojKarte
            };

            Karta kGet = await GetKarta(searchKarta);

            RezervacijaInsertRequest rezInsert = new RezervacijaInsertRequest()
            {
                DatumKreiranja = DateTime.Now,
                DatumIsteka    = DateTime.Now.AddDays(7),
                Otkazana       = false,
                Qrcode         = getBrojKarte(),
                PutnikId       = p.PutnikId,
                KartaId        = kGet.KartaId,
                RedVoznjeId    = id
            };

            await _Rezervacija.Insert <RezervacijaKarte>(rezInsert);

            await Application.Current.MainPage.DisplayAlert(" ", "Uspješno ste rezervisali vašu kartu!", "OK");
        }
예제 #9
0
        public async Task <ActionResult <RezervacijaResponse> > Insert(RezervacijaInsertRequest request)
        {
            var ID = HttpContext.GetUserID();

            if (ID == null)
            {
                return(BadRequest());
            }


            var response = await _service.Insert((int)ID, request);

            if (response == null)
            {
                return(BadRequest());
            }

            PathString path = HttpContext.Request.Path;

            return(Created(path, response));
        }
예제 #10
0
 public PotvrdiRezervaciju(RezervacijaInsertRequest model, SmjestajModel returnmodelSmjestaj, KorisnikModel returnmodelKorisnik)
 {
     InitializeComponent();
     _returnmodel = returnmodelSmjestaj;
     viewmodel    = new PotvrdiRezervacijuVM
     {
         KlijentId           = model.KlijentId,
         DatumRezervacije    = model.DatumRezervacije,
         RezervacijaDo       = model.RezervacijaDo,
         RezervacijaOd       = model.RezervacijaOd,
         StatusRezervacijeId = 1,
         BrojDjece           = model.BrojDjece,
         BrojOdraslih        = model.BrojOdraslih,
         NazivSmjestaja      = model.NazivSmjestaja,
         AdresaSmjestaja     = model.AdresaSmjestaja
     };
     viewmodel.Sobe = new ObservableCollection <SobaModel>();
     foreach (SobaModel s in model.Sobe)
     {
         viewmodel.Sobe.Add(s);
     }
     viewmodel.BrojSoba = viewmodel.Sobe.Count;
     BindingContext     = viewmodel;
 }
예제 #11
0
 public virtual RezervacijaInsertRequest Insert(RezervacijaInsertRequest Model)
 {
     return(_service.Insert(Model));
 }
예제 #12
0
        public Rezervacija Insert(RezervacijaInsertRequest request)
        {
            var entity = _mapper.Map <Data.EntityModels.Rezervacija>(request);

            entity.KlijentId = _korisnikService.GetCurrentUser().Klijent.Id;


            if (request.ObradiIznajmljivanje)
            {
                var Stavke = GetTerminStavke(entity.KlijentId);

                foreach (var stavka in Stavke)
                {
                    double cijena = 0;
                    if (stavka.Bicikl != null)
                    {
                        cijena = stavka.Bicikl.CijenaPoDanu.Value * stavka.BrojDana;
                    }

                    entity.UkupniIznos += cijena * stavka.Kolicina;
                }

                double stopa_poreza = 17.0;
                entity.Osnovica     = entity.UkupniIznos / (1 + stopa_poreza / 100);
                entity.UkupnoPoreza = entity.UkupniIznos - entity.Osnovica;

                entity.RezervacijaIznajmljenaBicikla = new List <Data.EntityModels.RezervacijaIznajmljenaBicikla>();

                // Bicikla
                foreach (var naruceno_biciklo in Stavke.ToList())
                {
                    var bicikl_stanja = _context.BiciklStanje
                                        .Where(x => x.BiciklId == naruceno_biciklo.BiciklId)
                                        .Where(x => x.Aktivan == true)
                                        .Where(x => x.Kolicina > 0)
                                        .ToList();

                    if (bicikl_stanja.Sum(x => x.Kolicina) < naruceno_biciklo.Kolicina)
                    {
                        throw new UserException("Naručeno biciklo " + naruceno_biciklo.Bicikl.PuniNaziv + " nije dostupno u traženoj kolicini!");
                    }

                    var trazena_kolicina = naruceno_biciklo.Kolicina;

                    foreach (var bicikl_na_stanju in bicikl_stanja)
                    {
                        var dostupna_kolicina = Math.Min(trazena_kolicina, bicikl_na_stanju.Kolicina);

                        bicikl_na_stanju.Kolicina -= dostupna_kolicina;
                        trazena_kolicina          -= dostupna_kolicina;

                        for (int i = 0; i < dostupna_kolicina; i++)
                        {
                            entity.RezervacijaIznajmljenaBicikla.Add(new Data.EntityModels.RezervacijaIznajmljenaBicikla
                            {
                                BiciklStanjeId   = bicikl_na_stanju.BiciklStanjeId,
                                DatumPreuzimanja = naruceno_biciklo.DatumPreuzimanja,
                                DatumVracanja    = naruceno_biciklo.DatumVracanja
                            });
                        }

                        if (trazena_kolicina == 0)
                        {
                            break;
                        }
                    }
                }
            }
            else if (request.RezervacijaServis != null)
            {
                var DatumServisiranja = request.RezervacijaServis[0].DatumServisiranja;

                foreach (var stavka in request.RezervacijaServis)
                {
                    var servis = _context.Servis.Where(x => x.ServisId == stavka.ServisId)
                                 .Where(x => x.IsDeleted == false).FirstOrDefault();
                    if (servis is null)
                    {
                        throw new UserException("Servis nije pronađen: " + stavka.ServisId);
                    }

                    stavka.DatumServisiranja = DatumServisiranja;
                    DatumServisiranja        = DatumServisiranja.AddHours(servis.Trajanje);

                    entity.UkupniIznos += servis.Cijena;
                }

                double stopa_poreza = 17.0;
                entity.Osnovica     = entity.UkupniIznos / (1 + stopa_poreza / 100);
                entity.UkupnoPoreza = entity.UkupniIznos - entity.Osnovica;

                entity.RezervacijaServis = new List <Data.EntityModels.RezervacijaServis>();

                foreach (var rezervacija_servis in request.RezervacijaServis)
                {
                    var item = _mapper.Map <Data.EntityModels.RezervacijaServis>(rezervacija_servis);
                    entity.RezervacijaServis.Add(item);
                }
            }
            else

            {
                var Stavke = GetKorpaStavke(entity.KlijentId);

                foreach (var stavka in Stavke)
                {
                    double cijena = 0;
                    if (stavka.Bicikl != null)
                    {
                        cijena = stavka.Bicikl.Cijena.Value;
                    }
                    else if (stavka.Oprema != null)
                    {
                        cijena = stavka.Oprema.Cijena;
                    }
                    else if (stavka.Dio != null)
                    {
                        cijena = stavka.Dio.Cijena;
                    }

                    entity.UkupnoProizvodi += cijena * stavka.Kolicina;
                }

                double stopa_poreza = 17.0;
                entity.Postarina = 0.0;
                if (entity.NacinOtpremeId != 0)
                {
                    entity.Postarina = _context.NacinOtpreme
                                       .Where(x => x.IsDeleted == false).Where(x => x.NacinOtpremeId == entity.NacinOtpremeId).Single()?.Cijena ?? 0.0;
                }
                entity.UkupniIznos  = entity.UkupnoProizvodi;
                entity.Osnovica     = entity.UkupniIznos / (1 + stopa_poreza / 100);
                entity.UkupnoPoreza = entity.UkupniIznos - entity.Osnovica;
                entity.UkupniIznos += entity.Postarina;

                entity.RezervacijaProdajaBicikla = new List <Data.EntityModels.RezervacijaProdajaBicikla>();
                entity.RezervacijaProdajaDio     = new List <Data.EntityModels.RezervacijaProdajaDio>();
                entity.RezervacijaProdajaOprema  = new List <Data.EntityModels.RezervacijaProdajaOprema>();

                // Bicikla
                foreach (var naruceno_biciklo in Stavke.Where(x => x.BiciklId != null).ToList())
                {
                    var bicikl_stanja = _context.BiciklStanje
                                        .Where(x => x.BiciklId == naruceno_biciklo.BiciklId)
                                        .Where(x => x.Aktivan == true)
                                        .Where(x => x.Kolicina > 0)
                                        .ToList();

                    if (bicikl_stanja.Sum(x => x.Kolicina) < naruceno_biciklo.Kolicina)
                    {
                        throw new UserException("Naručeno biciklo " + naruceno_biciklo.Bicikl.PuniNaziv + " nije dostupno u traženoj kolicini!");
                    }

                    var trazena_kolicina = naruceno_biciklo.Kolicina;

                    foreach (var bicikl_na_stanju in bicikl_stanja)
                    {
                        var dostupna_kolicina = Math.Min(trazena_kolicina, bicikl_na_stanju.Kolicina);

                        bicikl_na_stanju.Kolicina -= dostupna_kolicina;
                        trazena_kolicina          -= dostupna_kolicina;

                        for (int i = 0; i < dostupna_kolicina; i++)
                        {
                            entity.RezervacijaProdajaBicikla.Add(new Data.EntityModels.RezervacijaProdajaBicikla
                            {
                                BiciklStanjeId = bicikl_na_stanju.BiciklStanjeId
                            });
                        }

                        if (trazena_kolicina == 0)
                        {
                            break;
                        }
                    }
                }
                // Dijelovi
                foreach (var naruceno_dio in Stavke.Where(x => x.DioId != null).ToList())
                {
                    var dio_stanja = _context.DioStanje
                                     .Where(x => x.DioId == naruceno_dio.DioId)
                                     .Where(x => x.Aktivan == true)
                                     .Where(x => x.KupacId == null)
                                     .Take(naruceno_dio.Kolicina)
                                     .ToList();

                    if (dio_stanja.Count < naruceno_dio.Kolicina)
                    {
                        throw new UserException("Naručeno dio " + naruceno_dio.Dio.Naziv + " nije dostupno u traženoj kolicini!");
                    }

                    foreach (var dio_na_stanju in dio_stanja)
                    {
                        entity.RezervacijaProdajaDio.Add(new Data.EntityModels.RezervacijaProdajaDio
                        {
                            DioStanjeId = dio_na_stanju.DioStanjeId
                        });
                        dio_na_stanju.Aktivan = false;
                        dio_na_stanju.KupacId = entity.KlijentId;
                    }
                }
                // Oprema
                foreach (var narucena_oprema in Stavke.Where(x => x.OpremaId != null).ToList())
                {
                    var oprema_stanja = _context.OpremaStanje
                                        .Where(x => x.OpremaId == narucena_oprema.OpremaId)
                                        .Where(x => x.Aktivan == true)
                                        .Where(x => x.KupacId == null)
                                        .Take(narucena_oprema.Kolicina)
                                        .ToList();

                    if (oprema_stanja.Count < narucena_oprema.Kolicina)
                    {
                        throw new UserException("Naručena oprema " + narucena_oprema.Oprema.Naziv + " nije dostupna u traženoj kolicini!");
                    }

                    foreach (var oprema_na_stanju in oprema_stanja)
                    {
                        entity.RezervacijaProdajaOprema.Add(new Data.EntityModels.RezervacijaProdajaOprema
                        {
                            OpremaStanjeId = oprema_na_stanju.OpremaStanjeId
                        });
                        oprema_na_stanju.Aktivan = false;
                        oprema_na_stanju.KupacId = entity.KlijentId;
                    }
                }
            }

            entity.DatumRezervacije  = DateTime.Now;
            entity.StanjeRezervacije = Data.EntityModels.StanjeRezervacije.ekanje_uplate;

            if (entity.NacinOtpremeId == 0)
            {
                entity.NacinOtpremeId = _context.NacinOtpreme
                                        .Where(x => x.IsDeleted == false).First(x => x.Cijena == 0).NacinOtpremeId;
            }

            entity.NacinOtpreme = _context.NacinOtpreme.First(x => x.NacinOtpremeId == entity.NacinOtpremeId);

            _context.Rezervacija.Add(entity);
            _context.SaveChanges();

            if (request.ObradiIznajmljivanje)
            {
                var termin_stavke = _context.TerminStavka.Where(x => x.KlijentId == entity.KlijentId).ToList();
                foreach (var item in termin_stavke)
                {
                    _context.TerminStavka.Remove(item);
                }
            }
            else if (request.RezervacijaServis != null)
            {
                // do nothing
            }
            else
            {
                var korpa_stavke = _context.KorpaStavka.Where(x => x.KlijentId == entity.KlijentId).ToList();
                foreach (var item in korpa_stavke)
                {
                    _context.KorpaStavka.Remove(item);
                }

                if (entity.NacinPlacanja != "online")
                {
                    var zaposlenici = _context.Zaposlenik.Where(x => x.Korisnik.Aktivan == true).ToList();
                    foreach (var zaposlenik in zaposlenici)
                    {
                        var notifikacija = new Data.EntityModels.Notifikacija
                        {
                            ZaposlenikId = zaposlenik.Id,
                            Tip          = Data.EntityModels.TipNotifikacije.Nova_Narudzba,
                            Rezervacija  = entity,
                            DatumVrijeme = DateTime.Now
                        };
                        _context.Notifikacija.Add(notifikacija);
                    }
                }
            }
            _context.SaveChanges();

            return(_mapper.Map <Model.Rezervacija>(entity));
        }
예제 #13
0
 public Model.Rezervacija Update(int id, RezervacijaInsertRequest update)
 {
     return(_service.Update(id, update));
 }
예제 #14
0
 public Model.Rezervacija Insert(RezervacijaInsertRequest insert)
 {
     return(_service.Insert(insert));
 }