コード例 #1
0
        public void SimpleCalculation()
        {
            const int NUM   = 100;
            const int TOTAL = (NUM + 1) * NUM / 2;

            var sum = new int[NUM];

            var list = new List <ITopologicalNode>(NUM);

            for (var i = 1; i <= NUM; i++)
            {
                var task = new DemoTask(i, n => sum[n - 1] = n);
                list.Add(task);
            }

            var provider = default(TopologicalTaskProvider);

            Assert.DoesNotThrow(() => provider = new TopologicalTaskProvider(list));

            var scheduler = SchedulerFactory.Create(provider);

            scheduler.Run();

            Assert.AreEqual(sum.Sum(), TOTAL);
        }
コード例 #2
0
        public IDemoTask CreateTask()
        {
            var task = new DemoTask();

            dataContext.Tasks.Add(task);
            return(task);
        }
コード例 #3
0
 public async Task <IHttpActionResult> Put([FromODataUri] int key, DemoTask task)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     if (key != task.Id)
     {
         return(BadRequest());
     }
     taskContext.Entry(task).State = EntityState.Modified;
     try {
         await taskContext.SaveChangesAsync();
     }
     catch (DbUpdateConcurrencyException) {
         if (!TaskExists(key))
         {
             return(NotFound());
         }
         else
         {
             throw;
         }
     }
     return(Updated(task));
 }
コード例 #4
0
        public async Task <IHttpActionResult> DeleteRef([FromODataUri] int key, [FromODataUri] int relatedKey, string navigationProperty)
        {
            DemoTask task = await taskContext.Tasks.SingleOrDefaultAsync(p => p.Id == key);

            if (task == null)
            {
                return(StatusCode(HttpStatusCode.NotFound));
            }
            switch (navigationProperty)
            {
            case "ContactTasks":
                int         contactTaskId = Convert.ToInt32(relatedKey);
                ContactTask contactTask   = await taskContext.ContactTasks.SingleOrDefaultAsync(p => p.Id == contactTaskId);

                if (contactTask == null)
                {
                    return(NotFound());
                }
                contactTask.Task = null;
                break;

            default:
                return(StatusCode(HttpStatusCode.NotImplemented));
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #5
0
        private void Button_start_Click(object sender, RoutedEventArgs e)
        {//start new task
            ClearBoard();
            //initial
            List <InteractObject> demoObject = new List <InteractObject>();

            demoObject.Add(new InteractObject(0));
            demoObject[0].Radius = 40;
            demoObject[0].Shape  = InteractObject.Type.square;
            demoObject[0].Color  = new MCvScalar(200, 50, 50);
            objectLayerKey.Add(0);

            demoObject.Add(new InteractObject(1));
            demoObject[1].Radius = 40;
            demoObject[1].Shape  = InteractObject.Type.circle;
            demoObject[1].Color  = new MCvScalar(50, 200, 50);
            objectLayerKey.Add(1);

            demoTask = new DemoTask(demoObject);

            TrajectoryInfoDataCollection.Clear();
            //  LVinfo.Clear();

            nowGeneration  = 0;
            nowSegment     = 0;
            tb_GenNum.Text = "Now Gen : " + nowGeneration.ToString();
            tb_SegNum.Text = "Now Seg : " + nowSegment.ToString();

            demoTask.environment.RandomPos(50, 500, 50, 500);
            ImageUpdate();
        }
コード例 #6
0
        public async Task <IHttpActionResult> CreateRef([FromODataUri] int key, string navigationProperty, [FromBody] Uri link)
        {
            DemoTask task = await taskContext.Tasks.SingleOrDefaultAsync(p => p.Id == key);

            if (task == null)
            {
                return(NotFound());
            }
            switch (navigationProperty)
            {
            case "ContactTasks":
                // Note: The code for GetKeyFromUri is shown later in this topic.
                int         relatedKey  = Helpers.GetKeyFromUri <int>(Request, link);
                ContactTask contactTask = await taskContext.ContactTasks.SingleOrDefaultAsync(f => f.Id == relatedKey);

                if (contactTask == null)
                {
                    return(NotFound());
                }
                task.ContactTasks.Add(contactTask);
                break;

            default:
                return(StatusCode(HttpStatusCode.NotImplemented));
            }
            await taskContext.SaveChangesAsync();

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #7
0
        private IList <DemoTask> GenerateTask(Contact[] contacts)
        {
            Random          rndGenerator = new Random();
            List <DemoTask> taskList     = new List <DemoTask>();

            foreach (string taskSubject in tasks)
            {
                if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == '" + taskSubject + "'")) == null)
                {
                    DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                    task.Subject = taskSubject;
                    int rndStatus = rndGenerator.Next(0, 5);
                    task.Status             = (DevExpress.Persistent.Base.General.TaskStatus)rndStatus;
                    task.DueDate            = DateTime.Now.AddHours((90 - rndStatus * 9) + 24).Date;
                    task.EstimatedWorkHours = rndGenerator.Next(10, 20);
                    if (task.Status == DevExpress.Persistent.Base.General.TaskStatus.WaitingForSomeoneElse ||
                        task.Status == DevExpress.Persistent.Base.General.TaskStatus.Completed ||
                        task.Status == DevExpress.Persistent.Base.General.TaskStatus.InProgress)
                    {
                        task.StartDate       = DateTime.Now.AddHours(-rndGenerator.Next(720)).Date;
                        task.ActualWorkHours = rndGenerator.Next(task.EstimatedWorkHours - 10, task.EstimatedWorkHours + 10);
                    }
                    task.DueDate    = DateTime.Now.AddHours((90 - rndStatus * 9) + 24).Date;
                    task.AssignedTo = contacts[rndGenerator.Next(0, 4)];
                    task.Priority   = (Priority)rndGenerator.Next(3);
                    taskList.Add(task);
                }
            }
            return(taskList);
        }
コード例 #8
0
        private void SetTaskAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e)
        {
            IObjectSpace objectSpace = View is ListView?
                                       Application.CreateObjectSpace(typeof(DemoTask)) : View.ObjectSpace;

            ArrayList objectsToProcess = new ArrayList(e.SelectedObjects);

            if (e.SelectedChoiceActionItem.ParentItem == setPriorityItem)
            {
                foreach (Object obj in objectsToProcess)
                {
                    DemoTask objInNewObjectSpace = (DemoTask)objectSpace.GetObject(obj);
                    objInNewObjectSpace.Priority = (Priority)e.SelectedChoiceActionItem.Data;
                }
            }
            else
            if (e.SelectedChoiceActionItem.ParentItem == setStatusItem)
            {
                foreach (Object obj in objectsToProcess)
                {
                    DemoTask objInNewObjectSpace = (DemoTask)objectSpace.GetObject(obj);
                    objInNewObjectSpace.Status = (TaskStatus)e.SelectedChoiceActionItem.Data;
                }
            }
            if (View is DetailView && ((DetailView)View).ViewEditMode == ViewEditMode.View)
            {
                objectSpace.CommitChanges();
            }
            if (View is ListView)
            {
                objectSpace.CommitChanges();
                View.ObjectSpace.Refresh();
            }
        }
コード例 #9
0
        private IList <DemoTask> GenerateTask(IList <Contact> contacts)
        {
            Random          rndGenerator = new Random();
            List <DemoTask> taskList     = new List <DemoTask>();
            DataTable       tasksTable   = GetTasksDataTable();

            foreach (DataRow taskRow in tasksTable.Rows)
            {
                string taskSubject = UpdateContent(Convert.ToString(taskRow["Subject"]));
                if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == '" + taskSubject + "'")) == null)
                {
                    DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                    task.Subject     = taskSubject;
                    task.Description = UpdateContent(Convert.ToString(taskRow["Description"]));
                    int rndStatus = rndGenerator.Next(0, 5);
                    task.Status             = (DevExpress.Persistent.Base.General.TaskStatus)rndStatus;
                    task.DueDate            = DateTime.Now.AddHours((90 - rndStatus * 9) + 24).Date;
                    task.EstimatedWorkHours = rndGenerator.Next(10, 20);
                    if (task.Status == DevExpress.Persistent.Base.General.TaskStatus.WaitingForSomeoneElse ||
                        task.Status == DevExpress.Persistent.Base.General.TaskStatus.Completed ||
                        task.Status == DevExpress.Persistent.Base.General.TaskStatus.InProgress)
                    {
                        task.StartDate       = DateTime.Now.AddHours(-rndGenerator.Next(720)).Date;
                        task.ActualWorkHours = rndGenerator.Next(task.EstimatedWorkHours - 10, task.EstimatedWorkHours + 10);
                    }
                    task.DueDate = DateTime.Now.AddHours((90 - rndStatus * 9) + 24).Date;
                    // task.AssignedTo = contacts[rndGenerator.Next(0, contacts.Count)];
                    task.Priority = (Priority)rndGenerator.Next(3);
                    taskList.Add(task);
                }
            }
            return(taskList);
        }
コード例 #10
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();

            Contact karlJablonski = CreateContact("Karl", "Jablonski");

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Check wiring in main electricity panel'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject    = "Check wiring in main electricity panel";
                task.AssignedTo = karlJablonski;
                task.StartDate  = DateTime.Parse("May 03, 2008");
                task.DueDate    = DateTime.Parse("September 06, 2008");
                task.Status     = DevExpress.Persistent.Base.General.TaskStatus.InProgress;
                task.Priority   = Priority.High;
            }

            Contact johnNilsen = CreateContact("John", "Nilsen");

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Take kids to park and play baseball on Sunday'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject    = "Take kids to park and play baseball on Sunday";
                task.AssignedTo = johnNilsen;
                task.StartDate  = DateTime.Parse("May 03, 2008");
                task.DueDate    = DateTime.Parse("May 04, 2008");
                task.Status     = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority   = Priority.Low;
            }

            Contact maryTallitson = CreateContact("Mary", "Tallitson");

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Bake brownies and send them to neighbors'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject    = "Bake brownies and send them to neighbors";
                task.AssignedTo = maryTallitson;
                task.StartDate  = DateTime.Parse("June 03, 2008");
                task.DueDate    = DateTime.Parse("June 06, 2008");
                task.Status     = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority   = Priority.High;
            }

            Contact anitaRyan = CreateContact("Anita", "Ryan");

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Install an new electric outlet in garage'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject    = "Install an new electric outlet in garage";
                task.AssignedTo = anitaRyan;
                task.StartDate  = DateTime.Parse("July 03, 2008");
                task.DueDate    = DateTime.Parse("July 06, 2008");
                task.Status     = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority   = Priority.Low;
            }

            ObjectSpace.CommitChanges();
        }
