RegistrationPageViewModel.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Avalonia.Controls;
  2. using FinancialManagement.Models;
  3. using ReactiveUI;
  4. using FinancialManagement.Views;
  5. using FinancialManagement.ViewModels;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Text.RegularExpressions;
  11. using System.Threading.Tasks;
  12. namespace FinancialManagement.ViewModels
  13. {
  14. public class RegistrationPageViewModel : ReactiveObject
  15. {
  16. ShmelevTeamContext teamContext;
  17. User newUser;
  18. string repeatInputPassword = "";
  19. string message = "";
  20. char? passwordChar = '*';
  21. public RegistrationPageViewModel()
  22. {
  23. }
  24. public RegistrationPageViewModel(ShmelevTeamContext teamContext)
  25. {
  26. this.teamContext = teamContext;
  27. NewUser = new User();
  28. }
  29. public string RepeatInputPassword { get => repeatInputPassword; set => repeatInputPassword = value; }
  30. public string Message { get => message; set => this.RaiseAndSetIfChanged(ref message, value); }
  31. public User NewUser { get => newUser; set => newUser = value; }
  32. public char? PasswordChar { get => passwordChar; set => this.RaiseAndSetIfChanged(ref passwordChar, value); }
  33. public User AddUserInDataBase()
  34. {
  35. if (string.IsNullOrEmpty(NewUser.Login) || string.IsNullOrEmpty(NewUser.Username) || string.IsNullOrEmpty(NewUser.Password) || string.IsNullOrEmpty(RepeatInputPassword) || string.IsNullOrEmpty(NewUser.Phone))
  36. {
  37. Message = "Заполните все поля";
  38. return null;
  39. }
  40. else if (!Regex.IsMatch(NewUser.Phone, @"^(?:\+7|8)\d{10}$"))
  41. {
  42. Message = "Введите корректный телефон";
  43. return null;
  44. }
  45. else if (NewUser.Password != RepeatInputPassword)
  46. {
  47. Message = "Пароли не совпадают.\nВведите корректные данные";
  48. return null;
  49. }
  50. else if (!Regex.IsMatch(NewUser.Password, @"\S{6,}"))
  51. {
  52. Message = "Ваш пароль не должен быть \nменьше 6 символов";
  53. return null;
  54. }
  55. else if (!Regex.IsMatch(NewUser.Password, @"\w*[0-9]\w*"))
  56. {
  57. Message = "У вашего пароля нет цифры";
  58. return null;
  59. }
  60. else if (teamContext.Users.FirstOrDefault(x => x.Login == NewUser.Login) != null)
  61. {
  62. Message = "Такой пользователь существует\nВведите другой логин";
  63. return null;
  64. }
  65. else
  66. {
  67. teamContext.Add(NewUser);
  68. teamContext.SaveChanges();
  69. return NewUser;
  70. }
  71. }
  72. public UserControl LoadPageAuthorization()
  73. {
  74. return new AuthorizationPage();
  75. }
  76. }
  77. }