public User CreateCopy(User user) { return new User() { AccessProfileIds = user.AccessProfileIds.ToList(), AccessProfileIdsUnevenWeeks = user.AccessProfileIdsUnevenWeeks.ToList(), Id = user.Id, IsLocked = user.IsLocked, Name = user.Name, NfcTag = user.NfcTag, Password = user.Password, PasswordClear = user.PasswordClear, SurName = user.SurName, IsShiftWorker = user.IsShiftWorker }; }
public UserViewModel(User user) { this.Model = user; AccessProfileIds.CollectionChanged += AccessProfileIdsOnCollectionChanged; _dirtyFlag = new DirtyState(); _dirtyFlag.SetComparer(() => DirtyStateBuilder.BuildComparisonString(this.Name, this.SurName, this.Password, this.NfcTag, this.IsLocked, this.IsShiftWorker, DirtyStateBuilder.BuildComparisonString(this.AccessProfileIds.Select(x => x.Model.Id).ToList()), DirtyStateBuilder.BuildComparisonString(this.AccessProfileIdsUnevenWeeks.Select(x => x.Model.Id).ToList()))); _nfcTagService.NfcTagCollectionChanged += (sender, args) => { this._availableNfcTags = null; RaisePropertyChanged("AvailableNfcTags"); RaisePropertyChanged("IsNfcTagAvailable"); }; }
public void SaveUserCreateNewTest() { var dataSource = new NFCAccessControlDataSources.XMLDataSource.XmlDataSource(); var user = new User(); user.Name = "asdasdasd"; user.NfcTag = "asdaasdgwesfasdfa"; user.IsLocked = true; user.PasswordClear = "asdawdjafgn"; user.SurName = "wqeqweqweqwe"; dataSource.SaveUser(user); }
public User CreateUser() { var user = new User(); user.AccessProfileIds = new List<string>(); user.AccessProfileIdsUnevenWeeks = new List<string>(); user.Id = Guid.NewGuid().ToString(); user.Name = String.Empty; user.NfcTag = String.Empty; user.IsLocked = false; user.SurName = String.Empty; user.IsShiftWorker = false; return user; }
public void RemoveUser(User user) { try { _nfcTagService.LockNfcTag(user.NfcTag); } catch (Exception e) { //todo: Logging here throw new Exception("Error during removal of the user.", e); } lock (_lock) { this._dataService.GetDataSource().DeleteUser(user); CollectionChanged(); } }
public bool HasCurrentlyAccess(User user) { // Chek if User is locked if (user.IsLocked) return false; var nfctag = _nfcTagService.GetNfcTag(user.NfcTag); // Check if assigned NFC Tag is locked if (nfctag == null || nfctag.IsLocked) return false; DateTime currently = DateTime.Now; if (user.IsShiftWorker) { DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; Calendar cal = dfi.Calendar; int calenderWeek = cal.GetWeekOfYear(currently, dfi.CalendarWeekRule, dfi.FirstDayOfWeek); if (calenderWeek%2 != 0) { // UNEVEN WEEKS ONLY foreach (var accessProfileIdUnevenWeek in user.AccessProfileIdsUnevenWeeks) { var profile = _accessProfileService.GetAccessProfile(accessProfileIdUnevenWeek); if (profile == null || DateTime.Compare(profile.ValidTill, currently) < 0) continue; // Access Profile Is Currently Valid foreach (var lockDay in profile.LockDays) { if (DateTime.Compare(currently, lockDay.StartTime) >= 0 && DateTime.Compare(currently, lockDay.EndTime) <= 0) continue; } // currently not in any lockday range WeekDay currentDayAccessRules = null; switch (currently.DayOfWeek) { case DayOfWeek.Monday: currentDayAccessRules = profile.MondayAccess; break; case DayOfWeek.Tuesday: currentDayAccessRules = profile.TuesdayAccess; break; case DayOfWeek.Wednesday: currentDayAccessRules = profile.WednesdayAccess; break; case DayOfWeek.Thursday: currentDayAccessRules = profile.ThursdayAccess; break; case DayOfWeek.Friday: currentDayAccessRules = profile.FridayAccess; break; case DayOfWeek.Saturday: currentDayAccessRules = profile.SaturdayAccess; break; case DayOfWeek.Sunday: currentDayAccessRules = profile.SundayAccess; break; } // Has Access in case current hour is within the given timeframe if (currentDayAccessRules != null && currentDayAccessRules.IsActive && currently.Hour > currentDayAccessRules.StartTime && currently.Hour < currentDayAccessRules.EndTime) return true; } return false; } } // EVEN WEEKS ONLY foreach (var accessProfileId in user.AccessProfileIds) { var profile = _accessProfileService.GetAccessProfile(accessProfileId); if (profile == null || DateTime.Compare(profile.ValidTill, currently) < 0) continue; var isLocked = false; // Access Profile Is Currently Valid foreach (var lockDay in profile.LockDays) { if (DateTime.Compare(currently, lockDay.StartTime) >= 0 && DateTime.Compare(currently, lockDay.EndTime) <= 0) isLocked = true; } // AccessProfile is Currently locked due to lockdays if (isLocked) continue; // currently not in any lockday range WeekDay currentDayAccessRules = null; switch (currently.DayOfWeek) { case DayOfWeek.Monday: currentDayAccessRules = profile.MondayAccess; break; case DayOfWeek.Tuesday: currentDayAccessRules = profile.TuesdayAccess; break; case DayOfWeek.Wednesday: currentDayAccessRules = profile.WednesdayAccess; break; case DayOfWeek.Thursday: currentDayAccessRules = profile.ThursdayAccess; break; case DayOfWeek.Friday: currentDayAccessRules = profile.FridayAccess; break; case DayOfWeek.Saturday: currentDayAccessRules = profile.SaturdayAccess; break; case DayOfWeek.Sunday: currentDayAccessRules = profile.SundayAccess; break; } // Has Access in case current hour is within the given timeframe if (currentDayAccessRules != null && currentDayAccessRules.IsActive && currently.Hour > currentDayAccessRules.StartTime && currently.Hour < currentDayAccessRules.EndTime) return true; } return false; }
public void EditUser(User user) { try { _nfcTagService.AssignNfcTagToUser(user.Id, user.NfcTag); } catch (Exception e) { //todo: Logging here throw new Exception("Error during the assignment of the selected nfc tag to the user.", e); } lock (_lock) { this._dataService.GetDataSource().SaveUser(user); CollectionChanged(); } }
public void DeleteUser(User user) { if (!Directory.Exists(UserPath)) throw new DirectoryNotFoundException("The User Directory is not valid."); var fileName = ConvertIdToFileName(UserPath, user.Id); try { if (File.Exists(fileName)) File.Delete(fileName); } catch (Exception e) { throw new Exception("An error occurred during the cleanup of the user file. Please try again.", e); } }
public void SaveUser(User user) { if (!Directory.Exists(UserPath)) throw new DirectoryNotFoundException("The User Directory is not valid."); if (String.IsNullOrEmpty(user.Id)) user.Id = Guid.NewGuid().ToString(); var fileName = ConvertIdToFileName(UserPath, user.Id); try { XmlSerializer mySerializer = new XmlSerializer(typeof(User)); using (StreamWriter myWriter = new StreamWriter(fileName)) { mySerializer.Serialize(myWriter, user); } SignXmlFile(fileName); } catch (Exception e) { throw new Exception("An error occurred during the save process. Please try again.", e); } }