コード例 #11
0
 private DemoTask GetObject(DemoTask obj, IObjectSpace objectSpace, IObjectSpace newObjectSpace, ref int newObjectsCount)
 {
     if (objectSpace.IsNewObject(obj))
     {
         newObjectsCount++;
         return(obj);
     }
     return((DemoTask)newObjectSpace.GetObject(obj));
 }
コード例 #12
0
        public async Task <IHttpActionResult> Post(DemoTask task)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            taskContext.Tasks.Add(task);
            await taskContext.SaveChangesAsync();

            return(Created(task));
        }
コード例 #13
0
        public void ReadTaskContactDepartment_WhenContactIsDeny()
        {
            using (DbContextManyToManyRelationship dbContext = new DbContextManyToManyRelationship()) {
                SecurityTestHelper.InitializeData(dbContext);
                dbContext.PermissionsContainer.AddObjectPermission <DbContextManyToManyRelationship, Contact>(SecurityOperation.Read, OperationState.Deny, (db, obj) => obj.ContactTasks.Any(ct => ct.Task.Description == "Draw"));
                DemoTask task = dbContext.Tasks.Include(p => p.ContactTasks).ThenInclude(ct => ct.Contact).ThenInclude(c => c.Department).First(p => p.Description == "Draw");

                Assert.IsNotNull(task);
                Assert.IsNotEmpty(task.ContactTasks);
                Assert.IsNotNull(task.ContactTasks.First());
                Assert.IsNull(task.ContactTasks.First().Contact);
            }
        }
コード例 #14
0
        public void ReadTaskContactDepartment()
        {
            using (DbContextManyToManyRelationship dbContext = new DbContextManyToManyRelationship()) {
                SecurityTestHelper.InitializeData(dbContext);
                DemoTask task = dbContext.Tasks.Include(p => p.ContactTasks).ThenInclude(ct => ct.Contact).ThenInclude(c => c.Department).First(p => p.Description == "Draw");

                Assert.IsNotNull(task);
                Assert.IsNotEmpty(task.ContactTasks);
                Assert.IsNotNull(task.ContactTasks.First());
                Assert.IsNotNull(task.ContactTasks.First().Contact);
                Assert.AreEqual(task.ContactTasks.First().Contact.Name, "Ezra");
                Assert.IsNotNull(task.ContactTasks.First().Contact.Department);
                Assert.AreEqual(task.ContactTasks.First().Contact.Department.Title, "IT");
            }
        }
コード例 #15
0
        public void CreateWithInvalidGraph()
        {
            // Loop

            var task1 = new DemoTask(0);
            var task2 = new DemoTask(0);

            task1.SourceNodes.Add(task2);
            task2.SourceNodes.Add(task1);

            var list = new List <ITopologicalNode> {
                task1, task2
            };

            Assert.Throws <InvalidOperationException>(() => new TopologicalTaskProvider(list));
        }
コード例 #16
0
        public void ComplexCalculation()
        {
            const int NUM   = 100;
            const int TOTAL = (NUM + 1) * NUM / 2;
            const int LINKS = 500;

            var sum = new int[NUM];

            var list = new List <ITopologicalNode>(NUM);

            for (var i = 1; i <= NUM; i++)
            {
                var task = new DemoTask(i, n =>
                {
                    Thread.Sleep(100);
                    sum[n - 1] = n;
                });
                list.Add(task);
            }

            var rnd = new Random();

            for (var i = 0; i < LINKS; i++)
            {
                var to   = rnd.Next(1, NUM);
                var from = rnd.Next(0, to - 1);

                if (list[to].Sources.Contains(list[from]))
                {
                    continue;
                }

                list[to].Sources.Add(list[from]);
            }

            Shuffle(list);

            var provider = default(TopologicalTaskProvider);

            Assert.DoesNotThrow(() => provider = new TopologicalTaskProvider(list));

            var scheduler = SchedulerFactory.Create(provider);

            scheduler.Run();

            Assert.AreEqual(sum.Sum(), TOTAL);
        }
コード例 #17
0
        private void ShowNotesAction_Execute(object sender, PopupWindowShowActionExecuteEventArgs args)
        {
            DemoTask task = (DemoTask)View.CurrentObject;

            foreach (Note note in args.PopupWindowViewSelectedObjects)
            {
                if (!string.IsNullOrEmpty(task.Description))
                {
                    task.Description += Environment.NewLine;
                }
                task.Description += StripHTML(note.Text);
            }
            if (((DetailView)View).ViewEditMode == ViewEditMode.View)
            {
                View.ObjectSpace.CommitChanges();
            }
        }
コード例 #18
0
        public void SetUpSimpleData()
        {
            var task1 = new DemoTask(1);
            var task4 = new DemoTask(4);

            var task2 = new DemoTask(2);

            task2.SourceNodes.Add(task1);
            task2.SourceNodes.Add(task4);

            var task3 = new DemoTask(3);

            task3.SourceNodes.Add(task2);
            task3.SourceNodes.Add(task4);

            SimpleNodes = new List <ITopologicalNode> {
                task1, task2, task3, task4
            };
        }
コード例 #19
0
        /// <inheritdoc />
        public void StartTask(ITask task, ITaskJobSettings settings)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            DemoTask demoTask = (DemoTask)task;

            if (demoTask.ThrowError)
            {
                Thread.Sleep(TimeSpan.FromSeconds(1));

                throw new DemoException("Task configured to throw error.");
            }

            int totalDurationInSeconds = demoTask.Durations.Sum(d => d.DurationInSeconds);

            int pastDurationInSeconds = 0;

            foreach (DemoTaskDuration duration in demoTask.Durations)
            {
                if (this.isCanceled)
                {
                    break;
                }

                Thread.Sleep(TimeSpan.FromSeconds(duration.DurationInSeconds));

                pastDurationInSeconds += duration.DurationInSeconds;

                var reportProgressEventHandler = this.ReportProgress;

                if (reportProgressEventHandler != null)
                {
                    double percent = 100.0 * pastDurationInSeconds / totalDurationInSeconds;

                    reportProgressEventHandler(this, new TaskWorkerProgressEventArgs(percent));
                }
            }
        }
コード例 #20
0
        private void ShowNotesAction_Execute(object sender, PopupWindowShowActionExecuteEventArgs args)
        {
            DemoTask task = (DemoTask)View.CurrentObject;

            View.ObjectSpace.SetModified(task);
            foreach (Note note in args.PopupWindow.View.SelectedObjects)
            {
                if (!string.IsNullOrEmpty(task.Description))
                {
                    task.Description += Environment.NewLine;
                }
                task.Description += note.Text;
            }
            ViewItem item = ((DetailView)View).FindItem("Description");

            ((PropertyEditor)item).ReadValue();
            if (View is DetailView && ((DetailView)View).ViewEditMode == ViewEditMode.View)
            {
                View.ObjectSpace.CommitChanges();
            }
        }
コード例 #21
0
        private void OnSubmitDemoTaskButtonClick(object sender, RoutedEventArgs e)
        {
            SubmitTaskWindow dialog = new SubmitTaskWindow();

            if (dialog.ShowDialog() == true)
            {
                DemoTask demoTask = new DemoTask((int)dialog.TaskDuration.TotalSeconds)
                {
                    ThrowError = dialog.ThrowError
                };

                if (dialog.SummaryType.HasValue)
                {
                    ITaskSummary summary = demoTask.CreateTaskSummary(dialog.SummaryType.Value, false);

                    if (dialog.TaskPriority.HasValue)
                    {
                        this.ViewModel.TaskProcessorFacade.SubmitTask(demoTask, summary, dialog.TaskPriority.Value);
                    }
                    else
                    {
                        this.ViewModel.TaskProcessorFacade.SubmitTask(demoTask, summary);
                    }
                }
                else
                {
                    if (dialog.TaskPriority.HasValue)
                    {
                        this.ViewModel.TaskProcessorFacade.SubmitTask(demoTask, dialog.TaskPriority.Value);
                    }
                    else
                    {
                        this.ViewModel.TaskProcessorFacade.SubmitTask(demoTask);
                    }
                }
            }
        }
