Skip to content
ludmila-mukhina
/
CatBaseProject
Public
Code
Issues
Pull requests
Actions
Projects
Security
Insights
CatBaseProject/WpfApp2/Pages/CreateCatPage.xaml.cs
@ludmila-mukhina
ludmila-mukhina Комментарии на страницах с просмотром данных о котах, добавлением и р…
…
1 contributor
213 lines (186 sloc) 10.1 KB
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp2
{
///
/// Логика взаимодействия для CreateCatPage.xaml
///
public partial class CreateCatPage : Page
{
CatTable CAT; // объект, в котором будет хранится данные о новом или отредактированном коте
bool flagUpdate = false; // для определения, создаем мы новый объект или редактируем старый
string path; // путь к картинке
public void uploadFields() // метод для заполнения списков
{
cmbBreed.ItemsSource = BaseClass.tBE.BreedTable.ToList();
cmbBreed.SelectedValuePath = "idBreed";
cmbBreed.DisplayMemberPath = "Breed";
cmbGender.ItemsSource = BaseClass.tBE.GenderTable.ToList();
cmbGender.SelectedValuePath = "idGender";
cmbGender.DisplayMemberPath = "Gender";
lbTraits.ItemsSource = BaseClass.tBE.TraitTable.ToList();
lbTraits.SelectedValuePath = "idTrait";
lbTraits.DisplayMemberPath = "Trait";
lbFeed.ItemsSource = BaseClass.tBE.FeedTable.ToList();
}
// конструктор для редактирования данных о коте ( с аргументом, который хранит информацию о коте, которого хотим отредактировать)
public CreateCatPage(CatTable cat)
{
InitializeComponent();
uploadFields(); // заполняем списки
flagUpdate = true; // отметка о том, что кота редактируем
CAT = cat; // ассоциируем выше созданный глобавльный объект с объектом в кострукторе для дальнейшего редактирования этих данных
tbName.Text = cat.CatName; // вывод имени кота
cmbBreed.SelectedIndex = cat.idBreed - 1; // вывод породы кота
dpBirthday.SelectedDate = cat.Birthday; // вывод даты рождения
cmbGender.SelectedIndex = cat.idGender - 1; // вывод пола
tbPassport.Text = cat.PassportTable.UniqueNumber; // вывод паспорта
tbColor.Text = cat.PassportTable.ColorCat; // вывод окраса
// находим черты характера того кота, которого мы редактируем:
List tC = BaseClass.tBE.TraitCat.Where(x => x.idCat == cat.idCat).ToList();
// цикл для выделения черт характера кота в общем списке:
foreach (TraitTable t in lbTraits.Items)
{
if (tC.FirstOrDefault(x => x.idTrait == t.idTrait) != null)
{
lbTraits.SelectedItems.Add(t);
}
}
// находим корма для того кота, которого мы редактируем
List fct = BaseClass.tBE.FeedCatTable.Where(x => x.idCat == cat.idCat).ToList();
// цикл для отображения кормов и их количества для кота:
foreach (FeedTable t in lbFeed.Items)
{
if (fct.FirstOrDefault(x => x.idFeed == t.idFeed) != null)
{
t.QM = fct.Count;
}
}
// вывод картинки
if (cat.Photo != null)
{
BitmapImage img = new BitmapImage(new Uri(cat.Photo, UriKind.RelativeOrAbsolute));
photoCat.Source = img;
}
}
// конструктор для создания нового кота (без аргументов)
public CreateCatPage()
{
InitializeComponent();
uploadFields(); // заполняем списки
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
try
{
// если флаг равен false, то создаем объект для добавления кота
if (flagUpdate == false)
{
CAT = new CatTable();
}
// заполняем поля таблицы CatTable
CAT.CatName = tbName.Text;
CAT.idBreed = cmbBreed.SelectedIndex + 1;
CAT.Birthday = Convert.ToDateTime(dpBirthday.SelectedDate);
CAT.idGender = cmbGender.SelectedIndex + 1;
CAT.Photo = path;
// если флаг равен false, то добавляем объект в базу
if (flagUpdate == false)
{
BaseClass.tBE.CatTable.Add(CAT);
}
// BaseClass.tBE.SaveChanges();
// Заполнение таблицы PassportTable
PassportTable pas = new PassportTable()
{
idCat = CAT.idCat,
UniqueNumber = tbPassport.Text,
ColorCat = tbColor.Text
};
// если флаг равен false, то добавляем объект в базу
if (flagUpdate == false)
{
BaseClass.tBE.PassportTable.Add(pas);
}
// BaseClass.tBE.SaveChanges();
// Для заполнения таблицы TraitsCats нужно организовать цикл, так как черт характера у кота может быть несколько
// Цикл будет организовывать по чертам характера, которые выделены в списке
// находим список черт характера кота:
List traits = BaseClass.tBE.TraitCat.Where(x => CAT.idCat == x.idCat).ToList();
// если список не пустой, удаляем из него все черты характера этого кота
if (traits.Count > 0)
{
foreach (TraitCat t in traits)
{
BaseClass.tBE.TraitCat.Remove(t);
}
}
// перезаписываем черты кота (или добавляем черты для нового кота)
foreach (TraitTable t in lbTraits.SelectedItems)
{
TraitCat TC = new TraitCat() // объект для записи в таблицу TraitsCat
{
idCat = CAT.idCat,
idTrait = t.idTrait
};
BaseClass.tBE.TraitCat.Add(TC);
}
// BaseClass.tBE.SaveChanges();
// Для заполнения таблицы Diets нужно организовать цикл, так как кормов у кота может быть несколько
// Цикл будет организовывать по всем кормам, которые есть в списке
// находим список с кормами для кота
List feed = BaseClass.tBE.FeedCatTable.Where(x => CAT.idCat == x.idCat).ToList();
// если список не пустой, удаляем из него все корма для этого кота
if (feed.Count > 0)
{
foreach (FeedCatTable t in feed)
{
BaseClass.tBE.FeedCatTable.Remove(t);
}
}
// перезаписываем корма для кота (или добавляем корма для нового кота)
foreach (FeedTable f in lbFeed.Items)
{
if (f.QM > 0)
{
FeedCatTable FCT = new FeedCatTable() // объект для записи в таблицу FeedCatTable
{
idCat = CAT.idCat,
idFeed = f.idFeed,
Count = f.QM
};
BaseClass.tBE.FeedCatTable.Add(FCT);
}
}
BaseClass.tBE.SaveChanges();
MessageBox.Show("Информация добавлена");
}
catch
{
MessageBox.Show("Что-то пошло не по плану");
}
}
private void btnPhto_Click(object sender, RoutedEventArgs e) // добавление фото кота с помощью диалогового окна
{
OpenFileDialog OFD = new OpenFileDialog(); // создаем объект диалогового окна
OFD.ShowDialog(); // открываем диалоговое окно
path = OFD.FileName; // извлекаем полный путь к картинке
string[] arrayPath = path.Split('\\'); // разделяем путь к картинке в массив
path = "\\" + arrayPath[arrayPath.Length - 2] + "\\" + arrayPath[arrayPath.Length - 1]; // записываем в бд путь, начиная с имени папки
// MessageBox.Show(path);
}
}
}
Footer
© 2023 GitHub, Inc.
Footer navigation
Terms
Privacy
Security
Status
Docs
Contact GitHub
Pricing
API
Training
Blog
About
CatBaseProject/CreateCatPage.xaml.cs at master · ludmila-mukhina/CatBaseProjectя данные о новнов