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