コード例 #22
0
        private static void CreateProductionDepartmentModel(EFCoreDemoDbContext dbContext)
        {
            Department productionDepartment = new Department()
            {
                Title  = "Production",
                Office = "Texas"
            };
            DemoTask packingTask = new DemoTask()
            {
                Description      = "Pack",
                Note             = "Packaging a products",
                StartDate        = new DateTime(1991, 09, 02),
                DateCompleted    = new DateTime(2016, 04, 12),
                PercentCompleted = 99
            };
            DemoTask transferTask = new DemoTask()
            {
                Description      = "Transfer",
                Note             = "Transfer a products to a customers",
                StartDate        = new DateTime(2008, 01, 13),
                DateCompleted    = new DateTime(2013, 02, 11),
                PercentCompleted = 100
            };
            DemoTask produceTask = new DemoTask()
            {
                Description      = "Produce",
                Note             = "Produce the finished product",
                StartDate        = new DateTime(2012, 12, 22),
                DateCompleted    = new DateTime(2017, 04, 01),
                PercentCompleted = 75
            };
            Contact packer = new Contact()
            {
                Name       = "Jack",
                Address    = "Minessota",
                Department = productionDepartment
            };
            Contact carrier = new Contact()
            {
                Name       = "Barry",
                Address    = "Chikago",
                Department = productionDepartment
            };
            Contact producer = new Contact()
            {
                Name       = "Mike",
                Address    = "London",
                Department = productionDepartment
            };
            ContactTask packingContactTask = new ContactTask()
            {
                Contact = packer,
                Task    = packingTask
            };
            ContactTask transferContactTask = new ContactTask()
            {
                Contact = carrier,
                Task    = transferTask
            };
            ContactTask produceContactTask = new ContactTask()
            {
                Contact = producer,
                Task    = produceTask
            };

            dbContext.Tasks.Add(packingTask);
            dbContext.Tasks.Add(transferTask);
            dbContext.Tasks.Add(produceTask);
            dbContext.ContactTasks.Add(packingContactTask);
            dbContext.ContactTasks.Add(transferContactTask);
            dbContext.ContactTasks.Add(produceContactTask);
            dbContext.Contacts.Add(packer);
            dbContext.Contacts.Add(carrier);
            dbContext.Contacts.Add(producer);
            dbContext.Departments.Add(productionDepartment);
        }
コード例 #23
0
        private static void CreateSalesDepartmentModel(EFCoreDemoDbContext dbContext)
        {
            Department salesDepartment = new Department()
            {
                Title  = "Sales",
                Office = "LA"
            };
            DemoTask sellTask = new DemoTask()
            {
                Description      = "Sell",
                Note             = "Good sales are good premium",
                StartDate        = new DateTime(2010, 09, 23),
                DateCompleted    = new DateTime(2016, 12, 31),
                PercentCompleted = 94
            };
            DemoTask manageTask = new DemoTask()
            {
                Description      = "Manage",
                Note             = "Manage personal",
                StartDate        = new DateTime(2007, 02, 03),
                DateCompleted    = new DateTime(2011, 05, 01),
                PercentCompleted = 100
            };
            DemoTask topManagerTask = new DemoTask()
            {
                Description      = "TopManagement",
                Note             = "Manage company",
                StartDate        = new DateTime(2015, 08, 14),
                DateCompleted    = new DateTime(2018, 11, 21),
                PercentCompleted = 39
            };
            Contact seller = new Contact()
            {
                Name       = "Zack",
                Address    = "LA",
                Department = salesDepartment
            };
            Contact manager = new Contact()
            {
                Name       = "Marina",
                Address    = "Moscow",
                Department = salesDepartment
            };
            Contact topManager = new Contact()
            {
                Name       = "Kate",
                Address    = "Madrid",
                Department = salesDepartment
            };
            ContactTask sellContactTask = new ContactTask()
            {
                Contact = seller,
                Task    = sellTask
            };
            ContactTask manageContactTask = new ContactTask()
            {
                Contact = manager,
                Task    = manageTask
            };
            ContactTask topManagerContactTask = new ContactTask()
            {
                Contact = topManager,
                Task    = topManagerTask
            };

            dbContext.Tasks.Add(sellTask);
            dbContext.Tasks.Add(manageTask);
            dbContext.Tasks.Add(topManagerTask);
            dbContext.ContactTasks.Add(sellContactTask);
            dbContext.ContactTasks.Add(manageContactTask);
            dbContext.ContactTasks.Add(topManagerContactTask);
            dbContext.Contacts.Add(seller);
            dbContext.Contacts.Add(manager);
            dbContext.Contacts.Add(topManager);
            dbContext.Departments.Add(salesDepartment);
        }
