Ejemplo n.º 1
0
        /// <summary>
        /// Persists Employee model-wrapper object data to the data source.
        /// </summary>
        /// <param name="employee">Employee model-wrapper object</param>
        /// <returns>Primary key of newly persisted employee model-wrapper data</returns>
        public async Task SaveEmployeeAsync(EmployeeWrapper employee)
        {
            if (!employee.IsChanged)
            {
                return;
            }

            if (await _databaseService.ExistsAsync("employee", new Dictionary <string, dynamic>
            {
                { "employee_id", employee.Id }
            }))
            {
                await _databaseService.UpdateRowAsync("employee", new Dictionary <string, dynamic>
                {
                    { "first_name", employee.FirstName },
                    { "last_name", employee.LastName }
                }, new Dictionary <string, dynamic>
                {
                    { "employee_id", employee.Id }
                });
            }
            else
            {
                employee.Id = Convert.ToInt32(await _databaseService.InsertRowAsync("employee", new Dictionary <string, dynamic>()
                {
                    { "first_name", employee.FirstName },
                    { "last_name", employee.LastName }
                }));
            }

            await SaveAddressAsync(employee);
            await SaveEmailAsync(employee);
        }
Ejemplo n.º 2
0
        private async Task SaveAddressAsync(EmployeeWrapper employee)
        {
            if (!employee.Address.IsChanged)
            {
                return;
            }

            if (await _databaseService.ExistsAsync(tableName: "address", whereConditions: new Dictionary <string, dynamic>
            {
                { "address_id", employee.Address.Id }
            }))
            {
                await _databaseService.UpdateRowAsync(tableName : "address", columnValuePairs : new Dictionary <string, dynamic>
                {
                    { "number", employee.Address.Number },
                    { "street", employee.Address.Street },
                    { "city", employee.Address.City }
                }, whereConditions : new Dictionary <string, dynamic>
                {
                    { "address_id", employee.Address.Id }
                });
            }
            else
            {
                employee.Id = Convert.ToInt32(await _databaseService.InsertRowAsync(tableName: "address", columnValuePairs: new Dictionary <string, dynamic>()
                {
                    { "number", employee.Address.Number },
                    { "street", employee.Address.Street },
                    { "city", employee.Address.City },
                    { "employee_id", employee.Id }
                }));
            }
        }
        private void LoadEmployee(int employeeId)
        {
            var employee = employeeId != 0 ? _employeeRepository.GetById(employeeId) : new Employee();

            Employee = new EmployeeWrapper(employee);
            if (employeeId == 0)
            {
                _employeeRepository.Add(employee);
            }


            Employee.PropertyChanged += (s, e) =>
            {
                if (!IsDirty)
                {
                    IsDirty = _companyRepository.HasChanges();
                    SaveCommand.RaiseCanExecuteChanged();
                }
                if (e.PropertyName == nameof(Employee.FirstName) ||
                    e.PropertyName == nameof(Employee.LastName) ||
                    e.PropertyName == nameof(Employee.CompanyId))
                {
                    IsDirty = _employeeRepository.HasChanges();
                    SaveCommand.RaiseCanExecuteChanged();
                }
            };
        }
        public void ShouldInitializeEmailsProperty()
        {
            var wrapper = new EmployeeWrapper(_employee);

            Assert.IsNotNull(wrapper.Emails);
            CheckIfModelEmailsCollectionIsInSync(wrapper);
        }
        public void ShouldBeInSyncAfterClearingEmails()
        {
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.Emails.Clear();
            CheckIfModelEmailsCollectionIsInSync(wrapper);
        }
        public void ShouldInitializeAddressProperty()
        {
            var wrapper = new EmployeeWrapper(_employee);

            Assert.IsNotNull(wrapper.Address);
            Assert.AreEqual(_employee.Address, wrapper.Address.Model);
        }
