public async Task OtkaziRezervaciju()
        {
            var razlika = (int)(DateTime.Now - r.DatumRezervacije).TotalDays;

            if (razlika > 3)
            {
                await Application.Current.MainPage.DisplayAlert("Otkazivanje rezeracije", "Isteklo vrijeme za otkazivanje rezervacije", "OK");
            }
            else
            {
                var ulaznice = await _ulaznice.Get <List <Model.Ulaznice> >(null);

                foreach (var item in ulaznice)
                {
                    if (item.Status && item.RezervacijaId == r.RezervacijaId)
                    {
                        UlazniceUpsertRequest request = new UlazniceUpsertRequest()
                        {
                            ProjekcijaId  = item.ProjekcijaId,
                            Cijena        = item.Cijena,
                            Qrcode        = item.Qrcode,
                            RezervacijaId = item.RezervacijaId,
                            SjedisteId    = item.SjedisteId,
                            Status        = false
                        };
                        await _ulaznice.Update <Model.Ulaznice>(item.UlaznicaId, request);
                    }
                }
                RezervacijeUpsertRequest request2 = new RezervacijeUpsertRequest()
                {
                    Status           = false,
                    BrojKarata       = r.BrojKarata,
                    Cijena           = r.Cijena,
                    DatumRezervacije = r.DatumRezervacije,
                    GledalacId       = r.GledalacId,
                    ProjekcijaId     = r.ProjekcijaId,
                    mobilna          = true
                };
                await _rezervacije.Update <Model.Rezervacije>(r.RezervacijaId, request2);

                await Application.Current.MainPage.DisplayAlert("Otkazivanje rezervacije", "Uspješno ste otkazali rezervaciju.", "OK");
            }
        }
        private async void btnSacuvaj_Click(object sender, EventArgs e)
        {
            if (clbSjedista.CheckedItems.Count > 0)
            {
                var rezervacija = await _rezervacije.GetById <Model.Rezervacije>(Id);

                var sjedista   = clbSjedista.CheckedItems.Cast <Model.Sjedista>();
                var projekcija = await _projekcije.GetById <Model.Projekcije>(cmbProjekcije.SelectedValue);

                var brojSjedista = sjedista.Count();
                RezervacijeUpsertRequest rezervacijaUpsert = new RezervacijeUpsertRequest()
                {
                    ProjekcijaId     = projekcija.ProjekcijaId,
                    BrojKarata       = brojSjedista,
                    Cijena           = brojSjedista * projekcija.Cijena,
                    DatumRezervacije = DateTime.Now,
                    Status           = chbAktivna.Checked
                };

                if (cmbGledaoci.SelectedValue != null)
                {
                    rezervacijaUpsert.GledalacId = (int)cmbGledaoci.SelectedValue;
                }

                rezervacijaUpsert.requestsUlaznice = new List <UlazniceUpsertRequest>();
                foreach (var item in sjedista)
                {
                    UlazniceUpsertRequest request = new UlazniceUpsertRequest()
                    {
                        RezervacijaId = Id,
                        ProjekcijaId  = int.Parse(cmbProjekcije.SelectedValue.ToString()),
                        SjedisteId    = item.SjedisteId,
                        Cijena        = projekcija.Cijena,
                        QRtekst       = $"Gledalac: {rezervacija.Gledalac?.Ime ?? "-Default-"} {rezervacija.Gledalac?.Prezime ?? "-Default-"} " +
                                        $"{rezervacija.Gledalac?.KorisnickoIme ?? "-Default-"} \n Projekcija: {rezervacija.Projekcija} \n",
                        Status = rezervacijaUpsert.Status// ako je rezervacija aktivna da bude i ulaznica i obrnuto
                    };
                    if (cmbGledaoci.SelectedIndex != 0)
                    {
                        var objGledalac = cmbGledaoci.SelectedValue;
                        rezervacijaUpsert.GledalacId = int.Parse(objGledalac?.ToString() ?? "0");
                    }

                    rezervacijaUpsert.requestsUlaznice.Add(request);
                }

                Model.Rezervacije result = null;
                if (Id.HasValue)
                {
                    result = await _rezervacije.Update <Model.Rezervacije>(Id, rezervacijaUpsert);
                }
                else
                {
                    result = await _rezervacije.Insert <Model.Rezervacije>(rezervacijaUpsert);
                }

                if (result != null)
                {
                    MessageBox.Show(Properties.Resources.UspjesnoPromijenjeno);
                }
            }
            else
            {
                MessageBox.Show("Niste odabrali nijedno sjedište.");
            }
        }