コード例 #24
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
            UpdateAnalysisCriteriaColumn();

            #region Create a User for the Simple Security Strategy
            //// If a simple user named 'Sam' doesn't exist in the database, create this simple user
            //SecuritySimpleUser adminUser = ObjectSpace.FindObject<SecuritySimpleUser>(new BinaryOperator("UserName", "Sam"));
            //if(adminUser == null) {
            //    adminUser = ObjectSpace.CreateObject<SecuritySimpleUser>();
            //    adminUser.UserName = "******";
            //}
            //// Make the user an administrator
            //adminUser.IsAdministrator = true;
            //// Set a password if the standard authentication type is used
            //adminUser.SetPassword("");
            #endregion

            #region Create Users for the Complex Security Strategy
            // If a user named 'Sam' doesn't exist in the database, create this user
            PermissionPolicyUser user1 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "Sam"));
            if (user1 == null)
            {
                user1          = ObjectSpace.CreateObject <PermissionPolicyUser>();
                user1.UserName = "******";
                // Set a password if the standard authentication type is used
                user1.SetPassword("");
            }
            // If a user named 'John' doesn't exist in the database, create this user
            PermissionPolicyUser user2 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "John"));
            if (user2 == null)
            {
                user2          = ObjectSpace.CreateObject <PermissionPolicyUser>();
                user2.UserName = "******";
                // Set a password if the standard authentication type is used
                user2.SetPassword("");
            }

            // If a role with the Administrators name doesn't exist in the database, create this role
            UserRole adminRole = ObjectSpace.FindObject <UserRole>(new BinaryOperator("Name", "Administrators"));
            if (adminRole == null)
            {
                adminRole      = ObjectSpace.CreateObject <UserRole>();
                adminRole.Name = "Administrators";
            }
            adminRole.IsAdministrative = true;

            // If a role with the Users name doesn't exist in the database, create this role
            UserRole userRole = ObjectSpace.FindObject <UserRole>(new BinaryOperator("Name", "Users"));

            if (userRole == null)
            {
                userRole                  = ObjectSpace.CreateObject <UserRole>();
                userRole.Name             = "Users";
                userRole.PermissionPolicy = SecurityPermissionPolicy.AllowAllByDefault;
                userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyUser>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow);
                userRole.AddObjectPermission <PermissionPolicyUser>(SecurityOperations.ReadOnlyAccess, "[Oid] = CurrentUserId()", SecurityPermissionState.Allow);
                userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "ChangePasswordOnFirstLogon", null, SecurityPermissionState.Allow);
                userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "StoredPassword", null, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyTypePermissionObject>("Write;Delete;Navigate;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyMemberPermissionsObject>("Write;Delete;Navigate;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyObjectPermissionsObject>("Write;Delete;Navigate;Create", SecurityPermissionState.Deny);

                userRole.AddTypePermission <Contact>(SecurityOperations.ReadWriteAccess, SecurityPermissionState.Deny);
                userRole.AddTypePermission <Contact>("Delete;Navigate;Create", SecurityPermissionState.Allow);
                userRole.AddObjectPermission <Contact>(SecurityOperations.FullObjectAccess, "[UserRoles][].Count() = 0", SecurityPermissionState.Allow);
                userRole.AddObjectPermission <Contact>(SecurityOperations.ReadOnlyAccess, "StartsWith(FirstName, 'E')", SecurityPermissionState.Allow);
                userRole.AddObjectPermission <Contact>(SecurityOperations.FullObjectAccess, "UserRoles[Users[Oid = CurrentUserId()]]", SecurityPermissionState.Allow);
                //userRole.AddObjectPermission<Contact>(SecurityOperations.ReadWriteAccess, "\"bool\" : {\"must\" : [{\"terms\" : { \"userroles.name\" : ['users']}}]}", SecurityPermissionState.Allow);
            }

            // Add the Administrators role to the user1
            user1.Roles.Add(adminRole);
            // Add the Users role to the user2
            user2.Roles.Add(userRole);
            #endregion

            // PermissionPolicyRole defaultRole = CreateDefaultRole();

            Position developerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Developer'"));
            if (developerPosition == null)
            {
                developerPosition       = ObjectSpace.CreateObject <Position>();
                developerPosition.Title = "Developer";
            }
            Position managerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Manager'"));
            if (managerPosition == null)
            {
                managerPosition       = ObjectSpace.CreateObject <Position>();
                managerPosition.Title = "Manager";
            }

            Department devDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'Development Department'"));
            if (devDepartment == null)
            {
                devDepartment        = ObjectSpace.CreateObject <Department>();
                devDepartment.Title  = "Development Department";
                devDepartment.Office = "205";
                devDepartment.Positions.Add(developerPosition);
                devDepartment.Positions.Add(managerPosition);
            }
            Department seoDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'SEO'"));
            if (seoDepartment == null)
            {
                seoDepartment        = ObjectSpace.CreateObject <Department>();
                seoDepartment.Title  = "SEO";
                seoDepartment.Office = "703";
                seoDepartment.Positions.Add(developerPosition);
                seoDepartment.Positions.Add(managerPosition);
            }
            ImageConverter imageConverter = new ImageConverter();
            Contact        contactMary    = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Mary' && LastName == 'Tellitson'"));
            if (contactMary == null)
            {
                contactMary            = ObjectSpace.CreateObject <Contact>();
                contactMary.FirstName  = "Mary";
                contactMary.LastName   = "Tellitson";
                contactMary.NickName   = "Emma";
                contactMary.SpouseName = "Harry";
                contactMary.Email      = "*****@*****.**";
                contactMary.Birthday   = new DateTime(1980, 11, 27);
                contactMary.Department = devDepartment;
                contactMary.Notes      = "In duties included control software components";
                contactMary.Position   = managerPosition;
                contactMary.Photo      = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Tellitson_Mary_Photo").Image, typeof(byte[]));
                contactMary.UserRoles.Add(userRole);
            }
            Contact contactJohn = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'John' && LastName == 'Nilsen'"));
            if (contactJohn == null)
            {
                contactJohn            = ObjectSpace.CreateObject <Contact>();
                contactJohn.FirstName  = "John";
                contactJohn.LastName   = "Nilsen";
                contactJohn.NickName   = "Eric";
                contactJohn.SpouseName = "Emma Watson";
                contactJohn.Email      = "*****@*****.**";
                contactJohn.Birthday   = new DateTime(1981, 10, 3);
                contactJohn.Department = devDepartment;
                contactJohn.Position   = developerPosition;
                contactJohn.Notes      = "In duties included development of software modules";
                contactJohn.Photo      = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Nilsen_John_Photo").Image, typeof(byte[]));
                contactJohn.UserRoles.Add(userRole);
                contactJohn.UserRoles.Add(adminRole);
            }
            Contact contactJanete = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Janete' && LastName == 'Limeira'"));
            if (contactJanete == null)
            {
                contactJanete = ObjectSpace.CreateObject <Contact>();
                contactJanete.TitleOfCourtesy = TitleOfCourtesy.Miss;
                contactJanete.FirstName       = "Janete";
                contactJanete.LastName        = "Limeira";
                contactJanete.NickName        = "Dieter";
                contactJanete.SpouseName      = "Monika";
                contactJanete.Email           = "*****@*****.**";
                contactJanete.Birthday        = new DateTime(1981, 12, 21);
                contactJanete.Department      = devDepartment;
                contactJanete.Position        = managerPosition;
                contactJanete.Notes           = "In duties included control software components";
                contactJanete.Photo           = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Limeira_Janete_Photo").Image, typeof(byte[]));
                contactJanete.UserRoles.Add(userRole);
                contactJanete.UserRoles.Add(adminRole);
            }
            Contact contactKarl = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Karl' && LastName == 'Jablonski'"));
            if (contactKarl == null)
            {
                contactKarl            = ObjectSpace.CreateObject <Contact>();
                contactKarl.FirstName  = "Karl";
                contactKarl.LastName   = "Jablonski";
                contactKarl.NickName   = "Herbert";
                contactKarl.SpouseName = "Erna";
                contactKarl.Email      = " [email protected]";
                contactKarl.Birthday   = new DateTime(1975, 12, 19);
                contactKarl.Department = devDepartment;
                contactKarl.Position   = developerPosition;
                contactKarl.Manager    = contactJanete;
                contactKarl.Notes      = "In duties included  development of software modules";
                contactKarl.Photo      = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Jablonski_Karl_Photo").Image, typeof(byte[]));
                contactKarl.UserRoles.Add(userRole);
                contactKarl.UserRoles.Add(adminRole);
            }
            Contact contactCatherine = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Catherine' && LastName == 'Dewey'"));
            if (contactCatherine == null)
            {
                contactCatherine = ObjectSpace.CreateObject <Contact>();
                contactCatherine.TitleOfCourtesy = TitleOfCourtesy.Miss;
                contactCatherine.FirstName       = "Catherine";
                contactCatherine.LastName        = "Dewey";
                contactCatherine.NickName        = "Frank";
                contactCatherine.SpouseName      = "Heike";
                contactCatherine.Email           = "*****@*****.**";
                contactCatherine.Birthday        = new DateTime(1993, 7, 9);
                contactCatherine.Department      = seoDepartment;
                contactCatherine.Position        = managerPosition;
                contactCatherine.Notes           = "In duties included control software components";
                contactCatherine.Photo           = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Dewey_Catherine_Photo").Image, typeof(byte[]));
                contactCatherine.UserRoles.Add(adminRole);
            }
            Contact contactPaul = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Paul' && LastName == 'Henriot'"));
            if (contactPaul == null)
            {
                contactPaul = ObjectSpace.CreateObject <Contact>();
                contactPaul.TitleOfCourtesy = TitleOfCourtesy.Mr;
                contactPaul.FirstName       = "Paul";
                contactPaul.LastName        = "Henriot";
                contactPaul.NickName        = "Lukas";
                contactPaul.SpouseName      = "Christiana";
                contactPaul.Email           = "*****@*****.**";
                contactPaul.Birthday        = new DateTime(1958, 1, 30);
                contactPaul.Department      = seoDepartment;
                contactPaul.Position        = developerPosition;
                contactPaul.Notes           = "In duties included  development of software modules";
                contactPaul.Photo           = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Henriot_Paul_Photo").Image, typeof(byte[]));
                contactPaul.UserRoles.Add(userRole);
                contactPaul.UserRoles.Add(adminRole);
            }
            Contact contactElizabeth = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Elizabeth' && LastName == 'Lincoln'"));
            if (contactElizabeth == null)
            {
                contactElizabeth = ObjectSpace.CreateObject <Contact>();
                contactElizabeth.TitleOfCourtesy = TitleOfCourtesy.Ms;
                contactElizabeth.FirstName       = "Elizabeth";
                contactElizabeth.LastName        = "Lincoln";
                contactElizabeth.NickName        = "Que";
                contactElizabeth.SpouseName      = "Alen NIx";
                contactElizabeth.Email           = "*****@*****.**";
                contactElizabeth.Birthday        = new DateTime(1988, 3, 14);
                contactElizabeth.Department      = seoDepartment;
                contactElizabeth.Position        = managerPosition;
                contactElizabeth.Manager         = contactCatherine;
                contactElizabeth.Notes           = "In duties included control software components";
                contactElizabeth.Photo           = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Lincoln_Elizabeth_Photo").Image, typeof(byte[]));
                contactElizabeth.UserRoles.Add(userRole);
                contactElizabeth.UserRoles.Add(adminRole);
            }

            Contact contactDaniel = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Daniel' && LastName == 'Tonini'"));
            if (contactDaniel == null)
            {
                contactDaniel            = ObjectSpace.CreateObject <Contact>();
                contactDaniel.FirstName  = "Daniel";
                contactDaniel.LastName   = "Tonini";
                contactDaniel.NickName   = "Alexander";
                contactDaniel.SpouseName = "keth";
                contactDaniel.Email      = "*****@*****.**";
                contactDaniel.Birthday   = new DateTime(1980, 12, 30);
                contactDaniel.Department = seoDepartment;
                contactDaniel.Notes      = "In duties included development of software modules";
                contactDaniel.Position   = developerPosition;
                contactDaniel.Manager    = contactElizabeth;
                contactDaniel.Photo      = (byte[])imageConverter.ConvertTo(ImageLoader.Instance.GetImageInfo("Tonini_Daniel_Photo").Image, typeof(byte[]));
                contactDaniel.UserRoles.Add(adminRole);
            }

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Review reports'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Review reports";
                task.AssignedTo    = contactJohn;
                task.StartDate     = DateTime.Parse("May 03, 2008");
                task.DueDate       = DateTime.Parse("September 06, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.InProgress;
                task.Priority      = Priority.High;
                task.EstimatedWork = 60;
                task.Description   = "Analyse the reports and assign new tasks to employees.";
            }

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Fix breakfast'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Fix breakfast";
                task.AssignedTo    = contactMary;
                task.StartDate     = DateTime.Parse("May 03, 2008");
                task.DueDate       = DateTime.Parse("May 04, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority      = Priority.Low;
                task.EstimatedWork = 1;
                task.ActualWork    = 3;
                task.Description   = "The Development Department - by 9 a.m.\r\nThe R&QA Department - by 10 a.m.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task1'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Task1";
                task.AssignedTo    = contactJohn;
                task.StartDate     = DateTime.Parse("June 03, 2008");
                task.DueDate       = DateTime.Parse("June 06, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority      = Priority.High;
                task.EstimatedWork = 10;
                task.ActualWork    = 15;
                task.Description   = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task2'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Task2";
                task.AssignedTo    = contactJohn;
                task.StartDate     = DateTime.Parse("July 03, 2008");
                task.DueDate       = DateTime.Parse("July 06, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority      = Priority.Low;
                task.EstimatedWork = 8;
                task.ActualWork    = 16;
                task.Description   = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
            UpdateStatus("CreateAnalysis", "", "Creating analysis reports in the database...");
            CreateDataToBeAnalysed();
            UpdateStatus("CreateSecurityData", "", "Creating users and roles in the database...");


            ObjectSpace.CommitChanges();
        }
コード例 #25
0
ファイル: Updater.cs プロジェクト: jjcolumb/XAFMainDemo
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
            UpdateAnalysisCriteriaColumn();

            // PermissionPolicyRole defaultRole = CreateDefaultRole();

            UpdateStatus("CreateContacts", "", "Creating contacts, departments and positions in the database...");
            Position developerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Developer'"));

            if (developerPosition == null)
            {
                developerPosition       = ObjectSpace.CreateObject <Position>();
                developerPosition.Title = "Developer";
            }
            Position managerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Manager'"));

            if (managerPosition == null)
            {
                managerPosition       = ObjectSpace.CreateObject <Position>();
                managerPosition.Title = "Manager";
            }

            Department devDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'Development Department'"));

            if (devDepartment == null)
            {
                devDepartment        = ObjectSpace.CreateObject <Department>();
                devDepartment.Title  = "Development Department";
                devDepartment.Office = "205";
                devDepartment.Positions.Add(developerPosition);
                devDepartment.Positions.Add(managerPosition);
            }
            Department seoDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'SEO'"));

            if (seoDepartment == null)
            {
                seoDepartment        = ObjectSpace.CreateObject <Department>();
                seoDepartment.Title  = "SEO";
                seoDepartment.Office = "703";
                seoDepartment.Positions.Add(developerPosition);
                seoDepartment.Positions.Add(managerPosition);
            }
            ObjectSpace.CommitChanges();
            try {
                DataTable employeesTable = GetEmployeesDataTable();
                foreach (DataRow employee in employeesTable.Rows)
                {
                    string  email   = Convert.ToString(employee["EmailAddress"]);
                    Contact contact = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("Email=?", email));
                    if (contact == null)
                    {
                        contact           = ObjectSpace.CreateObject <Contact>();
                        contact.Email     = email;
                        contact.FirstName = Convert.ToString(employee["FirstName"]);
                        contact.LastName  = Convert.ToString(employee["LastName"]);
                        contact.BirthDate = Convert.ToDateTime(employee["BirthDate"]);
                        contact.Photo     = Convert.FromBase64String(Convert.ToString(employee["ImageData"]));
                        string titleOfCourtesyText = Convert.ToString(employee["Title"]).ToLower();
                        if (!string.IsNullOrEmpty(titleOfCourtesyText))
                        {
                            titleOfCourtesyText = titleOfCourtesyText.Replace(".", "");
                            TitleOfCourtesy titleOfCourtesy;
                            if (Enum.TryParse <TitleOfCourtesy>(titleOfCourtesyText, true, out titleOfCourtesy))
                            {
                                contact.TitleOfCourtesy = titleOfCourtesy;
                            }
                        }
                        PhoneNumber phoneNumber = ObjectSpace.CreateObject <PhoneNumber>();
                        phoneNumber.Party     = contact;
                        phoneNumber.Number    = Convert.ToString(employee["Phone"]);
                        phoneNumber.PhoneType = "Work";

                        Address address = ObjectSpace.CreateObject <Address>();
                        contact.Address1      = address;
                        address.ZipPostal     = Convert.ToString(employee["PostalCode"]);
                        address.Street        = Convert.ToString(employee["AddressLine1"]);
                        address.City          = Convert.ToString(employee["City"]);
                        address.StateProvince = Convert.ToString(employee["StateProvinceName"]);
                        string  countryName = Convert.ToString(employee["CountryRegionName"]);
                        Country country     = ObjectSpace.FindObject <Country>(CriteriaOperator.Parse("Name=?", countryName), true);
                        if (country == null)
                        {
                            country      = ObjectSpace.CreateObject <Country>();
                            country.Name = countryName;
                        }
                        address.Country = country;

                        string     departmentTitle = Convert.ToString(employee["GroupName"]);
                        Department department      = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title=?", departmentTitle), true);
                        if (department == null)
                        {
                            department       = ObjectSpace.CreateObject <Department>();
                            department.Title = departmentTitle;
                            Random rnd = new Random();
                            department.Office = string.Format("{0}0{0}", rnd.Next(1, 7), rnd.Next(9));
                        }
                        contact.Department = department;

                        string   positionTitle = Convert.ToString(employee["JobTitle"]);
                        Position position      = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title=?", positionTitle), true);
                        if (position == null)
                        {
                            position       = ObjectSpace.CreateObject <Position>();
                            position.Title = positionTitle;
                            position.Departments.Add(department);
                        }
                        contact.Position = position;
                    }
                }
                ObjectSpace.CommitChanges();
            }
            catch (Exception e) {
                Tracing.Tracer.LogText("Cannot initialize contacts, departments and positions from the XML file.");
                Tracing.Tracer.LogError(e);
            }


            Contact contactMary = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Mary' && LastName == 'Tellitson'"));

            if (contactMary != null && LocationIsEmpty(contactMary))
            {
                if (contactMary.Location == null)
                {
                    contactMary.Location = ObjectSpace.CreateObject <Location>();
                }

                contactMary.Location.Contact   = contactMary;
                contactMary.Location.Latitude  = 40.620610;
                contactMary.Location.Longitude = -73.935242;
            }

            Contact contactJohn = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'John' && LastName == 'Nilsen'"));

            if (contactJohn != null && LocationIsEmpty(contactJohn))
            {
                if (contactJohn.Location == null)
                {
                    contactJohn.Location = ObjectSpace.CreateObject <Location>();
                }

                contactJohn.Location.Contact   = contactJohn;
                contactJohn.Location.Latitude  = 40.711510;
                contactJohn.Location.Longitude = -73.845252;
            }

            Contact contactJanete = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Janete' && LastName == 'Limeira'"));

            if (contactJanete != null && LocationIsEmpty(contactJanete))
            {
                if (contactJanete.Location == null)
                {
                    contactJanete.Location = ObjectSpace.CreateObject <Location>();
                }

                contactJanete.Location.Contact   = contactJanete;
                contactJanete.Location.Latitude  = 40.710410;
                contactJanete.Location.Longitude = -73.963262;
            }

            Contact contactKarl = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Karl' && LastName == 'Jablonski'"));

            if (contactKarl != null && LocationIsEmpty(contactKarl))
            {
                if (contactKarl.Manager == null)
                {
                    contactKarl.Manager = contactJanete;
                }
                if (contactKarl.Location == null)
                {
                    contactKarl.Location = ObjectSpace.CreateObject <Location>();
                }

                contactKarl.Location.Contact   = contactKarl;
                contactKarl.Location.Latitude  = 40.792613;
                contactKarl.Location.Longitude = -73.925142;
            }


            ObjectSpace.CommitChanges();


            UpdateStatus("CreatePayments", "", "Creating payments, resumes and scheduler events in the database...");
            IList <Contact> topTenContacts = ObjectSpace.GetObjects <Contact>();

            ObjectSpace.SetCollectionSorting(topTenContacts, new SortProperty[] { new SortProperty("LastName", DevExpress.Xpo.DB.SortingDirection.Ascending) });
            ObjectSpace.SetTopReturnedObjectsCount(topTenContacts, 10);
            string[] notes =
            {
                "works with customers until their problems are resolved and often goes an extra step to help upset customers be completely surprised by how far we will go to satisfy customers",
                "is very good at making team members feel included. The inclusion has improved the team's productivity dramatically",
                "is very good at sharing knowledge and information during a problem to increase the chance it will be resolved quickly",
                "actively elicits feedback from customers and works to resolve their problems",
                "creates an inclusive work environment where everyone feels they are a part of the team",
                "consistently keeps up on new trends in the industry and applies these new practices to every day work",
                "is clearly not a short term thinker - the ability to set short and long term business goals is a great asset to the company",
                "seems to want to achieve all of the goals in the last few weeks before annual performance review time, but does not consistently work towards the goals throughout the year",
                "does not yet delegate effectively and has a tendency to be overloaded with tasks which should be handed off to subordinates",
                "to be discussed with the top management..."
            };
            for (int i = 0; i < topTenContacts.Count; i++)
            {
                Contact contact = topTenContacts[i];
                Payment payment = ObjectSpace.FindObject <Payment>(CriteriaOperator.Parse("Contact=?", contact));
                if (payment == null)
                {
                    payment         = ObjectSpace.CreateObject <Payment>();
                    payment.Contact = contact;
                    payment.Hours   = new Random().Next(10, 40);
                    payment.Rate    = new Random().Next(30, 50) + new Random().Next(5, 20);
                }
                Resume resume = ObjectSpace.FindObject <Resume>(CriteriaOperator.Parse("Contact=?", contact));
                if (resume == null)
                {
                    resume = ObjectSpace.CreateObject <Resume>();
                    FileData file = ObjectSpace.CreateObject <FileData>();
                    try {
                        file.LoadFromStream(string.Format("{0}_Photo.png", contact.FullName), new MemoryStream(contact.Photo));
                    }
                    catch (Exception e) {
                        Tracing.Tracer.LogText("Cannot initialize FileData for the contact {0}.", contact.FullName);
                        Tracing.Tracer.LogError(e);
                    }
                    resume.File    = file;
                    resume.Contact = contact;
                }
                Contact reviewerContact = i < 5 ? contactMary : contactJanete;
                Note    note            = ObjectSpace.FindObject <Note>(CriteriaOperator.Parse("Contains(Text, ?)", contact.FullName));
                if (note == null)
                {
                    note          = ObjectSpace.CreateObject <Note>();
                    note.Author   = reviewerContact.FullName;
                    note.Text     = string.Format("<span style='color:#000000;font-family:Tahoma;font-size:8pt;'><b>{0}</b> \r\n{1}</span>", contact.FullName, notes[i]);
                    note.DateTime = DateTime.Now.AddDays(i * (-1));
                }
#if !EASYTEST
                Event appointment = ObjectSpace.FindObject <Event>(CriteriaOperator.Parse("Contains(Subject, ?)", contact.FullName));
                if (appointment == null)
                {
                    appointment             = ObjectSpace.CreateObject <Event>();
                    appointment.Subject     = string.Format("{0} - performance review", contact.FullName);
                    appointment.Description = string.Format("{0} \r\n{1}", contact.FullName, notes[i]);
                    appointment.StartOn     = note.DateTime.AddDays(5).AddHours(12);
                    appointment.EndOn       = appointment.StartOn.AddHours(2);
                    appointment.Location    = "101";
                    appointment.AllDay      = false;
                    appointment.Status      = 0;
                    appointment.Label       = i % 2 == 0 ? 2 : 5;
                    Resource reviewerContactResource = ObjectSpace.FindObject <Resource>(CriteriaOperator.Parse("Contains(Caption, ?)", reviewerContact.FullName));
                    if (reviewerContactResource == null)
                    {
                        reviewerContactResource         = ObjectSpace.CreateObject <Resource>();
                        reviewerContactResource.Caption = reviewerContact.FullName;
                        reviewerContactResource.Color   = reviewerContact == contactMary ? Color.AliceBlue : Color.LightCoral;
                    }
                    appointment.Resources.Add(reviewerContactResource);
                }
#endif
            }

            ObjectSpace.CommitChanges();

            UpdateStatus("CreateTasks", "", "Creating demo tasks in the database...");

#if EASYTEST
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Review reports'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Review reports";
                task.AssignedTo         = contactJohn;
                task.StartDate          = DateTime.Parse("May 03, 2008");
                task.DueDate            = DateTime.Parse("September 06, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.InProgress;
                task.Priority           = Priority.High;
                task.EstimatedWorkHours = 60;
                task.Description        = "Analyse the reports and assign new tasks to employees.";
            }

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Fix breakfast'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Fix breakfast";
                task.AssignedTo         = contactMary;
                task.StartDate          = DateTime.Parse("May 03, 2008");
                task.DueDate            = DateTime.Parse("May 04, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority           = Priority.Low;
                task.EstimatedWorkHours = 1;
                task.ActualWorkHours    = 3;
                task.Description        = "The Development Department - by 9 a.m.\r\nThe R&QA Department - by 10 a.m.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task1'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Task1";
                task.AssignedTo         = contactJohn;
                task.StartDate          = DateTime.Parse("June 03, 2008");
                task.DueDate            = DateTime.Parse("June 06, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority           = Priority.High;
                task.EstimatedWorkHours = 10;
                task.ActualWorkHours    = 15;
                task.Description        = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task2'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Task2";
                task.AssignedTo         = contactJohn;
                task.StartDate          = DateTime.Parse("July 03, 2008");
                task.DueDate            = DateTime.Parse("July 06, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority           = Priority.Low;
                task.EstimatedWorkHours = 8;
                task.ActualWorkHours    = 16;
                task.Description        = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
#endif
#if !EASYTEST
            IList <Contact>  contacts = ObjectSpace.GetObjects <Contact>();
            IList <DemoTask> taskList = GenerateTask(contacts);
            if (taskList.Count > 0)
            {
                Random rndGenerator = new Random();
                foreach (Contact contact in contacts)
                {
                    if (taskList.Count == 1)
                    {
                        contact.Tasks.Add(taskList[0]);
                    }
                    else if (taskList.Count == 2)
                    {
                        contact.Tasks.Add(taskList[0]);
                        contact.Tasks.Add(taskList[1]);
                    }
                    else
                    {
                        int index = rndGenerator.Next(1, taskList.Count - 2);
                        contact.Tasks.Add(taskList[index]);
                        contact.Tasks.Add(taskList[index - 1]);
                        contact.Tasks.Add(taskList[index + 1]);
                    }
                }
            }
#endif
            UpdateStatus("CreateAnalysis", "", "Creating analysis reports in the database...");
            CreateDataToBeAnalysed();
            UpdateStatus("CreateSecurityData", "", "Creating users and roles in the database...");
            #region Create a User for the Simple Security Strategy
            //// If a simple user named 'Sam' doesn't exist in the database, create this simple user
            //SecuritySimpleUser adminUser = ObjectSpace.FindObject<SecuritySimpleUser>(new BinaryOperator("UserName", "Sam"));
            //if(adminUser == null) {
            //    adminUser = ObjectSpace.CreateObject<SecuritySimpleUser>();
            //    adminUser.UserName = "******";
            //}
            //// Make the user an administrator
            //adminUser.IsAdministrator = true;
            //// Set a password if the standard authentication type is used
            //adminUser.SetPassword("");
            #endregion

            #region Create Users for the Complex Security Strategy
            // If a user named 'Sam' doesn't exist in the database, create this user
            PermissionPolicyUser user1 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "Sam"));
            if (user1 == null)
            {
                user1          = ObjectSpace.CreateObject <PermissionPolicyUser>();
                user1.UserName = "******";
                // Set a password if the standard authentication type is used
                user1.SetPassword("");
            }
            // If a user named 'John' doesn't exist in the database, create this user
            PermissionPolicyUser user2 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "John"));
            if (user2 == null)
            {
                user2          = ObjectSpace.CreateObject <PermissionPolicyUser>();
                user2.UserName = "******";
                // Set a password if the standard authentication type is used
                user2.SetPassword("");
            }
            // If a role with the Administrators name doesn't exist in the database, create this role
            PermissionPolicyRole adminRole = ObjectSpace.FindObject <PermissionPolicyRole>(new BinaryOperator("Name", "Administrators"));
            if (adminRole == null)
            {
                adminRole      = ObjectSpace.CreateObject <PermissionPolicyRole>();
                adminRole.Name = "Administrators";
            }
            adminRole.IsAdministrative = true;

            // If a role with the Users name doesn't exist in the database, create this role
            PermissionPolicyRole userRole = ObjectSpace.FindObject <PermissionPolicyRole>(new BinaryOperator("Name", "Users"));
            if (userRole == null)
            {
                userRole                  = ObjectSpace.CreateObject <PermissionPolicyRole>();
                userRole.Name             = "Users";
                userRole.PermissionPolicy = SecurityPermissionPolicy.AllowAllByDefault;
                userRole.AddNavigationPermission("Application/NavigationItems/Items/Default/Items/PermissionPolicyRole_ListView", SecurityPermissionState.Deny);
                userRole.AddNavigationPermission("Application/NavigationItems/Items/Default/Items/PermissionPolicyUser_ListView", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.FullAccess, SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyUser>(SecurityOperations.FullAccess, SecurityPermissionState.Deny);
                userRole.AddObjectPermission <PermissionPolicyUser>(SecurityOperations.ReadOnlyAccess, "[Oid] = CurrentUserId()", SecurityPermissionState.Allow);
                userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "ChangePasswordOnFirstLogon", null, SecurityPermissionState.Allow);
                userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "StoredPassword", null, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.Read, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyTypePermissionObject>("Write;Delete;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyMemberPermissionsObject>("Write;Delete;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyObjectPermissionsObject>("Write;Delete;Create", SecurityPermissionState.Deny);
            }

            // Add the Administrators role to the user1
            user1.Roles.Add(adminRole);
            // Add the Users role to the user2
            user2.Roles.Add(userRole);
            #endregion

            ObjectSpace.CommitChanges();
        }
