Пример #1
0
        private void LoginButton_Click(object sender, RoutedEventArgs e)
        {
            using (var context = new ExpansesManagerContext())
            {
                if (context.Users.Any(u => u.Username == UsernameTextBox.Text && u.Password == PasswordBox.Password))
                {
                    MessageBox.Show("Successfully logged in!");
                }
                else
                {
                    ErrorLabel.Content = ("Username or password is invalid.");
                    return;
                }

                AuthenticationManager.Login(UsernameTextBox.Text, PasswordBox.Password);

                UsernameTextBox.Clear();
                PasswordBox.Clear();
            }

            MainApp mainApp = new MainApp();

            this.Close();
            mainApp.ShowDialog();
        }
        private void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            bool isPasswordDiff = OldPasswordBox.Password != PasswordBox.Password &&
                                  OldPasswordBox.Password != RepeatPasswordBox.Password;
            bool isOldPassCorrect = _user.Password == OldPasswordBox.Password;

            bool isPasswordSame = PasswordBox.Password == RepeatPasswordBox.Password;

            if (isOldPassCorrect && isPasswordDiff && isPasswordSame)
            {
                using (var context = new ExpansesManagerContext())
                {
                    _user.Password = PasswordBox.Password;

                    context.Users.AddOrUpdate(_user);
                    context.SaveChanges();
                }

                UsernameTextBox.Clear();
                PasswordBox.Clear();
                RepeatPasswordBox.Clear();
                OldPasswordBox.Clear();
                ErrorLabel.Content = "Successfully Changed Password !";
            }
            else
            {
                ErrorLabel.Content = Checks.PasswordsDoNotMatch;
            }
        }
        public MainGroups()
        {
            InitializeComponent();
            var  vm          = new MainAppViewModel();
            User currentUser = AuthenticationManager.GetCurrentUser();

            using (var context = new ExpansesManagerContext())
            {
                var groups = context.Groups.Where(c => c.UserId == currentUser.Id);
                var list   = new List <StatisticsViewModel>();

                foreach (var gr in groups)
                {
                    foreach (var item in gr.SubGroups)
                    {
                        list.Add(new StatisticsViewModel()
                        {
                            GroupName          = gr.Name,
                            SubGroupName       = item.Name,
                            TotalSubGroupPrice = item.Elements.Sum(e => e.Price),
                            DayPrice           = item.Elements.Where(e => e.DateBought.Date == DateTime.Today.Date).Sum(e => e.Price),
                            WeekPrice          = item.Elements.Where(e => e.DateBought <= DateTime.Today.AddDays(-7) && e.DateBought <= DateTime.Today).Sum(e => e.Price),
                            MonthPrice         = item.Elements.Where(e => e.DateBought <= DateTime.Today.AddMonths(-1) && e.DateBought <= DateTime.Today).Sum(e => e.Price),
                            YearPrice          = item.Elements.Where(e => e.DateBought.Year <= DateTime.Today.AddYears(-1).Year&& e.DateBought.Date <= DateTime.Today.Date).Sum(e => e.Price),
                        });
                    }
                }
                this.lvUsers.ItemsSource = list;
            }
        }
Пример #4
0
        private void AddSubGroupButton_Click_1(object sender, RoutedEventArgs e)
        {
            using (var context = new ExpansesManagerContext())
            {
                AddWindow addWindow = new AddWindow();
                addWindow.ShowDialog();

                SubGroup subGroup = new SubGroup()
                {
                    Name = addWindow.textBox.Text,
                };

                context.Groups.FirstOrDefault(g => g.Name == TreeView1.SelectedItem.ToString()).SubGroups.Add(subGroup);
                context.SaveChanges();

                TreeViewItem group = new TreeViewItem()
                {
                    Header = TreeView1.SelectedItem.ToString(),
                };

                TreeViewItem newSubGroup = new TreeViewItem();
                newSubGroup.Header = addWindow.textBox.Text;

                group.Items.Add(newSubGroup);
            }
        }
Пример #5
0
 public static Group GetGroupById(int id)
 {
     using (var context = new ExpansesManagerContext())
     {
         currentGroup = context.Groups.FirstOrDefault(gr => gr.Id == id);
     }
     return(currentGroup);
 }
