12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using AvaloniaApplicationPersonalPage.Models;
- using Microsoft.EntityFrameworkCore;
- using ReactiveUI;
- namespace AvaloniaApplicationPersonalPage.ViewModels
- {
- public class PersonalPageViewModel : ReactiveObject
- {
- UserBaseContext myConnection; // поле для передаваемого объекта для обращения к БД
- LoginTable? currentUser; // поле для заполнения данных о пользователе
- string oldPassword; // для хранения пароля пользователя
- bool isPasswordChange = false; // нужно ли показывать поля для изменения пароля (изначально они будут скрыты)
- public PersonalPageViewModel(UserBaseContext myConnection, int id)
- {
- this.myConnection = myConnection; // заполнение поля для обращения к БД
- // нахождение всей информации о пользователе по переданному id:
- CurrentUser = myConnection.LoginTables.Include(x=>x.IdRoleNavigation).Include(x=>x.UserTable.IdGenderNavigation).FirstOrDefault(x => x.IdLogin == id);
- oldPassword = currentUser.Password; // заполнение поля с паролем паролем найденного пользователя
- }
- public LoginTable? CurrentUser { get => currentUser; set => currentUser = value; } // свойсво для обращения к данным о пользователе в БД
- // свойство для вывода даты на экран и перезаписи даты в БД, если пользователь ее изменит
- public string DR
- {
- get => CurrentUser.UserTable.Date.ToString(); // считываем дату из БД
- set => CurrentUser.UserTable.Date = DateTime.Parse(value); // изменяем поле даты в БД на выбранное пользователем значение
- }
- public List<string> Genders =>myConnection.GenderTables.Select(x=>x.Gender).ToList(); // свойство дял заполнения списка с возможными значениями полов
- // свойство для вывода поля пользователя на экран и его изменения
- public string SelectedGender
- {
- get => CurrentUser.UserTable.IdGenderNavigation.Gender; // считываем пол из БД
- set => CurrentUser.UserTable.IdGender = myConnection.GenderTables.FirstOrDefault(x => x.Gender == value).IdGender; // изменяем поле с полом пользователя в таблице БД
- }
- public string Message { get => message; set => this.RaiseAndSetIfChanged(ref message,value); } // для вывода сообщении об изменении сохранений
- public string RepeatPassword { get => repeatPassword; set => repeatPassword = value; } // свойство, привязанное к полю для ввода повторения пароля
- public bool IsPasswordChange { get => isPasswordChange; set => this.RaiseAndSetIfChanged(ref isPasswordChange,value); } // свойство, привязанное к флажку, показывающему (или не показывающему) панель для изменения пароля
- string message; // поля для сообщения
- string repeatPassword; // поля для повторения
-
- public void SaveData() // метод для сохранения изменений
- {
- if (CurrentUser.Password == null || CurrentUser.Password == "") CurrentUser.Password = oldPassword; // если поля для изменения пароля не заполнены, то в базе оставляем старый пароль
- if (IsPasswordChange==(CurrentUser.Password == repeatPassword))
- {
- myConnection.SaveChanges();
- Message = "Изменения сохранены";
- }
- else
- {
- Message = "Пароли не совпадают";
- }
-
- }
- }
- }
|