コード例 #26
0
        private static void CreateITDepartmentModel(EFCoreDemoDbContext dbContext)
        {
            Department itDepartment = new Department()
            {
                Title  = "IT",
                Office = "SiliconValley"
            };
            DemoTask itTask = new DemoTask()
            {
                Description      = "HardCode",
                Note             = "This must be perfect code",
                StartDate        = new DateTime(2016, 01, 23),
                DateCompleted    = new DateTime(2016, 06, 13),
                PercentCompleted = 52
            };
            DemoTask writeTask = new DemoTask()
            {
                Description      = "Write",
                Note             = "Write docs",
                StartDate        = new DateTime(2015, 09, 14),
                DateCompleted    = new DateTime(2018, 07, 18),
                PercentCompleted = 25
            };
            DemoTask designTask = new DemoTask()
            {
                Description      = "Draw",
                Note             = "Draw pictures like Picasso",
                StartDate        = new DateTime(2016, 04, 03),
                DateCompleted    = new DateTime(2020, 11, 04),
                PercentCompleted = 3
            };
            Contact developer = new Contact()
            {
                Name    = "John",
                Address = "Boston"
                          //Department = null
            };
            Contact writer = new Contact()
            {
                Name       = "Kevin",
                Address    = "California",
                Department = itDepartment
            };
            Contact designer = new Contact()
            {
                Name       = "Ezra",
                Address    = "San Francisko",
                Department = itDepartment
            };
            ContactTask itContactTask = new ContactTask()
            {
                Contact = developer,
                Task    = itTask
            };
            ContactTask writeContactTask = new ContactTask()
            {
                Contact = writer,
                Task    = writeTask
            };
            ContactTask designContactTask = new ContactTask()
            {
                Contact = designer,
                Task    = designTask
            };

            dbContext.ContactTasks.Add(itContactTask);
            dbContext.ContactTasks.Add(designContactTask);
            dbContext.ContactTasks.Add(writeContactTask);
            dbContext.Tasks.Add(itTask);
            dbContext.Tasks.Add(writeTask);
            dbContext.Tasks.Add(designTask);
            dbContext.Contacts.Add(designer);
            dbContext.Contacts.Add(writer);
            dbContext.Contacts.Add(developer);
            dbContext.Departments.Add(itDepartment);
        }
