public static void Install(IServiceProvider provider)
        {
            var unitOfWork     = provider.GetService <IUnitOfWork <EfDbContext> >();
            var repositoryUser = provider.GetService <IRepository <User> >();
            var repositoryRole = provider.GetService <IRepository <Role> >();
            var developerUser  = repositoryUser.Get(x => x.Username == "atif.dag");
            var developerRole  = repositoryRole.Get(x => x.Code == RoleConstants.Developer.Item1);
            var defaultRole    = repositoryRole.Get(x => x.Code == RoleConstants.Default.Item1);

            var listPermission         = new List <Permission>();
            var listRolePermissionLine = new List <RolePermissionLine>();

            var countDefaultUserPermissions   = DefaultUserPermissions.Count;
            var counterDefaultUserPermissions = 1;

            foreach (var item in DefaultUserPermissions)
            {
                item.Id                   = GuidHelper.NewGuid();
                item.CreationTime         = DateTime.Now;
                item.LastModificationTime = DateTime.Now;
                item.DisplayOrder         = counterDefaultUserPermissions;
                item.Version              = 1;
                item.IsApproved           = true;
                item.Creator              = developerUser;
                item.LastModifier         = developerUser;
                item.Code                 = item.ControllerName + item.ActionName;
                item.Name                 = item.ControllerName + " " + item.ActionName;
                listPermission.Add(item);

                var line = new RolePermissionLine
                {
                    Id                   = GuidHelper.NewGuid(),
                    Permission           = item,
                    Role                 = defaultRole,
                    Creator              = developerUser,
                    CreationTime         = DateTime.Now,
                    LastModifier         = developerUser,
                    LastModificationTime = DateTime.Now,
                    DisplayOrder         = counterDefaultUserPermissions,
                    Version              = 1
                };

                listRolePermissionLine.Add(line);
                Console.WriteLine(counterDefaultUserPermissions + @"/" + countDefaultUserPermissions + @" RolePermissionLine (" + defaultRole.Code + @" - " + item.Code + @")");
                counterDefaultUserPermissions++;
            }

            var developerPermissions        = new List <Permission>();
            var counterDeveloperControllers = 1;

            foreach (var controller in DeveloperControllers)
            {
                foreach (var action in Actions)
                {
                    developerPermissions.Add(new Permission
                    {
                        Id                   = GuidHelper.NewGuid(),
                        CreationTime         = DateTime.Now,
                        LastModificationTime = DateTime.Now,
                        DisplayOrder         = counterDeveloperControllers,
                        Version              = 1,
                        IsApproved           = true,
                        Creator              = developerUser,
                        LastModifier         = developerUser,
                        Code                 = controller + action,
                        Name                 = controller + " " + action,
                        ControllerName       = controller,
                        ActionName           = action,
                        Description          = string.Empty
                    });
                    counterDeveloperControllers++;
                }
            }

            var totalCountDeveloperPermissions = developerPermissions.Count;
            var counterDeveloperPermissions    = 1;

            foreach (var item in developerPermissions)
            {
                item.Id                   = GuidHelper.NewGuid();
                item.CreationTime         = DateTime.Now;
                item.LastModificationTime = DateTime.Now;
                item.DisplayOrder         = counterDeveloperPermissions;
                item.Version              = 1;
                item.IsApproved           = true;
                item.Creator              = developerUser;
                item.LastModifier         = developerUser;
                item.Code                 = item.ControllerName + item.ActionName;
                item.Name                 = item.ControllerName + " " + item.ActionName;

                listPermission.Add(item);

                var line = new RolePermissionLine
                {
                    Id                   = GuidHelper.NewGuid(),
                    Permission           = item,
                    Role                 = developerRole,
                    Creator              = developerUser,
                    CreationTime         = DateTime.Now,
                    LastModifier         = developerUser,
                    LastModificationTime = DateTime.Now,
                    DisplayOrder         = counterDeveloperPermissions,
                    Version              = 1
                };

                listRolePermissionLine.Add(line);

                Console.WriteLine(counterDeveloperPermissions + @"/" + totalCountDeveloperPermissions + @" RolePermissionLine (" + developerRole.Code + @" - " + item.Code + @")");

                counterDeveloperPermissions++;
            }


            var totalOtherPermissions   = OtherPermissions.Count;
            var counterOtherPermissions = 1;

            foreach (var line in OtherPermissions)
            {
                var itemRole = repositoryRole.Get(x => x.Code == line.Role.Code);

                var itemPermission = listPermission.FirstOrDefault(x => x.Code == line.Permission.ControllerName + line.Permission.ActionName);

                if (itemPermission == null)
                {
                    var newPermission = new Permission
                    {
                        Id                   = GuidHelper.NewGuid(),
                        Code                 = line.Permission.ControllerName + line.Permission.ActionName,
                        Name                 = line.Permission.ControllerName + " " + line.Permission.ActionName,
                        ControllerName       = line.Permission.ControllerName,
                        ActionName           = line.Permission.ActionName,
                        Creator              = developerUser,
                        IsApproved           = true,
                        LastModifier         = developerUser,
                        DisplayOrder         = counterOtherPermissions,
                        Description          = "",
                        CreationTime         = DateTime.Now,
                        LastModificationTime = DateTime.Now,
                        Version              = 1
                    };

                    listPermission.Add(newPermission);
                    itemPermission = newPermission;
                }

                var affectedRolePermissionLine = new RolePermissionLine
                {
                    Id                   = GuidHelper.NewGuid(),
                    Role                 = itemRole,
                    Permission           = itemPermission,
                    Creator              = developerUser,
                    LastModifier         = developerUser,
                    DisplayOrder         = counterOtherPermissions,
                    CreationTime         = DateTime.Now,
                    LastModificationTime = DateTime.Now,
                    Version              = 1
                };



                listRolePermissionLine.Add(affectedRolePermissionLine);

                Console.WriteLine(counterOtherPermissions + @"/" + totalOtherPermissions + @" RolePermissionLine (" + itemRole.Code + @" - " + itemPermission.Code + @")");

                counterOtherPermissions++;
            }

            unitOfWork.Context.AddRange(listPermission);
            unitOfWork.Context.AddRange(listRolePermissionLine);
            unitOfWork.Context.SaveChanges();

            Console.WriteLine(Messages.SuccessItemOk, Dictionary.Permission);
            Console.WriteLine(@"");
        }
        public static void Install(IServiceProvider provider)
        {
            var unitOfWork     = provider.GetService <IUnitOfWork <EfDbContext> >();
            var repositoryUser = provider.GetService <IRepository <User> >();
            var repositoryRole = provider.GetService <IRepository <Role> >();
            var user           = repositoryUser.Get(x => x.Username == "atif.dag");
            var developerRole  = repositoryRole.Get(x => x.Code == "DEVELOPER");
            var defaultRole    = repositoryRole.Get(x => x.Code == "DEFAULTROLE");


            var listPermission                = new List <Permission>();
            var listPermissionHistory         = new List <PermissionHistory>();
            var listRolePermissionLine        = new List <RolePermissionLine>();
            var listRolePermissionLineHistory = new List <RolePermissionLineHistory>();


            var defaultUserPermissions = new List <Permission>
            {
                new Permission {
                    ControllerName = "Authentication", ActionName = "MyProfile"
                },
                new Permission {
                    ControllerName = "Authentication", ActionName = "UpdateMyInformation"
                },
                new Permission {
                    ControllerName = "Authentication", ActionName = "UpdateMyPassword"
                }
            };

            var totalCountDefaultUser = defaultUserPermissions.Count;
            var counterDefaultUser    = 1;


            foreach (var item in defaultUserPermissions)
            {
                item.Id                   = GuidHelper.NewGuid();
                item.CreationTime         = DateTime.Now;
                item.LastModificationTime = DateTime.Now;
                item.DisplayOrder         = 1;
                item.Version              = 1;
                item.IsApproved           = true;
                item.Creator              = user;
                item.LastModifier         = user;
                item.Code                 = item.ControllerName + item.ActionName;
                item.Name                 = item.ControllerName + " " + item.ActionName;
                listPermission.Add(item);

                var itemHistory = item.CreateMapped <Permission, PermissionHistory>();
                itemHistory.Id             = GuidHelper.NewGuid();
                itemHistory.ReferenceId    = item.Id;
                itemHistory.CreatorId      = item.Creator.Id;
                itemHistory.IsDeleted      = false;
                itemHistory.RestoreVersion = 0;

                listPermissionHistory.Add(itemHistory);

                var line = new RolePermissionLine
                {
                    Id                   = GuidHelper.NewGuid(),
                    Permission           = item,
                    Role                 = defaultRole,
                    Creator              = user,
                    CreationTime         = DateTime.Now,
                    LastModifier         = user,
                    LastModificationTime = DateTime.Now,
                    DisplayOrder         = 1,
                    Version              = 1,
                };

                listRolePermissionLine.Add(line);
                var lineHistory = line.CreateMapped <RolePermissionLine, RolePermissionLineHistory>();
                lineHistory.Id             = GuidHelper.NewGuid();
                lineHistory.ReferenceId    = line.Id;
                lineHistory.CreatorId      = line.Creator.Id;
                lineHistory.RestoreVersion = 0;
                listRolePermissionLineHistory.Add(lineHistory);
                Console.WriteLine(counterDefaultUser + @"/" + totalCountDefaultUser + @" RolePermissionLine (" + defaultRole.Code + @" - " + item.Code + @")");
                counterDefaultUser++;
            }

            var developerPermissions = new List <Permission>();

            var actions = new List <string>
            {
                "List",
                "Filter",
                "Detail",
                "Add",
                "Update",
                "Delete",
                "KeysAndValues",
            };

            var developerControllers = new List <string>
            {
                "Category",
                "Content",
                "Language",
                "Menu",
                "Parameter",
                "ParameterGroup",
                "Part",
                "Permission",
                "Person",
                "Role",
                "User"
            };
            var displayOrder = 1;

            foreach (var controller in developerControllers)
            {
                foreach (var action in actions)
                {
                    developerPermissions.Add(new Permission
                    {
                        Id                   = GuidHelper.NewGuid(),
                        CreationTime         = DateTime.Now,
                        LastModificationTime = DateTime.Now,
                        DisplayOrder         = displayOrder,
                        Version              = 1,
                        IsApproved           = true,
                        Creator              = user,
                        LastModifier         = user,
                        Code                 = controller + action,
                        Name                 = controller + " " + action,
                        ControllerName       = controller,
                        ActionName           = action,
                        Description          = string.Empty
                    });
                    displayOrder++;
                }
            }


            var totalCountDeveloper = developerPermissions.Count;
            var counterDeveloper    = 1;

            foreach (var item in developerPermissions)
            {
                item.Id                   = GuidHelper.NewGuid();
                item.CreationTime         = DateTime.Now;
                item.LastModificationTime = DateTime.Now;
                item.DisplayOrder         = counterDeveloper;
                item.Version              = 1;
                item.IsApproved           = true;
                item.Creator              = user;
                item.LastModifier         = user;
                item.Code                 = item.ControllerName + item.ActionName;
                item.Name                 = item.ControllerName + " " + item.ActionName;

                var itemHistory = item.CreateMapped <Permission, PermissionHistory>();
                itemHistory.Id             = GuidHelper.NewGuid();
                itemHistory.ReferenceId    = item.Id;
                itemHistory.CreatorId      = item.Creator.Id;
                itemHistory.IsDeleted      = false;
                itemHistory.RestoreVersion = 0;
                listPermission.Add(item);
                listPermissionHistory.Add(itemHistory);

                var line = new RolePermissionLine
                {
                    Id                   = GuidHelper.NewGuid(),
                    Permission           = item,
                    Role                 = developerRole,
                    Creator              = user,
                    CreationTime         = DateTime.Now,
                    LastModifier         = user,
                    LastModificationTime = DateTime.Now,
                    DisplayOrder         = 1,
                    Version              = 1,
                };

                listRolePermissionLine.Add(line);
                var lineHistory = line.CreateMapped <RolePermissionLine, RolePermissionLineHistory>();
                lineHistory.Id             = GuidHelper.NewGuid();
                lineHistory.RoleId         = line.Role.Id;
                lineHistory.PermissionId   = line.Permission.Id;
                lineHistory.ReferenceId    = line.Id;
                lineHistory.CreatorId      = line.Creator.Id;
                lineHistory.RestoreVersion = 0;
                listRolePermissionLineHistory.Add(lineHistory);

                Console.WriteLine(counterDeveloper + @"/" + totalCountDeveloper + @" RolePermissionLine (" + developerRole.Code + @" - " + item.Code + @")");

                counterDeveloper++;
            }


            var otherPermissions = new List <RolePermissionLine>
            {
                new RolePermissionLine {
                    Role = new Role {
                        Code = "DEVELOPER"
                    }, Permission = new Permission {
                        ControllerName = "Cache", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "DEVELOPER"
                    }, Permission = new Permission {
                        ControllerName = "Cache", ActionName = "Delete"
                    }
                },

                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Role", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "Add"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "Delete"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "User", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Language", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Add"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Delete"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Add"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Delete"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "KeysAndValues"
                    }
                },

                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "MANAGER"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "KeysAndValues"
                    }
                },

                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Language", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Add"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "Delete"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Add"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "Delete"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "List"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "Filter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "Detail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "Update"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "EDITOR"
                    }, Permission = new Permission {
                        ControllerName = "Part", ActionName = "KeysAndValues"
                    }
                },

                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Language", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Category", ActionName = "KeysAndValues"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentList"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentFilter"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentDetail"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentAdd"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentUpdate"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentDelete"
                    }
                },
                new RolePermissionLine {
                    Role = new Role {
                        Code = "AUTHOR"
                    }, Permission = new Permission {
                        ControllerName = "Content", ActionName = "MyContentKeysAndValues"
                    }
                },
            };


            var totalOtherPermissions   = otherPermissions.Count;
            var counterOtherPermissions = 1;

            foreach (var line in otherPermissions)
            {
                var itemRole = repositoryRole.Get(x => x.Code == line.Role.Code);

                var itemPermission = listPermission.FirstOrDefault(x => x.Code == line.Permission.ControllerName + line.Permission.ActionName);

                if (itemPermission == null)
                {
                    var newPermission = new Permission
                    {
                        Id                   = GuidHelper.NewGuid(),
                        Code                 = line.Permission.ControllerName + line.Permission.ActionName,
                        Name                 = line.Permission.ControllerName + " " + line.Permission.ActionName,
                        ControllerName       = line.Permission.ControllerName,
                        ActionName           = line.Permission.ActionName,
                        Creator              = user,
                        IsApproved           = true,
                        LastModifier         = user,
                        DisplayOrder         = counterOtherPermissions,
                        Description          = "",
                        CreationTime         = DateTime.Now,
                        LastModificationTime = DateTime.Now,
                        Version              = 1
                    };

                    listPermission.Add(newPermission);
                    itemPermission = newPermission;
                }

                var itemPermissionHistory = itemPermission.CreateMapped <Permission, PermissionHistory>();
                itemPermissionHistory.Id             = GuidHelper.NewGuid();
                itemPermissionHistory.ReferenceId    = itemPermission.Id;
                itemPermissionHistory.CreationTime   = DateTime.Now;
                itemPermissionHistory.CreatorId      = user.Id;
                itemPermissionHistory.IsDeleted      = false;
                itemPermissionHistory.RestoreVersion = 0;
                listPermissionHistory.Add(itemPermissionHistory);

                var affectedRolePermissionLine = new RolePermissionLine
                {
                    Id                   = GuidHelper.NewGuid(),
                    Role                 = itemRole,
                    Permission           = itemPermission,
                    Creator              = user,
                    LastModifier         = user,
                    DisplayOrder         = counterOtherPermissions,
                    CreationTime         = DateTime.Now,
                    LastModificationTime = DateTime.Now,
                    Version              = 1
                };



                listRolePermissionLine.Add(affectedRolePermissionLine);

                var affectedRolePermissionLineHistory = affectedRolePermissionLine.CreateMapped <RolePermissionLine, RolePermissionLineHistory>();
                affectedRolePermissionLineHistory.Id             = GuidHelper.NewGuid();
                affectedRolePermissionLineHistory.PermissionId   = affectedRolePermissionLine.Permission.Id;
                affectedRolePermissionLineHistory.RoleId         = affectedRolePermissionLine.Role.Id;
                affectedRolePermissionLineHistory.CreationTime   = DateTime.Now;
                affectedRolePermissionLineHistory.CreatorId      = user.Id;
                affectedRolePermissionLineHistory.ReferenceId    = affectedRolePermissionLine.Id;
                affectedRolePermissionLineHistory.RestoreVersion = 0;

                listRolePermissionLineHistory.Add(affectedRolePermissionLineHistory);
                Console.WriteLine(counterOtherPermissions + @"/" + totalOtherPermissions + @" RolePermissionLine (" + itemRole.Code + @" - " + itemPermission.Code + @")");

                counterOtherPermissions++;
            }

            unitOfWork.Context.AddRange(listPermission);
            unitOfWork.Context.AddRange(listPermissionHistory);
            unitOfWork.Context.AddRange(listRolePermissionLine);
            unitOfWork.Context.AddRange(listRolePermissionLineHistory);
            unitOfWork.Context.SaveChanges();
        }