using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using Npgsql;
namespace SportsTrainingApp.Activity
{
///
/// Interaction logic for formUpdActivity.xaml
///
public partial class formUpdActivity : Window
{
formActivity.Workout item;
public formUpdActivity(formActivity.Workout _item)
{
InitializeComponent();
item = _item;
FillFormFields(item);
}
private void FillFormFields(formActivity.Workout _item)
{
FillCbSports(cbSports);
for (int i = 0; i < cbSports.Items.Count; i++)
{
var sport = cbSports.Items[i] as SportType;
if (_item.Name == sport?.name.ToString())
{
cbSports.SelectedIndex = i;
}
}
dtPicker.SelectedDate = _item.Date;
tbDuration.Text = _item.Duration.ToString();
tbIntensivity.Text = _item.Intensity?.ToString();
tbNote.Text = _item.Notes?.ToString();
}
public class SportType
{
public int id { get; set; }
public string name { get; set; }
}
public void FillCbSports(ComboBox cb)
{
var items = GetData();
cbSports.ItemsSource = items;
cbSports.DisplayMemberPath = "name";
cbSports.SelectedValuePath = "id";
}
private List GetData()
{
var items = new List();
string query = "SELECT id, name FROM dbo.sports";
using (var connection = new NpgsqlConnection(formMain.connectionString))
{
connection.Open();
using (var command = new NpgsqlCommand(query, connection))
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
items.Add(new SportType
{
id = reader.GetInt32(0),
name = reader.GetString(1)
});
}
}
}
return items;
}
private void ButtonCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void ButtonUpd_Click(object sender, RoutedEventArgs e)
{
using (var conn = new NpgsqlConnection(formMain.connectionString))
{
conn.Open();
using(var cmd = new NpgsqlCommand(@$"UPDATE dbo.workouts
SET sport_id=@sport_id, date=@date, duration=@dur, intensity=@intensity, notes=@notes
WHERE id = {item.ID};", conn))
{
cmd.Parameters.AddWithValue("date", dtPicker.SelectedDate.Value);
cmd.Parameters.AddWithValue("sport_id", cbSports.SelectedValue);
cmd.Parameters.AddWithValue("dur", Convert.ToInt32(tbDuration.Text));
cmd.Parameters.AddWithValue("intensity", tbIntensivity.Text);
cmd.Parameters.AddWithValue("notes", tbNote.Text);
cmd.ExecuteNonQuery();
}
}
this.Close();
}
}
}