Esempio n. 1
0
        public void CreateNewExecersise(DabDBContext db)
        {
            ExerciseEntity exercise = new ExerciseEntity();

            Console.WriteLine("Write Nr of the exercise:");
            exercise.Number = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Write name of lecture");
            exercise.Lecture = Console.ReadLine();
            db.Add(exercise);
        }
Esempio n. 2
0
        public async Task <IActionResult> CreateExercisesAsync(
            [HttpTrigger(AuthorizationLevel.Function, HttpVerbs.Post, Route = "routines/{routineId}/exercises")] HttpRequest req,
            Guid routineId,
            ExecutionContext context,
            ILogger log)
        {
            var request = await req.ToRequestMessageAsync <ExerciseRequestMessage>().ConfigureAwait(false);

            var eventId       = context.InvocationId;
            var spanId        = request.SpanId;
            var correlationId = request.CorrelationId;
            var upn           = request.Upn;
            var @interface    = request.Interface;

            log.LogData(LogLevel.Information, request,
                        EventType.ExerciseReceived, EventStatusType.Succeeded, eventId,
                        SpanType.Publisher, SpanStatusType.PublisherInProgress, spanId,
                        @interface, correlationId);

            if (routineId != request.RoutineId)
            {
                log.LogData(LogLevel.Error, request,
                            EventType.InvalidRoutine, EventStatusType.Failed, eventId,
                            SpanType.Publisher, SpanStatusType.PublisherInProgress, spanId,
                            @interface, correlationId,
                            message: EventType.InvalidRoutine.ToDisplayName());

                return(new BadRequestResult());
            }

            var exerciseId = Guid.NewGuid();
            var entity     = new ExerciseEntity()
            {
                PartitionKey    = correlationId.ToString(),
                RowKey          = eventId.ToString(),
                Upn             = upn,
                CorrelationId   = correlationId,
                SpanId          = spanId,
                Interface       = @interface,
                EventId         = eventId,
                EventName       = EventType.ExerciseCreated.ToDisplayName(),
                RoutineId       = request.RoutineId,
                Routine         = request.Routine,
                Target          = request.Target,
                ExerciseId      = exerciseId,
                Exercise        = request.Exercise,
                Sets            = request.Sets.ToJson(),
                AdditionalNotes = request.AdditionalNotes,
            };

            var res = default(ObjectResult);

            try
            {
                if (this._settings.ForceError.Publisher.Exercise)
                {
                    throw new ErrorEnforcementException("Error Enforced!");
                }

                await this._client.CreateTableIfNotExistsAsync(this._settings.GymLog.StorageAccount.Table.TableName).ConfigureAwait(false);

                var table    = this._client.GetTableClient(this._settings.GymLog.StorageAccount.Table.TableName);
                var response = await table.UpsertEntityAsync(entity).ConfigureAwait(false);

                res = response.ToExerciseResponseMessage(request, entity.EventId, entity.ExerciseId);

                log.LogData(response.Status.ToLogLevel(), res.Value,
                            response.Status.ToExerciseEventType(), response.Status.ToEventStatusType(), eventId,
                            SpanType.Publisher, SpanStatusType.PublisherInProgress, spanId,
                            @interface, correlationId,
                            clientRequestId: response.ClientRequestId,
                            message: response.Status.ToResponseMessage(res));
            }
            catch (Exception ex)
            {
                res = new InternalServerErrorObjectResult()
                {
                    Upn           = upn,
                    CorrelationId = correlationId,
                    Interface     = @interface,
                    SpanId        = spanId,
                    EventId       = eventId,
                    Message       = ex.Message,
                };

                log.LogData(LogLevel.Error, res.Value,
                            EventType.ExerciseNotCreated, EventStatusType.Failed, eventId,
                            SpanType.Publisher, SpanStatusType.PublisherInProgress, spanId,
                            @interface, correlationId,
                            ex: ex,
                            message: ex.Message);
            }

            return(res);
        }
