public GuestPage(LoginCredentionals credits)
        {
            this.credits = credits;
            var id       = DataManager.DStorage.Login_Id_Map[credits.Username];
            var position = DataManager.DStorage.Id_Position_Map[id];

            if (position == ElectronicJournal.Position.Guest)
            {
                guestView = true;
                id        = DataManager.DStorage.Guest_Studednt_Map[id];
            }
            this.student = DataManager.DStorage.Id_Person_Map[id];
            InitializeComponent();
            if (guestView)
            {
                MarkLabel.Content = "Marks for student [" + student + "] (guest view):";
            }
            else
            {
                MarkLabel.Content = "Marks for student [" + student + "]:";
            }
            var entries        = DataManager.DStorage.Journal.GetEntries(id);
            var displayEntries = entries.ConvertAll(e => new DisplayEntry(e.Time, e.Subject, DataManager.DStorage.Id_Person_Map[e.TeacherId], e.Mark));

            MarkGrid.ItemsSource = displayEntries;
        }
Esempio n. 2
0
        public static bool Authenticate(LoginCredentionals credits, out int userId)
        {
            Logger.Info("Authenticating user [" + credits.Username + "]...");
            string storedPassword;

            if (!dStorage.Login_Password_Map.TryGetValue(credits.Username, out storedPassword) || !storedPassword.Equals(credits.Password))
            {
                Logger.Warn("Authentication error. Login and password do not match!");
                userId = -1;
                return(false);
            }
            else
            {
                try
                {
                    dStorage.Login_Id_Map.TryGetValue(credits.Username, out userId);
                    Logger.Info("Authentication succeeded.");
                } catch
                {
                    userId = -1;
                    Logger.Error("Authentication failed.");
                }
                return(true);
            }
        }
Esempio n. 3
0
        public TeacherPage(LoginCredentionals credits)
        {
            this.credits = credits;
            InitializeComponent();
            InitializeObservable();
            tvm         = new TeacherViewModel(_studentList, _markList);
            DataContext = tvm;
            MarkComboBox.ItemsSource   = Enumerable.Range((int)AppConfiguration.MinMarkValue, (int)AppConfiguration.MaxMarkValue - (int)AppConfiguration.MinMarkValue + 1);
            MarkComboBox.SelectedIndex = 0;
            var teacherId = DataManager.DStorage.Login_Id_Map[credits.Username];

            this.teacher         = DataManager.DStorage.Id_Person_Map[teacherId];
            this.subject         = DataManager.DStorage.Id_Subject_Map[teacherId];
            TeacherLabel.Content = "Teacher [" + teacher.ToShortString() + "]";
        }
Esempio n. 4
0
 public void RegisterGuest(LoginCredentionals credits, int studentId, int guestId)
 {
     Logger.Info("Trying to add a guest [" + guestId + "] to watch student [" + studentId + "]...");
     if (CheckPermission(credits))
     {
         Console.WriteLine("Adding new guest...");
         try
         {
             Guest_Studednt_Map.Add(guestId, studentId);
             Logger.Info("Regestering new guest succeeded.");
         }
         catch
         {
             Logger.Warn("Registering new guest failed.");
         }
     }
 }