コード例 #27
0
ファイル: Updater.cs プロジェクト: kashiash/BlazorMainDemo
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
            UpdateAnalysisCriteriaColumn();

            // PermissionPolicyRole defaultRole = CreateDefaultRole();

            UpdateStatus("CreateContacts", "", "Creating contacts, departments and positions in the database...");

            ObjectSpace.CommitChanges();
            try {
                CreateDepartments();
                CreateContacts();
            }
            catch (Exception e) {
                Tracing.Tracer.LogText("Cannot initialize contacts, departments and positions from the XML file.");
                Tracing.Tracer.LogError(e);
            }
            InitContactsLocation();


            UpdateStatus("CreatePayments", "", "Creating payments, resumes and scheduler events in the database...");
            IList <Contact> topTenContacts = ObjectSpace.GetObjects <Contact>();

            ObjectSpace.SetCollectionSorting(topTenContacts, new SortProperty[] { new SortProperty("LastName", DevExpress.Xpo.DB.SortingDirection.Ascending) });
            ObjectSpace.SetTopReturnedObjectsCount(topTenContacts, 10);
            string[] notes =
            {
                "works with customers until their problems are resolved and often goes an extra step to help upset customers be completely surprised by how far we will go to satisfy customers",
                "is very good at making team members feel included. The inclusion has improved the team's productivity dramatically",
                "is very good at sharing knowledge and information during a problem to increase the chance it will be resolved quickly",
                "actively elicits feedback from customers and works to resolve their problems",
                "creates an inclusive work environment where everyone feels they are a part of the team",
                "consistently keeps up on new trends in the industry and applies these new practices to every day work",
                "is clearly not a short term thinker - the ability to set short and long term business goals is a great asset to the company",
                "seems to want to achieve all of the goals in the last few weeks before annual performance review time, but does not consistently work towards the goals throughout the year",
                "does not yet delegate effectively and has a tendency to be overloaded with tasks which should be handed off to subordinates",
                "to be discussed with the top management..."
            };
            for (int i = 0; i < topTenContacts.Count; i++)
            {
                Contact contact = topTenContacts[i];
                if (ObjectSpace.FindObject <Paycheck>(CriteriaOperator.Parse("Employee=?", contact)) == null)
                {
                    PayrollSampleDataGenerator.GenerateContactPaychecks(ObjectSpace, contact);
                    ObjectSpace.CommitChanges();
                }
                Resume resume = ObjectSpace.FindObject <Resume>(CriteriaOperator.Parse("Contact=?", contact));
                if (resume == null)
                {
                    resume = ObjectSpace.CreateObject <Resume>();
                    FileData file = ObjectSpace.CreateObject <FileData>();
                    try {
                        Stream stream = FindContactResume(contact);
                        if (stream != null)
                        {
                            file.LoadFromStream(string.Format("{0}.pdf", contact.FullName), stream);
                        }
                    }
                    catch (Exception e) {
                        Tracing.Tracer.LogText("Cannot initialize FileData for the contact {0}.", contact.FullName);
                        Tracing.Tracer.LogError(e);
                    }
                    resume.File    = file;
                    resume.Contact = contact;
                }
                Contact reviewerContact = i < 5 ? FindTellitson() : FindJanete();
                Note    note            = ObjectSpace.FindObject <Note>(CriteriaOperator.Parse("Contains(Text, ?)", contact.FullName));
                if (note == null)
                {
                    note          = ObjectSpace.CreateObject <Note>();
                    note.Author   = reviewerContact.FullName;
                    note.Text     = string.Format("<span style='color:#000000;font-family:Tahoma;font-size:8pt;'><b>{0}</b> \r\n{1}</span>", contact.FullName, notes[i]);
                    note.DateTime = DateTime.Now.AddDays(i * (-1));
                }
#if !EASYTEST
                Event appointment = ObjectSpace.FindObject <Event>(CriteriaOperator.Parse("Contains(Subject, ?)", contact.FullName));
                if (appointment == null)
                {
                    appointment             = ObjectSpace.CreateObject <Event>();
                    appointment.Subject     = string.Format("{0} - performance review", contact.FullName);
                    appointment.Description = string.Format("{0} \r\n{1}", contact.FullName, notes[i]);
                    appointment.StartOn     = note.DateTime.AddDays(5).AddHours(12);
                    appointment.EndOn       = appointment.StartOn.AddHours(2);
                    appointment.Location    = "101";
                    appointment.AllDay      = false;
                    appointment.Status      = 0;
                    appointment.Label       = i % 2 == 0 ? 2 : 5;
                    Resource reviewerContactResource = ObjectSpace.FindObject <Resource>(CriteriaOperator.Parse("Contains(Caption, ?)", reviewerContact.FullName));
                    if (reviewerContactResource == null)
                    {
                        reviewerContactResource         = ObjectSpace.CreateObject <Resource>();
                        reviewerContactResource.Caption = reviewerContact.FullName;
                        reviewerContactResource.Color   = reviewerContact == FindTellitson() ? Color.AliceBlue : Color.LightCoral;
                    }
                    appointment.Resources.Add(reviewerContactResource);
                }
#endif
            }

            ObjectSpace.CommitChanges();

            UpdateStatus("CreateTasks", "", "Creating demo tasks in the database...");