Esempio n. 3
0
        public void InsertDummyData()
        {
            using var db = new DabDBContext();

            TeacherEntity teacher1 = new TeacherEntity();

            teacher1.Name = "Henrik Kirk";
            db.Add(teacher1);

            TeacherEntity teacher2 = new TeacherEntity();

            teacher2.Name = "S�ren";
            db.Add(teacher2);

            TeacherEntity teacher3 = new TeacherEntity();

            teacher3.Name = "Michael";
            db.Add(teacher3);

            TeacherEntity teacher4 = new TeacherEntity();

            teacher4.Name = "Lars";
            db.Add(teacher4);

            StudentEntity student1 = new StudentEntity();

            student1.Name = "Sebastian";
            db.Add(student1);

            StudentEntity student2 = new StudentEntity();

            student2.Name = "Tobias";
            db.Add(student2);

            StudentEntity student0 = new StudentEntity();

            student0.Name = "Gustav";
            db.Add(student0);

            AssignmentEntity assignment1 = new AssignmentEntity();

            assignment1.Teacher = teacher2;
            db.Add(assignment1);
            AssignmentEntity assignment2 = new AssignmentEntity();

            assignment2.Teacher = teacher2;
            db.Add(assignment2);
            AssignmentEntity assignment3 = new AssignmentEntity();

            assignment3.Teacher = teacher3;
            db.Add(assignment3);


            CourseEntity course = new CourseEntity()
            {
                Name        = "Databaser",
                Assignments = new List <AssignmentEntity>
                {
                    new AssignmentEntity
                    {
                        Teacher = teacher1
                    },
                    assignment1,
                    assignment2
                },
                Teachers = new List <TeacherEntity>()
                {
                    teacher1,
                    teacher2
                }
            };
            CourseEntity course3 = new CourseEntity()
            {
                Name        = "MMLS",
                Assignments = new List <AssignmentEntity>
                {
                    new AssignmentEntity
                    {
                        Teacher = teacher3
                    }
                },
                Teachers = new List <TeacherEntity>()
                {
                    teacher4
                }
            };

            db.Add(course3);
            CourseEntity course2 = new CourseEntity()
            {
                Name        = "SWD",
                Assignments = new List <AssignmentEntity>
                {
                    new AssignmentEntity
                    {
                        Teacher = teacher1
                    },
                    assignment3
                },
                Teachers = new List <TeacherEntity>()
                {
                    teacher3
                }
            };

            db.Add(course2);

            ExerciseEntity exercise1 = new ExerciseEntity();

            exercise1.Number    = 2;
            exercise1.Lecture   = "3 EF core";
            exercise1.Teacher   = teacher1;
            exercise1.Student   = student1;
            exercise1.HelpWhere = "Ex 3.1";
            exercise1.Course    = course;
            db.Add(exercise1);

            ExerciseEntity exercise2 = new ExerciseEntity();

            exercise2.Number    = 5;
            exercise2.Lecture   = "5 EF core";
            exercise2.Teacher   = teacher1;
            exercise2.Student   = student1;
            exercise2.HelpWhere = "Side 2";
            exercise2.Course    = course;
            db.Add(exercise2);


            ExerciseEntity exercise3 = new ExerciseEntity();

            exercise3.Number    = 1;
            exercise3.Lecture   = "Design patterns";
            exercise3.Teacher   = teacher3;
            exercise3.Student   = student0;
            exercise3.HelpWhere = "Det hele";
            exercise3.Course    = course2;
            db.Add(exercise3);

            ExerciseEntity exercise4 = new ExerciseEntity();

            exercise4.Number  = 4;
            exercise4.Lecture = "Functional Programming";
            exercise4.Teacher = teacher1;
            exercise4.Student = student0;
            exercise4.Course  = course2;
            db.Add(exercise4);

            ExerciseEntity exercise5 = new ExerciseEntity();

            exercise5.Number  = 5;
            exercise5.Lecture = "Some math";
            exercise5.Teacher = teacher4;
            exercise5.Student = student2;
            exercise5.Course  = course3;
            db.Add(exercise5);

            StudentCourseEntity joinedStudCourse = new StudentCourseEntity()
            {
                Students = student0,
                Courses  = course,
            };

            db.Add(joinedStudCourse);
            joinedStudCourse = new StudentCourseEntity()
            {
                Students = student1,
                Courses  = course,
            };
            db.Add(joinedStudCourse);
            joinedStudCourse = new StudentCourseEntity()
            {
                Students = student2,
                Courses  = course,
            };
            var testAss = new AssignmentStudentEntity()
            {
                Students    = student0,
                Assignments = assignment1,
            };

            db.Add(joinedStudCourse);

            db.SaveChanges();
        }
