示例#1
0
 public static bool Login(string username, string password)
 {
     using (DBconn conn = new DBconn())
     {
         return(conn.Users.Any(user => user.Username.Equals(username, StringComparison.OrdinalIgnoreCase) && user.Password == password));
     }
 }
示例#2
0
 public static void Close()
 {
     if (IsDBConnected)
     {
         DBconn.Close();
     }
 }
示例#3
0
        public void Approve(string approveBy, string comment)
        {
            int id = DBconn.insertAgent(approveBy);

            if (_machine.State == State.Reviewed)
            {
                _machine.Fire(_approveTrigger, id, comment);
            }
        }
示例#4
0
        public void Review(string reviewBy, string comment)
        {
            int id = DBconn.insertAgent(reviewBy);

            if (_machine.State == State.Designated)
            {
                _machine.Fire(_reviewTrigger, id, comment);
            }
        }
示例#5
0
        public void Create(string createBy, string comment)
        {
            int id = DBconn.insertAgent(createBy);

            if (_machine.State == State.Designated)
            {
                _machine.Fire(_createTrigger, id, comment);
            }
        }
示例#6
0
        public void Reject(string rejectBy, string comment)
        {
            int id = DBconn.insertAgent(rejectBy);

            if (_machine.State == State.Designated || _machine.State == State.Reviewed)
            {
                _machine.Fire(_rejectTrigger, id, comment);//This is reject action.//[email protected]
                //Sorry, your request is rejected.
                EmailUtil.SendEmail("Sorry, this is only testing.", comment, _element.EmailAddress);
            }
        }
示例#7
0
        public Stateless(int eid)
        {
            List <WorkElement> cElement = DBconn.GetStateless(eid);

            if (cElement.Count == 0)
            {
                string orderTitle = "NewWorkElement" + DateTime.Now, orderDesc = "";
                var    nowdate = DateTime.Now;
                var    res     = DBconn.excuteQuery($"insert into element (ordertitle,orderdesc,laststate,requestdate,terminationdate) output Inserted.id values('','','{_state}','{nowdate}',null);");
                if (!int.TryParse(res.ToString(), out eid))
                {
                    eid = 0;
                }
                _element = new WorkElement
                {
                    Id               = eid,
                    OrderTitle       = orderTitle,
                    RequestedBy      = "",
                    EmailAddress     = "",
                    OrderDescription = orderDesc,
                    RequestDate      = nowdate,
                    Transition       = new List <Transition>()
                };
            }
            else
            {
                _element = new WorkElement
                {
                    Id               = eid,
                    OrderTitle       = cElement[0].OrderTitle,
                    RequestedBy      = cElement[0].RequestedBy,
                    EmailAddress     = cElement[0].EmailAddress,
                    OrderDescription = cElement[0].OrderDescription,
                    RequestDate      = cElement[0].RequestDate,
                    Transition       = cElement[0].Transition
                };
            }
            ConfigStateless();
        }
示例#8
0
        public Stateless()
        {
            string orderTitle = "NewWorkElement" + DateTime.Now, orderDesc = "";
            int    eid;
            var    nowdate = DateTime.Now;
            var    res     = DBconn.excuteQuery($"insert into element (ordertitle,orderdesc,laststate,requestdate,terminationdate) output Inserted.id values('','','{_state}','{nowdate}',null);");

            if (!int.TryParse(res.ToString(), out eid))
            {
                eid = 0;
            }
            _element = new WorkElement
            {
                Id               = eid,
                OrderTitle       = orderTitle,
                OrderDescription = orderDesc,
                RequestDate      = nowdate,
                Transition       = new List <Transition>()
            };

            ConfigStateless();
        }
示例#9
0
        public WorkElement _element;//a request for creating a service order or work element release
        public Stateless(string requestedBy, string requestedMail, string orderTitle, string orderDesc)
        {
            int eid;
            var nowdate = DateTime.Now;
            int id      = DBconn.insertAgent(requestedBy, requestedMail);
            var res     = DBconn.excuteQuery($"insert into element (ordertitle,orderdesc,requestedby,laststate,requestdate,terminationdate) output Inserted.id values('{orderTitle}','{orderDesc}','{id}','{_state}','{nowdate}',null);");

            if (!int.TryParse(res.ToString(), out eid))
            {
                eid = 0;
            }
            _element = new WorkElement
            {
                Id               = eid,
                OrderTitle       = orderTitle,
                OrderDescription = orderDesc,
                RequestedBy      = requestedBy,
                EmailAddress     = requestedMail,
                RequestDate      = nowdate,
                Transition       = new List <Transition>()
            };

            ConfigStateless();
        }
示例#10
0
        private void ConfigStateless()
        {
            _machine        = new StateMachine <State, Trigger>(() => _state, s => _state = s);
            _assignTrigger  = _machine.SetTriggerParameters <int, string>(Trigger.Assign);
            _createTrigger  = _machine.SetTriggerParameters <int, string>(Trigger.Create);
            _rejectTrigger  = _machine.SetTriggerParameters <int, string>(Trigger.Reject);
            _reviewTrigger  = _machine.SetTriggerParameters <int, string>(Trigger.Review);
            _approveTrigger = _machine.SetTriggerParameters <int, string>(Trigger.Approve);

            _machine.Configure(State.New)
            .Permit(Trigger.Assign, State.Designated);

            _machine.Configure(State.Designated)
            .Permit(Trigger.Create, State.Completed)
            .Permit(Trigger.Review, State.Reviewed)
            .Permit(Trigger.Reject, State.Rejected);

            _machine.Configure(State.Reviewed)
            .Permit(Trigger.Approve, State.Approved)
            .Permit(Trigger.Reject, State.Rejected);

            _machine.Configure(State.Approved)
            .Permit(Trigger.Assign, State.Designated);

            _machine.OnTransitioned(
                t =>
            {
                var d = DateTime.Now;
                DBconn.excuteQuery($"insert into statelog (elementid,triggerid,triggeredby,triggereddate,sourcestate,destinationstate,comment) output Inserted.id values('{_element.Id}','{t.Trigger}','" + (t.Parameters.Length > 0 ? t.Parameters[0] : "0") + "','" + d + "','" + t.Source + "','" + t.Destination + "','" + (t.Parameters.Length > 1 ? t.Parameters[1] : "") + "');");
                DBconn.excuteQuery($"update element set laststate='{t.Destination}',terminationdate='{d}' where id='{_element.Id}';");
                Console.WriteLine(
                    $"OnTransitioned: {t.Source} -> {t.Destination} via {t.Trigger}({string.Join(", ", t.Parameters)})"
                    );
            }
                );
        }
示例#11
0
        public void Assign(string requestBy, string comment)
        {
            int id = DBconn.insertAgent(requestBy);

            _machine.Fire(_assignTrigger, id, comment);
        }