Пример #6
0
 public static bool UsernameIsTaken(string username)
 {
     using (var context = new ExpansesManagerContext())
     {
         if (context.Users.Any(u => u.Username == username))
         {
             return(true);
         }
         return(false);
     }
 }
        private void button_Import(object sender, RoutedEventArgs e)
        {
            if (!File.Exists(pathOfFile))
            {
                throw new FileNotFoundException(string.Format(Checks.ErrorMessages.FileNotFound, pathOfFile));
            }

            var context = new ExpansesManagerContext();
            var json    = File.ReadAllText(pathOfFile);
            var groups  = JsonConvert.DeserializeObject <IEnumerable <GroupDto> >(json);
        }
        private void EditGroup_Click(object sender, RoutedEventArgs e)
        {
            using (var ex = new ExpansesManagerContext())
            {
                // ex.Groups
            }

            EditModeMainApp ed = new EditModeMainApp();

            this.Close();
            ed.ShowDialog();
        }
        public EditModeMainApp()
        {
            InitializeComponent();

            var  vm          = new MainAppViewModel();
            User currentUser = AuthenticationManager.GetCurrentUser();

            using (var contex = new ExpansesManagerContext())
            {
                textBox.Text = "Welcome " + " " + currentUser.Username;
                var user = contex.Users.Find(currentUser.Id);
                vm.Groups = new ObservableCollection <GroupViewModel>(Mapper.Instance.Map <IEnumerable <Group>, ObservableCollection <GroupViewModel> >(user.Groups));
                this.GroupsGrid.DataContext = vm;
                this.GroupsGrid.ItemsSource = vm.Groups;
            }
        }
Пример #10
0
        private void RegisterButton_Click(object sender, RoutedEventArgs e)
        {
            if (Checks.UsernameIsTaken(UsernameTextBox.Text))
            {
                ErrorLabel.Content = Checks.UsernameIsAlreadyTaken;
                return;
            }

            if (PasswordBox.Password != RepeatPasswordBox.Password)
            {
                ErrorLabel.Content = Checks.PasswordsDoNotMatch;
                return;
            }

            if (!Checks.PasswordIsValid(PasswordBox.Password))
            {
                ErrorLabel.Content = Checks.PasswordIsInvalid;
                return;
            }

            if (Checks.EmailIsValid(EmailtextBox.Text))
            {
                ErrorLabel.Content = Checks.EmailIsNotValid;
                return;
            }

            using (var context = new ExpansesManagerContext())
            {
                User user = new User()
                {
                    Username       = UsernameTextBox.Text,
                    Password       = PasswordBox.Password,
                    Email          = EmailtextBox.Text,
                    DateRegistered = DateTime.UtcNow,
                };

                context.Users.Add(user);
                context.SaveChanges();
            }

            UsernameTextBox.Clear();
            PasswordBox.Clear();
            RepeatPasswordBox.Clear();
            EmailtextBox.Clear();
            ErrorLabel.Content = "Successfully registered!";
        }
Пример #11
0
        public MainApp()
        {
            InitializeComponent();
            var  vm          = new MainAppViewModel();
            User currentUser = AuthenticationManager.GetCurrentUser();

            using (var contex = new ExpansesManagerContext())
            {
                var user = contex.Users.Find(currentUser.Id);
                vm.Groups = new ObservableCollection <GroupViewModel>(Mapper.Instance.Map <IEnumerable <Group>, ObservableCollection <GroupViewModel> >(user.Groups));

                foreach (var group in contex.Groups.Where(g => g.IsActive == true))
                {
                    TreeViewGroups.Items.Add(group.Name);
                }
            }
        }
Пример #12
0
        public static void Login(User user)
        {
            using (var context = new ExpansesManagerContext())
            {
                // user = context.Users.SingleOrDefault(u => u.Username == username && u.Password == password);
                if (currentUser != null)
                {
                    throw new ArgumentException("You should logout first!");
                }

                if (user == null)
                {
                    throw new ArgumentException("Invalid username or password!");
                }

                currentUser = user;
            }
        }