Ejemplo n.º 7
0
        public void ShouldSetValueOfUnderlyingModelProperty()
        {
            var          wrapper   = new EmployeeWrapper(_employee);
            const string firstName = "gHwo3";

            wrapper.FirstName = firstName;
            Assert.AreEqual(firstName, _employee.FirstName);
        }
        public void ShouldBeInSyncAfterAddingEmail()
        {
            _employee.Emails.Remove(_email);
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.Emails.Add(new EmailWrapper(_email));
            CheckIfModelEmailsCollectionIsInSync(wrapper);
        }
        public void ShouldBeInSyncAfterRemovingEmail()
        {
            var wrapper       = new EmployeeWrapper(_employee);
            var emailToRemove = wrapper.Emails.Single(ew => ew.Model == _email);

            wrapper.Emails.Remove(emailToRemove);
            CheckIfModelEmailsCollectionIsInSync(wrapper);
        }
Ejemplo n.º 10
0
        public void ShouldStoreOriginalValue()
        {
            var employeeWrapper = new EmployeeWrapper(_employee);

            Assert.AreEqual(ChangeTrackingSimpleProperties.FirstName, employeeWrapper.FirstNameOriginalValue);

            employeeWrapper.FirstName = "different first name";
            Assert.AreEqual(ChangeTrackingSimpleProperties.FirstName, employeeWrapper.FirstNameOriginalValue);
        }
        public void ShouldStoreOriginalValue()
        {
            var wrapper = new EmployeeWrapper(_employee);

            Assert.AreEqual("Van", wrapper.FirstNameOriginalValue);

            wrapper.FirstName = "Thien";
            Assert.AreEqual("Van", wrapper.FirstNameOriginalValue);
        }
Ejemplo n.º 12
0
        public void ShouldSetIsChanged()
        {
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.Address.City = "different city";
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.Address.City = ChangeTrackingComplexProperties.City;
            Assert.IsFalse(wrapper.IsChanged);
        }
Ejemplo n.º 13
0
 public void ShouldThrowArgumentNullExceptionIfModelIsNull()
 {
     try
     {
         var wrapper = new EmployeeWrapper(null);
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("model", ex.ParamName);
         throw;
     }
 }
Ejemplo n.º 14
0
        public void ShouldSetIsChanged()
        {
            var wrapper = new EmployeeWrapper(_employee);

            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
            wrapper.FirstName = "different first name";
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);
            wrapper.FirstName = ChangeTrackingSimpleProperties.FirstName;
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
Ejemplo n.º 15
0
 public void ShouldThrowArgumentNullExceptionIfModelIsNull()
 {
     _employee = null;
     try
     {
         var wrapper = new EmployeeWrapper(_employee);
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("model", ex.ParamName);
         throw;
     }
 }
Ejemplo n.º 16
0
        public void ShouldRejectChanges()
        {
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.Address.City = "different city";
            Assert.AreEqual(ChangeTrackingComplexProperties.City, wrapper.Address.CityOriginalValue);

            wrapper.RejectChanges();

            Assert.IsFalse(wrapper.IsChanged);
            Assert.AreEqual(ChangeTrackingComplexProperties.City, wrapper.Address.City);
            Assert.AreEqual(ChangeTrackingComplexProperties.City, wrapper.Address.CityOriginalValue);
        }
        void ExecuteAddEmployeeCommand()
        {
            var employee = new Employee
            {
                FirstName = FirstName,
                LastName  = LastName
            };
            var employeeWrapper = new EmployeeWrapper(employee);

            Employees.Add(employeeWrapper);

            _dataService.AddEmploee(employeeWrapper.Model);
        }
 public void ShouldNotRaisePropertyChangedEventIfPropertyIsSetToSameValue()
 {
     var fired = false;
     var wrapper = new EmployeeWrapper(_employee);
     wrapper.PropertyChanged += (s, e) =>
     {
         if (e.PropertyName == "FirstName")
         {
             fired = true;
         }
     };
     wrapper.FirstName = "Ahmed";
     Assert.IsFalse(fired);
 }
