Все работает кроме авторизации
Оля Шапинская, сегодня в 3:27
Любить значит страдать но не любить тоже значит страдать
в файле модели(BaseModel.Context.cs)
пишем
C# |
1
2
3
4
5
6
7
8
9
| private static ToursBaseEntities _context;
public static ToursBaseEntities GetContext()
{
if (_context == null)
_context = new ToursBaseEntities();
return _context;
} |
|
В app.xaml прописываю стили
XML |
1
2
3
4
5
6
| <Style TargetType="Button">
<Setter Property="Margin" Value="5"/>
<Setter Property="Width" Value="175"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Background" Value="#FFFAC716"/>
</Style> |
|
Создаем новый класс для получения фрейма с главной формы, для переходов
C# |
1
2
3
4
| class Manager
{
public static Frame MainFrame { get; set; }
} |
|
потом делаю разметку
XML |
1
| <ComboBox SelectedItem="{Binding Country}" Grid.Column="1" Grid.Row="2" x:Name="ComboCountries" DisplayMemberPath="Name" /> |
|
в файле для добавления и редактирования это
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| private Hotel _currentHotel = new Hotel();
public AddEditPage(Hotel selectedHotel)
{
if(selectedHotel != null)
{
_currentHotel = selectedHotel;
}
InitializeComponent();
DataContext = _currentHotel;
ComboCountries.ItemsSource = Home.GetContext().Country.ToList();
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
StringBuilder errors = new StringBuilder();
if (string.IsNullOrWhiteSpace(_currentHotel.Name))
errors.AppendLine("Введите название отеля");
if (_currentHotel.CountOfStars < 1 || _currentHotel.CountOfStars > 5)
errors.AppendLine("Введите число от 1 до 5");
if (_currentHotel.Country == null)
errors.AppendLine("Выберите страну");
if (errors.Length>0)
{
MessageBox.Show(errors.ToString());return;
}
if (_currentHotel.Id == 0)
Home.GetContext().Hotel.Add(_currentHotel);
try
{
Home.GetContext().SaveChanges();
MessageBox.Show("Информация успешно сохранена");
Manager.MainFrame.GoBack();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
} |
|
далее это для логический в текстовый(пишем в класс этой таблицы)
C# |
1
2
3
4
5
6
7
8
| <TextBlock Text="{Binding ActualText}"/>
public string ActualText
{
get
{
return (IsActual) ? "Актуален" : "Завершен";
}
} |
|
А это текст для главной
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public MainWindow()
{
InitializeComponent();
MainFrame.Navigate(new TourPage());
Manager.MainFrame = MainFrame;
}
private void btnBack_Click(object sender, RoutedEventArgs e)
{
Manager.MainFrame.GoBack();
}
private void MainFrame_ContentRendered(object sender, EventArgs e)
{
if (MainFrame.CanGoBack)
{
btnBack.Visibility = Visibility.Visible;
}
else
btnBack.Visibility = Visibility.Hidden;
} |
|
Для формы с удалением редактированием и добавлением
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| private void btnEdit_Click(object sender, RoutedEventArgs e)
{
Manager.MainFrame.Navigate(new AddEditPage((sender as Button).DataContext as Hotel));
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
Manager.MainFrame.Navigate(new AddEditPage(null));
}
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
var hotelsForRemoving = DGridHotels.SelectedItems.Cast<Hotel>().ToList();
if (MessageBox.Show($" Вы точно хотите удалить следующие {hotelsForRemoving.Count()} элементов", "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
try {
Home.GetContext().SaveChanges();
MessageBox.Show("Информация удалена");
DGridHotels.ItemsSource = Home.GetContext().Hotel.ToList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
private void Page_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (Visibility == Visibility.Visible)
{
Home.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload());
DGridHotels.ItemsSource = Home.GetContext().Hotel.ToList();
}
} |
|
Поиск информации реальное время
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| public TourPage()
{
InitializeComponent();
var alltypes = Home.GetContext().Type.ToList(); //но тут в разметке DisplayMemberPath="Name"
alltypes.Insert(0, new Type
{
Name = "Все типы"
});
ComboType.ItemsSource = alltypes;
CheckActual.IsChecked =true;
ComboType.SelectedIndex = 0;
UpdateTours();
}
private void UpdateTours()
{
var currentTours = Home.GetContext().Tour.ToList();
if (ComboType.SelectedIndex > 0)
currentTours = currentTours.Where(p => p.Type.Contains(ComboType.SelectedItem as Type)).ToList();
currentTours = currentTours.Where(p => p.Name.ToLower().Contains(TBoxSearch.Text.ToLower())).ToList();
if (CheckActual.IsChecked.Value)
currentTours = currentTours.Where(p => p.IsActual).ToList();
LViewTours.ItemsSource = currentTours.OrderBy(p => p.TicketCount).ToList();
}
private void TBoxSearch_TextChanged(object sender, TextChangedEventArgs e)
{
UpdateTours();
} |
|
А для данных это
Нормализация данных
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
var filePath = File.ReadAllLines(@"C:\Users\Popka\Desktop\asd.txt");
var image = Directory.GetFiles(@"C:\Users\Popka\Downloads\drive-download-20201206T091339Z-001\Session 1-20201206T064102Z-001\Session 1");
using (Model1 d = new Model1())
{
foreach (var line in filePath)
{
var data = line.Split('\t');
User user = new User
{
name = data[1],
login = data[2],
password = data[3],
lastenter = DateTime.Parse(data[4]),
type = int.Parse(data[6])
};
d.User.Add(user);
d.SaveChanges();
string idService = data[5];
string i;
int a;
foreach(string s in idService.Split(','))
{
i = string.Concat(s.Where(x => int.TryParse(x.ToString(), out a)));
d.Service_User.Add(new Service_User { idUser = user.id, idService = int.Parse(i)});
}
d.SaveChanges();
}
} |
|
и для таймштампа в ячеку формулу =(D2/86400)+ДАТА(1970;1;1)