forked from eXpandFramework/eXpand
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Updater.cs
53 lines (44 loc) · 2.27 KB
/
Updater.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using DevExpress.Data.Filtering;
using DevExpress.ExpressApp;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.Base.Security;
using DevExpress.Persistent.BaseImpl;
using FeatureCenter.Base;
using Xpand.ExpressApp.FilterDataStore.Providers;
namespace FeatureCenter.Module {
public class Updater : Xpand.Persistent.BaseImpl.Updater {
protected bool initializeSecurity;
public Updater(IObjectSpace objectSpace, Version currentDBVersion)
: base(objectSpace, currentDBVersion) {
}
public override IUserWithRoles EnsureUserExists(string userName, string firstName, ICustomizableRole customizableRole) {
var ensureUserExists = base.EnsureUserExists(userName, firstName, customizableRole);
if (ensureUserExists.UserName == Admin) {
((User)ensureUserExists).SetPassword("Admin");
ObjectSpace.CommitChanges();
UserFilterProvider.UpdaterUserKey = ((User)ensureUserExists).Oid;
}
return ensureUserExists;
}
public override void UpdateDatabaseAfterUpdateSchema() {
base.UpdateDatabaseAfterUpdateSchema();
InitializeSecurity();
var workflowServiceUser = ObjectSpace.FindObject<User>(new BinaryOperator("UserName", "WorkflowService"));
if (workflowServiceUser == null) {
workflowServiceUser = ObjectSpace.CreateObject<User>();
workflowServiceUser.UserName = "WorkflowService";
workflowServiceUser.FirstName = "WorkflowService";
var role = ObjectSpace.FindObject<Role>(CriteriaOperator.Parse("Name=?", Administrators));
workflowServiceUser.Roles.Add(role);
ObjectSpace.CommitChanges();
new DummyDataBuilder((ObjectSpace)ObjectSpace).CreateObjects();
var updaters = ReflectionHelper.FindTypeDescendants(XafTypesInfo.CastTypeToTypeInfo(typeof(FCUpdater)));
foreach (var findTypeDescendant in updaters) {
var updater = (FCUpdater)Activator.CreateInstance(findTypeDescendant.Type, ObjectSpace, CurrentDBVersion, this);
updater.UpdateDatabaseAfterUpdateSchema();
}
}
}
}
}