Exemple #1
0
        public void setParentDepartment_validObjToValidParent_willCreateDepartmentParentChildRelation()
        {
            DepartmentHelper o          = new DepartmentHelper(db);
            Department       department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            o.saveCreatedObject(bizEntitySchema, department, null);

            o.setParentDepartment(department.departmentId, departmentParent, bizEntitySchema.bizEntitySchemaId);

            var dpcrs = db.departmentParentChildRelations.Where(dpcr =>
                                                                dpcr.assistBizEntitySchemaId == bizEntitySchema.bizEntitySchemaId &&
                                                                dpcr.departmentIdChild == department.departmentId);

            Assert.AreEqual(1, dpcrs.Count());
            Assert.IsNotNull(dpcrs.FirstOrDefault().departmentParent);
        }
Exemple #2
0
        public IHttpActionResult Post([FromUri] int bizEntitySchemaId,
                                      [FromUri] int departmentParentId, Department value)
        {
            var departmentParent = db.departments.Find(departmentParentId);

            if (value == null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            BizEntitySchemaHelper bizEntitySchemaHelper = new BizEntitySchemaHelper(db);

            if (!bizEntitySchemaHelper.isObjectExists(bizEntitySchemaId) ||
                (departmentParentId > 0 && departmentParent == null))
            {
                return(BadRequest("数据错误!"));
            }

            DepartmentHelper departmentHelper = new DepartmentHelper(db);

            try
            {
                departmentHelper.saveCreatedObject(
                    db.bizEntitySchemas.Find(bizEntitySchemaId), value, departmentParent);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            return(Ok(departmentHelper.convert2DTO(value)));
        }
Exemple #3
0
        public IHttpActionResult Put(int id, Department value)
        {
            if (value == null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != value.departmentId)
            {
                return(BadRequest());
            }

            DepartmentHelper departmentHelper = new DepartmentHelper(db);

            try
            {
                if (!departmentHelper.isObjectExists(id))
                {
                    return(NotFound());
                }

                if (!departmentHelper.isObjectChangeAllowed(id, value))
                {
                    return(BadRequest("不允许修改对象!"));
                }
                db.Entry(value).State = EntityState.Modified;
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemple #4
0
        public void setUserDepartment_existingRelation_willUpdate()
        {
            DepartmentHelper o = new DepartmentHelper(db);
            BizEntitySchema  bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department department = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (department == null)
            {
                Assert.Ignore("Not found department object");
            }
            UserHelper userHelper = new UserHelper(db);
            User       user       = userHelper.createObject();

            user.name = "Integration_Test_XXXYYYZZZ_1";
            userHelper.saveCreatedObject(user);
            userHelper.setUserDepartment(user.userId, department,
                                         UserPositionToDepartment.other);

            userHelper.setUserDepartment(user.userId, department,
                                         UserPositionToDepartment.manager);

            Assert.AreEqual(1,
                            db.departmentUserRelations.Where(
                                r => r.assistDepartmentId == department.departmentId &&
                                r.assistUserId == user.userId).Count());
            Assert.AreEqual(UserPositionToDepartment.manager,
                            db.departmentUserRelations.Where(
                                r => r.assistDepartmentId == department.departmentId &&
                                r.assistUserId == user.userId).First().userPosition);
        }
Exemple #5
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, RoleManager <IdentityRole> roleManager)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseAuthentication();

            app.UseSession();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

            var scopeFactory = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>();

            using (var scope = scopeFactory.CreateScope())
            {
                RoleHelper.EnsureRolesCreated(roleManager).Wait();
                DepartmentHelper.EnsureDepartmentsCreated(scope.ServiceProvider.GetService <ApplicationDbContext>()).Wait();
            }
        }
Exemple #6
0
        public void saveCreatedObject_validObjWithParent_willExist()
        {
            DepartmentHelper o          = new DepartmentHelper(db);
            Department       department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }

            o.saveCreatedObject(bizEntitySchema, department, departmentParent);

            Assert.AreEqual(1,
                            db.departments.AsNoTracking().Where(
                                d => d.departmentId == department.departmentId).Count());
            Assert.AreEqual(1,
                            db.departmentParentChildRelations.Where(
                                dpcr => dpcr.departmentIdParent == departmentParent.departmentId &&
                                dpcr.departmentIdChild == department.departmentId &&
                                dpcr.assistBizEntitySchemaId == bizEntitySchema.bizEntitySchemaId).Count());
        }
Exemple #7
0
        public void saveCreatedObject_validObjWithMultipleParent_willThrow()
        {
            DepartmentHelper o          = new DepartmentHelper(db);
            Department       department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            Department departmentParent2 = o.createObject();

            departmentParent2.name = "Integration_Test_Another_Department";
            o.saveCreatedObject(bizEntitySchema, departmentParent2, departmentParent);
            o.saveCreatedObject(bizEntitySchema, department, departmentParent);

            Assert.Throws <DataLogicException>(() =>
                                               o.saveCreatedObject(bizEntitySchema, department, departmentParent2),
                                               string.Format("部门'{0}'已被创建并属于其他部门, 请调用setParentDepartment方法",
                                                             department.name));
        }
Exemple #8
0
        public void getUserDTOsOfPositionInDepartment_validCriteria_returnCorrectList()
        {
            DepartmentHelper o = new DepartmentHelper(db);
            BizEntitySchema  bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department department = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (department == null)
            {
                Assert.Ignore("Not found department object");
            }
            UserHelper userHelper = new UserHelper(db);
            User       user       = userHelper.createObject();

            user.name = "Integration_Test_XXXYYYZZZ_1";
            userHelper.saveCreatedObject(user);
            userHelper.createDepartmentUserRelation(
                department, user, UserPositionToDepartment.manager);
            User user2 = userHelper.createObject();

            user2.name = "Integration_Test_XXXYYYZZZ_2";
            userHelper.saveCreatedObject(user2);
            userHelper.createDepartmentUserRelation(
                department, user2, UserPositionToDepartment.normal);

            var userDTOs = o.getUserDTOsOfPositionInDepartment(
                department.departmentId, UserPositionToDepartment.manager);

            Assert.AreEqual(1, userDTOs.Where(u => u.userId == user.userId).Count());
            Assert.Zero(userDTOs.Where(u => u.userId == user2.userId).Count());
        }
Exemple #9
0
        public void convert2DTO_departmentHasNoChildren_returnCorrectObject()
        {
            DepartmentHelper o = new DepartmentHelper(db);
            BizEntitySchema  bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            Department department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            o.saveCreatedObject(bizEntitySchema, department, departmentParent);

            var departmentDTO = o.convert2DTO(department);

            Assert.Zero(departmentDTO.users.Count());
            Assert.Zero(departmentDTO.departments.Count());
        }
Exemple #10
0
        public async Task <ActionResult> Create(FormCollection fc)
        {
            Department o = DepartmentHelper.GetObject(null, fc);

            Dictionary <string, object> err = null;

            ISession se = NHibernateHelper.CurrentSession;

            err = o.IsValid(se);

            if (err == null)
            {
                await Task.Run(() =>
                {
                    using (ITransaction tx = se.BeginTransaction())
                    {
                        se.SaveOrUpdate(o);
                        tx.Commit();
                    }
                });

                return(Json(new Dictionary <string, object>
                {
                    { "success", 1 },
                    { "message", "Department was successfully added." }
                },
                            JsonRequestBehavior.AllowGet));
            }

            else
            {
                return(Json(err, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #11
0
        public void removeDepartment_validObjWithNoChildren_willRemove()
        {
            DepartmentHelper o          = new DepartmentHelper(db);
            Department       department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            o.saveCreatedObject(bizEntitySchema, department, departmentParent);

            o.removeDepartment(department.departmentId);

            var dpcrs = db.departmentParentChildRelations.Where(dpcr =>
                                                                dpcr.assistBizEntitySchemaId == bizEntitySchema.bizEntitySchemaId &&
                                                                dpcr.departmentIdChild == department.departmentId);

            Assert.IsFalse(dpcrs.FirstOrDefault().departmentChild.isVisible);
        }
Exemple #12
0
        public void setParentDepartment_validObjToSelfDescedent_willThrow()
        {
            DepartmentHelper o          = new DepartmentHelper(db);
            Department       department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            o.saveCreatedObject(bizEntitySchema, department, departmentParent);
            Department departmentLastLevel = o.createObject();

            departmentLastLevel.name = "Integration_Test_XXXYYYZZZ_LastLevel";
            o.saveCreatedObject(bizEntitySchema, departmentLastLevel, department);

            Assert.Throws <DataLogicException>(() =>
                                               o.setParentDepartment(departmentParent.departmentId, departmentLastLevel,
                                                                     bizEntitySchema.bizEntitySchemaId),
                                               "设置的祖先不能为自己的子孙节点!");
        }
Exemple #13
0
        public void createDepartmentUserRelation_existingOtherRelationOfSimpleMode_willThrow()
        {
            DepartmentHelper o = new DepartmentHelper(db);
            BizEntitySchema  bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            Department department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            o.saveCreatedObject(bizEntitySchema, department, departmentParent);
            UserHelper userHelper = new UserHelper(db);
            User       user       = userHelper.createObject();

            user.name = "Integration_Test_XXXYYYZZZ_1";
            userHelper.saveCreatedObject(user);
            userHelper.setUserDepartment(user.userId, department,
                                         UserPositionToDepartment.other);

            Assert.Throws <DataLogicException>(() =>
                                               userHelper.createDepartmentUserRelation(department, user,
                                                                                       UserPositionToDepartment.manager));
        }
Exemple #14
0
        //
        // GET: /Admin/Department/

        public async Task <ActionResult> Index()
        {
            ListModel <Department> l = null;

            l = await DepartmentHelper.GetAll();

            return(View(l));
        }
Exemple #15
0
        public IHttpActionResult Get(int id)
        {
            var obj = db.departments.Find(id);

            if (obj == null)
            {
                return(NotFound());
            }

            DepartmentHelper departmentHelper = new DepartmentHelper(db);

            return(Ok(departmentHelper.convert2DTO(obj)));
        }
Exemple #16
0
        public IHttpActionResult SetParent(int id, int departmentIdParent, int bizEntitySchemaId)
        {
            var bizDepartmentParent = db.departments.Find(departmentIdParent);

            DepartmentHelper departmentHelper = new DepartmentHelper(db);

            try
            {
                departmentHelper.setParentDepartment(
                    id, bizDepartmentParent, bizEntitySchemaId);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemple #17
0
        public IHttpActionResult Delete(int id)
        {
            var obj = db.departments.Find(id);

            if (obj == null)
            {
                return(NotFound());
            }

            try
            {
                DepartmentHelper departmentHelper = new DepartmentHelper(db);
                departmentHelper.removeDepartment(id);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            return(Ok(obj));
        }
Exemple #18
0
        public void removeDepartment_validObjWithChildren_willThrow()
        {
            DepartmentHelper o          = new DepartmentHelper(db);
            Department       department = o.createObject();

            department.name = "Integration_Test_XXXYYYZZZ";
            BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault();

            if (bizEntitySchema == null)
            {
                Assert.Ignore("Not found BizEntitySchema object");
            }
            Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault();

            if (departmentParent == null)
            {
                Assert.Ignore("Not found departmentParent object");
            }
            o.saveCreatedObject(bizEntitySchema, department, departmentParent);

            Assert.Throws <DataLogicException>(() =>
                                               o.removeDepartment(departmentParent.departmentId),
                                               "不能直接删除带有子节点的Department");
        }
Exemple #19
0
        public async Task <ActionResult> List()
        {
            string keyword    = CommonHelper.GetValue(Request["keyword"]);
            int    pgnum      = CommonHelper.GetValue <int>(Request["pgnum"], 1);
            int    pgsize     = CommonHelper.GetValue <int>(Request["pgsize"], 0);
            string sortcolumn = CommonHelper.GetValue(Request["sortcolumn"], DepartmentHelper.DEFAULT_SORT_COLUMN);
            string sortdir    = CommonHelper.GetValue(Request["sortdir"], DepartmentHelper.DEFAULT_SORT_DIR);

            Sort sort = new Sort(sortcolumn, sortdir);

            ListModel <Department> l = null;

            if (string.IsNullOrEmpty(keyword))
            {
                l = await DepartmentHelper.GetAll(pgnum, pgsize, sort);
            }

            else
            {
                l = await DepartmentHelper.GetFilterBy(keyword, pgnum, pgsize, sort);
            }

            return(View("_list", l));
        }
Exemple #20
0
        public async Task <JsonResult> Delete(FormCollection fc)
        {
            string keyword = CommonHelper.GetValue(Request["keyword"]);
            int    pgnum   = CommonHelper.GetValue <int>(Request["pgnum"], 1);
            int    pgsize  = CommonHelper.GetValue <int>(Request["pgsize"], 0);
            string ids     = fc.Get("id[]");

            string[] idlist = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            string itemscount = null;

            ISession se = NHibernateHelper.CurrentSession;

            await DeleteReferences(se, idlist);

            await Task.Run(() =>
            {
                using (ITransaction tx = se.BeginTransaction())
                {
                    se.CreateQuery("delete from Department where id in (:idlist)")
                    .SetParameterList("idlist", idlist)
                    .ExecuteUpdate();
                    tx.Commit();
                }
            });

            itemscount = await DepartmentHelper.GetItemMessage(keyword, pgnum, pgsize);

            return(Json(new Dictionary <string, object>
            {
                { "success", 1 },
                { "itemscount", itemscount },
                { "message", string.Format("{0} Department(s) was successfully deleted.", idlist.Length) }
            },
                        JsonRequestBehavior.AllowGet));
        }
Exemple #21
0
        static void Main(string[] args)
        {
            CompanyHelper    companyHelper    = new CompanyHelper();
            BranchHelper     branchHelper     = new BranchHelper();
            DepartmentHelper departmentHelper = new DepartmentHelper();


            try {
                if (companyHelper.GetAll().Count > 0)
                {
                    companyHelper.GetAll().ToList().ForEach(c => {
                        WriteLine("\n------------- Company ------------------");
                        WriteLine($"---    {c.Name} has {c.Branches.Count} branch(es)");
                        WriteLine("----------------------------------------");

                        if (c.Branches.Count > 0)
                        {
                            c.Branches.ToList().ForEach(b => {
                                WriteLine("\n  -------------Branch(es)----------------");
                                WriteLine($"  > {b.Name} has {departmentHelper.GetDepartmentsByBranchId(b.Id).Count} Department(s)");
                                if (departmentHelper.GetDepartmentsByBranchId(b.Id).Count > 0)
                                {
                                    WriteLine("\n  ---------Department(s)------------");
                                    departmentHelper.GetDepartmentsByBranchId(b.Id).ForEach(d => {
                                        WriteLine($"  > {d.Name}");
                                    });
                                }
                            });
                        }
                        WriteLine("----------------------------------------");
                    });
                }
                else
                {
                    WriteLine("no company added to db yet");
                    WriteLine("would you like to Add a test Company ?");
                    var ans = Console.ReadLine();
                    if (ans.Equals("y", StringComparison.OrdinalIgnoreCase))
                    {
                        Company c = new Company {
                            Name     = "MrLee Ltd",
                            Branches = new List <Branch> {
                                new Branch {
                                    Name        = "Head Office",
                                    Departments = new List <Department> {
                                        new Department {
                                            Name = "Development Department"
                                        },
                                        new Department {
                                            Name = "Human Resources Department"
                                        },
                                        new Department {
                                            Name = "Networking Department"
                                        },
                                    }
                                },
                                new Branch {
                                    Name        = "China Office",
                                    Departments = new List <Department> {
                                        new Department {
                                            Name = "Development Department"
                                        },
                                        new Department {
                                            Name = "PMP Department"
                                        },
                                        new Department {
                                            Name = "Security Analysis Department"
                                        },
                                    }
                                }
                            }
                        };
                        companyHelper.Add(c);
                        Console.WriteLine("Done!! please restart the program to view changes");
                    }
                }
            }
            catch (Exception ex) {
                WriteLine($"Error  > {ex.Message}");
            }

            ReadKey();
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //判断是不是评审
            if (!TeacherHelper.isJudge(Session["TeacherNumber"].ToString()))
            {
                liJudge.Visible = false;
            }

            if (!IsPostBack)
            {
                DataTable dt = DepartmentHelper.getDepartment();
                rptSelect.DataSource = dt;
                rptSelect.DataBind();

                DataTable dt_rank = RankHelper.getRank();
                rptRank.DataSource = dt_rank;
                rptRank.DataBind();

                int teacher_id = 1;
                if (Session["TeacherNumber"] != null)
                {
                    teacher_id = TeacherHelper.getTeacherIDByNumber(Session["TeacherNumber"].ToString());
                }
                else
                {
                    Response.Redirect("main-index.aspx");
                }
                using (var db = new TeachingCenterEntities())
                {
                    var teacher = (from it in db.Teacher where it.id == teacher_id select it).FirstOrDefault();
                    txtName.Text   = teacher.name;
                    txtNumber.Text = teacher.number;
                    txtEmail.Text  = teacher.email;
                    txtPhone.Text  = teacher.phone_number;
                    if (teacher.department != "")
                    {
                        depart.Text = teacher.department;
                    }
                    else
                    {
                        depart.Text = "请选择院系";
                    }
                    if (teacher.rank != "")
                    {
                        rank.Text = teacher.rank;
                    }
                    else
                    {
                        rank.Text = "请选择职称";
                    }
                    lbType.Text = teacher.is_judge == 0 ? "教师" : "评委";
                    if (teacher.is_judge == 1)
                    {
                        applyJudge.Visible = false;
                    }
                    HtmlInputHidden gender = FindControl("gender") as HtmlInputHidden;
                    gender.Value = teacher.gender.ToString();
                    HtmlInputHidden department = FindControl("lbSelected") as HtmlInputHidden;
                    department.Value = teacher.department;
                    HtmlInputHidden rank_ = FindControl("lbSelectedRank") as HtmlInputHidden;
                    rank_.Value = teacher.rank;
                }
            }
        }
        catch
        {
            JSHelper.AlertThenRedirect("请先登录!", "main-index.aspx");
        }
    }
Exemple #23
0
 public DepartmentController(DepartmentHelper departmentHelper)
 {
     this._departmentHelper = departmentHelper;
 }
Exemple #24
0
        public HttpResponseMessage ManageDepartment([FromBody] DepartmentRequest reqObj)
        {
            #region variable
            int result = 0;
            var st     = new StackTrace();
            var sf     = st.GetFrame(0);
            currentMethodName     = sf.GetMethod().Name;
            currentControllerName = this.GetType().Name;
            #endregion

            #region objects
            //Helper Classes
            GeneralHelper    GH        = new GeneralHelper();
            DepartmentHelper helperObj = new DepartmentHelper();
            //DataOperation
            DataSet ds = new DataSet();
            //Entity Objects
            department[] entityObjects = new department[] { };
            //Proxy Objects
            DepartmentResponse response = new DepartmentResponse();
            #endregion

            try
            {
                //Log Request
                LogRequest(currentControllerName, currentMethodName, new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(reqObj), WorkFlowConstants.NDepartment, reqObj.tui);
                //Validate Request
                response = helperObj.ValidateRequest(reqObj);
                if (response != null && response.code == ResponseConstants.OK.ToString())
                {
                    //Get Logined User Id
                    UserId = GH.GetUserId(Request.Headers.Authorization.Parameter);
                    //Process Proxy to Entity
                    entityObjects = helperObj.ProcessProxyToEntity(reqObj, UserId);

                    for (int idx = 0; idx < reqObj.departments.Length; idx++)
                    {
                        if (reqObj.departments[idx].action.ToUpper() == "A")
                        {
                            //Check The Existance Of New Request
                            if (!helperObj.CheckTheDataExistance(entityObjects[idx]))
                            {
                                //Insert Entity Details
                                result = helperObj.ProcessInsertEntity(entityObjects[idx]);
                                if (result > 0)
                                {
                                    response.departments[idx].Id = getEncryptData(result.ToString(), DBConstants.PrimaryKey);
                                }
                                else
                                {
                                    response.departments[idx].message = entityObjects[idx].DepartmentName + " Insertion " + ResponseConstants.Fail;
                                }
                            }
                            else
                            {
                                response.departments[idx].message = ResponseConstants.Exist;
                            }
                        }
                        else if (reqObj.departments[idx].action.ToUpper() == "S")
                        {
                            //Get The Data
                            ds = helperObj.GetTheData(entityObjects[idx]);
                        }
                        else if (reqObj.departments[idx].action.ToUpper() == "E")
                        {
                            //Update The Data
                            result = helperObj.UpdateTheData(entityObjects[idx]);
                            if (result > 0)
                            {
                            }
                            else
                            {
                                response.departments[idx].message = entityObjects[idx].DepartmentName + " Update " + ResponseConstants.Fail;
                            }
                        }
                        else if (reqObj.departments[idx].action.ToUpper() == "D")
                        {
                            //Delete The Data
                            result = helperObj.DeleteTheData(entityObjects[idx]);
                            if (result > 0)
                            {
                            }
                            else
                            {
                                response.departments[idx].message = entityObjects[idx].DepartmentName + " Deletion " + ResponseConstants.Fail;
                            }
                        }
                    }
                }
                //Response Processing
                response = helperObj.processResponseToProxy(response, ds, reqObj.tui, Request.Headers.Authorization.Parameter, response.message, reqObj.departments[0].action);
                //Log Response
                LogResponse(currentControllerName, currentMethodName, new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(response), WorkFlowConstants.NDepartment, response.tui);
            }
            catch (Exception ex)
            {
                try
                {
                    currentMethodName     = ex.Message.ToString().Split('|').Count() > 1 ? ex.Message.ToString().Split('|')[0] : currentMethodName;
                    currentControllerName = ex.Message.ToString().Split('|').Count() > 1 ? ex.Message.ToString().Split('|')[1] : this.GetType().Name;
                    LogError(currentControllerName, currentMethodName, ex.Message, reqObj.tui == null ? "" : reqObj.tui);
                }
                catch (Exception)
                {
                }

                response.code    = ResponseConstants.Exception.ToString();
                response.message = ResponseConstants.SomeErrorOccoured;
            }
            msg = Request.CreateResponse(HttpStatusCode.OK, response);
            return(msg);
        }
Exemple #25
0
        static void Main(string[] args)
        {
            try
            {
                //请改写你的配置
                Vars.AGENT_ID        = "";
                Env.CORP_ID          = "";
                Env.SECRET           = "";
                Env.CREATE_SUITE_KEY = "";
                Env.SUITE_KEY        = "";
                Env.SUITE_SECRET     = "";
                Env.TOKEN            = "";
                Env.ENCODING_AES_KEY = "";
                // 获取access token
                string accessToken = AuthHelper.getAccessToken();
                log("成功获取access token: ", accessToken);

                // 获取jsapi ticket
                String ticket = AuthHelper.getJsapiTicket(accessToken);
                log("成功获取jsapi ticket: ", ticket);

                // 获取签名
                String nonceStr  = "nonceStr";
                long   timeStamp = Convert.ToInt64(DateTime.Now.Subtract(DateTime.Parse("1970-1-1")).TotalMilliseconds);//System.currentTimeMillis();
                String url       = "http://www.dingtalk.com";
                String signature = AuthHelper.sign(ticket, nonceStr, timeStamp, url);
                log("成功签名: ", signature);

                //获取部门列表
                List <Department> list = DepartmentHelper.listDepartments(accessToken);
                log("成功获取部门列表", list);

                //创建部门
                String name     = "TestDept.16";
                String parentId = "1";
                String order    = "1";
                var    depttmp  = list.Find(dp => dp.name == name);
                if (depttmp != null)
                {
                    DepartmentHelper.deleteDepartment(accessToken, long.Parse(depttmp.id));
                }
                long departmentId = DepartmentHelper.createDepartment(accessToken,
                                                                      name, parentId, order);
                log("成功创建部门", name, " 部门id=", departmentId);


                //更新部门
                DepartmentHelper.updateDepartment(accessToken, name, parentId, order, departmentId);
                log("成功更新部门", " 部门id=", departmentId);
                var usrlist = UserHelper.getDepartmentUser(accessToken, departmentId);
                var userf   = usrlist.Find(usr => usr.userid == "id_yuhuan");
                if (userf != null)
                {
                    UserHelper.deleteUser(accessToken, userf.userid);
                    log("用户删除成功", name, " 用户ID=", userf.userid);
                }
                //创建成员
                User user = new User("id_yuhuan", "name_yuhuan");
                user.email      = "*****@*****.**";
                user.mobile     = "18645512324";
                user.department = new List <long>();
                user.department.Add(departmentId);
                UserHelper.createUser(accessToken, user);
                log("成功创建成员", "成员信息=", user);

                //上传图片
                FileInfo file = new FileInfo("1111.PNG");
                MediaHelper.MediaUploadResult uploadResult =
                    MediaHelper.upload(accessToken, MediaHelper.TYPE_IMAGE, file);
                log("成功上传图片", uploadResult);

                //下载图片
                String fileDir = "1111.PNG";
                MediaHelper.download(accessToken, uploadResult.media_id, fileDir);
                log("成功下载图片");

                TextMessage  textMessage  = new TextMessage("TextMessage");
                ImageMessage imageMessage = new ImageMessage(uploadResult.media_id);
                LinkMessage  linkMessage  = new LinkMessage("http://www.baidu.com", "@lALOACZwe2Rk",
                                                            "Link Message", "This is a link message");

                //创建oa消息
                OAMessage oaMessage = new OAMessage();
                oaMessage.message_url = "http://www.dingtalk.com";
                OAMessage.Head head = new OAMessage.Head();
                head.bgcolor   = "FFCC0000";
                oaMessage.head = head;
                OAMessage.Body body = new OAMessage.Body();
                body.title = "征婚启事";
                OAMessage.Body.Form form1 = new OAMessage.Body.Form();
                form1.key   = "姓名";
                form1.value = "刘增产";
                OAMessage.Body.Form form2 = new OAMessage.Body.Form();
                form2.key   = "年龄";
                form2.value = "18";
                body.form   = new List <OAMessage.Body.Form>();
                body.form.Add(form1);
                body.form.Add(form2);
                OAMessage.Body.Rich rich = new OAMessage.Body.Rich();
                rich.num        = "5";
                rich.unit       = "毛";
                body.rich       = rich;
                body.content    = "这是一则严肃的征婚启事。不约。";
                body.image      = "";
                body.file_found = "3";
                body.author     = "识器";
                oaMessage.body  = body;

                //发送微应用消息
                String toUsers   = Vars.TO_USER;
                String toParties = ""; // Vars.TO_PARTY;
                String agentId   = Vars.AGENT_ID;
                foreach (var item in list)
                {
                    toParties += item.id + "|";
                }
                LightAppMessageDelivery lightAppMessageDelivery =
                    new LightAppMessageDelivery(toUsers, toParties, agentId);

                lightAppMessageDelivery.withMessage(textMessage);
                MessageHelper.send(accessToken, lightAppMessageDelivery);
                log("成功发送 微应用文本消息");
                lightAppMessageDelivery.withMessage(imageMessage);
                MessageHelper.send(accessToken, lightAppMessageDelivery);
                log("成功发送 微应用图片消息");
                lightAppMessageDelivery.withMessage(linkMessage);
                MessageHelper.send(accessToken, lightAppMessageDelivery);
                log("成功发送 微应用link消息");
                lightAppMessageDelivery.withMessage(oaMessage);
                MessageHelper.send(accessToken, lightAppMessageDelivery);
                log("成功发送 微应用oa消息");

                //发送会话消息
                String sender = Vars.SENDER;
                String cid    = Vars.CID;
                ConversationMessageDelivery conversationMessageDelivery =
                    new ConversationMessageDelivery(sender, cid, agentId);

                conversationMessageDelivery.withMessage(textMessage);
                MessageHelper.send(accessToken, conversationMessageDelivery);
                log("成功发送 会话文本消息");
                conversationMessageDelivery.withMessage(imageMessage);
                MessageHelper.send(accessToken, conversationMessageDelivery);
                log("成功发送 会话图片消息");
                conversationMessageDelivery.withMessage(linkMessage);
                MessageHelper.send(accessToken, conversationMessageDelivery);
                log("成功发送 会话link消息");

                //更新成员
                user.mobile = "18612341234";
                UserHelper.updateUser(accessToken, user);
                log("成功更新成员", "成员信息=", user);

                //获取成员
                UserHelper.getUser(accessToken, user.userid);
                log("成功获取成员", "成员userid=", user.userid);

                //获取部门成员
                List <User> userList = UserHelper.getDepartmentUser(accessToken, departmentId);
                log("成功获取部门成员", "部门成员user="******"成功获取部门成员详情", "部门成员详情user="******"id_yuhuan2", "name_yuhuan2");
                user2.email      = "*****@*****.**";
                user2.mobile     = "18611111111";
                user2.department = new List <long>();
                user2.department.Add(departmentId);
                UserHelper.createUser(accessToken, user2);

                List <String> useridlist = new List <String>();
                useridlist.Add(user.userid);
                useridlist.Add(user2.userid);
                UserHelper.batchDeleteUser(accessToken, useridlist);
                log("成功批量删除成员", "成员列表useridlist=", useridlist);

                //删除成员
                User user3 = new User("id_yuhuan3", "name_yuhuan3");
                user3.email      = "*****@*****.**";
                user3.mobile     = "18611111111";
                user3.department = new List <long>();
                user3.department.Add(departmentId);
                UserHelper.createUser(accessToken, user3);
                UserHelper.deleteUser(accessToken, user3.userid);
                log("成功删除成员", "成员userid=", user3.userid);

                //删除部门
                DepartmentHelper.deleteDepartment(accessToken, departmentId);
                log("成功删除部门", " 部门id=", departmentId);
            }
            catch (OApiException e)
            {
                e.printStackTrace();
            }
        }
Exemple #26
0
        static void Main(string[] args)
        {
            bool testCreateOrgStru       = false;
            bool testQueryOrgStru        = false;
            bool testCreateSystemManager = false;

            bool testImportFlowDefinitionJSON = false;
            bool testCreateFlowTemplate       = false;

            // Actions
            bool testCreateFlowActionStart         = false;
            bool testCreateFlowActionMoveTo_1      = false;
            bool testCreateFlowActionMoveTo_2      = false;
            bool testCreateFlowActionMoveTo_3      = false;
            bool testCreateFlowActionMoveTo_4      = false;
            bool testCreateFlowActionRejectToStart = false;
            bool testCreateFlowActionJumpTo_1      = false;
            //bool testCreateFlowActionTake = false;
            //bool testCreateFlowActionInviteOther = false;
            //bool testCreateFlowActionFeedBackOfInvite = false;

            // Engine
            bool testRunEngine = false;

            // OPAS2Model
            bool testBizDocumentSerialNoGenerator = false;
            bool testCreatePR = false;
            bool testGenerateBizDataPayloadJson = false;

            // FlowDynamicUser
            bool testFlowDynamicUser = false;

            #region Test OrgMgmtLib

            #region Creation
            if (testCreateOrgStru)
            {
                using (var db = new EnouFlowOrgMgmtContext())
                {
                    // var DBHelper = DBHelper;

                    var orgHelper = new OrgHelper(db);

                    var _org = orgHelper.createObject();
                    _org.name = "CQAC集团";
                    orgHelper.saveCreatedObject(_org);

                    var orgSchemaHelper = new OrgSchemaHelper(db);

                    var _orgSchema = orgSchemaHelper.createObject();
                    _orgSchema.name = "默认组织结构方案";
                    _orgSchema.Org  = _org;
                    orgSchemaHelper.saveCreatedObject(_orgSchema);

                    var bizEntityHelper = new BizEntityHelper(db);
                    var _bizEntity      = bizEntityHelper.createObject();
                    _bizEntity.name = "Qoros汽车有限公司";
                    bizEntityHelper.saveCreatedObject(_orgSchema, _bizEntity, null);

                    //var _bizEntityChild = OrgMgmtDBHelper.createBizEntity(db);
                    //_bizEntityChild.name = "上海总部";
                    //OrgMgmtDBHelper.saveCreatedBizEntity(_orgSchema, _bizEntityChild, _bizEntity, db);

                    //var _bizEntityChild2 = OrgMgmtDBHelper.createBizEntity(db);
                    //_bizEntityChild2.name = "常熟生产基地";
                    //OrgMgmtDBHelper.saveCreatedBizEntity(_orgSchema, _bizEntityChild2, _bizEntity, db);

                    BizEntitySchemaHelper bizEntitySchemaHelper = new BizEntitySchemaHelper(db);
                    var _bizEntitySchema = bizEntitySchemaHelper.createObject();
                    _bizEntitySchema.name      = "Qoros默认公司架构";
                    _bizEntitySchema.BizEntity = _bizEntity;
                    bizEntitySchemaHelper.saveCreatedObject(_bizEntitySchema);

                    DepartmentHelper departmentHelper = new DepartmentHelper(db);
                    var _department0 = departmentHelper.createObject();
                    _department0.name = "董事会";
                    departmentHelper.saveCreatedObject(_bizEntitySchema, _department0, null);

                    //var _department = departmentHelper.createObject() ;
                    //_department.name = "后台部门";
                    //OrgMgmtDBHelper.saveCreatedDepartment(_bizEntitySchema, _department, null, db);

                    var _department1 = departmentHelper.createObject();
                    _department1.name = "产品部";
                    departmentHelper.saveCreatedObject(_bizEntitySchema, _department1, null);

                    var _departmentChild = departmentHelper.createObject();
                    _departmentChild.name = "财务部";
                    departmentHelper.saveCreatedObject(_bizEntitySchema, _departmentChild, null);

                    UserHelper userHelper = new UserHelper(db);
                    var        _user      = userHelper.createObject();
                    _user.name = "张三";
                    userHelper.saveCreatedObject(_user);

                    var _user2 = userHelper.createObject();
                    _user2.name = "李四";
                    userHelper.saveCreatedObject(_user2);

                    var _user3 = userHelper.createObject();
                    _user3.name = "王五";
                    userHelper.saveCreatedObject(_user3);

                    userHelper.createDepartmentUserRelation(_departmentChild, _user);
                    userHelper.createDepartmentUserRelation(_departmentChild, _user2);
                    userHelper.createDepartmentUserRelation(_department1, _user3);

                    RoleHelper roleHelper = new RoleHelper(db);
                    var        _role      = roleHelper.createObject();
                    _role.name = "系统管理员";
                    roleHelper.saveCreatedObject(_role);

                    var _role1 = roleHelper.createObject();
                    _role1.name = "CXOs";
                    roleHelper.saveCreatedObject(_role1);

                    userHelper.setUserRole(_user.userId, _role);
                    userHelper.setUserRole(_user.userId, _role1);
                    userHelper.setUserRole(_user2.userId, _role1);

                    RoleTypeHelper roleTypeHelper = new RoleTypeHelper(db);
                    RoleType       _roleType      = roleTypeHelper.createObject();
                    _roleType.name = "系统";
                    roleTypeHelper.saveCreatedObject(_roleType);

                    roleHelper.createRole_RoleTypeRelation(_role, _roleType);
                }
            }
            #endregion

            #region Query
            if (testQueryOrgStru)
            {
                using (var db = new EnouFlowOrgMgmtContext())
                {
                    //找到一个OrgSchema下的顶级业务实体集
                    var defaultOrg = db.orgs.ToList().FirstOrDefault();
                    if (defaultOrg == null)
                    {
                        Console.WriteLine("No defaultOrg Exists.");
                        Console.Read();
                        return;
                    }

                    var defaultOrgSchema = defaultOrg.orgSchema;
                    if (defaultOrgSchema == null)
                    {
                        Console.WriteLine("No defaultOrgSchema Exists.");
                        Console.Read();
                        return;
                    }

                    var rootBizEntities = defaultOrg.orgSchema.rootBizEntities;

                    var rootBizEntity = rootBizEntities[0];
                    if (rootBizEntity == null)
                    {
                        Console.WriteLine("No rootBizEntity Exists.");
                        Console.Read();
                        return;
                    }

                    //找到一个业务实体指定OrgSchema的下级业务实体集
                    var bizEntityChildren = rootBizEntity.getBizEntitiesChildren(
                        db, db.orgs.ToList().FirstOrDefault().orgSchema);

                    var bizEntityChild = bizEntityChildren[0];

                    //找到一个业务实体指定OrgSchema的上级业务实体
                    var bizEntityParent = bizEntityChild.getBizEntitiyParent(
                        db, db.orgs.ToList().FirstOrDefault().orgSchema);

                    //找到一个业务实体指定BizEntitySchema下的顶级部门集
                    var depts = bizEntityChild.bizEntitySchemas[0].getRootDepartments(db);

                    //找到一个部门的所有下级部门
                    var dps = depts.LastOrDefault().getDepartmentChildren(db);

                    //找到一个部门的上级部门
                    var dp1 = depts.LastOrDefault().getDepartmentChildren(db)[1];

                    var dpParent = dp1.getParentDepartment(db);
                    dpParent = dpParent.getParentDepartment(db);

                    //找到一个部门的所有用户
                    var usrs = dp1.getUserChildren(db);

                    //找到一个用户的所有部门
                    var u      = usrs[0];
                    var depts1 = u.getDepartmentsBelongTo(db);

                    //找到一个用户的所有角色
                    var roles = u.getRolesBelongTo(db);

                    //找到一个角色的所有用户
                    var cxos = db.roles.ToList()[1].getUsersBelongTo(db);

                    Console.WriteLine("查询完成.");
                    //return;
                }
            }
            #endregion

            #endregion

            #region Test OrgMgmtLib.SystemManager

            if (testCreateSystemManager)
            {
                using (var db = new EnouFlowOrgMgmtContext())
                {
                    //if (db.systemManagers.Count() <= 0)
                    //{
                    //  var _sysmgr = db.systemManagers.Create();
                    //  _sysmgr.name = "系统管理员";
                    //  _sysmgr.logonName = "sys";
                    //  _sysmgr.logonSalt = "f6152039-1745-4f4c-8f8e-3ed37770fa0d";
                    //  _sysmgr.logonPasswordHash = Convert.ToBase64String(
                    //    new System.Security.Cryptography.SHA256Managed().ComputeHash(
                    //      Encoding.UTF8.GetBytes(
                    //        "111111" + //测试密码
                    //        "f6152039-1745-4f4c-8f8e-3ed37770fa0d")));

                    //  db.systemManagers.Add(_sysmgr);
                    //  db.SaveChanges();
                    //  Console.WriteLine("成功创建系统管理员");
                    //}
                }
            }

            #endregion

            var PRFlowTemplateFilePath = @"C:\data\MyProjs\99Flow\EnouFlow\internal\test_flow.json";
            var POFlowTemplateFilePath = @"C:\data\MyProjs\99Flow\EnouFlow\EnouFlowEngine\PO.json";
            var GRFlowTemplateFilePath = @"C:\data\MyProjs\99Flow\EnouFlow\EnouFlowEngine\GR.json";
            var PMFlowTemplateFilePath = @"C:\data\MyProjs\99Flow\EnouFlow\EnouFlowEngine\PM.json";

            #region Test import Flow Definition JSON
            if (testImportFlowDefinitionJSON)
            {
                StreamReader oJsonFile = new StreamReader(
                    POFlowTemplateFilePath);

                //StreamReader oJsonFile = new System.IO.StreamReader(
                //@"C:\data\MyProjs\99Flow\EnouFlow\EnouFlowEngine\test_flow.json");

                var flowTemplateDefTest = JsonHelper.DeserializeJsonToObject <FlowTemplateDef>(
                    oJsonFile.ReadToEnd());

                dynamic temp = parseJsonToDynamicObject("{'AmountTotal': 49999}");

                Console.WriteLine("成功导入流程定义文件");
            }
            #endregion

            #region Test Create Flow Template in DB
            if (testCreateFlowTemplate)
            {
                StreamReader oJsonFile = new StreamReader(PMFlowTemplateFilePath);

                var tplJson             = oJsonFile.ReadToEnd();
                var flowTemplateDefTest = JsonHelper.DeserializeJsonToObject <FlowTemplateDef>(
                    tplJson);

                Tuple <bool, FlowTemplate, List <string> > result = FlowTemplateDBHelper.createFlowTemplate(
                    flowTemplateDefTest.basicInfo.guid,
                    flowTemplateDefTest.basicInfo.name,
                    flowTemplateDefTest.basicInfo.displayName,
                    flowTemplateDefTest.basicInfo.version,
                    "PM",
                    tplJson
                    );
                var tpl = result.Item2;
                //tpl.guid = flowTemplateDefTest.basicInfo.guid;
                //tpl.name = flowTemplateDefTest.basicInfo.name;
                //tpl.displayName = flowTemplateDefTest.basicInfo.displayName;
                //tpl.version = flowTemplateDefTest.basicInfo.version;
                //tpl.code = "PM";
                //tpl.flowTemplateJson = tplJson;

                FlowTemplateDBHelper.saveCreatedFlowTemplate(tpl);
                Console.WriteLine("成功创建流程定义模板");
            }
            #endregion

            #region Test Create FlowActions

            #region Test Create FlowActionStart
            if (testCreateFlowActionStart)
            {
                var actionStart = FlowActionHelper.PostFlowActionStart(
                    "aaaaaaa-1745-4f4c-8f8e-3ed37770fa0d",
                    "bizDocumentGuid", "PR",
                    "用户输入的备注内容aaa", null, null, 1,
                    "abc", 1, "def", null, "TestFlow-001",
                    "f6152039-1745-4f4c-8f8e-3ed37770fa0d"
                    );
            }
            #endregion

            #region Test Create FlowActionMoveTo
            if (testCreateFlowActionMoveTo_1)
            {
                var action1 = FlowActionHelper.PostFlowActionMoveTo(
                    "bbbbbbb-1745-4f4c-8f8e-3ed37770fa0d",
                    "bizDocumentGuid", "PR",
                    DateTime.Now.AddSeconds(1), "用户输入的备注内容bbb",
                    "{'AmountTotal': 50001}",
                    "{'AmountTotalUpdated': 49999}", 1,
                    "user-guid", 0, null, "TestFlow-001",
                    "f6152039-1745-4f4c-8f8e-3ed37770fa0d",
                    "9d985ac5-a1da-4c63-8aea-83e9974ffccc",
                    "9d4a6006-1099-46ad-b037-24e84476ab50",
                    new List <Paticipant>()
                {
                    new Paticipant("user",
                                   new PaticipantDigest(
                                       "李四",
                                       "27bcd361-12c7-4376-8dd8-ce68ad964431",
                                       2, null, null)
                                   )
                },
                    null,
                    null
                    );
            }

            if (testCreateFlowActionMoveTo_2)
            {
                var action2 = FlowActionHelper.PostFlowActionMoveTo(
                    "cccccc-1745-4f4c-8f8e-3ed37770fa0d",
                    "bizDocumentGuid", "PR",
                    DateTime.Now.AddSeconds(2),
                    "用户输入的备注内容ccc", null, null, 1,
                    "user-guid", 1, "flow-inst-guid", "TestFlow-001",
                    "2dde0ed2-c10b-4c98-b263-1016dcfa951d",
                    "55d72a3e-051a-46a0-9aae-0be1c62b2e24",
                    "ab0f92f6-35cd-44b9-a7bd-5a17e544aa9c",
                    new List <Paticipant>()
                {
                    new Paticipant("user",
                                   new PaticipantDigest(
                                       "王五",
                                       "f17004ea-1246-40df-9f48-2adf0cfa8517",
                                       3, null, null)
                                   )
                },
                    null,
                    null
                    );
            }

            if (testCreateFlowActionMoveTo_3)
            {
                var action3 = FlowActionHelper.PostFlowActionMoveTo(
                    "dddddd-1745-4f4c-8f8e-3ed37770fa0d",
                    "bizDocumentGuid", "PR",
                    DateTime.Now.AddSeconds(3),
                    "用户输入的备注内容ddd", null, null, 1,
                    "user-guid", 1, "flow-inst-guid", "TestFlow-001",
                    "ab0f92f6-35cd-44b9-a7bd-5a17e544aa9c",
                    "ceeae036-7b21-438f-bc46-33bfad0cc546",
                    "5ee19a5b-df8b-4c11-a0d4-082848b5f216",
                    new List <Paticipant>()
                {
                    new Paticipant("user",
                                   new PaticipantDigest(
                                       "张三",
                                       "85a14f4d-e68e-4684-88b2-3bf9dea386e6",
                                       1, null, null)
                                   )
                },
                    null,
                    null
                    );
            }

            if (testCreateFlowActionMoveTo_4)
            {
                var action4 = FlowActionHelper.PostFlowActionMoveTo(
                    "eeeeee-1745-4f4c-8f8e-3ed37770fa0d",
                    "bizDocumentGuid", "PR",
                    DateTime.Now.AddSeconds(4),
                    "用户输入的备注内容eee", null, null, 1,
                    "user-guid", 1, "flow-inst-guid", "TestFlow-001",
                    "5ee19a5b-df8b-4c11-a0d4-082848b5f216",
                    "0dade9b8-acc9-4223-8dab-9d55480722a8",
                    "c09fcfbe-92a9-48cd-bd14-975996e063a7",
                    new List <Paticipant>(),
                    null,
                    null
                    //{
                    //  new Paticipant("user",
                    //    new PaticipantDigest(
                    //    "川普",
                    //    "c4961686-41a6-469a-afa9-df05e42ba9f8",
                    //    16,null)
                    //    )
                    //}
                    );
            }

            #endregion

            #region TODO: Test Create FlowActionTake

            #endregion

            #region TODO: Test Create FlowActionInviteOther
            #endregion

            #region TODO: Test Create FlowActionFeedBackOfInvite
            #endregion

            #endregion

            #region Test Engine
            if (testRunEngine)
            {
                var dispatcher = new FlowActionRequestDispatcher();
                //EnumFlowActionRequestType[] types = new EnumFlowActionRequestType[] { EnumFlowActionRequestType.moveToAutoGenerated };
                //dispatcher.processNextActionOfSpecifiedInstance(1, types);
                var result = dispatcher.processNextAction();
            }

            #endregion

            #region Test BizDocumentSerialNoGenerator
            if (testBizDocumentSerialNoGenerator)
            {
                var prNumberNew = new OPAS2ModelDBHelper().
                                  generateDocumentSerialNo(EnumBizDocumentType.PR, "QOROS", "SH", "2017", "IT");
                Console.WriteLine(prNumberNew);
            }

            #endregion

            #region Test CreatePR
            if (testCreatePR)
            {
                var prNumberNew = new OPAS2ModelDBHelper().
                                  generateDocumentSerialNo(EnumBizDocumentType.PR, "QOROS", "SH", "2017", "IT");
                Console.WriteLine(prNumberNew);
                using (var db = new OPAS2DbContext())
                {
                    var pr = db.purchaseReqs.Create();
                    pr.guid       = "test-pr-guid:" + Guid.NewGuid().ToString();
                    pr.documentNo = new OPAS2ModelDBHelper().generateDocumentSerialNo(
                        EnumBizDocumentType.PR, "QOROS", "SH", "2017", "IT");
                    pr.WBSNo = "test-WBS";
                    pr.contactOfficePhone     = "contactOfficePhone";
                    pr.contactMobile          = "contactMobile";
                    pr.contactOtherMedia      = "contactOtherMedia";
                    pr.departmentId           = 1;
                    pr.departmentIdBelongTo   = 1;
                    pr.costCenterId           = 1;
                    pr.expectReceiveBeginTime = DateTime.Now;
                    pr.expectReceiveEndTime   = DateTime.Now;
                    pr.isBidingRequired       = true;
                    pr.noBiddingReason        = "noBiddingReason";
                    pr.reason                = "reason";
                    pr.description           = "description";
                    pr.estimatedCost         = (decimal)123456.789;
                    pr.currencyTypeId        = 1;
                    pr.mainCurrencyRate      = (decimal)1.0;
                    pr.estimatedCostInRMB    = (decimal)123456.789;
                    pr.averageBenchmark      = (decimal)787654.78;
                    pr.benchmarkDescription  = "benchmarkDescription";
                    pr.isFirstBuy            = false;
                    pr.firstBuyDate          = DateTime.Now;
                    pr.firstCostAmount       = (decimal)73663387.87;
                    pr.firstBuyDescription   = "firstBuyDescription";
                    pr.remarkOfAprrovers     = "remarkOfAprrovers";
                    pr.otherVendorsNotInList = "otherVendorsNotInList";
                    pr.submitTime            = DateTime.Now;
                    pr.submitor              = "ChaoQin";
                    pr.submitorUserId        = 1;
                    pr.creator               = "ChaoQin";
                    pr.creatorUserId         = 1;

                    var prDtl1 = db.purchaseReqDetails.Create();
                    prDtl1.PurchaseReq   = pr;
                    prDtl1.estimatedCost = (decimal)123.45;
                    prDtl1.lineNo        = 5;
                    prDtl1.itemName      = "name1";
                    prDtl1.itemType      = (EnumPRItemType)1;
                    prDtl1.description   = "description1";
                    prDtl1.creator       = "ChaoQin";
                    prDtl1.creatorUserId = 1;

                    //pr.details.Add(prDtl1);

                    db.purchaseReqs.Add(pr);
                    db.purchaseReqDetails.Add(prDtl1);

                    db.SaveChanges();

                    Console.WriteLine("PR: " + pr.purchaseReqId.ToString());
                }
            }

            #endregion

            #region Test GenerateBizDataPayloadJson
            if (testGenerateBizDataPayloadJson)
            {
                using (var db = new OPAS2DbContext())
                {
                    var     pr             = db.purchaseReqs.Find(8);
                    dynamic bizDataPayload = new ExpandoObject();
                    bizDataPayload.document = pr;
                    //bizDataPayload.subDocuments = pr.details;
                    bizDataPayload.AmountTotal =
                        pr.details.Aggregate <PurchaseReqDetail, decimal>(
                            0, (total, detail) =>
                    {
                        return(total + detail.estimatedCost.Value);
                    });
                    var s = JsonConvert.SerializeObject(bizDataPayload, Formatting.Indented,
                                                        new JsonSerializerSettings
                    {
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                    }
                                                        );
                    Console.WriteLine(s);
                }
            }
            #endregion

            #region testFlowDynamicUser
            Console.Out.WriteLine("Enter into script:");
            var _session     = new DictionaryContext();
            var flowInstDb   = new EnouFlowInstanceContext();
            var flowInstance = FlowInstanceHelper.GetFlowInstance(42, flowInstDb);

            _session.globals.Add("flowInstance", flowInstance);
            var _references = new Assembly[] { typeof(DictionaryContext).Assembly,
                                               typeof(System.Runtime.CompilerServices.DynamicAttribute).Assembly,
                                               typeof(Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo).Assembly,
                                               typeof(ExpandoObject).Assembly,
                                               typeof(JsonConvert).Assembly,
                                               typeof(ExpandoObjectConverter).Assembly,
                                               typeof(Paticipant).Assembly,
                                               typeof(UserDTO).Assembly,
                                               typeof(FlowInstance).Assembly,
                                               typeof(List <>).Assembly };
            var _imports = new string[] { typeof(DictionaryContext).Namespace,
                                          typeof(System.Runtime.CompilerServices.DynamicAttribute).Namespace,
                                          typeof(Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo).Namespace,
                                          typeof(ExpandoObject).Namespace,
                                          typeof(JsonConvert).Namespace,
                                          typeof(ExpandoObjectConverter).Namespace,
                                          typeof(Paticipant).Namespace,
                                          typeof(UserDTO).Namespace,
                                          typeof(FlowInstance).Namespace,
                                          typeof(List <>).Namespace };
            var _options = ScriptOptions.Default
                           .AddReferences(_references)
                           .AddImports(_imports);
            //var code = @"var result = new List<UserDTO>();
            //              result.Add(OrgMgmtDBHelper.getUserDTO(((FlowInstance)globals[""flowInstance""]).creatorId));
            //              return result;";

            using (var db = new EnouFlowOrgMgmtContext())
            {
                var retShouldBe = new DepartmentHelper(db).getUserDTOsOfPositionInDepartment(
                    new UserHelper(db).getUserDefaultDepartment(flowInstance.creatorId).departmentId,
                    UserPositionToDepartment.manager);
            }
            var code    = @"
      FlowInstance flowInstance = (FlowInstance)globals[""flowInstance""];
      Department department = OrgMgmtDBHelper.getUserDefaultDepartment(flowInstance.creatorId);
      if(department!=null){
        return OrgMgmtDBHelper.getUserDTOsOfPositionInDepartment(
              department.departmentId, UserPositionToDepartment.manager);
      }else{
        return null;
      }";
            var result1 = CSharpScript.RunAsync(code,
                                                globals: _session, options: _options).Result.ReturnValue;
            var retList = (List <UserDTO>)result1;

            #endregion

            Console.WriteLine("All done!");
            Console.Read();
        }