Esempio n. 5
0
 public void RegisterTeacher(LoginCredentionals credits, int id, Subject subject)
 {
     Logger.Info("Trying to add a teacher [" + id + "]...");
     if (CheckPermission(credits))
     {
         Console.WriteLine("Adding new teacher...");
         try
         {
             Id_Subject_Map.Add(id, subject);
             Logger.Info("Regestering new teacher succeeded.");
         }
         catch
         {
             Logger.Warn("Registering new teacher failed.");
         }
     }
 }
        public AdministratorPage(LoginCredentionals credits)
        {
            this.credits = credits;
            InitializeComponent();
            InitializeData();
            var id     = DataManager.DStorage.Login_Id_Map[credits.Username];
            var person = DataManager.DStorage.Id_Person_Map[id];

            AdminLabel.Content = "Administrator [" + person.ToShortString() + "]";
            avm         = new AdministrativeViewModel(_personList, _studentList);
            DataContext = avm;
            PositionComboBox.ItemsSource = Enum.GetValues(typeof(Position));
            SexComboBox.ItemsSource      = Enum.GetValues(typeof(SexT));
            SubjectComboBox.ItemsSource  = Enum.GetValues(typeof(Subject));
            SwitchSubject(false);
            SwitchGuest(false);
        }
        private void loginButton_Click(object sender, RoutedEventArgs e)
        {
            int  id;
            var  credits = new LoginCredentionals(usernameTextBox.Text, passwordBox.Password);
            bool auth    = AccountManager.Authenticate(credits, out id);

            if (auth)
            {
                Position pos;
                if (DataManager.DStorage.Id_Position_Map.TryGetValue(id, out pos))
                {
                    NavigationService nav = NavigationService.GetNavigationService(this);
                    switch (pos)
                    {
                    case Position.Guest:
                    case Position.Student:
                        Logger.Info("Navigating to guest page.");
                        nav.Navigate(new GuestPage(credits));
                        return;

                    case Position.Teacher:
                        Logger.Info("Navigating to teacher page.");
                        nav.Navigate(new TeacherPage(credits));
                        return;

                    case Position.Administrator:
                        Logger.Info("Navigating to administrator page.");
                        nav.Navigate(new AdministratorPage(credits));
                        return;

                    default:
                        return;
                    }
                }
                else
                {
                    Logger.Warn("Can not determine position of person [" + credits.Username + "].");
                }
            }
            else
            {
                NavigationService nav = NavigationService.GetNavigationService(this);
                textLabel.Content = "Login failed. Please try once more!";
            }
        }
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            var newUserCredits = new LoginCredentionals(avm.UserName, avm.Password);
            var p   = new Person(avm.Name, avm.SecondName, avm.Surname, avm.Birthday, (SexT)avm.SexIndex);
            var pos = (Position)avm.PositionIndex;

            DataManager.DStorage.RegisterNewUser(credits, newUserCredits, pos, p);
            _personList.Add(new ExtendedPerson(p, pos));
            if ((Position)avm.PositionIndex == Position.Teacher)
            {
                DataManager.DStorage.RegisterTeacher(credits, p.Id, (Subject)avm.SubjectIndex);
            }
            else if ((Position)avm.PositionIndex == Position.Guest)
            {
                var studentId = _studentList[avm.StudentIndex].Id;
                DataManager.DStorage.RegisterGuest(credits, studentId, p.Id);
            }
            Reset();
        }
Esempio n. 9
0
 public void RegisterNewUser(LoginCredentionals credits, LoginCredentionals newUserCredits, Position position, Person p)
 {
     Logger.Info("Trying to register new user...");
     if (CheckPermission(credits))
     {
         Console.WriteLine("Registing new user [" + p + "][" + position + "...");
         try
         {
             Id_Position_Map.Add(p.Id, position);
             Id_Person_Map.Add(p.Id, p);
             Id_Login_Map.Add(p.Id, newUserCredits.Username);
             Login_Id_Map.Add(newUserCredits.Username, p.Id);
             Login_Password_Map.Add(newUserCredits.Username, newUserCredits.Password);
             Logger.Info("Regestering new user succeeded.");
         }
         catch
         {
             Logger.Warn("Registering new user failed.");
         }
     }
 }
Esempio n. 10
0
 public void RemoveUser(LoginCredentionals credits, int id)
 {
     Logger.Info("Trying to remove a user [" + id + "]...");
     if (CheckPermission(credits))
     {
         try
         {
             if (Id_Login_Map.ContainsKey(id))
             {
                 var login = Id_Login_Map[id];
                 if (Login_Id_Map.ContainsKey(login))
                 {
                     Login_Id_Map.Remove(login);
                 }
                 Id_Login_Map.Remove(id);
             }
             if (Id_Person_Map.ContainsKey(id))
             {
                 Id_Person_Map.Remove(id);
             }
             if (Id_Position_Map.ContainsKey(id))
             {
                 Id_Position_Map.Remove(id);
             }
             if (Id_Subject_Map.ContainsKey(id))
             {
                 Id_Subject_Map.Remove(id);
             }
             if (Guest_Studednt_Map.ContainsKey(id))
             {
                 Guest_Studednt_Map.Remove(id);
             }
             Logger.Info("Removing user succeeded.");
         }
         catch
         {
             Logger.Warn("Removing user failed.");
         }
     }
 }
Esempio n. 11
0
        private bool CheckPermission(LoginCredentionals credits)
        {
            Logger.Info("Cheking permissions...");
            int      id;
            Position position;

            if (AccountManager.Authenticate(credits, out id))
            {
                if (Id_Position_Map.TryGetValue(id, out position) && position == Position.Administrator)
                {
                    Logger.Info("Ok.");
                    return(true);
                }
                else
                {
                    Logger.Warn("Not enought permitions!");
                }
            }
            else
            {
                Logger.Warn("Current user authentication [" + credits.Username + "] failed.");
            }
            return(false);
        }