示例#3
0
        public async void NapraviRezervaciju(string redKolona, int projekcijaId)
        {
            var projekcija = await _projekcije.GetById <Model.Projekcije>(projekcijaId);

            SjedistaSearchRequest search = new SjedistaSearchRequest
            {
                SalaId = projekcija.SalaId
            };
            var sjedista = await _sjedista.Get <List <Model.Sjedista> >(search);

            int sjedisteId = 0;

            foreach (var item in sjedista)
            {
                if (item.Red + item.Kolona == redKolona)
                {
                    sjedisteId = item.SjedisteId;
                    break;
                }
            }


            //provjera da li je sjedište zauzeto
            var ulaznice = await _ulaznice.Get <List <Model.Ulaznice> >(null);

            bool zauzeto = false;

            foreach (var item in ulaznice)
            {
                if (item.ProjekcijaId == projekcija.ProjekcijaId && item.SjedisteId == sjedisteId && item.Status)
                {
                    zauzeto = true;
                    break;
                }
            }
            if (zauzeto)
            {
                await Application.Current.MainPage.DisplayAlert("Rezervacija", "Sjedište je zauzeto. Molimo pokušajte ponovo.", "OK");
            }
            else
            {
                GledaociSearchRequest request = new GledaociSearchRequest()
                {
                    Username = APIService.Username
                };
                var listaGledaoci = await _gledaoci.Get <List <Model.Gledaoci> >(request);

                var gledalac = listaGledaoci[0].GledalacId;



                //provjera da li je gledalac već rezervsao, ako jeste samo će se uvećati broj karata i dodati nova ulaznica
                var rezervacije = await _rezervacije.Get <List <Model.Rezervacije> >(null);

                bool rezervisao           = false;
                int  rezervacijaPostojeca = 0;
                int  brojKarataPostojeca  = 0;
                foreach (var item in rezervacije)
                {
                    if (item.GledalacId == gledalac && item.ProjekcijaId == projekcija.ProjekcijaId && item.Status == true)
                    {
                        rezervisao           = true;
                        rezervacijaPostojeca = item.RezervacijaId;
                        brojKarataPostojeca  = item.BrojKarata;
                    }
                }
                /////////////////////////////////////////////////////////////////////////////////////



                if (!rezervisao)
                {
                    RezervacijeUpsertRequest request2 = new RezervacijeUpsertRequest()
                    {
                        BrojKarata       = 1,
                        Cijena           = projekcija.Cijena,
                        DatumRezervacije = DateTime.Now,
                        GledalacId       = gledalac,
                        ProjekcijaId     = projekcija.ProjekcijaId,
                        Status           = true,
                        mobilna          = true
                    };

                    var r = await _rezervacije.Insert <Model.Rezervacije>(request2);

                    UlazniceUpsertRequest request3 = new UlazniceUpsertRequest()
                    {
                        GledalacId    = gledalac,
                        Cijena        = projekcija.Cijena,
                        ProjekcijaId  = projekcija.ProjekcijaId,
                        RezervacijaId = r.RezervacijaId,
                        Status        = true,
                        SjedisteId    = sjedisteId,
                        QRtekst       =
                            $"{listaGledaoci[0].Ime + " " + listaGledaoci[0].Prezime + "\n" + "Film: " + projekcija.Film.Naziv + "\n" + "Sala: " + projekcija.Sala.Naziv + "\n" + "Vrijeme prikazivanja projekcije: " + projekcija.DatumVrijemeOdrzavanja}"
                    };
                    await _ulaznice.Insert <Model.Ulaznice>(request3);

                    await Application.Current.MainPage.DisplayAlert("Rezervacija", "Uspješno ste rezervisali ulaznicu. Ulaznicu/e možete pogledati u sekciji 'Ulaznice'", "OK");
                }
                else
                {
                    RezervacijeUpsertRequest requestUrediRezervaciju = new RezervacijeUpsertRequest()
                    {
                        Cijena           = projekcija.Cijena * (brojKarataPostojeca + 1),
                        DatumRezervacije = DateTime.Now,
                        GledalacId       = gledalac,
                        ProjekcijaId     = projekcija.ProjekcijaId,
                        Status           = true,
                        BrojKarata       = brojKarataPostojeca + 1,
                        mobilna          = true
                    };
                    var r = await _rezervacije.Update <Model.Rezervacije>(rezervacijaPostojeca, requestUrediRezervaciju);

                    UlazniceUpsertRequest request3 = new UlazniceUpsertRequest()
                    {
                        GledalacId    = gledalac,
                        Cijena        = projekcija.Cijena,
                        ProjekcijaId  = projekcija.ProjekcijaId,
                        RezervacijaId = r.RezervacijaId,
                        Status        = true,
                        SjedisteId    = sjedisteId,
                        QRtekst       = $"{listaGledaoci[0].Ime + " " + listaGledaoci[0].Prezime + "\n" + "Film: " + projekcija.Film.Naziv + "\n" + "Sala: " + projekcija.Sala.Naziv + "\n" + "Vrijeme prikazivanja projekcije: " + projekcija.DatumVrijemeOdrzavanja}"
                    };
                    await _ulaznice.Insert <Model.Ulaznice>(request3);

                    await Application.Current.MainPage.DisplayAlert("Rezervacija", "Uspješno ste rezervisali ulaznicu. Ulaznicu/e možete pogledati u sekciji 'Ulaznice'", "OK");
                }
            }
        }