Пример #13
0
        private void AddGroupButton_Click(object sender, EventArgs e)
        {
            using (var context = new ExpansesManagerContext())
            {
                AddWindow addWindow = new AddWindow();
                addWindow.ShowDialog();

                Group group = new Group();
                group.Name   = addWindow.textBox.Text;
                group.UserId = AuthenticationManager.GetCurrentUser().Id;

                context.Groups.Add(group);
                context.SaveChanges();

                TreeViewItem newGroup = new TreeViewItem();
                newGroup.Header = addWindow.textBox.Text;
                TreeViewGroups.Items.Add(newGroup);
            }
        }
        private void DeleteSubGroup_OnClick(object sender, RoutedEventArgs e)
        {
            var btn      = sender as Button;
            var subGroup = btn?.Tag as SubGroupViewModel;

            if (subGroup != null)
            {
                using (var db = new ExpansesManagerContext())
                {
                    (this.SubGroupsGrid.ItemsSource as ObservableCollection <SubGroupViewModel>).Remove(subGroup);
                    var removeDbSubGroup = db.SubGroups.Find(subGroup.Id);
                    if (removeDbSubGroup != null)
                    {
                        db.SubGroups.Remove(removeDbSubGroup);
                        db.SaveChanges();
                    }
                }
            }
        }
        private void DeleteElement_OnClick(object sender, RoutedEventArgs e)
        {
            var btn     = sender as Button;
            var element = btn?.Tag as ElementViewModel;

            if (element != null)
            {
                using (var db = new ExpansesManagerContext())
                {
                    (this.ElementsGrid.ItemsSource as ObservableCollection <ElementViewModel>).Remove(element);
                    var removeDbelement = db.Elements.Find(element.Id);
                    if (removeDbelement != null)
                    {
                        db.Elements.Remove(removeDbelement);
                        db.SaveChanges();
                    }
                }
            }
        }
        private void ExportGroup(Group group)
        {
            using (var context = new ExpansesManagerContext())
            {
                var    selectedGrop = context.Groups.Find(group.Id);
                string json         = JsonConvert.SerializeObject(new
                {
                    Name      = selectedGrop.Name,
                    IsActive  = selectedGrop.IsActive,
                    SubGroups = selectedGrop.SubGroups.Count > 0
                                                ? selectedGrop.SubGroups.Select(u => new
                    {
                        Name     = u.Name,
                        IsActive = u.IsActive,
                        Elemnet  = u.Elements.Count > 0
                                                                ? u.Elements.Select(e => new
                        {
                            Name  = e.Name,
                            Price = e.Price,
                            Date  = e.DateBought
                        })
                                                                : null,
                    })
                                                : null
                }, Formatting.Indented);

                string path = @"Groups.json";

                if (!File.Exists(path))
                {
                    File.WriteAllText(path, json);
                }
                else
                {
                    string appendGroup = json;
                    File.AppendAllText(path, appendGroup);
                }

                MessageLabel.Content = ("Export was successful");
            }
        }
