using System;
using System.IO;
using System.Linq;

using BeWo.Data.Entities;
using BeWo.Service.Core;
using BeWo.Service.Security;

using BS.Shared;

using NHibernate;
using NHibernate.Cfg;

namespace Host
{
	public partial class ResetPassword : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack) return;
			
			//var c = codeTextBox.Text;
			//var param = Request.Params["v"];
			//var decodiert = SecurityUtils.DecryptString(param);
			//var blubb = decodiert.Split('&');
			//var codeoid = Convert.ToInt64(blubb[0].Split('=')[1]);
			//var pfad = blubb[1].Split('=')[1];
			//var useroid = Convert.ToInt64(blubb[2].Split('=')[1]);

			//var sessionFactory = new Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, pfad)).BuildSessionFactory();

			//var cs = Context.Items["nhibernate.current_session"] as ISession;
			//if (cs == null)
			//{
			//	cs = sessionFactory.OpenSession();
			//	Context.Items["nhibernate.current_session"] = cs;
			//}

			//var rpi = cs.Load<ResetPasswordInfo>(codeoid);
			
			//var isGreen = rpi.Code.Equals(c);
			//if (isGreen)
			//{
			//	rpi.HasToChangePW = true;
			//	rpi.ResetDate = DateTime.Now;
				
			//	var lTransaction = cs.BeginTransaction();
			//	try
			//	{
			//		cs.SaveOrUpdate(rpi);
			//		lTransaction.Commit();
			//	}
			//	catch (Exception ex)
			//	{
			//		lTransaction.Rollback();
			//		throw ex;
			//	}
			//}
			
			//ergebnisLabel.Text = isGreen ? "Ihr Passwort wurde erfolgreich zur&uuml;ckgesetzt und an Sie per E-Mail geschickt" : "Ihr Passwort konnte nicht zur&uuml;ckgesetzt werden. Bitte &uuml;berpr&uuml;fen Sie den Code und versuchen es sp&auml;ter nochmal.";
			//ergebnisLabel.ForeColor = isGreen ? System.Drawing.Color.Green : System.Drawing.Color.Red;
			//ergebnisLabel.Visible = true;
			
			//var neuesPasswort = SecurityUtils.CreateRandomString(8, false, true);

			//var user = cs.Load<ApplicationUser>(useroid);
			//user.ChangePassword(neuesPasswort);
			//var email = user.Employee.Person.Contacts.FirstOrDefault(fod => fod.Type == ContactType.business_Mail).Value;

			//var text = string.Format("Sehr geehrter BeWoPlaner Benutzer,\nIhr neues Passwort lautet {0}. Bitte ändern Sie dieses umgehend bei der nächsten Anmeldung.", neuesPasswort);

			//Utils.SendMail("Passwort zurückgesetzt", text, email);
			
			//var lTransaction2 = cs.BeginTransaction();
			//try
			//{
			//	cs.SaveOrUpdate(user);
			//	lTransaction2.Commit();
			//}
			//catch (Exception ex)
			//{
			//	lTransaction2.Rollback();
			//	throw ex;
			//}

			//cs.Close();
			//Context.Items.Remove("nhibernate.current_session");
			//sessionFactory.Close();
		}
	}
}