Ejemplo n.º 19
0
 private void SetSelectedItem(EmployeeWrapper employeeWrapper)
 {
     SelectedItem = employeeWrapper;
     SelectedItem.PropertyChanged += (s, e) =>
     {
         if (e.PropertyName == nameof(SelectedItem.IsChanged) ||
             e.PropertyName == nameof(SelectedItem.IsValid))
         {
             SaveCommand.RaiseCanExecuteChanged();
             ResetCommand.RaiseCanExecuteChanged();
             _eventAggregator.GetEvent <ModelIsChangedEvent>().Publish(SelectedItem.IsChanged);//Notify the mainwindow that there are changes, to prompt user not to close window.
         }
     };
 }
 public void ShouldRaisePropertyChangedEventOnPropertyChange()
 {
     var fired = false;
     var wrapper = new EmployeeWrapper(_employee);
     wrapper.PropertyChanged += (s, e) =>
     {
         if (e.PropertyName == "FirstName")
         {
             fired = true;
         }
     };
     wrapper.FirstName = "Julia";
     Assert.IsTrue(fired);
 }
        public void ShouldSetIsChanged()
        {
            var wrapper = new EmployeeWrapper(_employee);

            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);

            wrapper.FirstName = "Thien";
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.FirstName = "Van";
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
Ejemplo n.º 22
0
        public void ShouldNotRaisePropertyChangedEventIfPropertyIsSetToSameValue()
        {
            var fired   = false;
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "FirstName")
                {
                    fired = true;
                }
            };
            wrapper.FirstName = "Van";
            Assert.IsFalse(fired);
        }
Ejemplo n.º 23
0
 private void OnLogin(object sender, EmployeeWrapper user)
 {
     _loggedIn = user.EmployeeToWrap;
     LoginControl.Visibility = Visibility.Hidden;
     if (_loggedIn.Role == 1)
     {
         CashierControl.Initialize(Services, _loggedIn);
         CashierControl.Visibility = Visibility.Visible;
     }
     else
     {
         ManagerControl.Initialize(Services, _loggedIn);
         ManagerControl.Visibility = Visibility.Visible;
     }
 }
        public void ShouldRaisePropertyChangedEventForIsChanged()
        {
            var fired   = false;
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(wrapper.IsChanged))
                {
                    fired = true;
                }
            };
            wrapper.FirstName = "Thien";
            Assert.IsTrue(fired);
        }
Ejemplo n.º 25
0
        public void ShouldNotRaisePropertyChangedEventOnPropertySetToOriginalValue()
        {
            var eventFired = false;

            var wrapper = new EmployeeWrapper(_employee);

            wrapper.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName.Equals(nameof(wrapper.FirstName)))
                {
                    eventFired = true;
                }
            };
            wrapper.FirstName = FirstName;
            Assert.IsFalse(eventFired);
        }
Ejemplo n.º 26
0
        public void ShouldRaisePropertyChangedEventOnPropertyChange()
        {
            var eventFired = false;

            var wrapper = new EmployeeWrapper(_employee);

            wrapper.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName.Equals(nameof(wrapper.FirstName)))
                {
                    eventFired = true;
                }
            };
            wrapper.FirstName = "something different";
            Assert.IsTrue(eventFired);
        }
Ejemplo n.º 27
0
 public async Task DeleteEmployeeAsync(EmployeeWrapper employee)
 {
     if (await _databaseService.ExistsAsync("employee", new Dictionary <string, dynamic>
     {
         { "employee_id", employee.Id }
     }))
     {
         await _databaseService.UpdateRowAsync("employee", new Dictionary <string, dynamic>
         {
             { "is_deleted", 1 }
         }, new Dictionary <string, dynamic>
         {
             { "employee_id", employee.Id }
         });
     }
 }
Ejemplo n.º 28
0
        public void ShouldRaisePropertyChangedEventForIsChanged()
        {
            var eventFired = false;

            var wrapper = new EmployeeWrapper(_employee);

            wrapper.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName.Equals(nameof(wrapper.IsChanged)))
                {
                    eventFired = true;
                }
            };
            wrapper.Address.City = "different city";
            Assert.IsTrue(eventFired);
        }