Пример #17
0
        private void RemoveGroupButton_Click(object sender, RoutedEventArgs e)
        {
            using (var context = new ExpansesManagerContext())
            {
                if (TreeView1.SelectedItem == null)
                {
                    MessageBox.Show("Please select first.");
                    return;
                }
                //context.Groups.FirstOrDefault(g => g.Name == TreeView1.SelectedItem.ToString() && g.IsActive == true).IsActive = false;
                var group = context.Groups.FirstOrDefault(g => g.Name == TreeView1.SelectedItem.ToString() && g.IsActive == true);
                context.Groups.Remove(group);
                context.SaveChanges();
            }

            TreeViewItem newGroup = new TreeViewItem();

            newGroup.Name = TreeView1.SelectedItem.ToString();

            MainApp mApp = new MainApp();

            this.Close();
            mApp.ShowDialog();
        }
        private void DeleteGroup_OnClick(object sender, RoutedEventArgs e)
        {
            var btn   = sender as Button;
            var group = btn?.Tag as GroupViewModel;

            if (group != null)
            {
                using (var db = new ExpansesManagerContext())
                {
                    var removeDbGroup = db.Groups.Find(group.Id);
                    if (removeDbGroup != null)
                    {
                        db.Groups.Remove(removeDbGroup);
                        db.SaveChanges();
                        var currentUser = db.Users.Find(AuthenticationManager.GetCurrentUser().Id);
                        var vm          = this.GroupsGrid.DataContext as MainAppViewModel;
                        vm.Groups = new ObservableCollection <GroupViewModel>(Mapper.Instance.Map <IEnumerable <Group>, ObservableCollection <GroupViewModel> >(currentUser.Groups));
                        this.GroupsGrid.ItemsSource = null;

                        this.GroupsGrid.ItemsSource = vm.Groups;
                    }
                }
            }
        }
        private void ButtonSaveChanges_OnClick(object sender, RoutedEventArgs e)
        {
            var vm         = this.GroupsGrid.DataContext as MainAppViewModel;
            var gridGroups = Mapper.Instance.Map <ObservableCollection <GroupViewModel>, IEnumerable <Group> >(vm.Groups);

            using (var db = new ExpansesManagerContext())
            {
                foreach (var group in gridGroups)
                {
                    if (group.Id > 0)
                    {
                        var dbGroup = db.Groups.Find(group.Id);
                        if (dbGroup != null)
                        {
                            if (dbGroup.Name != group.Name)
                            {
                                dbGroup.Name = group.Name;
                                db.SaveChanges();
                            }
                            var existingSubGroups = group.SubGroups.Where(s => s.Id != 0).ToList();
                            existingSubGroups.ForEach(eg =>
                            {
                                var dbSubGroup = dbGroup.SubGroups.FirstOrDefault(g => g.Id == eg.Id);
                                if (dbSubGroup != null)
                                {
                                    if (dbSubGroup.Name != eg.Name)
                                    {
                                        dbSubGroup.Name = eg.Name;
                                        db.SaveChanges();
                                    }
                                    foreach (var element in eg.Elements)
                                    {
                                        var dbElement = dbSubGroup.Elements.FirstOrDefault(el => el.Id == element.Id);
                                        if (dbElement != null && element.Id > 0)
                                        {
                                            if (dbElement.Name != element.Name || dbElement.Price != element.Price || dbElement.DateBought != element.DateBought)
                                            {
                                                dbElement.Name       = element.Name;
                                                dbElement.Price      = element.Price;
                                                dbElement.DateBought = element.DateBought;
                                                db.SaveChanges();
                                            }
                                        }
                                        else
                                        {
                                            dbSubGroup.Elements.Add(element);
                                            db.SaveChanges();
                                        }
                                    }
                                }
                            });

                            var newSubGroups = group.SubGroups.Where(s => s.Id == 0).ToList();
                            if (newSubGroups.Count > 0)
                            {
                                newSubGroups.ForEach(sg =>
                                {
                                    dbGroup.SubGroups.Add(sg);
                                    db.SaveChanges();

                                    foreach (var element in sg.Elements)
                                    {
                                        var dbElement = sg.Elements.FirstOrDefault(el => el.Id == element.Id);
                                        if (dbElement != null && element.Id > 0)
                                        {
                                            if (dbElement.Name != element.Name || dbElement.Price != element.Price || dbElement.DateBought != element.DateBought)
                                            {
                                                dbElement.Name       = element.Name;
                                                dbElement.Price      = element.Price;
                                                dbElement.DateBought = element.DateBought;
                                                db.SaveChanges();
                                            }
                                        }
                                        else
                                        {
                                            sg.Elements.Add(element);
                                            db.SaveChanges();
                                        }
                                    }
                                });
                            }
                        }
                    }
                }

                var newGroups   = gridGroups.Where(g => g.Id == 0).ToList();
                var currentUser = db.Users.Find(AuthenticationManager.GetCurrentUser().Id);
                newGroups.ForEach(g =>
                {
                    currentUser.Groups.Add(g);
                    db.SaveChanges();
                });

                vm.Groups = new ObservableCollection <GroupViewModel>(Mapper.Instance.Map <IEnumerable <Group>, ObservableCollection <GroupViewModel> >(currentUser.Groups));
            }
            this.GroupsGrid.UpdateLayout();
            MessageBox.Show("Successfully saved");
        }