예제 #1
0
        private bool LoginByCookie()
        {
            try
            {
                HttpCookie cookie = Request.Cookies["FINFLoginCookie"];
                if (cookie != null)
                {
                    _user = new FI.BusinessObjects.User(decimal.Parse(cookie.Value), false);
                    _user.Login(true, Request.UserHostAddress, Session.SessionID);
                    Session["User"] = _user;

                    _message = null;
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception exc)
            {
                if (Common.AppConfig.IsDebugMode)
                {
                    Common.LogWriter.Instance.WriteEventLogEntry(exc);
                }

                _message = exc.Message;
                ShowHeader();
                return(false);
            }
        }
예제 #2
0
        private void LoginByPassword()
        {
            try
            {
                _user = new FI.BusinessObjects.User(this.txtCompany.Text, this.txtLogin.Text, this.txtPassword.Text);
                _user.Login(this.chkForce.Checked, Request.UserHostAddress, Session.SessionID);
                Session["User"] = _user;

                // set cookie
                if (this.chkRemember.Checked)
                {
                    HttpCookie cookie = new HttpCookie("FINFLoginCookie");
                    cookie.Value   = _user.ID.ToString();
                    cookie.Expires = DateTime.Now.AddMonths(6);
                    Response.Cookies.Add(cookie);
                }

                _message = null;
            }
            catch (Exception exc)
            {
                if (Common.AppConfig.IsDebugMode)
                {
                    Common.LogWriter.Instance.WriteEventLogEntry(exc);
                }

                _message = exc.Message;
                ShowHeader();
            }
        }
예제 #3
0
 internal Distribution(decimal ID , User Owner)
 {
     _id=ID;
     _owner=Owner;
     _isProxy=true;
     _isDirty=false;
 }
예제 #4
0
        protected void btnDelete_Click(object sender, System.EventArgs e)
        {
            try
            {
                ArrayList keysArr = _gr.SelectedPrimaryKeys;

                if (keysArr == null || keysArr.Count == 0)
                {
                    Session[_sessionContent]           = "List";
                    Session[_sessionItemCurrentObject] = null;
                }
                else
                {
                    decimal userId = decimal.Parse(((string[])keysArr[0])[0]);
                    FI.BusinessObjects.User user = _user.GetUser(userId, false);

                    Session[_sessionItemCurrentObject] = user;
                    Session[_sessionContent]           = "Delete";         // just before transfer
                }

                Server.Transfer(Request.FilePath, false);
            }
            catch (Exception exc)
            {
                ShowException(exc);
            }
        }
예제 #5
0
 internal Contact(decimal ID , User Owner)
 {
     _id=ID;
     _owner=Owner;
     _isProxy=true;
     _isDirty=false;
 }
예제 #6
0
        internal Contact(User Owner)
        {
            _owner=Owner;

            FI.Common.DataAccess.IContactsDA dacObj=DataAccessFactory.Instance.GetContactsDA();
            _id=dacObj.InsertContact(_owner.ID , this.Name , this.EMail , this.DistributionFormat.ToString());

            _isProxy=false;
            _isDirty=false;
        }
예제 #7
0
        private void Button1_Click(object sender, System.EventArgs e)
        {
            FI.BusinessObjects.User usr=new FI.BusinessObjects.User();
            usr.Authenticate(4);

            System.DateTime time1=System.DateTime.Now;
            OlapReport rpt=(OlapReport)usr.ReportSystem.GetReport(61 , typeof(OlapReport) , true);
            //rpt.AddToExecuteQueue();
            System.DateTime time2=System.DateTime.Now;

            Button1.Text=((System.TimeSpan)time2.Subtract(time1)).ToString();
        }
예제 #8
0
        private void Button1_Click(object sender, System.EventArgs e)
        {
            FI.BusinessObjects.User usr = new FI.BusinessObjects.User();
            usr.Authenticate(4);

            System.DateTime time1 = System.DateTime.Now;
            OlapReport      rpt   = (OlapReport)usr.ReportSystem.GetReport(61, typeof(OlapReport), true);

            //rpt.AddToExecuteQueue();
            System.DateTime time2 = System.DateTime.Now;

            Button1.Text = ((System.TimeSpan)time2.Subtract(time1)).ToString();
        }
예제 #9
0
        internal CrystalReport(decimal ID , User Owner)
            : base(ID,Owner)
        {
            if(ID==0) //if new
            {

                //FI.DataAccess.CustomSqlReports dacObj=new FI.DataAccess.CustomSqlReports();
                //_id=dacObj.InsertReport(_owner.ID , 0 , 0 , "New Report" , "" , this.IsSelected , this.Sql , this.Xsl);

                _isProxy=false;
                _isDirty=false;
            }
        }
예제 #10
0
        internal Distribution(User Owner , Report report , Contact contact, Report.ExportFormat format)
        {
            _owner=Owner;
            this.Report=report;
            this.Contact=contact;
            this.Format=format;

            FI.Common.DataAccess.IDistributionsDA dacObj=DataAccessFactory.Instance.GetDistributionsDA();
            _id=dacObj.InsertDistribution(_owner.ID, report.ID , contact.ID , report.GetTypeCode() , this.FrequencyType.ToString() , this.FrequencyValue.ToString(), (int)this.Format);

            _isProxy=false;
            _isDirty=false;
        }
        internal CustomSqlReport(decimal ID , User Owner)
            : base(ID,Owner)
        {
            if(ID==0) //if new
            {
                _xsl=DefaultXsl();

                FI.DataAccess.CustomSqlReports dacObj=DataAccessFactory.Instance.GetCustomSqlReportsDA();
                _id=dacObj.InsertReport(_owner.ID , 0 , 0 , "New Report" , "" , this.IsSelected , this.Sql , this.Xsl);

                _isProxy=false;
                _isDirty=false;
            }
        }
예제 #12
0
        private bool CheckUser()
        {
            if (Session["User"] != null)
            {
                if (Request.QueryString["action"] == "Logout")
                {
                    _user = (User)Session["User"];
                    _user.Logout();

                    Session.Abandon();
                    Response.Redirect("Default.aspx", true);
                    return(false);                    //it won't actually return
                }
                else
                {
                    _user = (User)Session["User"];
                    if (_user.IsProxy == false && _user.IsNew == false)
                    {
                        // check like in PageBase
                        if (_user.IsLoggedIn && _user.CheckSessionValidity() == false)
                        {
                            _user.Logout();
                            if (_message == null)                          //if no error before
                            {
                                _message = "Another user logged you out";
                                return(false);
                            }
                        }

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (_message == null && Request.QueryString["action"] == "NewSession")            //if no error before
                {
                    _message = "Session expired or per-session cookies disabled";
                }

                return(false);
            }
        }
예제 #13
0
        private void FIDataEdit_CancelButtonClick(object Sender, System.Web.UI.WebControls.CommandEventArgs e)
        {
            FI.BusinessObjects.User user = null;

            if (Session[_sessionItemCurrentObject] != null)
            {
                user = (FI.BusinessObjects.User)Session[_sessionItemCurrentObject];
            }


            user = null;

            Session[_sessionContent]           = "List";
            Session[_sessionItemCurrentObject] = null;

            Server.Transfer(Request.FilePath, false);
        }
예제 #14
0
        private void btnLogin_Click(object sender, System.EventArgs e)
        {
            try
            {
                _user=new FI.BusinessObjects.User(this.txtCompany.Text , this.txtLogin.Text , this.txtPassword.Text);
                _user.Login(this.chkForce.Checked, Request.UserHostAddress , Session.SessionID);
                Session["User"]=_user;
                _message=null;
            }
            catch(Exception exc)
            {
                if(Common.AppConfig.IsDebugMode)
                    Common.LogWriter.Instance.WriteEventLogEntry(exc);

                _message=exc.Message;
                ShowHeader();
            }
        }
예제 #15
0
        protected void btnLogin_Click(object sender, System.EventArgs e)
        {
            try
            {
                _user = new FI.BusinessObjects.User(this.txtCompany.Text, this.txtLogin.Text, this.txtPassword.Text);
                _user.Login(this.chkForce.Checked, Request.UserHostAddress, Session.SessionID);
                Session["User"] = _user;
                _message        = null;
            }
            catch (Exception exc)
            {
                if (Common.AppConfig.IsDebugMode)
                {
                    Common.LogWriter.Instance.WriteEventLogEntry(exc);
                }

                _message = exc.Message;
                ShowHeader();
            }
        }
예제 #16
0
        protected virtual void LoadSession()
        {
            //debug

            /*
             * if(Session["User"]==null)
             * {
             *      _user=new FI.BusinessObjects.User("salespp", "spp" , "spp");
             *      _user.Login(true);
             * }
             * else
             *      _user=(FI.BusinessObjects.User)Session["User"];
             *
             * return;
             */

            if (Session["User"] == null)
            {
                Response.Redirect(Request.ApplicationPath + "/Default.aspx?action=NewSession");
            }

            _user        = (FI.BusinessObjects.User)Session["User"];
            _cssStyleNum = _user.CssStyle;


            if (_user.IsLoggedIn && _user.CheckSessionValidity() == false)
            {
                _user.Logout();
                Session.Abandon();
                Response.Redirect(Request.ApplicationPath + "/Default.aspx?action=NewSession&msg=Another user forced Your logout");
            }

            if (FI.Common.AppConfig.AuditPageHits)
            {
                _user.AuditPageHit();
            }
            //
        }
예제 #17
0
        private void FIDataEdit_DeleteButtonClick(object Sender, System.Web.UI.WebControls.CommandEventArgs e)
        {
            FI.UI.Web.Controls.FIDataEdit dataEdit = (FI.UI.Web.Controls.FIDataEdit)Sender;

            if (dataEdit.IsValid == false)
            {
                return;
            }

            FI.BusinessObjects.User user = (FI.BusinessObjects.User)dataEdit.CurrentObject;

            try
            {
                _user.DeleteUser(user);
                Session[_sessionContent] = "List";

                Server.Transfer(Request.FilePath, false);
            }
            catch (System.Exception err)
            {
                _ed.ShowException(err);
            }
        }
예제 #18
0
 internal ReportSystem(User Owner)
 {
     _owner=Owner;
 }
예제 #19
0
        public void DeleteSharedReports(Report ParentReport)
        {
            FI.Common.Data.FIDataTable dataTable=this.GetUsersWithChildReports(ParentReport);
            if(dataTable==null || dataTable.Rows.Count==0)
                return;

            for(int i=0; i<dataTable.Rows.Count; i++)
            {
                DataRow row=dataTable.Rows[i];

                decimal userId=(decimal)row["user_id"];
                decimal reportId=(decimal)row["report_id"];
                int reportType=(int)row["report_type"];

                if(reportId==0)
                    continue;

                User user=new User(userId, true);
                Report childReport=user.ReportSystem.GetReport(reportId, user.ReportSystem.GetReportType(reportType) , false);
                user.ReportSystem.DeleteSharedReport(ParentReport, childReport);
            }
        }
예제 #20
0
        public User GetUser(decimal ID , bool AsProxy)
        {
            if(AsProxy)
            {
                User user=new User(ID , true);
                user._companyId=this._companyId;
                return user;
            }
            else
            {
                if(this.IsProxy)
                    throw new Exception("Cannot use proxy");
                if(this.IsAdmin==false && this.ID!=ID)
                    throw new Exception("Permission denied");

                return new User(ID , false);
            }
        }
예제 #21
0
        private bool CheckUser()
        {
            if (Session["User"] != null)
            {
                if (Request.QueryString["action"] == "Logout")
                {
                    _user = (User)Session["User"];
                    _user.Logout();

                    Session.Abandon();
                    HttpCookie cookie = Response.Cookies["FINFLoginCookie"];
                    if (cookie != null)
                    {
                        cookie.Value   = "-1";
                        cookie.Expires = DateTime.Now.AddMonths(-6);
                    }
                    Response.Redirect("Default.aspx", true);
                    return(false);                    //it won't actually return
                }
                else
                {
                    _user = (User)Session["User"];
                    if (_user.IsProxy == false && _user.IsNew == false)
                    {
                        // check like in PageBase
                        if (_user.IsLoggedIn && _user.CheckSessionValidity() == false)
                        {
                            _user.Logout();
                            if (_message == null)                          //if no error before
                            {
                                _message = "Another user logged you out";
                                return(false);
                            }
                        }


                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                // check by cookie
                if (LoginByCookie())
                {
                    return(true);
                }


                if (_message == null && Request.QueryString["action"] == "NewSession")            //if no error before
                {
                    _message = "Session expired or per-session cookies disabled";
                }

                return(false);
            }
        }
예제 #22
0
        public User NewUser()
        {
            if(this.IsProxy)
                throw new Exception("Cannot use proxy");
            if(this.IsAdmin==false)
                throw new Exception("Permission denied");

            User user=new User(0 , true);
            user._companyId=this._companyId;
            return user;
        }
예제 #23
0
        public void SaveUser(User user)
        {
            if(this.IsNew || this.IsProxy)
                throw new Exception("Cannot use new or proxy to save");
            if(user.IsNew==false && user.IsProxy)
                throw new Exception("Cannot save proxy");
            if(this.IsAdmin==false && this.ID!=user.ID)
                throw new Exception("Permission denied");

            if(this.ID==user.ID)
            {
                //saving itself , must not assign itself as admin if wasn't admin
                if(this._isAdminAudit==false && user.IsAdmin)
                    throw new Exception("Permission denied : IsAdmin property");
            }

            FI.Common.DataAccess.IUsersDA dacObj=DataAccessFactory.Instance.GetUsersDA();
            if(user.IsNew)
                user._id=dacObj.InsertUser(user._companyId , user.Logon , user.Password, user._passwordTimestamp , user.Name, user.Email , user.IsAdmin, user.CssStyle);
            else
                dacObj.UpdateUser(user.ID , user.Logon , user.Password , user._passwordTimestamp, user.Name, user.Email , user.IsAdmin, user.CssStyle);

            user._isProxy=false;
            user._isAdminAudit=user._isAdmin;
            if(this.ID==user.ID)
            {
                //update itself
                FI.Common.Data.FIDataTable table=dacObj.ReadUser(this.ID);
                this.LoadData(table);
            }
        }
예제 #24
0
        public void ExecuteAllOlapReports(string CompanyNameShort, int millisecondsTimeout, string logPath)
        {
            if(!System.IO.Path.IsPathRooted(logPath))
                logPath=FI.Common.AppConfig.TempDir + "\\" + logPath;

            FI.Common.DataAccess.IUsersDA dacObj=DataAccessFactory.Instance.GetUsersDA();
            FI.Common.Data.FIDataTable table=dacObj.ReadUsers();
            if(table.Rows.Count==0)
                return;
            table.DefaultView.Sort="Id asc";

            int errorCount=0;
            int rptCount=1;
            foreach(System.Data.DataRowView userRow in table.DefaultView)
            {
                if( ((string)userRow["CompanyNameShort"]).ToUpper()==CompanyNameShort.ToUpper())
                {
                    User user=new User((decimal)userRow["Id"] , false);
                    FI.Common.Data.FIDataTable t=user.ReportSystem.GetReportHeaders(typeof(OlapReport));
                    t.DefaultView.Sort="id asc";

                    string userLog=string.Format("***************** User id={0}, login='******', password='******'", user.ID, user.Logon, user.Password);
                    System.IO.StreamWriter sw=System.IO.File.AppendText(logPath);
                    sw.WriteLine(userLog);
                    sw.Close();

                    foreach(DataRowView rptRow in t.DefaultView)
                    {
                        if((byte)rptRow["sharing_status"]==(byte)Report.SharingEnum.InheriteSubscriber ||
                            (byte)rptRow["sharing_status"]==(byte)Report.SharingEnum.SnapshotSubscriber)
                            continue;

                        string log=string.Format("{0}\t#{1}\t", DateTime.Now.ToShortTimeString(), rptCount);
                        try
                        {
                            OlapReport rpt=(OlapReport)user.ReportSystem.GetReport((decimal)rptRow["id"], typeof(OlapReport), true);
                            log+=string.Format("OlapReport id={0}, name='{1}', description='{2}'", rpt.ID, rpt.Name, rpt.Description);

                            rpt.BeginExecute();
                            int milisecondCount=0;
                            while(milisecondCount<millisecondsTimeout && rpt.State==Report.StateEnum.Executing)
                            {
                                System.Threading.Thread.Sleep(500);
                                milisecondCount+=500;
                            }

                            if(rpt.State==Report.StateEnum.Executing)
                            {
                                rpt.CancelExecute();
                                log+="\r\n\tcanceled on timeout";
                            }
                            else
                            {
                                rpt.EndExecute();
                                log+="\r\n\tcompleted, cells=" + rpt.Cellset.Axis0PosCount*rpt.Cellset.Axis1PosCount;
                            }
                        }
                        catch(Exception exc)
                        {
                            log+=string.Format("exception \r\n\t\t{0}", exc.Message);
                            errorCount++;
                        }
                        rptCount++;

                        sw=System.IO.File.AppendText(logPath);
                        sw.WriteLine(log);
                        sw.Close();
                    }
                }
            }
        }
예제 #25
0
        private bool CheckUser()
        {
            if(Session["User"]!=null)
            {
                if(Request.QueryString["action"]=="Logout")
                {
                    _user=(User)Session["User"];
                    _user.Logout();

                    Session.Abandon();
                    Response.Redirect("Default.aspx" , true);
                    return false; //it won't actually return
                }
                else
                {
                    _user=(User)Session["User"];
                    if(_user.IsProxy==false && _user.IsNew==false)
                    {
                        // check like in PageBase
                        if(_user.IsLoggedIn && _user.CheckSessionValidity()==false)
                        {
                            _user.Logout();
                            if(_message==null) //if no error before
                            {
                                _message="Another user logged you out";
                                return false;
                            }
                        }

                        return true;
                    }
                    else
                        return false;
                }
            }
            else
            {
                if(_message==null && Request.QueryString["action"]=="NewSession") //if no error before
                    _message="Session expired or per-session cookies disabled";

                return false;
            }
        }
예제 #26
0
        public void DeleteUser(User user)
        {
            if(this.IsProxy)
                throw new Exception("Cannot use proxy");
            if(this.IsAdmin==false)
                throw new Exception("Permission denied");
            if(this.ID==user.ID)
                throw new Exception("Cannot delete itself");

            user.ContactSystem.DeleteAll();
            user.ReportSystem.DeleteAll(false);

            FI.Common.DataAccess.IUsersDA dacObj=DataAccessFactory.Instance.GetUsersDA();
            dacObj.DeleteUser(user.ID);
        }
예제 #27
0
        protected virtual void LoadSession()
        {
            //debug
            /*
            if(Session["User"]==null)
            {
                _user=new FI.BusinessObjects.User("salespp", "spp" , "spp");
                _user.Login(true);
            }
            else
                _user=(FI.BusinessObjects.User)Session["User"];

            return;
            */

            if(Session["User"]==null)
                Response.Redirect(Request.ApplicationPath + "/Default.aspx?action=NewSession");

            _user=(FI.BusinessObjects.User)Session["User"];
            _cssStyleNum=_user.CssStyle;

            if(_user.IsLoggedIn && _user.CheckSessionValidity()==false)
            {
                _user.Logout();
                Session.Abandon();
                Response.Redirect(Request.ApplicationPath + "/Default.aspx?action=NewSession&msg=Another user forced Your logout");
            }

            if(FI.Common.AppConfig.AuditPageHits)
                _user.AuditPageHit();
            //
        }
 internal DistributionSystem(User Owner)
 {
     _owner=Owner;
     _owner.ContactSystem.BeforeDeleteContact+=new EventHandler(OnBeforeDeleteContact);
     _owner.ReportSystem.BeforeDeleteReport+=new EventHandler(OnBeforeDeleteReport);
 }
        public void SendDistribution(decimal distributionId, DateTime getCacheFrom, Guid olapTaskGuid, out bool isFromCache)
        {
            try
            {
                isFromCache=false;

                FI.Common.DataAccess.IDistributionsDA dacObj=DataAccessFactory.Instance.GetDistributionsDA();
                decimal userId=dacObj.GetDistributionOwnerId(distributionId);
                if(userId<=0)
                    return;

                User user=new User(userId, true);
                Distribution distr=user.DistributionSystem.GetDistribution(distributionId, true);
                Report report=distr.Report;

                if(report.IsProxy)
                    report.Open();

                if(report.State==Report.StateEnum.Open)
                {
                    OlapReport olapRpt=report as OlapReport;
                    if(olapRpt!=null)
                        olapRpt.Execute(olapTaskGuid);
                    else
                        report.Execute();
                }

                Contact contact=distr.Contact;
                if(contact.IsProxy)
                    contact.Fetch();

                SendReport(report , new Contact[] {contact} , distr.Format, getCacheFrom, out isFromCache);
            }
            catch(Exception exc)
            {
                Common.LogWriter.Instance.WriteEventLogEntry(exc);
                throw exc;
            }
        }
        public void EnqueueScheduledDistributions(System.DateTime Date , string CompanyNameShort)
        {
            FI.Common.DataAccess.IUsersDA dacObj=DataAccessFactory.Instance.GetUsersDA();
            FI.Common.Data.FIDataTable table=dacObj.ReadUsers();
            if(table.Rows.Count==0)
                return;

            foreach(System.Data.DataRow row in table.Rows)
            {
                if( ((string)row["CompanyNameShort"]).ToUpper()==CompanyNameShort.ToUpper())
                {
                    User user=new User((decimal)row["Id"] , true);
                    user.DistributionSystem.EnqueueDistributions(Date);
                }
            }
        }
예제 #31
0
 internal ContactSystem(User Owner)
 {
     _owner=Owner;
 }