Ejemplo n.º 29
0
 private void InitializeEmployee(Employee employee)
 {
     Employee = new EmployeeWrapper(employee);
     Employee.PropertyChanged += (s, e) =>
     {
         if (!HasChanges)
         {
             HasChanges = _personRepository.HasChanges();
         }
         if (e.PropertyName == nameof(Employee.HasErrors))
         {
             ((DelegateCommand <PasswordBox>)SaveCommand).RaiseCanExecuteChanged();
         }
     };
     ((DelegateCommand <PasswordBox>)SaveCommand).RaiseCanExecuteChanged();
 }
        public void ShouldBeValidAgainWhenFirstNameChanged()
        {
            var wrapper = new EmployeeWrapper(_employee);
            wrapper.FirstName = "";

            Assert.IsFalse(wrapper.IsValid);

            wrapper.FirstName = "ab";
            Assert.IsFalse(wrapper.IsValid);

            wrapper.FirstName = "Ahmed";
            Assert.IsTrue(wrapper.IsValid);

            var emailsErrors = wrapper.GetErrors("FirstName").Cast<string>().ToList();
            Assert.AreEqual(0, emailsErrors.Count);

        }
 private void WrapEmployee(Employee emp)
 {
     if (emp.EntityPersonKey == 0)
     {
         GetNewEmployeeAttributes(emp);
     }
     CurrentEmployee = new EmployeeWrapper(emp);
     CurrentEmployee.PropertyChanged += Context_PropertyChanged;
     if (emp.Addresses.Count > 0)
     {
         DefaultAddress = new AddressWrapper(emp.Addresses[0]);
     }
     else
     {
         DefaultAddress = new AddressWrapper(new Address());
     }
 }
Ejemplo n.º 32
0
        public void ShouldAcceptChanges()
        {
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.FirstName = "something different";
            Assert.AreEqual("something different", wrapper.FirstName);
            Assert.AreEqual(ChangeTrackingSimpleProperties.FirstName, wrapper.FirstNameOriginalValue);
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.AcceptChanges();

            Assert.AreEqual("something different", wrapper.FirstName);
            Assert.AreEqual("something different", wrapper.FirstNameOriginalValue);
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
        public void ShouldRejectChanges()
        {
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.FirstName = "Thien";
            Assert.AreEqual("Thien", wrapper.FirstName);
            Assert.AreEqual("Van", wrapper.FirstNameOriginalValue);
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.RejectChanges();

            Assert.AreEqual("Van", wrapper.FirstName);
            Assert.AreEqual("Van", wrapper.FirstNameOriginalValue);
            Assert.IsFalse(wrapper.FirstNameIsChanged);
            Assert.IsFalse(wrapper.IsChanged);
        }
        public void ShouldAcceptChanges()
        {
            var wrapper = new EmployeeWrapper(_employee);

            wrapper.FirstName = "Thien";
            Assert.AreEqual("Thien", wrapper.FirstName);
            Assert.AreEqual("Van", wrapper.FirstNameOriginalValue);
            Assert.IsTrue(wrapper.FirstNameIsChanged);
            Assert.IsTrue(wrapper.IsChanged);

            wrapper.AcceptChanges();

            Assert.AreEqual("Thien", wrapper.FirstName);
            Assert.AreEqual("Thien", wrapper.FirstNameOriginalValue); //Once accept everything is wiped out, so FirstNameOriginalValue points to FirstName current value.
            Assert.IsFalse(wrapper.FirstNameIsChanged);               //Once changes has been accepted, reset the IsChanges for all property.
            Assert.IsFalse(wrapper.IsChanged);                        //Reset the model IsChange to false, but once AcceptChanges() run, all model property has been updated.
        }
        public EmployeeViewModel Load(int? employeeId = null)
        {
            var employee = employeeId.HasValue
                ? _employeeService.GetEmployeeById(employeeId.Value)
                : new Employee();

            Employee = new EmployeeWrapper(employee);
            Employee.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == "IsChanged"
                    || e.PropertyName == "IsValid")
                {
                    InvalidateCommands();
                }
            };

            InvalidateCommands();

            return this;
        }
 public void ShouldIntializeWithoutProblems()
 {
     var wrapper = new EmployeeWrapper(_employee);
     Assert.IsTrue(wrapper.IsValid);
 }
Ejemplo n.º 37
0
 public void ShouldContainModelInModelProperty()
 {
     var wrapper = new EmployeeWrapper(_employee);
     Assert.AreEqual(_employee, wrapper.Model);
 }
Ejemplo n.º 38
0
 public void ShouldSetValueOfUnderlyingModelProperty()
 {
     var wrapper = new EmployeeWrapper(_employee);
     wrapper.FirstName = "Ragheb";
     Assert.AreEqual("Ragheb", _employee.FirstName);
 }
Ejemplo n.º 39
0
 public void ShouldGetValueOfUnderlyingModelProperty()
 {
     var wrapper = new EmployeeWrapper(_employee);
     Assert.AreEqual(_employee.FirstName, wrapper.FirstName);
 }