Esempio n. 4
0
        public Logger(IDataService dataService, GameProvider provider, NavalBase navalBase, IStatePersist statePersist)
        {
            this.dataService  = dataService;
            this.navalBase    = navalBase;
            this.statePersist = statePersist;

            provider.EquipmentCreated += (t, m) =>
            {
                using var context = CreateContext();
                context.EquipmentCreationTable.AddRange(m.Equipment.Select((e, i) => new EquipmentCreationEntity
                {
                    TimeStamp        = t.AddMilliseconds(i),
                    Consumption      = m.Consumption,
                    EquipmentCreated = e?.EquipmentInfoId,
                    IsSuccess        = e is object,
                    AdmiralLevel     = this.navalBase.Admiral.Leveling.Level,
                    Secretary        = this.navalBase.Secretary.Info.Id,
                    SecretaryLevel   = this.navalBase.Secretary.Leveling.Level
                }));
                context.SaveChanges();
            };

            provider.ShipCreated += (t, m) =>
            {
                shipCreation = new ShipCreationEntity
                {
                    TimeStamp      = t,
                    Consumption    = m.Consumption,
                    IsLSC          = m.IsLSC,
                    AdmiralLevel   = this.navalBase.Admiral.Leveling.Level,
                    Secretary      = this.navalBase.Secretary.Info.Id,
                    SecretaryLevel = this.navalBase.Secretary.Leveling.Level
                };
                lastBuildingDock = m.BuildingDockId;
            };

            provider.BuildingDockUpdated += (t, m) =>
            {
                if (shipCreation != null)
                {
                    using var context           = CreateContext();
                    shipCreation.ShipBuilt      = m.Single(x => x.Id == lastBuildingDock).BuiltShipId.Value;
                    shipCreation.EmptyDockCount = this.navalBase.BuildingDocks.Count(x => x.State == BuildingDockState.Empty);
                    context.ShipCreationTable.Add(shipCreation);
                    shipCreation     = null;
                    lastBuildingDock = default;
                    context.SaveChanges();
                }
            };

            provider.ExpeditionCompleted += (t, m) =>
            {
                using var context = CreateContext();
                var fleet = this.navalBase.Fleets[m.FleetId];
                context.ExpeditionCompletionTable.Add(new ExpeditionCompletionEntity
                {
                    TimeStamp         = t,
                    ExpeditionId      = fleet.Expedition.Id,
                    ExpeditionName    = m.ExpeditionName,
                    Result            = m.Result,
                    MaterialsAcquired = m.MaterialsAcquired,
                    RewardItem1       = m.RewardItem1,
                    RewardItem2       = m.RewardItem2
                });
                context.SaveChanges();
                foreach (var ship in fleet.HomeportShips)
                {
                    this.statePersist.ClearLastSortie(ship.Id);
                }
                this.statePersist.SaveChanges();
            };

#if DEBUG
            InitializeAdmiral(null);
#endif

            navalBase.AdmiralChanging += (t, _, a) =>
            {
                if (a != null)
                {
                    lock (admiralLock)
                        InitializeAdmiral(a);
                }
            };

            navalBase.MaterialsUpdating += (t, old, @new, reason) =>
            {
                using var context = CreateContext();
                context.MaterialsChangeTable.Add(new MaterialsChangeEntity
                {
                    TimeStamp = t,
                    Materials = @new,
                    Reason    = reason
                });
                context.SaveChanges();
            };

            navalBase.HomeportUpdated += (t, n) =>
            {
                if (this.statePersist.LastSortieTime is DateTimeOffset last)
                {
                    currentBattleContext ??= CreateContext();

                    var consumption = this.navalBase.Fleets[this.statePersist.LastSortieFleets].Sum(f => f.RepairingCost + f.SupplyingCost);
                    var diff        = consumption - this.statePersist.ConsumptionBeforeSortie;
                    var entity      = currentBattleContext.BattleConsumptionTable.Find(last);
                    if (diff != default && entity != null)
                    {
                        entity.Consumption = diff;
                        currentBattleContext.BattleConsumptionTable.Update(entity);
                        currentBattleContext.SaveChanges();
                    }
                }

                currentBattle   = null;
                currentExercise = null;
                currentBattleContext?.Dispose();
                currentFleetInBattle  = null;
                currentFleet2InBattle = null;

                this.statePersist.LastSortieFleets = null;
                this.statePersist.LastSortieTime   = null;
                this.statePersist.SaveChanges();
            };

            navalBase.ShipSupplying += (t, s, raw) =>
            {
                if (this.statePersist.GetLastSortie(s.Id) is DateTimeOffset last)
                {
                    using var context = CreateContext();
                    var entity = context.BattleConsumptionTable.Find(last);
                    if (entity is null)
                    {
                        return;
                    }

                    int  fuel        = raw.CurrentFuel - s.Fuel.Current;
                    int  bullet      = raw.CurrentBullet - s.Bullet.Current;
                    bool isMarriaged = s.Leveling.Level >= 100;
                    entity.ActualConsumption += new Materials
                    {
                        Fuel    = isMarriaged ? (int)(fuel * 0.85) : fuel,
                        Bullet  = isMarriaged ? (int)(bullet * 0.85) : bullet,
                        Bauxite = (raw.SlotAircraft.Sum() - s.Slots.Sum(x => x.Aircraft.Current)) * 5
                    };
                    context.BattleConsumptionTable.Update(entity);
                    context.SaveChanges();
                }
            };

            navalBase.ShipRepairing += (t, s, i) =>
            {
                if (this.statePersist.GetLastSortie(s.Id) is DateTimeOffset last)
                {
                    using var context = CreateContext();
                    var entity = context.BattleConsumptionTable.Find(last);
                    if (entity is null)
                    {
                        return;
                    }

                    entity.ActualConsumption += s.RepairingCost;
                    if (i)
                    {
                        entity.ActualConsumption += new Materials
                        {
                            InstantRepair = 1
                        }
                    }
                    ;
                    context.BattleConsumptionTable.Update(entity);
                    context.SaveChanges();
                }
            };
            navalBase.RepairingDockInstant += (t, d, s) =>
            {
                if (this.statePersist.GetLastSortie(s.Id) is DateTimeOffset last)
                {
                    using var context = CreateContext();
                    var entity = context.BattleConsumptionTable.Find(last);
                    if (entity is null)
                    {
                        return;
                    }


                    entity.ActualConsumption += new Materials
                    {
                        InstantRepair = 1
                    };
                    context.BattleConsumptionTable.Update(entity);
                    context.SaveChanges();
                }
            };

            provider.SortieStarting += (t, m) =>
            {
                FleetId[] fleets;
                currentFleetInBattle = this.navalBase.Fleets[m.FleetId];
                currentCombinedFleet = this.navalBase.CombinedFleet;
                if (currentCombinedFleet != CombinedFleetType.None)
                {
                    currentFleet2InBattle = this.navalBase.Fleets[(FleetId)2];
                    fleets = new[] { (FleetId)1, (FleetId)2 };
                }
                else
                {
                    fleets = new[] { m.FleetId };
                }
                currentBattleContext = CreateContext();
                currentBattleContext.BattleConsumptionTable.Add(new BattleConsumptionEntity
                {
                    TimeStamp = t,
                    MapId     = m.MapId
                });
                currentBattleContext.SaveChanges();

                this.statePersist.ConsumptionBeforeSortie =
                    currentFleetInBattle.RepairingCost +
                    currentFleetInBattle.SupplyingCost +
                    (currentFleet2InBattle?.RepairingCost ?? default) +
                    (currentFleet2InBattle?.SupplyingCost ?? default);
                this.statePersist.LastSortieTime   = t;
                this.statePersist.LastSortieFleets = fleets;
                foreach (var ship in currentFleetInBattle.HomeportShips)
                {
                    this.statePersist.SetLastSortie(ship.Id, t);
                }
                if (currentFleet2InBattle != null)
                {
                    foreach (var ship in currentFleet2InBattle.HomeportShips)
                    {
                        this.statePersist.SetLastSortie(ship.Id, t);
                    }
                }
                this.statePersist.SaveChanges();
            };

            provider.MapRouting += (t, m) =>
            {
                var map = this.navalBase.Maps[m.MapId];
                currentBattle = new BattleEntity
                {
                    TimeStamp         = t,
                    CompletionTime    = t,
                    MapId             = m.MapId,
                    MapName           = map.Info.Name.Origin,
                    RouteId           = m.RouteId,
                    EventKind         = m.EventKind,
                    BattleKind        = m.BattleKind,
                    CombinedFleetType = this.navalBase.CombinedFleet,
                    MapRank           = map.Rank,
                    MapGaugeType      = map.GaugeType,
                    MapGaugeNumber    = map.GaugeIndex,
                    MapGaugeHP        = map.Gauge?.Current,
                    MapGaugeMaxHP     = map.Gauge?.Max
                };
                if (m.UnparsedLandBaseDefence != null)
                {
                    currentBattle.LandBaseDefence = m.UnparsedLandBaseDefence.ToString(Formatting.None);
                }

                Materials acquired = default;
                foreach (var r in m.ItemAcquired)
                {
                    switch ((KnownUseItem)r.ItemId)
                    {
                    case KnownUseItem.Fuel:
                        acquired.Fuel += r.Count;
                        break;

                    case KnownUseItem.Bullet:
                        acquired.Bullet += r.Count;
                        break;

                    case KnownUseItem.Steel:
                        acquired.Steel += r.Count;
                        break;

                    case KnownUseItem.Bauxite:
                        acquired.Bauxite += r.Count;
                        break;

                    case KnownUseItem.InstantBuild:
                        acquired.InstantBuild += r.Count;
                        break;

                    case KnownUseItem.InstantRepair:
                        acquired.InstantRepair += r.Count;
                        break;

                    case KnownUseItem.Development:
                        acquired.Development += r.Count;
                        break;

                    case KnownUseItem.Improvement:
                        acquired.Improvement += r.Count;
                        break;
                    }
                }
                if (acquired != default)
                {
                    var entity = currentBattleContext.BattleConsumptionTable.Find(this.statePersist.LastSortieTime);
                    if (entity != null)
                    {
                        entity.Acquired += acquired;
                        currentBattleContext.BattleConsumptionTable.Update(entity);
                    }
                }

                currentBattleContext.BattleTable.Add(currentBattle);
                currentBattleContext.SaveChanges();
            };

            provider.ExerciseCandidateSelected += (t, m) =>
            {
                currentExercise = new ExerciseEntity
                {
                    TimeStamp  = t,
                    EnemyId    = m.AdmiralId,
                    EnemyName  = m.Name,
                    EnemyLevel = m.Leveling.Level
                };
            };

            provider.ExerciseStarted += (t, m) =>
            {
                currentFleetInBattle = this.navalBase.Fleets[m];
                currentBattleContext = CreateContext();
            };

            provider.BattleStarted += (t, m) =>
            {
                if (currentBattle != null)
                {
                    currentBattle.CompletionTime    = t;
                    currentBattle.SortieFleetState  = currentFleetInBattle.Ships.Select(x => new ShipInBattleEntity(x)).ToArray();
                    currentBattle.SortieFleet2State = currentFleet2InBattle?.Ships.Select(x => new ShipInBattleEntity(x)).ToArray();
                    currentBattle.FirstBattleDetail = m.Unparsed.ToString(Formatting.None);
                    currentBattle.LbasState         = m.Parsed.LandBasePhases
                                                      .Select(x => new AirForceInBattle(this.navalBase.AirForce[(currentBattle.MapId.AreaId, x.GroupId)]))
                                                      .ToArray();
                }
Esempio n. 5
0
        public static void Run(PlayerContext context)
        {
            // Permissions
            var systemAdminPermission   = context.Permissions.Where(x => x.Key == "SystemAdmin").FirstOrDefault();
            var exerciseAdminPermission = context.Permissions.Where(x => x.Key == "ExerciseAdmin").FirstOrDefault();
            var ostAdminPermission      = new PermissionEntity {
                Id = Guid.NewGuid(), Key = "OsTicketAdmin", Description = "Admin in OsTicket"
            };
            var ostAgentPermission = new PermissionEntity {
                Id = Guid.NewGuid(), Key = "OsTicketAgent", Description = "Agent in OsTicket"
            };
            var viewAllVmsPermission = new PermissionEntity {
                Id = Guid.NewGuid(), Key = "ViewAllMachines", Description = "View all Virtual Machines"
            };

            context.Permissions.Add(ostAdminPermission);
            context.Permissions.Add(ostAgentPermission);
            context.Permissions.Add(viewAllVmsPermission);

            // Roles
            var superUserRole = new RoleEntity {
                Id = Guid.Parse("f16d7689-4c22-498f-b975-021348b19120"), Name = "Super User"
            };

            superUserRole.Permissions.Add(new RolePermissionEntity {
                Id = Guid.NewGuid(), Permission = systemAdminPermission
            });

            var exerciseAdminRole = new RoleEntity {
                Id = Guid.Parse("b8f2c55b-f47d-4ec9-8fce-606753c4af72"), Name = "Exercise Administrator"
            };

            exerciseAdminRole.Permissions.Add(new RolePermissionEntity {
                Id = Guid.NewGuid(), Permission = exerciseAdminPermission
            });
            exerciseAdminRole.Permissions.Add(new RolePermissionEntity {
                Id = Guid.NewGuid(), Permission = ostAdminPermission
            });
            exerciseAdminRole.Permissions.Add(new RolePermissionEntity {
                Id = Guid.NewGuid(), Permission = ostAgentPermission
            });
            exerciseAdminRole.Permissions.Add(new RolePermissionEntity {
                Id = Guid.NewGuid(), Permission = viewAllVmsPermission
            });

            context.Roles.Add(superUserRole);
            context.Roles.Add(exerciseAdminRole);

            // sketch users
            var uEnder = new UserEntity {
                Id = Guid.Parse("3269cb19-1d39-40d3-a55e-e3e9779b6e0b"), Name = "Ender"
            };
            var uBean = new UserEntity {
                Id = Guid.Parse("ac4d3e32-c2d6-4f99-9aef-0fcd62a568a6"), Name = "Bean"
            };
            var uGraff = new UserEntity {
                Id = Guid.Parse("b7977ce5-0a17-45e1-aa2e-55c57bfffeb6"), Name = "Graff"
            };
            var uBonzo = new UserEntity {
                Id = Guid.Parse("1db2856b-7a3c-4b82-95d4-e41fb18de516"), Name = "Bonzo"
            };
            var uBob = new UserEntity {
                Id = Guid.Parse("9149f2ec-2e55-44f6-b92d-988ede6ca1f9"), Name = "Bob"
            };
            var uAdministrator = new UserEntity {
                Id = Guid.Parse("9fd3c38e-58b0-4af1-80d1-1895af91f1f9"), Name = "admin user", Role = superUserRole
            };

            context.Users.Add(uEnder);
            context.Users.Add(uBean);
            context.Users.Add(uGraff);
            context.Users.Add(uBonzo);
            context.Users.Add(uBob);
            context.Users.Add(uAdministrator);

            // exercise 1
            var exercise1 = new ExerciseEntity
            {
                Id          = Guid.Parse("453d394e-bf18-499b-9786-149b0f8d69ec"),
                Name        = "RCC -E EM 2018",
                Description = "Cyber exercises for evaluating the team.",
                Status      = ExerciseStatus.Active
            };

            var tBlue = new TeamEntity {
                Id = Guid.Parse("df7b7157-1727-48b5-803d-cfdb208767c0"), Name = "Blue"
            };

            tBlue.Permissions.Add(new TeamPermissionEntity(tBlue.Id, ostAdminPermission.Id));

            var tAdmin = new TeamEntity {
                Id = Guid.Parse("453e0508-0515-402d-85e9-24e567096f7a"), Name = "Admin", Role = exerciseAdminRole
            };

            //exercise1.ExerciseUsers.Add(new ExerciseUserEntity { ExerciseId = exercise1.Id, UserId = uEnder.Id, PrimaryTeamId = tBlue.Id });
            //exercise1.ExerciseUsers.Add(new ExerciseUserEntity { ExerciseId = exercise1.Id, UserId = uBean.Id, PrimaryTeamId = tRed.Id });
            //exercise1.ExerciseUsers.Add(new ExerciseUserEntity { ExerciseId = exercise1.Id, UserId = uGraff.Id, PrimaryTeamId = tWhite.Id });
            //exercise1.ExerciseUsers.Add(new ExerciseUserEntity { ExerciseId = exercise1.Id, UserId = uBonzo.Id, PrimaryTeamId = tSupport.Id });
            //exercise1.ExerciseUsers.Add(new ExerciseUserEntity { ExerciseId = exercise1.Id, UserId = uBob.Id, PrimaryTeamId = tBlue.Id });
            //exercise1.ExerciseUsers.Add(new ExerciseUserEntity { ExerciseId = exercise1.Id, UserId = uAdministrator.Id, PrimaryTeamId = tAdmin.Id });



            //tBlue.Memberships.Add(new TeamMembershipEntity { Team = tBlue, User = uAdministrator,  });

            //tBlue.TeamUsers.Add(new TeamUserEntity { TeamId = tBlue.Id, UserId = uEnder.Id });
            //tBlue.TeamUsers.Add(new TeamUserEntity { TeamId = tBlue.Id, UserId = uBob.Id });
            //tBlue.TeamUsers.Add(new TeamUserEntity { TeamId = tBlue.Id, UserId = uBonzo.Id });

            var tRed = new TeamEntity {
                Id = Guid.Parse("51484d68-8ad9-487e-98d6-30db812fa355"), Name = "Red"
            };
            //tRed.TeamUsers.Add(new TeamUserEntity { TeamId = tRed.Id, UserId = uBean.Id });

            var tWhite = new TeamEntity {
                Id = Guid.Parse("66925bea-68fd-40dd-9b19-d3c1fb5fa1bf"), Name = "White"
            };
            //tWhite.TeamUsers.Add(new TeamUserEntity { TeamId = tWhite.Id, UserId = uGraff.Id });

            var tSupport = new TeamEntity {
                Id = Guid.Parse("b7ca71d3-330c-4ae4-aab5-21fdcf8ee775"), Name = "Support"
            };

            //tSupport.TeamUsers.Add(new TeamUserEntity { TeamId = tSupport.Id, UserId = uBonzo.Id });
            //tSupport.TeamUsers.Add(new TeamUserEntity { TeamId = tSupport.Id, UserId = uAdministrator.Id });


            //tAdmin.TeamUsers.Add(new TeamUserEntity { TeamId = tAdmin.Id, UserId = uAdministrator.Id });

            exercise1.Teams.Add(tBlue);
            exercise1.Teams.Add(tRed);
            exercise1.Teams.Add(tWhite);
            exercise1.Teams.Add(tSupport);
            exercise1.Teams.Add(tAdmin);

            //// exercise 2
            //var exercise2 = new ExerciseEntity
            //{
            //    Id = Guid.Parse("fc41c788-063b-4018-9f28-5f68a52f4e76"),
            //    Name = "Exercise 2",
            //    Description = "Another Exercise",
            //    Status = ExerciseStatus.Active
            //};

            var a = new ApplicationEntity
            {
                Name       = "Virtual Machines",
                Url        = "http://localhost:4303/exercises/{exerciseId}",
                Embeddable = true,
            };

            a.Icon = "/assets/img/SP_Icon_Virtual.png";

            var b = new ApplicationEntity
            {
                Name       = "Intel Doc",
                Url        = "https://www3.epa.gov/ttn/naaqs/standards/co/data/2009_04_COScopeandMethodsPlan.pdf",
                Embeddable = true,
            };

            b.Icon = "/assets/img/SP_Icon_Intel.png";

            var c = new ApplicationEntity
            {
                Name       = "Chat",
                Url        = "https://INTERNAL_CHAT_SERVER?geid={exerciseId}",
                Embeddable = false,
            };

            c.Icon = "/assets/img/SP_Icon_Chat.png";


            var d = new ApplicationEntity
            {
                Name       = "Exercise Hub",
                Url        = "https://hub.com?geid={exerciseId}",
                Embeddable = true,
            };

            d.Icon = "/assets/img/SP_Icon_Hub.png";

            var e = new ApplicationEntity
            {
                Name             = "Help Desk",
                Url              = "http://localhost/osticket/login.php?do=ext&bk=identity.client",
                Embeddable       = true,
                LoadInBackground = true
            };

            e.Icon = "/assets/img/SP_Icon_Help.png";

            exercise1.Applications.Add(a);
            exercise1.Applications.Add(b);
            exercise1.Applications.Add(c);
            exercise1.Applications.Add(d);
            exercise1.Applications.Add(e);

            ApplicationInstanceEntity blueVmAppInstance = new ApplicationInstanceEntity {
                Application = a, DisplayOrder = 0
            };
            ApplicationInstanceEntity blueIntelAppInstance = new ApplicationInstanceEntity {
                Application = b, DisplayOrder = 1
            };
            ApplicationInstanceEntity blueChatAppInstance = new ApplicationInstanceEntity {
                Application = c, DisplayOrder = 2
            };
            ApplicationInstanceEntity blueHubAppInstance = new ApplicationInstanceEntity {
                Application = d, DisplayOrder = 3
            };
            ApplicationInstanceEntity blueHelpdeskAppInstance = new ApplicationInstanceEntity {
                Application = e, DisplayOrder = 4
            };

            ApplicationInstanceEntity redVmAppInstance = new ApplicationInstanceEntity {
                Application = a, DisplayOrder = 0
            };
            ApplicationInstanceEntity redHelpdeskAppInstance = new ApplicationInstanceEntity {
                Application = e, DisplayOrder = 1
            };

            ApplicationInstanceEntity whiteVmAppInstance = new ApplicationInstanceEntity {
                Application = a, DisplayOrder = 0
            };
            ApplicationInstanceEntity whiteHelpdeskAppInstance = new ApplicationInstanceEntity {
                Application = e, DisplayOrder = 1
            };

            ApplicationInstanceEntity supportVmAppInstance = new ApplicationInstanceEntity {
                Application = a, DisplayOrder = 0
            };
            ApplicationInstanceEntity supportHelpdeskAppInstance = new ApplicationInstanceEntity {
                Application = e, DisplayOrder = 1
            };

            ApplicationInstanceEntity adminVmAppInstance = new ApplicationInstanceEntity {
                Application = a, DisplayOrder = 0
            };
            ApplicationInstanceEntity adminHelpdeskAppInstance = new ApplicationInstanceEntity {
                Application = e, DisplayOrder = 1
            };

            tBlue.Applications.Add(blueVmAppInstance);
            tBlue.Applications.Add(blueIntelAppInstance);
            tBlue.Applications.Add(blueChatAppInstance);
            tBlue.Applications.Add(blueHubAppInstance);
            tBlue.Applications.Add(blueHelpdeskAppInstance);

            tRed.Applications.Add(redVmAppInstance);
            tRed.Applications.Add(redHelpdeskAppInstance);

            tWhite.Applications.Add(whiteVmAppInstance);
            tWhite.Applications.Add(whiteHelpdeskAppInstance);

            tSupport.Applications.Add(supportVmAppInstance);
            tSupport.Applications.Add(supportHelpdeskAppInstance);

            tAdmin.Applications.Add(adminVmAppInstance);
            tAdmin.Applications.Add(adminHelpdeskAppInstance);

            context.Exercises.Add(exercise1);
            //context.Exercises.Add(exercise2);

            var exMembership1 = new ExerciseMembershipEntity {
                Exercise = exercise1, UserId = uEnder.Id
            };

            exercise1.Memberships.Add(exMembership1);
            context.SaveChanges();

            var enderBlueMembership = new TeamMembershipEntity {
                Team = tBlue, User = uEnder, ExerciseMembership = exMembership1, Role = exerciseAdminRole
            };

            exMembership1.PrimaryTeamMembership = enderBlueMembership;

            context.SaveChanges();

            log.Debug("Seed completed");
        }