Advertisement
mallamat

Innkalling

May 20th, 2017
597
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 11.90 KB | None | 0 0
  1. Imports System.Net.Mail
  2. Public Class Innkalling
  3.     Public valgtDato As String
  4.     Public otimer As New List(Of String)
  5.     Private sistetapping As String
  6.     Private timebestilling As String
  7.     Public idTilinnkalling As String
  8.     Public melding As String
  9.     Public innkallingtlf As String
  10.     Private abotyping
  11.     Private rhdtyping
  12.  
  13.  
  14.     Public Function konverterDato(dato As String) As String
  15.         'For at databasen skal kunne lese dato
  16.         Dim innskrevetDato As Date = dato
  17.         Return innskrevetDato.ToString("yyyy-MM-dd")
  18.     End Function
  19.  
  20.     Private Sub Innkalling_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  21.  
  22.         DatePickerInnkalling.Value = DateTime.Today()
  23.         DatePickerInnkalling.MinDate = DateTime.Today()
  24.  
  25.         'Denne koden lister alle som har gitt blod tidligere, som kan kalles inn på nytt
  26.         Dim idag As Date = Today
  27.         Dim sistetappingdato As New DataTable
  28.         sistetappingdato = Sporring("SELECT max(DATE_ADD(dato, interval 3 month)) AS dato, brukere.fornavn, brukere.etternavn, blodgiver_id FROM tapping INNER JOIN brukere ON brukere.bruker_id = tapping.blodgiver_id group by brukere.fornavn order by dato")
  29.         For Each rad In sistetappingdato.Rows
  30.  
  31.             sistetapping = rad("dato")      'På denne måten vil sistetapping bare ha verdien til den siste tappingen.
  32.             If dato(idag, sistetapping) = True Then
  33.                 lbInnkalling.Items.Add(rad("fornavn") & " " & rad("etternavn"))
  34.             End If
  35.         Next
  36.         Dim ikkegittblod As New DataTable
  37.         ikkegittblod = Sporring("select bruker_id, fornavn, etternavn from brukere where bruker_id NOT IN (select blodgiver_id from tapping) and type = 'blodgiver'")
  38.         For Each rad In ikkegittblod.Rows
  39.             lbInnkalling.Items.Add(rad("fornavn") & " " & rad("etternavn"))
  40.         Next
  41.  
  42.         'kode for at produktet det er tomt av på lager kommer opp, videre fra administrerbanksiden.
  43.         abotyping = administrerBank.cbAbo.SelectedItem
  44.         rhdtyping = administrerBank.cbRhd.SelectedItem
  45.         cbAbo.SelectedItem = abotyping
  46.         cbRhd.SelectedItem = rhdtyping
  47.  
  48.     End Sub
  49.  
  50.     Private Sub lbInnkalling_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbInnkalling.SelectedIndexChanged
  51.         txtTil.Clear()
  52.         Dim valgtbruker As String = lbInnkalling.SelectedItem
  53.         Dim innkallingDato = DatePickerInnkalling.Value.ToString("dd.MM.yyyy")
  54.         Dim innkallingTid = cbLedigetimer.SelectedItem
  55.  
  56.         'Teksten til eposten endrer seg når man trykker på et navn i listboxen
  57.         txtMelding.Text = "Hei, " & valgtbruker & vbCrLf &
  58.         "Du er innkalt til time den " & innkallingDato & " klokka " & innkallingTid & vbCrLf & vbCrLf & "Mvh. Blodbanken på St. Olavs hospital."
  59.  
  60.         Dim valgtansatt = lbInnkalling.SelectedItem
  61.         Try                                         'Try/catch for å hindre at programmet krasjer dersom man trykker i listboxen uten å faktisk velge et navn
  62.             Dim linje = valgtansatt                 'Valget av ansatte går på fornavn etternavn (Ali Nordmann), så for å bruke kombinasjonen av fornavn og etternavn
  63.             Dim linjeOppdelt = linje.Split(" ")    'til søk i databasen må de skilles fra hverandre
  64.             Dim navn = linjeOppdelt(0)
  65.             Dim fornavn = linjeOppdelt(0)
  66.             Dim etternavn = linjeOppdelt(1)
  67.  
  68.             Dim hentinfo As New DataTable
  69.             'Spørringen henter ut epost og bruker_id
  70.             hentinfo = Sporring("select epost, bruker_id, mobiltlf FROM brukere where fornavn = '" & fornavn & "' and etternavn = '" & etternavn & "'")
  71.             For Each rad In hentinfo.Rows
  72.                 txtTil.AppendText(rad("epost").ToString)
  73.                 idTilinnkalling = rad("bruker_id")
  74.                 innkallingtlf = rad("mobiltlf")
  75.             Next
  76.         Catch
  77.         End Try
  78.  
  79.     End Sub
  80.  
  81.     Private Sub DatePickerInnkalling_ValueChanged(sender As Object, e As EventArgs) Handles DatePickerInnkalling.ValueChanged
  82.         valgtDato = Format(DatePickerInnkalling.Value, "yyyy-MM-dd")
  83.  
  84.         'mtimer - mulige tidspunkt å bestille time på
  85.         Dim mtimer As New List(Of String)(New String() {"09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30"})
  86.         'otimer - opptatte timer,
  87.         timesjekk()
  88.         cbLedigetimer.Items.Clear()
  89.         Dim ltimer = mtimer.Except(otimer)      'sammenligner de opptatte timene med ledige og lar deg
  90.         For Each time As String In ltimer       'velge fra de som er ledige
  91.             cbLedigetimer.Items.Add(time)
  92.         Next
  93.  
  94.         cbLedigetimer.SelectedIndex = 0                 'velger det tidligste mulige tidspunktet på den valgte datoen
  95.         timebestilling = cbLedigetimer.SelectedIndex
  96.  
  97.     End Sub
  98.     Private Sub timesjekk()
  99.         Dim bestiltetimer As New DataTable
  100.         bestiltetimer = Sporring("SELECT *, COUNT('tid') as telling FROM bestill_time WHERE dato = '" & valgtDato & "' GROUP BY tid;")
  101.         For Each rad In bestiltetimer.Rows
  102.             If rad("telling") > 4 Then  'Bare 5 personer kan bestille tapping på samme tidspunkt
  103.                 otimer.Add(rad("tid"))  'de opptatte timene blir registrert
  104.             End If
  105.         Next
  106.     End Sub
  107.  
  108.  
  109.  
  110.     Private Sub btnSendMail_Click(sender As Object, e As EventArgs) Handles btnSendMail.Click
  111.  
  112.         'Kode for å sende epost
  113.         Dim valgtbruker As String = lbInnkalling.SelectedItem
  114.         Dim innkallingDato = DatePickerInnkalling.Value.ToString("dd.MM.yyyy")
  115.         Dim innkallingTid = cbLedigetimer.SelectedItem
  116.  
  117.         Sporring("INSERT INTO bestill_time (bruker_id, dato, tid) VALUES ('" & idTilinnkalling & "', '" & konverterDato(innkallingDato) & "', '" & innkallingTid & "');")
  118.  
  119.         Try
  120.             Dim Smtp_Server As New SmtpClient
  121.             Dim e_mail As New MailMessage()
  122.             Smtp_Server.UseDefaultCredentials = False
  123.             Smtp_Server.Credentials = New Net.NetworkCredential("enestaendeblodgiving@gmail.com", "babed01blod") 'kontoen vi bruker til å sende mail
  124.             Smtp_Server.Port = 587
  125.             Smtp_Server.EnableSsl = True
  126.             Smtp_Server.Host = "smtp.gmail.com"
  127.  
  128.             e_mail = New MailMessage()
  129.             e_mail.From = New MailAddress("enestaendeblodgiving@gmail.com")
  130.             e_mail.To.Add(txtTil.Text)
  131.             e_mail.Subject = "Innkalling til blodbank"
  132.             e_mail.IsBodyHtml = False
  133.             e_mail.Body = txtMelding.Text 'teksten i textboxen vil bli sendt i mailen
  134.             Smtp_Server.Send(e_mail)
  135.             MsgBox(valgtbruker & " er innkalt til time den " & innkallingDato & " klokka " & innkallingTid & ". Det er sendt en mail for å informere giveren om dette.")
  136.  
  137.         Catch error_t As Exception
  138.             MsgBox(error_t.ToString)
  139.         End Try
  140.  
  141.  
  142.     End Sub
  143.  
  144.     Private Sub btnAvbryt_Click(sender As Object, e As EventArgs) Handles btnAvbryt.Click
  145.         Me.Close()
  146.         Ansatt.Show()
  147.     End Sub
  148.  
  149.     Private Sub btnHaster_Click(sender As Object, e As EventArgs) Handles btnHaster.Click
  150.         Dim valgtansatt = lbInnkalling.SelectedItem
  151.         Dim epostgiver As String = ""
  152.         Try     'Try/catch for å hindre at programmet krasjer dersom man trykker i listboxen uten å faktisk velge et navn
  153.             Dim linje = valgtansatt                 'Valget av ansatte går på fornan etternavn (Ali Nordmann), så for å bruke kombinasjonen av fornavn og etternavn
  154.             Dim linjeOppdelt = linje.Split(" ")    'til søk i databasen må de skilles fra hverandre
  155.             Dim navn = linjeOppdelt(0)
  156.             Dim fornavn = linjeOppdelt(0)
  157.             Dim etternavn = linjeOppdelt(1)
  158.  
  159.             Dim idag As Date = Date.Today()
  160.             Dim valgtbruker As String = lbInnkalling.SelectedItem
  161.  
  162.             Sporring("INSERT INTO bestill_time (bruker_id, dato, tid) VALUES ('" & idTilinnkalling & "', '" & konverterDato(idag) & "', '08:00');")
  163.  
  164.             melding = "Hei, " & valgtbruker & " dette er en HASTEINNKALLING fra blodbanken ved St Olav. Du er herved kalt inn til blodtapping. Møt opp ved blodbanken så FORT SOM MULIG! LIV STÅR PÅ SPILL!"
  165.  
  166.             Dim hentinfo As New DataTable
  167.             hentinfo = Sporring("select epost, bruker_id, mobiltlf FROM brukere where fornavn = '" & fornavn & "' and etternavn = '" & etternavn & "'")
  168.             For Each rad In hentinfo.Rows
  169.                 epostgiver = rad("epost")
  170.                 idTilinnkalling = rad("bruker_id")
  171.                 innkallingtlf = rad("mobiltlf")
  172.             Next
  173.         Catch
  174.         End Try
  175.  
  176.  
  177.         'samme koden som over for å sende mail.
  178.         Try
  179.             Dim smtp_server As New SmtpClient
  180.             Dim e_mail As New MailMessage()
  181.             Dim valgtbruker As String = lbInnkalling.SelectedItem
  182.  
  183.             smtp_server.UseDefaultCredentials = False
  184.             smtp_server.Credentials = New Net.NetworkCredential("enestaendeblodgiving@gmail.com", "babed01blod")
  185.             smtp_server.Port = 587
  186.             smtp_server.EnableSsl = True
  187.             smtp_server.Host = "smtp.gmail.com"
  188.  
  189.             e_mail = New MailMessage()
  190.             e_mail.From = New MailAddress("enestaendeblodgiving@gmail.com")
  191.             e_mail.To.Add(epostgiver)
  192.             e_mail.Subject = "HASTEINNKALLING BLODBANK"
  193.             e_mail.IsBodyHtml = False
  194.             e_mail.Body = melding
  195.             smtp_server.Send(e_mail)
  196.             MsgBox(valgtbruker & " er nå kalt inn, du må også ringe og varsle på tlf " & innkallingtlf)
  197.  
  198.         Catch error_t As Exception
  199.             MsgBox(error_t.ToString)
  200.         End Try
  201.     End Sub
  202.  
  203.     Private Sub btnSok_Click(sender As Object, e As EventArgs) Handles btnSok.Click
  204.         'søkefunksjon etter spesielle blodprodukter
  205.         abotyping = cbAbo.SelectedItem
  206.         rhdtyping = cbRhd.SelectedItem
  207.         lbInnkalling.Items.Clear()
  208.  
  209.         Dim idag As Date = Today
  210.         Dim sistetappingdato As New DataTable
  211.         sistetappingdato = Sporring("SELECT abotyping, rhdtyping, max(DATE_ADD(dato, interval 3 month)) AS dato, brukere.fornavn, brukere.etternavn, blodgiver_id  
  212.        FROM tapping INNER JOIN brukere ON brukere.bruker_id = tapping.blodgiver_id
  213.        WHERE abotyping = '" & abotyping & "' and rhdtyping = '" & rhdtyping & "' group by brukere.fornavn order by dato")
  214.         For Each rad In sistetappingdato.Rows
  215.  
  216.             sistetapping = rad("dato")      'På denne måten vil sistetapping bare ha verdien til den siste tappingen.
  217.             If dato(idag, sistetapping) = True Then
  218.                 lbInnkalling.Items.Add(rad("fornavn") & " " & rad("etternavn"))
  219.             End If
  220.         Next
  221.  
  222.     End Sub
  223.  
  224.     Private Sub btnNullstill_Click(sender As Object, e As EventArgs) Handles btnNullstill.Click
  225.  
  226.         'nullstiller tilbake til sånn det er når du laster innkallingsvinduet
  227.         lbInnkalling.Items.Clear()
  228.         Dim idag As Date = Today
  229.         Dim sistetappingdato As New DataTable
  230.         sistetappingdato = Sporring("SELECT max(DATE_ADD(dato, interval 3 month)) AS dato, brukere.fornavn, brukere.etternavn, blodgiver_id FROM tapping INNER JOIN brukere ON brukere.bruker_id = tapping.blodgiver_id group by brukere.fornavn order by dato")
  231.         For Each rad In sistetappingdato.Rows
  232.  
  233.             sistetapping = rad("dato")      'På denne måten vil sistetapping bare ha verdien til den siste tappingen.
  234.             If dato(idag, sistetapping) = True Then
  235.                 lbInnkalling.Items.Add(rad("fornavn") & " " & rad("etternavn"))
  236.             End If
  237.         Next
  238.         Dim ikkegittblod As New DataTable
  239.         ikkegittblod = Sporring("select bruker_id, fornavn, etternavn from brukere where bruker_id NOT IN (select blodgiver_id from tapping) and type = 'blodgiver'")
  240.         For Each rad In ikkegittblod.Rows
  241.             lbInnkalling.Items.Add(rad("fornavn") & " " & rad("etternavn"))
  242.         Next
  243.  
  244.     End Sub
  245.  
  246.  
  247. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement