2017-07-27 15:20:32 -05:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Forms;
|
2017-07-27 17:02:52 -05:00
|
|
|
|
using System.IO;
|
2017-07-27 15:20:32 -05:00
|
|
|
|
|
|
|
|
|
namespace EduNetworkBuilder
|
|
|
|
|
{
|
|
|
|
|
public partial class PersonProfileForm : Form
|
|
|
|
|
{
|
|
|
|
|
PersonClass CurrentUser = null;
|
|
|
|
|
string FileName = "";
|
|
|
|
|
|
|
|
|
|
public PersonProfileForm(string filename = "")
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
FileName = filename;
|
|
|
|
|
|
|
|
|
|
//We do LocalSetup at load time. This saves us some grief.
|
|
|
|
|
}
|
|
|
|
|
|
2017-07-27 17:02:52 -05:00
|
|
|
|
public PersonProfileForm(PersonClass User)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
CurrentUser = User;
|
|
|
|
|
if (CurrentUser != null)
|
|
|
|
|
{
|
|
|
|
|
FileName = Path.Combine(CurrentUser.filepath, CurrentUser.UserName);
|
|
|
|
|
}
|
|
|
|
|
//We do LocalSetup at load time. This saves us some grief.
|
|
|
|
|
}
|
|
|
|
|
|
2017-07-27 15:20:32 -05:00
|
|
|
|
private void PersonProfileForm_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
LocalSetup();
|
2017-07-27 17:02:52 -05:00
|
|
|
|
UpdateFormFromUser();
|
2017-07-27 15:20:32 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LanguagifyComponents()
|
|
|
|
|
{
|
|
|
|
|
lblFullName.Text = NB.Translate("PPF_FullName");
|
|
|
|
|
lblUsername.Text = NB.Translate("PPF_UserName");
|
|
|
|
|
TabClasswork.Text = NB.Translate("PPF_TabClasswork");
|
|
|
|
|
TabProfile.Text = NB.Translate("PPF_TabProfile");
|
|
|
|
|
btnExit.Text = NB.Translate("NB_exitToolStripMenuItem");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LocalSetup()
|
|
|
|
|
{
|
2017-07-27 17:02:52 -05:00
|
|
|
|
Icon = Properties.Resources.NBIco;
|
|
|
|
|
LanguagifyComponents();
|
|
|
|
|
|
|
|
|
|
if (CurrentUser == null && FileName == "")
|
2017-07-27 15:20:32 -05:00
|
|
|
|
{
|
|
|
|
|
//Prompt for a username
|
2017-07-27 17:02:52 -05:00
|
|
|
|
String Dest = NB.TextPromptBox(NB.Translate("PPF_EnterUserName"));
|
2017-07-29 18:31:19 -05:00
|
|
|
|
if (Dest == "") { Close(); return; }//No name given or canceled.
|
|
|
|
|
if (Dest == null) { Close(); return; }
|
2017-07-27 17:02:52 -05:00
|
|
|
|
if (Dest[0] != '_') Dest = "_Teacher_" + Dest; //Make sure it begins with _
|
2017-07-27 15:20:32 -05:00
|
|
|
|
//Find a directory for it.
|
2017-07-27 17:02:52 -05:00
|
|
|
|
CurrentUser = new PersonClass(Dest, true); //Make an admin person class
|
2017-07-28 13:00:07 -05:00
|
|
|
|
//Choose an initial folder for the file:
|
|
|
|
|
OpenFileDialog OFD = new OpenFileDialog();
|
|
|
|
|
OFD.ValidateNames = false;
|
|
|
|
|
OFD.CheckFileExists = false;
|
|
|
|
|
OFD.CheckPathExists = true;
|
|
|
|
|
OFD.FileName = NB.Translate("PPF_SelectThisFolder");
|
|
|
|
|
OFD.ShowDialog();
|
2017-07-29 09:26:25 -05:00
|
|
|
|
CurrentUser.filepath = Path.GetDirectoryName(OFD.FileName);
|
2017-07-27 15:20:32 -05:00
|
|
|
|
}
|
2017-07-27 17:02:52 -05:00
|
|
|
|
else if (CurrentUser == null)
|
2017-07-27 15:20:32 -05:00
|
|
|
|
{
|
|
|
|
|
//Try to load the file. Close form & give error if it fails
|
2017-07-28 13:00:07 -05:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//Load in from the file
|
|
|
|
|
}
|
|
|
|
|
catch(Exception e)
|
|
|
|
|
{
|
|
|
|
|
CurrentUser = null;
|
|
|
|
|
Close(); //we did not succeed. Exit out
|
|
|
|
|
}
|
2017-07-27 15:20:32 -05:00
|
|
|
|
}
|
2017-07-27 17:02:52 -05:00
|
|
|
|
|
|
|
|
|
//Make sure we update any profile settings they change
|
|
|
|
|
tbFullName.LostFocus += SaveUserInfoFromForm;
|
2017-07-27 15:20:32 -05:00
|
|
|
|
}
|
|
|
|
|
|
2017-07-27 17:02:52 -05:00
|
|
|
|
public PersonClass Edit()
|
|
|
|
|
{
|
|
|
|
|
BuilderWindow BW = NB.GetBuilderWin();
|
|
|
|
|
if(BW != null)
|
|
|
|
|
{
|
|
|
|
|
BW.Hide();
|
|
|
|
|
this.ShowDialog();
|
|
|
|
|
BW.Show();
|
|
|
|
|
}
|
|
|
|
|
return CurrentUser;
|
2017-07-29 18:31:19 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public PersonClass AddSchoolwork(Network ToAdd)
|
|
|
|
|
{
|
|
|
|
|
if (CurrentUser == null) return CurrentUser;
|
|
|
|
|
BuilderWindow BW = NB.GetBuilderWin();
|
|
|
|
|
SchoolworkClass NewWork = new SchoolworkClass(ToAdd);
|
|
|
|
|
CurrentUser.Projects.Add(NewWork);
|
|
|
|
|
UpdateFormFromUser(); //make sure we list the right homeworks.
|
|
|
|
|
|
|
|
|
|
if (BW != null)
|
|
|
|
|
{
|
|
|
|
|
BW.Hide();
|
|
|
|
|
this.tcTabControl.SelectedIndex = 1; //Jump to the items tab
|
|
|
|
|
this.ShowDialog();
|
|
|
|
|
BW.Show();
|
|
|
|
|
}
|
|
|
|
|
return CurrentUser;
|
|
|
|
|
}
|
2017-07-27 17:02:52 -05:00
|
|
|
|
|
|
|
|
|
private void UpdateFormFromUser()
|
|
|
|
|
{
|
|
|
|
|
if (CurrentUser == null) return;
|
|
|
|
|
|
|
|
|
|
tbFullName.Text = CurrentUser.FullName;
|
|
|
|
|
tbUsername.Text = CurrentUser.UserName;
|
|
|
|
|
if (CurrentUser.isAdmin) this.Text = "Admin: " + CurrentUser.UserName;
|
|
|
|
|
else this.Text = "Student: " + CurrentUser.UserName;
|
2017-07-29 18:31:19 -05:00
|
|
|
|
|
|
|
|
|
tvClasswork.Nodes.Clear();
|
|
|
|
|
TreeNode Node;
|
|
|
|
|
if (CurrentUser.isAdmin)
|
|
|
|
|
{
|
|
|
|
|
//We have a class tree
|
|
|
|
|
Node = new TreeNode("Class");
|
|
|
|
|
TreeNode Top = Node;
|
|
|
|
|
tvClasswork.Nodes.Add(Node);
|
|
|
|
|
foreach(SchoolworkClass SWC in CurrentUser.Projects)
|
|
|
|
|
{
|
|
|
|
|
Node = new TreeNode(SWC.Name);
|
|
|
|
|
Top.Nodes.Add(Node);
|
|
|
|
|
}
|
|
|
|
|
//we have a students tree
|
|
|
|
|
Node = new TreeNode("Students");
|
|
|
|
|
tvClasswork.Nodes.Add(Node);
|
|
|
|
|
}
|
2017-07-27 17:02:52 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SaveUserInfoFromForm()
|
|
|
|
|
{
|
|
|
|
|
CurrentUser.FullName = tbFullName.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SaveUserInfoFromForm(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
SaveUserInfoFromForm();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnExit_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//Save during closing
|
|
|
|
|
Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnChangePassword_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string OldPassword = "";
|
|
|
|
|
if (CurrentUser.Password() != "")
|
|
|
|
|
{
|
|
|
|
|
OldPassword = NB.TextPromptBox(NB.Translate("PPF_OldPassword"), Properties.Resources.NBIco, true);
|
|
|
|
|
if(OldPassword != CurrentUser.Password())
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(NB.Translate("PPF_PassMismatch"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//The passwords match, or there was no initial password.
|
|
|
|
|
string Password1 = NB.TextPromptBox(NB.Translate("PPF_NewPass"), Properties.Resources.NBIco, true);
|
|
|
|
|
if(Password1.Length < 4)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(NB.Translate("PPF_PassTooShort"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if(Password1 == OldPassword)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(NB.Translate("PPF_PassDidNotChange"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
string Password2 = NB.TextPromptBox(NB.Translate("PPF_VerifyPass"), Properties.Resources.NBIco, true);
|
|
|
|
|
if(Password1 != Password2)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(NB.Translate("PPF_PassValidateMismatch"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CurrentUser.ChangePassword(Password1);
|
|
|
|
|
}
|
2017-07-27 15:20:32 -05:00
|
|
|
|
}
|
|
|
|
|
}
|