public static NavigationMenuEntity CopyNavigationEntityProperties(this NavigationMenuEntity destEntity, NavigationMenu srcEntity)
        {
            if (srcEntity == null)
            {
                return(null);
            }
            if (destEntity == null)
            {
                return(null);
            }

            destEntity.Id                 = srcEntity.Id;
            destEntity.Name               = srcEntity.Name;
            destEntity.DisplayName        = srcEntity.DisplayName;
            destEntity.AreaName           = srcEntity.AreaName;
            destEntity.ControllerName     = srcEntity.ControllerName;
            destEntity.ActionName         = srcEntity.ActionName;
            destEntity.RouteUrl           = srcEntity.RouteUrl;
            destEntity.ParentNavigationId = srcEntity.ParentNavigationId;
            destEntity.NavigationTypeId   = srcEntity.NavigationTypeId;
            destEntity.DisplayOrder       = srcEntity.DisplayOrder;
            destEntity.IsDisabled         = srcEntity.IsDisabled;
            destEntity.LastModifiedUserId = srcEntity.LastModifiedUserId;
            destEntity.InsertedOnUtc      = srcEntity.InsertedOnUtc;
            destEntity.LastModifiedUserId = srcEntity.LastModifiedUserId;

            foreach (var role in srcEntity.Roles)
            {
                destEntity.Roles.Add(new RoleNavigationMenuEntity {
                    RoleId       = role.RoleId,
                    NavigationId = role.NavigationId
                });
            }
            return(destEntity);
        }
        public static NavigationMenuEntity ToNavigationMenuEntity(this NavigationMenu model)
        {
            if (model == null)
            {
                return(null);
            }
            NavigationMenuEntity NavigationMenuEntity = new NavigationMenuEntity();

            return(NavigationMenuEntity.CopyNavigationEntityProperties(model));
        }
        public static NavigationMenu ToNavigationMenu(this NavigationMenuEntity entity)
        {
            if (entity == null)
            {
                return(null);
            }
            NavigationMenu navigation = new NavigationMenu();

            return(navigation.CopyNavigationMenuEntityProperties(entity));
        }
        protected void InitNavigationMenus(ApplicationDbContext context)
        {
            var MainMenuType   = "MainMenu";
            var navigationType = new string[3] {
                "GroupTitle",
                MainMenuType,
                "InternalMenu"
            };

            foreach (var type in navigationType)
            {
                if (context.NavigationTypes.Where(x => x.NavigationTypeName == type).FirstOrDefault() == null)
                {
                    context.Entry(new NavigationTypeEntity()
                    {
                        NavigationTypeName = type
                    }).State = EntityState.Added;
                }
            }
            context.SaveChanges();


            var navTypeEntity  = context.NavigationTypes.Where(x => x.NavigationTypeName == MainMenuType).FirstOrDefault();
            var superUserId    = context.Users.Where(x => x.UserName == _SuperUserEmail).FirstOrDefault().Id;
            var currentUtcDate = DateTime.UtcNow;

            var roleMenu = new RoleNavigationMenuEntity()
            {
                RoleId = context.Roles.Where(x => x.Name == SystemRole.SuperUser.ToString()).FirstOrDefault().Id
            };
            var menu = new NavigationMenuEntity();

            if (context.NavigationMenus.Where(x => x.Name == "Home").FirstOrDefault() == null)
            {
                menu                    = new NavigationMenuEntity();
                menu.Name               = "Home";
                menu.DisplayName        = "Home";
                menu.ControllerName     = "Home";
                menu.ActionName         = "Index";
                menu.DisplayOrder       = 2;
                menu.LastModifiedUserId = superUserId;
                menu.InsertedOnUtc      = currentUtcDate;
                menu.NavigationType     = navTypeEntity;

                context.Entry(menu).State = EntityState.Added;
                context.SaveChanges();

                roleMenu.NavigationId         = menu.Id;
                context.Entry(roleMenu).State = EntityState.Added;
                context.SaveChanges();
            }

            if (context.NavigationMenus.Where(x => x.Name == "NavigationMenu").FirstOrDefault() == null)
            {
                menu                      = new NavigationMenuEntity();
                menu.Name                 = "NavigationMenu";
                menu.DisplayName          = "Navigation Menu";
                menu.ControllerName       = "Navigation";
                menu.ActionName           = "Index";
                menu.DisplayOrder         = 2;
                menu.LastModifiedUserId   = superUserId;
                menu.InsertedOnUtc        = currentUtcDate;
                menu.NavigationType       = navTypeEntity;
                context.Entry(menu).State = EntityState.Added;
                context.SaveChanges();

                roleMenu.NavigationId         = menu.Id;
                context.Entry(roleMenu).State = EntityState.Added;
                context.SaveChanges();
            }

            if (context.NavigationMenus.Where(x => x.Name == "Users").FirstOrDefault() == null)
            {
                menu                      = new NavigationMenuEntity();
                menu.Name                 = "Users";
                menu.DisplayName          = "Users";
                menu.ControllerName       = "UserAdmin";
                menu.ActionName           = "Index";
                menu.DisplayOrder         = 3;
                menu.LastModifiedUserId   = superUserId;
                menu.InsertedOnUtc        = currentUtcDate;
                menu.NavigationType       = navTypeEntity;
                context.Entry(menu).State = EntityState.Added;
                context.SaveChanges();

                roleMenu.NavigationId         = menu.Id;
                context.Entry(roleMenu).State = EntityState.Added;
                context.SaveChanges();
            }
            if (context.NavigationMenus.Where(x => x.Name == "Roles").FirstOrDefault() == null)
            {
                menu                      = new NavigationMenuEntity();
                menu.Name                 = "Roles";
                menu.DisplayName          = "Roles";
                menu.ControllerName       = "RoleAdmin";
                menu.ActionName           = "Index";
                menu.DisplayOrder         = 4;
                menu.LastModifiedUserId   = superUserId;
                menu.InsertedOnUtc        = currentUtcDate;
                menu.NavigationType       = navTypeEntity;
                context.Entry(menu).State = EntityState.Added;
                context.SaveChanges();

                roleMenu.NavigationId         = menu.Id;
                context.Entry(roleMenu).State = EntityState.Added;
                context.SaveChanges();
            }
        }