using AdventureWorks.EntityLayer; using Common.Library; using System.Collections.ObjectModel; namespace AdventureWorks.ViewModelLayer; public class UserViewModel : ViewModelBase { #region Constructors public UserViewModel() : base() { } public UserViewModel(IRepository repo) : base() { Repository = repo; } public UserViewModel(IRepository repo, IRepository phoneRepo) { Repository = repo; _PhoneTypeRepository = phoneRepo; } #endregion #region Private Variables private User? _UserObject = new(); private ObservableCollection _UserList = new(); private readonly IRepository? Repository; private readonly IRepository? _PhoneTypeRepository; private ObservableCollection _PhoneTypesList = new(); #endregion #region public Properties public User? UserObject { get { return _UserObject; } set { _UserObject = value; RaisePropertyChanged(nameof(UserObject)); } } public ObservableCollection UserList { get { return _UserList; } set { _UserList = value; RaisePropertyChanged(nameof(UserList)); } } public ObservableCollection PhoneTypesList { get { return _PhoneTypesList; } set { _PhoneTypesList = value; RaisePropertyChanged(nameof(PhoneTypesList)); } } #endregion #region Get Method public ObservableCollection Get() { if (Repository != null) { UserList = new ObservableCollection(Repository.Get()); } return new(); } #endregion #region Get(id) Method public User? Get(int id) { try { if (Repository != null) { UserObject = Repository.Get(id); } else { UserObject = new User { UserId = id, LoginId = "SallyJones615", FirstName = "Sally", LastName = "Jones", Email = "sally@jones.com", Password = "password123", Phone = "555-1234", PhoneType = "Mobile", IsFullTime = true, IsEnrolledIn401k = false, IsEnrolledInFlexTime = false, IsEnrolledInHealthCare = true, IsEnrolledInHSA = false, IsActive = true, BirthDate = Convert.ToDateTime("1975-11-04"), StartTime = new TimeSpan(8, 0, 0) }; } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine($"Error in Get method: {ex.Message}"); } return UserObject; } #endregion #region GetPhoneTypesMethod public ObservableCollection GetPhoneTypes() { if (_PhoneTypesList != null) { var list = _PhoneTypeRepository.Get(); PhoneTypesList = new ObservableCollection(list.Select(row => row.TypeDescription)); } return PhoneTypesList; } #endregion #region Save Method public virtual bool Save() { // System.Diagnostics.Debugger.Break(); return true; } #endregion }