$re = '/^/';
$str = 'class FinUrad
{
public string Kod { get; set; }
public string Nazev { get; set; }
public override string ToString()
{
return Nazev;
}
}
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Margin="0,0,0,10">
<TextBlock Text="Jméno:"/>
<TextBox x:Name="txtJmeno" Margin="0,5,0,10"/>
<TextBlock Text="Rodné číslo (XXXXXX/XXXX):"/>
<TextBox x:Name="txtRC" Margin="0,5,0,10"/>
<TextBlock Text="Finanční úřad:"/>
<ComboBox x:Name="comboFinUrady" DisplayMemberPath="Nazev" Margin="0,5,0,10"/>
<TextBlock Text="Zpráva:"/>
<TextBox x:Name="txtZprava" AcceptsReturn="True" Height="80" Margin="0,5,0,10"/>
</StackPanel>
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="btnZobrazitHistorii" Content="Zobrazit historii" Click="btnZobrazitHistorii_Click"/>
<Button x:Name="btnOdeslat" Content="Odeslat" Click="btnOdeslat_Click"/>
</StackPanel>
</Grid>
public partial class MainWindow : Window
{
private ObservableCollection<FinUrad> urady = new();
private const string ApiUrl = "https://csharp.janjanousek.cz/api/financni-urady/";
private const string ApiKey = "VSB";
public MainWindow()
{
InitializeComponent();
LoadFinUrady();
}
private async void LoadFinUrady()
{
while (true)
{
try
{
using HttpClient client = new();
client.DefaultRequestHeaders.Add("x-api-key", ApiKey);
var response = await client.GetAsync(ApiUrl);
if (response.StatusCode == System.Net.HttpStatusCode.TooManyRequests)
{
if (response.Headers.TryGetValues("Retry-After", out var values))
{
int secods = int.Parse(values.First());
await Task.Delay(secods * 1000);
continue;
}
}
response.EnsureSuccessStatusCode();
var xmlString = await response.Content.ReadAsStringAsync();
var xml = XDocument.Parse(xmlString);
var polozky = xml.Descendants("POLOZKA");
foreach (var elem in polozky)
{
string id = elem.Element("CHODNOTA")?.Value;
string name = elem.Element("ZKRTEXT")?.Value;
if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(name))
{
urady.Add(new FinUrad { Kod = id, Nazev = name });
}
}
comboFinUrady.ItemsSource = urady;
comboFinUrady.SelectedIndex = 0;
break;
}
catch (Exception ex)
{
MessageBox.Show("Chyba pri nacitani financnich uradu: " + ex.Message);
break;
}
}
}
private void btnOdeslat_Click(object sender, RoutedEventArgs e)
{
string jmeno = txtJmeno.Text;
string rc = txtRC.Text;
var urad = comboFinUrady.SelectedItem as FinUrad;
string zprava = txtZprava.Text;
if(string.IsNullOrEmpty(jmeno) || string.IsNullOrEmpty(rc) || urad == null || string.IsNullOrEmpty(zprava) || zprava.Length < 10)
{
MessageBox.Show("Všechna pole musí být vyplněna a zpráva musí mít alespoň 10 znaků.");
return;
}
if(!System.Text.RegularExpressions.Regex.IsMatch(rc, @"^\\d{6}/\\d{4}$"))
{
MessageBox.Show("Rodné číslo musí mít formát 123456/1234.");
return;
}
SaveToDatabase(jmeno, rc, urad.Kod, urad.Nazev, zprava);
new ResultsWindow().Show();
}
private void btnZobrazitHistorii_Click(object sender, RoutedEventArgs e)
{
new ResultsWindow().Show();
}
private void SaveToDatabase(string jmeno, string rc, string idUrad, string nazevUrad, string zprava)
{
string dbPath = "formulare.db";
if(!File.Exists(dbPath))
{
using var connection = new SqliteConnection($"Data Source={dbPath}");
connection.Open();
var cmd = connection.CreateCommand();
cmd.CommandText = @"
CREATE TABLE IF NOT EXISTS Formulare (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Jmeno TEXT NOT NULL,
RodneCislo TEXT NOT NULL,
IdUrad TEXT NOT NULL,
NazevUrad TEXT NOT NULL,
Zprava TEXT NOT NULL
)";
cmd.ExecuteNonQuery();
}
using var conn = new SqliteConnection($"Data Source={dbPath}");
conn.Open();
var insert = conn.CreateCommand();
insert.CommandText = @"
INSERT INTO Formulare (Jmeno, RodneCislo, IdUrad, NazevUrad, Zprava)
VALUES ($jmeno, $rc, $idUrad, $nazevUrad, $zprava)";
insert.Parameters.AddWithValue("$jmeno", jmeno);
insert.Parameters.AddWithValue("$rc", rc);
insert.Parameters.AddWithValue("$idUrad", idUrad);
insert.Parameters.AddWithValue("$nazevUrad", nazevUrad);
insert.Parameters.AddWithValue("$zprava", zprava);
insert.ExecuteNonQuery();
}
}
<Grid>
<ListBox x:Name="lstHistorie"/>
</Grid>
public partial class ResultsWindow : Window
{
public ResultsWindow()
{
InitializeComponent();
LoadData();
}
private void LoadData()
{
string dbPath = "formulare.db";
if (!File.Exists(dbPath)) return;
using var conn = new SqliteConnection($"Data Source={dbPath}");
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = @"
SELECT Jmeno, RodneCislo, IdUrad, NazevUrad, Zprava
FROM Formulare";
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
lstHistorie.Items.Add($"Jméno: {reader.GetString(0)}, RČ: {reader.GetString(1)}, Úřad: {reader.GetString(2)}, Zpráva: {reader.GetString(3)}");
}
}
}';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php