private void PošaljiObavijest(Let let, Sjedalo sjedalo) { SmtpClient client = new SmtpClient("smtp.gmail.com", 25); client.UseDefaultCredentials = false; NetworkCredential cred = new NetworkCredential("*****@*****.**", "sj6IWP3o"); MailMessage Msg = new MailMessage(); Msg.From = new MailAddress("*****@*****.**"); Msg.To.Add($"{RepozitorijSkyFlyReservation.prijavljeniKorisnik.EmailKorisnika}"); Msg.Subject = "Potvrda rezervacije karte"; Msg.Body = $"Poštovani {RepozitorijSkyFlyReservation.prijavljeniKorisnik.ImeKorisnika} {RepozitorijSkyFlyReservation.prijavljeniKorisnik.PrezimeKorisnika},\n\n" + $"Vaša rezervacija za sjedalo {sjedalo.OznakaSjedala} na letu {let.BrojLeta} | {let.PolazisniAerodrom.NazivAerodroma}->{let.OdredisniAerodrom.NazivAerodroma} je zabilježena u sustav.\n" + "Molimo Vas da rezervaciju platite najkasnije 3 dana prije polaska.\n" + "Uplatu možete izvršiti putem aplikacije ili putem uplatnice.\n\n" + "Podaci za plaćanje putem uplatnice ili internet bankarstva:\n" + $"Primatelj: {let.AvionNaLetu.Aviokompanija.NazivAviokompanije}\n" + $" {let.AvionNaLetu.Aviokompanija.AdresaAviokompanije}\n" + $" OIB: {let.AvionNaLetu.Aviokompanija.OIBAviokompanije}\n" + $"IBAN ili broj računa primatelja: {let.AvionNaLetu.Aviokompanija.IBANAviokompanije}\n" + $"Opis plaćanja: Plaćanje rezervacije za sjedalo {sjedalo.OznakaSjedala} na letu {let.BrojLeta} | {let.PolazisniAerodrom.NazivAerodroma}->{let.OdredisniAerodrom.NazivAerodroma}.\n\n" + "S poštovanjem,\n" + "SkyFlyReservation"; client.Credentials = cred; client.EnableSsl = true; client.Send(Msg); }
private async void FrmSjedalaDetalji_Load(object sender, EventArgs e) { await LoadSektori(); if (_id.HasValue) { Sjedalo r = await _apiService.GetById <Sjedalo>(_id); txtOznaka.Text = r.Oznaka; cbSektori.SelectedValue = int.Parse(r.SektorID.ToString()); cbxStatus.Checked = r.Status; } }
private void rezervirajSjedaloButton_Click(object sender, EventArgs e) { if ((selektiraniLet.DatumPolaska.Date.Day - DateTime.Now.Date.Day) < 3 && (selektiraniLet.DatumDolaska.Date.Month == DateTime.Now.Date.Month)) { MessageBox.Show($"Rok za rezervaciju karata za let {selektiraniLet.PolazisniAerodrom.NazivAerodroma}->{selektiraniLet.OdredisniAerodrom.NazivAerodroma} je istekao."); return; } if (odabranoSjedalo == null) { MessageBox.Show("Niste odabrali sjedalo za koje želite rezervirati kartu."); return; } if (odabranoSjedalo.BackColor == Color.Red) { MessageBox.Show($"Sjedalo {odabranoSjedalo.Name} na letu {selektiraniLet.PolazisniAerodrom.NazivAerodroma}->{selektiraniLet.OdredisniAerodrom.NazivAerodroma} je zauzeto."); return; } else { Sjedalo sjedalo = RepozitorijSkyFlyReservation.DohvatiSjedalo(odabranoSjedalo.Name); Rezervacija rezervacija = new Rezervacija() { LetRezervacije = selektiraniLet, KorisnikRezervacije = RepozitorijSkyFlyReservation.prijavljeniKorisnik, RezerviranoSjedalo = sjedalo, DatumVrijemeRezervacije = DateTime.Now }; int numAffectedRowsInsert = RepozitorijSkyFlyReservation.DodajRezervacijuKarte(rezervacija); int numAffectedRowsUpdate = RepozitorijSkyFlyReservation.AzurirajBrojSlobodnihMjesta(selektiraniLet); if (numAffectedRowsInsert > 0 && numAffectedRowsUpdate > 0) { MessageBox.Show($"Uspješno ste rezervirali sjedalo {sjedalo.OznakaSjedala} na letu {selektiraniLet.PolazisniAerodrom.NazivAerodroma}->{selektiraniLet.OdredisniAerodrom.NazivAerodroma}.\n\nNa Vašu e-mail adresu poslani su podaci za plaćanje."); PošaljiObavijest(selektiraniLet, sjedalo); OsvjeziSjedalaUAvionu(RepozitorijSkyFlyReservation.DohvatiRezerviranaSjedala(selektiraniLet)); } else { MessageBox.Show("Dogodila se pogreška kod rezervacije sjedala.Rezervacija nije evidentirana."); this.Close(); return; } } }
public override Ulaznica Update(int id, UlazniceInsertRequest req) { Korisnici k = _context.Korisnici.FirstOrDefault(s => s.KorisnikID == req.KorisnikID); Korisnik korisnik = _mapper.Map <Korisnik>(k); Sjedalo a = _mapper.Map <Sjedalo>(_context.Sjedala.FirstOrDefault(s => s.SjedaloID == req.SjedaloID)); Utakmica u = _mapper.Map <Utakmica>(_context.Utakmice.FirstOrDefault(s => s.UtakmicaID == req.UtakmicaID)); string number = "Ime i prezime: " + korisnik.KorisnikPodaci + "---Utakmica: " + u.UtakmicaPodaci + "----Sjedalo/Sektor: " + a.Oznaka + "/" + a.Sektor + "---Datum kupnje: " + req.DatumKupnje.ToString() + "---Vrijeme kupnje:" + req.VrijemeKupnje.ToString() + "---Cijena(€):" + req.cijena.ToString() + "$" + GetVoucherNumber(8); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(number, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); var bitmapBytes = BitmapToBytes(qrCodeImage); req.barcodeimg = bitmapBytes; return(base.Update(id, req)); }
private async void FrmUlazniceDetalji_Load(object sender, EventArgs e) { await LoadUtakmica(); await LoadKorisnici(); if (_id.HasValue) { Ulaznica a = await _apiService.GetById <Ulaznica>(_id); Sjedalo sjedalo = await _apiServiceSjedala.GetById <Sjedalo>(a.SjedaloID); cbUtakmica.SelectedValue = int.Parse(a.UtakmicaID.ToString()); cbSektor.SelectedValue = int.Parse(sjedalo.SektorID.ToString()); cbKorisnik.SelectedValue = int.Parse(a.KorisnikID.ToString()); cbSjedala.SelectedValue = int.Parse(a.SjedaloID.ToString()); dtpDatum.Value = a.DatumKupnje; dtpVrijeme.Value = a.VrijemeKupnje; } }
private void kupiKartuButton_Click(object sender, EventArgs e) { if (odabranoSjedalo == null) { MessageBox.Show("Niste odabrali sjedalo za koje želite kupiti kartu."); return; } if (odabranoSjedalo.BackColor == Color.Red) { MessageBox.Show($"Sjedalo {odabranoSjedalo.Name} na letu {selektiraniLet.PolazisniAerodrom.NazivAerodroma}->{selektiraniLet.OdredisniAerodrom.NazivAerodroma} je zauzeto."); return; } else { Sjedalo sjedalo = RepozitorijSkyFlyReservation.DohvatiSjedalo(odabranoSjedalo.Name); FormPlatiKartu form = new FormPlatiKartu(selektiraniLet, sjedalo); form.ShowDialog(); OsvjeziSjedalaUAvionu(RepozitorijSkyFlyReservation.DohvatiRezerviranaSjedala(selektiraniLet)); } }
public FormPlatiKartu(Let let, Sjedalo sjedalo) { selektiranoSjedalo = sjedalo; selektiraniLet = let; InitializeComponent(); }
private void PošaljiKartu(Let let, Sjedalo sjedalo) { string rezervacijaId = RepozitorijSkyFlyReservation.DohvatiIdRezervacije(let, sjedalo).ToString(); MemoryStream strmQR = new MemoryStream(); MemoryStream strmTem = new MemoryStream(); Zen.Barcode.CodeQrBarcodeDraw barcode = Zen.Barcode.BarcodeDrawFactory.CodeQr; System.Drawing.Image QRCode = barcode.Draw(rezervacijaId, 50); QRCode.Save(strmQR, System.Drawing.Imaging.ImageFormat.Png); XImage QRImage = XImage.FromStream(strmQR); string putanja = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", ""); Image template = Image.FromFile(putanja + "\\BoardingPass\\BoardingPassTemplate.png"); template.Save(strmTem, System.Drawing.Imaging.ImageFormat.Png); XImage Template = XImage.FromStream(strmTem); PdfDocument pdf = new PdfDocument(); PdfPage pdfPage = pdf.AddPage(); XGraphics graph = XGraphics.FromPdfPage(pdfPage); graph.DrawImage(Template, 5, 5, 585, 225); graph.DrawImage(QRImage, 345, 50, 75, 75); XFont font = new XFont("Verdana", 8, XFontStyle.Bold); graph.DrawString($"{RepozitorijSkyFlyReservation.prijavljeniKorisnik.ImeKorisnika} {RepozitorijSkyFlyReservation.prijavljeniKorisnik.PrezimeKorisnika}", font, XBrushes.Black, new XRect(25, 72, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.PolazisniAerodrom.NazivAerodroma}", font, XBrushes.Black, new XRect(25, 110, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.OdredisniAerodrom.NazivAerodroma}", font, XBrushes.Black, new XRect(25, 150, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.AvionNaLetu.Aviokompanija.NazivAviokompanije}", font, XBrushes.Black, new XRect(182, 110, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.DatumPolaska.Date.ToString("dd. MMMM")}", font, XBrushes.Black, new XRect(182, 150, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.DatumPolaska.ToString("HH:mm")}", font, XBrushes.Black, new XRect(282, 150, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{RepozitorijSkyFlyReservation.prijavljeniKorisnik.ImeKorisnika} {RepozitorijSkyFlyReservation.prijavljeniKorisnik.PrezimeKorisnika}", font, XBrushes.Black, new XRect(448, 72, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.PolazisniAerodrom.NazivAerodroma}", font, XBrushes.Black, new XRect(448, 97, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.OdredisniAerodrom.NazivAerodroma}", font, XBrushes.Black, new XRect(448, 125, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.DatumPolaska.Date.ToString("dd.MM")}", font, XBrushes.Black, new XRect(448, 152, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.DatumPolaska.ToString("HH:mm")}", font, XBrushes.Black, new XRect(495, 152, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.BrojLeta}", font, XBrushes.Black, new XRect(25, 190, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{sjedalo.OznakaSjedala}", font, XBrushes.Black, new XRect(104, 190, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.DatumPolaska.Add(new TimeSpan(0, -45, 0)).ToString("HH:mm")}", font, XBrushes.Black, new XRect(282, 190, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{sjedalo.OznakaSjedala}", font, XBrushes.Black, new XRect(448, 182, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); graph.DrawString($"{let.DatumPolaska.Add(new TimeSpan(0, -45, 0)).ToString("HH:mm")}", font, XBrushes.Black, new XRect(495, 182, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft); pdf.Save(putanja + "\\BoardingPass\\karta.pdf"); pdf.Dispose(); SmtpClient client = new SmtpClient("smtp.gmail.com", 25); client.UseDefaultCredentials = false; NetworkCredential cred = new NetworkCredential("*****@*****.**", "sj6IWP3o"); MailMessage Msg = new MailMessage(); Msg.From = new MailAddress("*****@*****.**"); Msg.To.Add($"{RepozitorijSkyFlyReservation.prijavljeniKorisnik.EmailKorisnika}"); Msg.Subject = "Potvrda kupnje karte"; Msg.Body = $"Poštovani {RepozitorijSkyFlyReservation.prijavljeniKorisnik.ImeKorisnika} {RepozitorijSkyFlyReservation.prijavljeniKorisnik.PrezimeKorisnika},\n\n" + $"Na osnovu provedene kupnje karte za sjedalo {sjedalo.OznakaSjedala} na letu {let.BrojLeta} | {let.PolazisniAerodrom.NazivAerodroma}->{let.OdredisniAerodrom.NazivAerodroma} šaljemo Vam kartu za let.\n" + "Karta se nalazi u pdf-u koji ste primili u ovoj poruci.\n" + "Kartu koju ste primili koristite prilikom prijave na aerodromu.\n" + "Molimo Vas da provjeru karte izvršite najkasnije 45 min prije polaska.\n\n" + "S poštovanjem,\n" + "SkyFlyReservation"; Msg.Attachments.Add(new Attachment(putanja + "\\BoardingPass\\karta.pdf")); client.Credentials = cred; client.EnableSsl = true; client.Send(Msg); client.Dispose(); }
private async void BtnSacuvaj_Click(object sender, EventArgs e) { if (this.ValidateChildren()) { int prosloSjedalo = -1; int proslaUtakmica = -1; int prosliKorisnik = -1; if (_id.HasValue) { Ulaznica u = await _apiService.GetById <Ulaznica>(_id); prosloSjedalo = u.SjedaloID; proslaUtakmica = u.UtakmicaID; prosliKorisnik = u.KorisnikID; } Korisnik k = await _apiServiceKorisnici.GetById <Korisnik>(int.Parse(cbKorisnik.SelectedValue.ToString())); var req = new UlazniceInsertRequest() { DatumKupnje = dtpDatum.Value.Date + dtpVrijeme.Value.TimeOfDay, VrijemeKupnje = dtpDatum.Value.Date + dtpVrijeme.Value.TimeOfDay, KorisnikID = int.Parse(cbKorisnik.SelectedValue.ToString()), SjedaloID = int.Parse(cbSjedala.SelectedValue.ToString()), UtakmicaID = int.Parse(cbUtakmica.SelectedValue.ToString()) }; Sjedalo s1 = await _apiServiceSjedala.GetById <Sjedalo>(req.SjedaloID); s1.Status = true; SjedalaInsertRequest r1 = new SjedalaInsertRequest() { Oznaka = s1.Oznaka, SektorID = s1.SektorID, Status = s1.Status }; Sjedalo s2 = null; SjedalaInsertRequest r2 = null; if (prosloSjedalo != -1) { s2 = await _apiServiceSjedala.GetById <Sjedalo>(prosloSjedalo); s2.Status = false; r2 = new SjedalaInsertRequest(); r2.Oznaka = s2.Oznaka; r2.SektorID = s2.SektorID; r2.Status = s2.Status; } if (_id.HasValue) { int i = (int)_id; await _apiService.Update <dynamic>(i, req); await _apiServiceSjedala.Update <dynamic>(s1.SjedaloID, r1); if (prosloSjedalo != -1) { await _apiServiceSjedala.Update <dynamic>(s2.SjedaloID, r2); } } else { await _apiService.Insert <dynamic>(req); await _apiServiceSjedala.Update <dynamic>(s1.SjedaloID, r1); } //spremanje u preporuke //update if (proslaUtakmica != -1 || prosliKorisnik != -1) { Utakmica proslaU = await _apiServiceUtakmica.GetById <Utakmica>(proslaUtakmica); List <Preporuka> preporuke = await _apiServicePreporuke.Get <List <Preporuka> >(new PreporukaSearchRequest() { KorisnikID = prosliKorisnik, PrviTimID = proslaU.DomaciTimID, DrugiTimID = proslaU.GostujuciTimID }); foreach (var p in preporuke) { p.BrojKupljenihUlaznica--; await _apiServicePreporuke.Update <Preporuka>(p.PreporukaID, new PreporukaInsertRequest() { BrojKupljenihUlaznica = p.BrojKupljenihUlaznica, KorisnikID = p.KorisnikID, TimID = p.TimID }); } } //insert Utakmica utakmica = await _apiServiceUtakmica.GetById <Utakmica>(req.UtakmicaID); var prviTim = utakmica.DomaciTimID; var drugiTim = utakmica.GostujuciTimID; List <Preporuka> rezultat = await _apiServicePreporuke.Get <List <Preporuka> >(new PreporukaSearchRequest() { KorisnikID = k.KorisnikID, PrviTimID = prviTim, DrugiTimID = drugiTim }); if (rezultat.Count == 1) { rezultat[0].BrojKupljenihUlaznica++; PreporukaInsertRequest reqP = null; if (rezultat[0].TimID == prviTim) { reqP = new PreporukaInsertRequest { TimID = drugiTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; } else { reqP = new PreporukaInsertRequest { TimID = prviTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; } PreporukaInsertRequest reqPU = new PreporukaInsertRequest { TimID = rezultat[0].TimID, KorisnikID = rezultat[0].KorisnikID, BrojKupljenihUlaznica = rezultat[0].BrojKupljenihUlaznica }; await _apiServicePreporuke.Insert <Preporuka>(reqP); await _apiServicePreporuke.Update <Preporuka>(rezultat[0].PreporukaID, reqPU); } else if (rezultat.Count == 2) { PreporukaInsertRequest req1 = new PreporukaInsertRequest { TimID = rezultat[0].TimID, BrojKupljenihUlaznica = ++rezultat[0].BrojKupljenihUlaznica, KorisnikID = rezultat[0].KorisnikID }; PreporukaInsertRequest req2 = new PreporukaInsertRequest { TimID = rezultat[1].TimID, BrojKupljenihUlaznica = ++rezultat[1].BrojKupljenihUlaznica, KorisnikID = rezultat[1].KorisnikID }; await _apiServicePreporuke.Update <Preporuka>(rezultat[0].PreporukaID, req1); await _apiServicePreporuke.Update <Preporuka>(rezultat[1].PreporukaID, req2); } else//ako je 0 { PreporukaInsertRequest req1 = new PreporukaInsertRequest { TimID = prviTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; PreporukaInsertRequest req2 = new PreporukaInsertRequest { TimID = drugiTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; await _apiServicePreporuke.Insert <Preporuka>(req1); await _apiServicePreporuke.Insert <Preporuka>(req2); } MessageBox.Show("Operacija uspjela"); this.Close(); } else { MessageBox.Show("Operacija nije uspjela!"); this.Close(); } }
public async Task Init() { IsBusy = true; List <Sjedalo> list = await _apiServiceSjedala.Get <List <Sjedalo> >(new SjedalaSearchRequest() { Oznaka = Oznaka, SektorID = Sektor.SektorID }); Sjedalo = list[0]; Korisnik k = await _apiServiceKorisnici.GetById <Korisnik>(Korisnik.KorisnikID); UlazniceInsertRequest req = new UlazniceInsertRequest() { DatumKupnje = DatumKupnje, VrijemeKupnje = VrijemeKupnje, KorisnikID = Korisnik.KorisnikID, SjedaloID = Sjedalo.SjedaloID, UtakmicaID = Utakmica.UtakmicaID, cijena = Iznos }; Sjedalo s1 = await _apiServiceSjedala.GetById <Sjedalo>(req.SjedaloID); s1.Status = true; SjedalaInsertRequest req2 = new SjedalaInsertRequest() { Oznaka = s1.Oznaka, SektorID = s1.SektorID, Status = s1.Status }; Ulaznica u; try { u = await _apiServiceUlaznice.Insert <Ulaznica>(req); await _apiServiceSjedala.Update <dynamic>(req.SjedaloID, req2); Barcode = u.barcodeimg; } catch (Exception) { throw; } //SPREMANJE UPLATA UplateInsertRequest requestUplate = new UplateInsertRequest() { Iznos = Iznos, UlaznicaID = u.UlaznicaID }; try { await _apiServiceUplate.Insert <Uplata>(requestUplate); } catch (Exception) { throw; } //SPREMANJE PREPORUKA Utakmica utakmica = await _apiServiceUtakmica.GetById <Utakmica>(req.UtakmicaID); var prviTim = utakmica.DomaciTimID; var drugiTim = utakmica.GostujuciTimID; List <Preporuka> rezultat = await _apiServicePreporuke.Get <List <Preporuka> >(new PreporukaSearchRequest() { KorisnikID = k.KorisnikID, PrviTimID = prviTim, DrugiTimID = drugiTim }); if (rezultat.Count == 1) { rezultat[0].BrojKupljenihUlaznica++; PreporukaInsertRequest reqP; if (rezultat[0].TimID == prviTim) { reqP = new PreporukaInsertRequest { TimID = drugiTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; } else { reqP = new PreporukaInsertRequest { TimID = prviTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; } PreporukaInsertRequest reqPU = new PreporukaInsertRequest { TimID = rezultat[0].TimID, KorisnikID = rezultat[0].KorisnikID, BrojKupljenihUlaznica = rezultat[0].BrojKupljenihUlaznica }; await _apiServicePreporuke.Insert <Preporuka>(reqP); await _apiServicePreporuke.Update <Preporuka>(rezultat[0].PreporukaID, reqPU); } else if (rezultat.Count == 2) { PreporukaInsertRequest req1 = new PreporukaInsertRequest { TimID = rezultat[0].TimID, BrojKupljenihUlaznica = ++rezultat[0].BrojKupljenihUlaznica, KorisnikID = rezultat[0].KorisnikID }; PreporukaInsertRequest req3 = new PreporukaInsertRequest { TimID = rezultat[1].TimID, BrojKupljenihUlaznica = ++rezultat[1].BrojKupljenihUlaznica, KorisnikID = rezultat[1].KorisnikID }; await _apiServicePreporuke.Update <Preporuka>(rezultat[0].PreporukaID, req1); await _apiServicePreporuke.Update <Preporuka>(rezultat[1].PreporukaID, req3); } else//ako je 0 { PreporukaInsertRequest req1 = new PreporukaInsertRequest { TimID = prviTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; PreporukaInsertRequest req3 = new PreporukaInsertRequest { TimID = drugiTim, BrojKupljenihUlaznica = 1, KorisnikID = k.KorisnikID }; await _apiServicePreporuke.Insert <Preporuka>(req1); await _apiServicePreporuke.Insert <Preporuka>(req3); } }