#if EASYTEST
            Contact contactMary = FindTellitson();
            Contact contactJohn = FindContact("John", "Nilsen");
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Review reports'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Review reports";
                task.AssignedTo         = contactJohn;
                task.StartDate          = DateTime.Parse("May 03, 2008");
                task.DueDate            = DateTime.Parse("September 06, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.InProgress;
                task.Priority           = Priority.High;
                task.EstimatedWorkHours = 60;
                task.Description        = "Analyse the reports and assign new tasks to employees.";
            }

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Fix breakfast'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Fix breakfast";
                task.AssignedTo         = contactMary;
                task.StartDate          = DateTime.Parse("May 03, 2008");
                task.DueDate            = DateTime.Parse("May 04, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority           = Priority.Low;
                task.EstimatedWorkHours = 1;
                task.ActualWorkHours    = 3;
                task.Description        = "The Development Department - by 9 a.m.\r\nThe R&QA Department - by 10 a.m.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task1'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Task1";
                task.AssignedTo         = contactJohn;
                task.StartDate          = DateTime.Parse("June 03, 2008");
                task.DueDate            = DateTime.Parse("June 06, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority           = Priority.High;
                task.EstimatedWorkHours = 10;
                task.ActualWorkHours    = 15;
                task.Description        = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task2'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject            = "Task2";
                task.AssignedTo         = contactJohn;
                task.StartDate          = DateTime.Parse("July 03, 2008");
                task.DueDate            = DateTime.Parse("July 06, 2008");
                task.Status             = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority           = Priority.Low;
                task.EstimatedWorkHours = 8;
                task.ActualWorkHours    = 16;
                task.Description        = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
#endif
#if !EASYTEST
            IList <Contact>  contacts = ObjectSpace.GetObjects <Contact>();
            IList <DemoTask> taskList = GenerateTask(contacts);
            if (taskList.Count > 0)
            {
                Random rndGenerator = new Random();
                foreach (Contact contact in contacts)
                {
                    if (taskList.Count == 1)
                    {
                        contact.Tasks.Add(taskList[0]);
                    }
                    else if (taskList.Count == 2)
                    {
                        contact.Tasks.Add(taskList[0]);
                        contact.Tasks.Add(taskList[1]);
                    }
                    else
                    {
                        int index = rndGenerator.Next(1, taskList.Count - 2);
                        contact.Tasks.Add(taskList[index]);
                        contact.Tasks.Add(taskList[index - 1]);
                        contact.Tasks.Add(taskList[index + 1]);
                    }
                }
            }
#endif
            UpdateStatus("CreateAnalysis", "", "Creating analysis reports in the database...");
            CreateDataToBeAnalysed();
            UpdateStatus("CreateSecurityData", "", "Creating users and roles in the database...");
            #region Create a User for the Simple Security Strategy
            //// If a simple user named 'Sam' doesn't exist in the database, create this simple user
            //SecuritySimpleUser adminUser = ObjectSpace.FindObject<SecuritySimpleUser>(new BinaryOperator("UserName", "Sam"));
            //if(adminUser == null) {
            //    adminUser = ObjectSpace.CreateObject<SecuritySimpleUser>();
            //    adminUser.UserName = "******";
            //}
            //// Make the user an administrator
            //adminUser.IsAdministrator = true;
            //// Set a password if the standard authentication type is used
            //adminUser.SetPassword("");
            #endregion

            #region Create Users for the Complex Security Strategy
            // If a user named 'Sam' doesn't exist in the database, create this user
            PermissionPolicyUser user1 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "Sam"));
            if (user1 == null)
            {
                user1          = ObjectSpace.CreateObject <PermissionPolicyUser>();
                user1.UserName = "******";
                // Set a password if the standard authentication type is used
                user1.SetPassword("");
            }
            // If a user named 'John' doesn't exist in the database, create this user
            PermissionPolicyUser user2 = ObjectSpace.FindObject <PermissionPolicyUser>(new BinaryOperator("UserName", "John"));
            if (user2 == null)
            {
                user2          = ObjectSpace.CreateObject <PermissionPolicyUser>();
                user2.UserName = "******";
                // Set a password if the standard authentication type is used
                user2.SetPassword("");
            }
            // If a role with the Administrators name doesn't exist in the database, create this role
            PermissionPolicyRole adminRole = ObjectSpace.FindObject <PermissionPolicyRole>(new BinaryOperator("Name", "Administrators"));
            if (adminRole == null)
            {
                adminRole      = ObjectSpace.CreateObject <PermissionPolicyRole>();
                adminRole.Name = "Administrators";
            }
            adminRole.IsAdministrative = true;

            // If a role with the Users name doesn't exist in the database, create this role
            PermissionPolicyRole userRole = ObjectSpace.FindObject <PermissionPolicyRole>(new BinaryOperator("Name", "Users"));
            if (userRole == null)
            {
                userRole                  = ObjectSpace.CreateObject <PermissionPolicyRole>();
                userRole.Name             = "Users";
                userRole.PermissionPolicy = SecurityPermissionPolicy.AllowAllByDefault;
                userRole.AddNavigationPermission("Application/NavigationItems/Items/Default/Items/PermissionPolicyRole_ListView", SecurityPermissionState.Deny);
                userRole.AddNavigationPermission("Application/NavigationItems/Items/Default/Items/PermissionPolicyUser_ListView", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.FullAccess, SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyUser>(SecurityOperations.FullAccess, SecurityPermissionState.Deny);
                userRole.AddObjectPermission <PermissionPolicyUser>(SecurityOperations.ReadOnlyAccess, "[Oid] = CurrentUserId()", SecurityPermissionState.Allow);
                userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "ChangePasswordOnFirstLogon", null, SecurityPermissionState.Allow);
                userRole.AddMemberPermission <PermissionPolicyUser>(SecurityOperations.Write, "StoredPassword", null, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyRole>(SecurityOperations.Read, SecurityPermissionState.Allow);
                userRole.AddTypePermission <PermissionPolicyTypePermissionObject>("Write;Delete;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyMemberPermissionsObject>("Write;Delete;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyObjectPermissionsObject>("Write;Delete;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyNavigationPermissionObject>("Write;Delete;Create", SecurityPermissionState.Deny);
                userRole.AddTypePermission <PermissionPolicyActionPermissionObject>("Write;Delete;Create", SecurityPermissionState.Deny);
            }

            // Add the Administrators role to the user1
            user1.Roles.Add(adminRole);
            // Add the Users role to the user2
            user2.Roles.Add(userRole);
            #endregion

            ObjectSpace.CommitChanges();
        }
コード例 #28
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
            UpdateAnalysisCriteriaColumn();

            SecuritySystemRole defaultRole = CreateDefaultRole();

            Position developerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Developer'"));

            if (developerPosition == null)
            {
                developerPosition       = ObjectSpace.CreateObject <Position>();
                developerPosition.Title = "Developer";
            }
            Position managerPosition = ObjectSpace.FindObject <Position>(CriteriaOperator.Parse("Title == 'Manager'"));

            if (managerPosition == null)
            {
                managerPosition       = ObjectSpace.CreateObject <Position>();
                managerPosition.Title = "Manager";
            }

            Department devDepartment = ObjectSpace.FindObject <Department>(CriteriaOperator.Parse("Title == 'Development Department'"));

            if (devDepartment == null)
            {
                devDepartment        = ObjectSpace.CreateObject <Department>();
                devDepartment.Title  = "Development Department";
                devDepartment.Office = "205";
                devDepartment.Positions.Add(developerPosition);
                devDepartment.Positions.Add(managerPosition);
            }

            Contact contactMary = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'Mary' && LastName == 'Tellitson'"));

            if (contactMary == null)
            {
                contactMary            = ObjectSpace.CreateObject <Contact>();
                contactMary.FirstName  = "Mary";
                contactMary.LastName   = "Tellitson";
                contactMary.Email      = "*****@*****.**";
                contactMary.Birthday   = new DateTime(1980, 11, 27);
                contactMary.Department = devDepartment;
                contactMary.Position   = managerPosition;
            }

            Contact contactJohn = ObjectSpace.FindObject <Contact>(CriteriaOperator.Parse("FirstName == 'John' && LastName == 'Nilsen'"));

            if (contactJohn == null)
            {
                contactJohn            = ObjectSpace.CreateObject <Contact>();
                contactJohn.FirstName  = "John";
                contactJohn.LastName   = "Nilsen";
                contactJohn.Email      = "*****@*****.**";
                contactJohn.Birthday   = new DateTime(1981, 10, 3);
                contactJohn.Department = devDepartment;
                contactJohn.Position   = developerPosition;
            }

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Review reports'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Review reports";
                task.AssignedTo    = contactJohn;
                task.StartDate     = DateTime.Parse("May 03, 2008");
                task.DueDate       = DateTime.Parse("September 06, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.InProgress;
                task.Priority      = Priority.High;
                task.EstimatedWork = 60;
                task.Description   = "Analyse the reports and assign new tasks to employees.";
            }

            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Fix breakfast'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Fix breakfast";
                task.AssignedTo    = contactMary;
                task.StartDate     = DateTime.Parse("May 03, 2008");
                task.DueDate       = DateTime.Parse("May 04, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority      = Priority.Low;
                task.EstimatedWork = 1;
                task.ActualWork    = 3;
                task.Description   = "The Development Department - by 9 a.m.\r\nThe R&QA Department - by 10 a.m.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task1'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Task1";
                task.AssignedTo    = contactJohn;
                task.StartDate     = DateTime.Parse("June 03, 2008");
                task.DueDate       = DateTime.Parse("June 06, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority      = Priority.High;
                task.EstimatedWork = 10;
                task.ActualWork    = 15;
                task.Description   = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
            if (ObjectSpace.FindObject <DemoTask>(CriteriaOperator.Parse("Subject == 'Task2'")) == null)
            {
                DemoTask task = ObjectSpace.CreateObject <DemoTask>();
                task.Subject       = "Task2";
                task.AssignedTo    = contactJohn;
                task.StartDate     = DateTime.Parse("July 03, 2008");
                task.DueDate       = DateTime.Parse("July 06, 2008");
                task.Status        = DevExpress.Persistent.Base.General.TaskStatus.Completed;
                task.Priority      = Priority.Low;
                task.EstimatedWork = 8;
                task.ActualWork    = 16;
                task.Description   = "A task designed specially to demonstrate the PivotChart module. Switch to the Reports navigation group to view the generated analysis.";
            }
            UpdateStatus("CreateAnalysis", "", "Creating analysis reports in the database...");
            CreateDataToBeAnalysed();
            UpdateStatus("CreateSecurityData", "", "Creating users and roles in the database...");
            #region Create a User for the Simple Security Strategy
            //// If a simple user named 'Sam' doesn't exist in the database, create this simple user
            //SecuritySimpleUser adminUser = ObjectSpace.FindObject<SecuritySimpleUser>(new BinaryOperator("UserName", "Sam"));
            //if(adminUser == null) {
            //    adminUser = ObjectSpace.CreateObject<SecuritySimpleUser>();
            //    adminUser.UserName = "******";
            //}
            //// Make the user an administrator
            //adminUser.IsAdministrator = true;
            //// Set a password if the standard authentication type is used
            //adminUser.SetPassword("");
            #endregion

            #region Create Users for the Complex Security Strategy
            // If a user named 'Sam' doesn't exist in the database, create this user
            SecuritySystemUser user1 = ObjectSpace.FindObject <SecuritySystemUser>(new BinaryOperator("UserName", "Sam"));
            if (user1 == null)
            {
                user1          = ObjectSpace.CreateObject <SecuritySystemUser>();
                user1.UserName = "******";
                // Set a password if the standard authentication type is used
                user1.SetPassword("");
            }
            // If a user named 'John' doesn't exist in the database, create this user
            SecuritySystemUser user2 = ObjectSpace.FindObject <SecuritySystemUser>(new BinaryOperator("UserName", "John"));
            if (user2 == null)
            {
                user2          = ObjectSpace.CreateObject <SecuritySystemUser>();
                user2.UserName = "******";
                // Set a password if the standard authentication type is used
                user2.SetPassword("");
            }
            // If a role with the Administrators name doesn't exist in the database, create this role
            SecuritySystemRole adminRole = ObjectSpace.FindObject <SecuritySystemRole>(new BinaryOperator("Name", "Administrators"));
            if (adminRole == null)
            {
                adminRole      = ObjectSpace.CreateObject <SecuritySystemRole>();
                adminRole.Name = "Administrators";
            }
            adminRole.IsAdministrative = true;

            // If a role with the Users name doesn't exist in the database, create this role
            SecuritySystemRole userRole = ObjectSpace.FindObject <SecuritySystemRole>(new BinaryOperator("Name", "Users"));
            if (userRole == null)
            {
                userRole      = ObjectSpace.CreateObject <SecuritySystemRole>();
                userRole.Name = "Users";
            }

            userRole.SetTypePermissionsRecursively <object>(SecurityOperations.FullAccess, SecuritySystemModifier.Allow);
            userRole.SetTypePermissionsRecursively <SecuritySystemUser>(SecurityOperations.FullAccess, SecuritySystemModifier.Deny);
            userRole.SetTypePermissionsRecursively <SecuritySystemRole>(SecurityOperations.FullAccess, SecuritySystemModifier.Deny);

            // Add the Administrators role to the user1
            user1.Roles.Add(adminRole);
            // Add the Users role to the user2
            user2.Roles.Add(userRole);
            user2.Roles.Add(defaultRole);
            #endregion

            ObjectSpace.CommitChanges();
        }