Exemple #1
0
        public async Task <ResponseModel <List <CreateTrainingSeriesModel> > > Handle(CreateTrainingSeriesCommand request, CancellationToken cancellationToken)
        {
            var redisKey                = $"TrainingSeriesesByTenantId{request.TenantId}";
            var newTrainingSerieses     = new List <TrainingSeries>();
            var createdTrainingSerieses = new List <CreateTrainingSeriesModel>();

            using (var transaction = await _context.Database.BeginTransactionAsync(cancellationToken))
            {
                try
                {
                    foreach (var createTrainingSeriesModel in request.CreateTrainingSeriesModels)
                    {
                        var newTrainingSeries = new TrainingSeries
                        {
                            CreatedBy = request.CreatedBy,
                            Name      = createTrainingSeriesModel.Name,
                            TenantId  = request.TenantId
                        };
                        newTrainingSerieses.Add(newTrainingSeries);
                    }

                    if (newTrainingSerieses.Count > 20)
                    {
                        _context.BulkInsert(newTrainingSerieses);
                    }
                    else
                    {
                        await _context.TrainingSerieses.AddRangeAsync(newTrainingSerieses, cancellationToken);

                        await _context.SaveChangesAsync(cancellationToken);
                    }

                    transaction.Commit();
                    await _cacheService.RedisCacheUpdateAsync(redisKey,
                                                              _ => _context.TrainingSerieses
                                                              .AsNoTracking()
                                                              .ToListAsync(cancellationToken),
                                                              cancellationToken);

                    newTrainingSerieses.ForEach(x =>
                                                createdTrainingSerieses.Add(new CreateTrainingSeriesModel(x.Id, x.Name, x.CreatedBy, x.CreatedAt)));
                }
                catch (DbUpdateException ex) when((ex.InnerException is SqlException sqlException && (sqlException.Number == 2627 || sqlException.Number == 2601)) ||
                                                  (ex.InnerException is SqliteException sqliteException && sqliteException.SqliteErrorCode == 19))
                {
                    transaction.Rollback();

                    throw new ObjectAlreadyExistsException(nameof(TrainingSeries), ExceptionExtensions.GetExceptionMessage(ex));
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw new TransactionException();
                }
            }

            return(new ResponseModel <List <CreateTrainingSeriesModel> >(createdTrainingSerieses));
        }
Exemple #2
0
        private HonoplayDbContext InitAndGetDbContext(out Guid tenantId, out int adminUserId, out int trainingSeriesId, out int trainingCategoryId)
        {
            var context = GetDbContext();

            var salt      = ByteArrayExtensions.GetRandomSalt();
            var adminUser = new AdminUser
            {
                Id           = 1,
                Email        = "*****@*****.**",
                Password     = "******".GetSHA512(salt),
                PasswordSalt = salt,
                LastPasswordChangeDateTime = DateTime.Today.AddDays(-5),
            };

            context.AdminUsers.Add(adminUser);

            var tenant = new Tenant
            {
                Name     = "TestTenant#01",
                HostName = "localhost"
            };

            context.Tenants.Add(tenant);

            context.TenantAdminUsers.Add(new TenantAdminUser
            {
                TenantId    = tenant.Id,
                AdminUserId = adminUser.Id,
                CreatedBy   = adminUser.Id
            });

            var trainingSeries = new TrainingSeries
            {
                TenantId  = tenant.Id,
                CreatedBy = adminUser.Id,
                Name      = "testSeries"
            };

            context.TrainingSerieses.Add(trainingSeries);

            var trainingCategory = new TrainingCategory
            {
                CreatedBy   = adminUser.Id,
                Description = "test",
                Name        = "sample",
            };

            context.TrainingCategories.Add(trainingCategory);

            context.SaveChanges();

            adminUserId        = adminUser.Id;
            tenantId           = tenant.Id;
            trainingSeriesId   = trainingSeries.Id;
            trainingCategoryId = trainingCategory.Id;

            return(context);
        }
        private HonoplayDbContext InitAndGetDbContext(out Guid tenantId)
        {
            var context = GetDbContext();
            var salt    = ByteArrayExtensions.GetRandomSalt();

            var adminUser = new AdminUser
            {
                Id           = 1,
                Email        = "*****@*****.**",
                Password     = "******".GetSHA512(salt),
                PasswordSalt = salt,
                LastPasswordChangeDateTime = DateTimeOffset.Now.AddDays(-5)
            };

            context.AdminUsers.Add(adminUser);


            var tenant = new Tenant
            {
                Name      = "testTenant",
                HostName  = "localhost",
                CreatedBy = adminUser.Id
            };

            context.Tenants.Add(tenant);

            context.TenantAdminUsers.Add(new TenantAdminUser
            {
                TenantId    = tenant.Id,
                AdminUserId = adminUser.Id,
                CreatedBy   = adminUser.Id
            });

            var question = new Question
            {
                Duration  = 3,
                Text      = "testQuestion",
                CreatedBy = adminUser.Id,
                TenantId  = tenant.Id
            };

            context.Questions.Add(question);

            var trainingSerieses = new TrainingSeries
            {
                CreatedBy = adminUser.Id,
                TenantId  = tenant.Id,
                Name      = "testTrainingSeries"
            };

            context.TrainingSerieses.Add(trainingSerieses);

            tenantId = tenant.Id;
            context.SaveChanges();
            return(context);
        }
        private HonoplayDbContext InitAndGetDbContext(out Guid tenantId)
        {
            var context = GetDbContext();

            var salt      = ByteArrayExtensions.GetRandomSalt();
            var adminUser = new AdminUser
            {
                Id           = 1,
                Email        = "*****@*****.**",
                Password     = "******".GetSHA512(salt),
                PasswordSalt = salt,
                LastPasswordChangeDateTime = DateTime.Today.AddDays(-5),
            };

            context.AdminUsers.Add(adminUser);

            var tenant = new Tenant
            {
                Name     = "TestTenant#01",
                HostName = "localhost"
            };

            context.Tenants.Add(tenant);

            context.TenantAdminUsers.Add(new TenantAdminUser
            {
                TenantId    = tenant.Id,
                AdminUserId = adminUser.Id,
                UpdatedBy   = adminUser.Id
            });

            var trainingSeries = new TrainingSeries
            {
                TenantId  = tenant.Id,
                UpdatedBy = adminUser.Id,
                Name      = "testSeries"
            };

            context.TrainingSerieses.Add(trainingSeries);

            var trainingCategory = new TrainingCategory
            {
                UpdatedBy   = adminUser.Id,
                Description = "test",
                Name        = "sample",
            };

            context.TrainingCategories.Add(trainingCategory);

            var training = new Training
            {
                UpdatedBy          = adminUser.Id,
                BeginDateTime      = DateTimeOffset.Now,
                Description        = "test",
                EndDateTime        = DateTimeOffset.Now.AddDays(5),
                TrainingCategoryId = trainingCategory.Id,
                TrainingSeriesId   = trainingSeries.Id,
                Name = "sample"
            };

            context.Trainings.Add(training);

            var department = new Department
            {
                TenantId  = tenant.Id,
                UpdatedBy = adminUser.Id,
                Name      = "sampleDepartment"
            };

            context.Departments.Add(department);

            var profession = new Profession
            {
                TenantId  = tenant.Id,
                UpdatedBy = adminUser.Id,
                Name      = "testProfession"
            };

            context.Professions.Add(profession);

            var trainerUser = new TrainerUser
            {
                UpdatedBy    = adminUser.Id,
                Name         = "sample",
                DepartmentId = department.Id,
                Email        = "*****@*****.**",
                PhoneNumber  = "16846546544545",
                ProfessionId = profession.Id,
                Surname      = "test"
            };

            context.TrainerUsers.Add(trainerUser);

            var classroom = new Classroom
            {
                UpdatedBy     = adminUser.Id,
                Name          = "test",
                TrainerUserId = trainerUser.Id,
                TrainingId    = training.Id,
            };

            context.Classrooms.Add(classroom);

            var game = new Game
            {
                Name = "game1"
            };

            context.Games.Add(game);

            var session = new Session
            {
                UpdatedBy   = adminUser.Id,
                Name        = "test",
                ClassroomId = classroom.Id,
                GameId      = game.Id,
            };

            context.Sessions.Add(session);

            context.SaveChanges();

            tenantId = tenant.Id;
            return(context);
        }
Exemple #5
0
 public static TrainingSeriesesListModel Create(TrainingSeries trainingSeries)
 {
     return(Projection.Compile().Invoke(trainingSeries));
 }
Exemple #6
0
        private HonoplayDbContext InitAndGetDbContext(out Guid tenantId, out int adminUserId, out int trainingId, out int trainerUserId, out int traineeUserId)
        {
            var context = GetDbContext();

            var salt      = ByteArrayExtensions.GetRandomSalt();
            var adminUser = new AdminUser
            {
                Id           = 1,
                Email        = "*****@*****.**",
                Password     = "******".GetSHA512(salt),
                PasswordSalt = salt,
                LastPasswordChangeDateTime = DateTime.Today.AddDays(-5),
            };

            context.AdminUsers.Add(adminUser);

            var tenant = new Tenant
            {
                Name     = "TestTenant#01",
                HostName = "localhost"
            };

            context.Tenants.Add(tenant);

            context.TenantAdminUsers.Add(new TenantAdminUser
            {
                TenantId    = tenant.Id,
                AdminUserId = adminUser.Id,
                CreatedBy   = adminUser.Id
            });

            var trainingSeries = new TrainingSeries
            {
                TenantId  = tenant.Id,
                CreatedBy = adminUser.Id,
                Name      = "testSeries"
            };

            context.TrainingSerieses.Add(trainingSeries);

            var trainingCategory = new TrainingCategory
            {
                CreatedBy   = adminUser.Id,
                Description = "test",
                Name        = "sample",
            };

            context.TrainingCategories.Add(trainingCategory);

            var training = new Training
            {
                CreatedBy          = adminUser.Id,
                BeginDateTime      = DateTimeOffset.Now,
                Description        = "test",
                EndDateTime        = DateTimeOffset.Now.AddDays(5),
                TrainingCategoryId = trainingCategory.Id,
                TrainingSeriesId   = trainingSeries.Id,
                Name = "sample"
            };

            context.Trainings.Add(training);

            var department = new Department
            {
                TenantId  = tenant.Id,
                CreatedBy = adminUser.Id,
                Name      = "sampleDepartment"
            };

            context.Departments.Add(department);

            var profession = new Profession
            {
                TenantId  = tenant.Id,
                CreatedBy = adminUser.Id,
                Name      = "testProfession"
            };

            context.Professions.Add(profession);

            var workingStatus = new WorkingStatus
            {
                CreatedBy = adminUser.Id,
                TenantId  = tenant.Id,
                Name      = "test"
            };

            context.WorkingStatuses.Add(workingStatus);

            var traineeUser = new TraineeUser
            {
                CreatedBy              = adminUser.Id,
                DepartmentId           = department.Id,
                Gender                 = 1,
                Name                   = "asdasd",
                NationalIdentityNumber = "12321421311",
                PhoneNumber            = "912489213123",
                Surname                = "test",
                WorkingStatusId        = 1
            };

            context.TraineeUsers.Add(traineeUser);

            var trainerUser = new TrainerUser
            {
                CreatedBy    = adminUser.Id,
                Name         = "sample",
                DepartmentId = department.Id,
                Email        = "*****@*****.**",
                PhoneNumber  = "16846546544545",
                ProfessionId = profession.Id,
                Surname      = "test"
            };

            context.TrainerUsers.Add(trainerUser);
            context.SaveChanges();

            adminUserId   = adminUser.Id;
            traineeUserId = traineeUser.Id;
            tenantId      = tenant.Id;
            trainingId    = training.Id;
            trainerUserId = trainerUser.Id;

            return(context);
        }
Exemple #7
0
        public static void PopulateTestData(HonoplayDbContext dbContext)
        {
            var tenantId       = Guid.Parse("b0dfcb00-6195-46a7-834e-c58276c3242a");
            var secondTenantId = Guid.Parse("f3878709-3cba-4ed3-4c03-08d70375909d");

            dbContext.Tenants.Add(new Tenant
            {
                Id          = tenantId,
                Name        = "api-test",
                Description = "test",
                HostName    = "localhost",
            });

            var salt      = ByteArrayExtensions.GetRandomSalt();
            var adminUser = new AdminUser
            {
                Email        = "*****@*****.**",
                Password     = "******".GetSHA512(salt),
                PasswordSalt = salt,
                LastPasswordChangeDateTime = DateTime.Today.AddDays(-5),
            };

            dbContext.AdminUsers.Add(adminUser);

            dbContext.TenantAdminUsers.Add(new TenantAdminUser
            {
                TenantId    = tenantId,
                AdminUserId = adminUser.Id,
                CreatedBy   = adminUser.Id
            });

            dbContext.Tenants.Add(new Tenant
            {
                Id          = secondTenantId,
                Name        = "api-tesasdt",
                Description = "test",
                HostName    = "localhosttt",
            });

            dbContext.TenantAdminUsers.Add(new TenantAdminUser
            {
                TenantId    = secondTenantId,
                AdminUserId = adminUser.Id,
                CreatedBy   = adminUser.Id
            });

            var questionTypes = new List <QuestionType>
            {
                new QuestionType
                {
                    Id   = 1,
                    Name = "questionType1"
                },
                new QuestionType
                {
                    Id   = 2,
                    Name = "questionType2"
                }
            };

            dbContext.QuestionTypes.AddRange(questionTypes);

            var questionDifficulties = new List <QuestionDifficulty>
            {
                new QuestionDifficulty
                {
                    Id   = 1,
                    Name = "questionDifficulty1"
                },
                new QuestionDifficulty
                {
                    Id   = 2,
                    Name = "questionDifficulty2"
                }
            };

            dbContext.QuestionDifficulties.AddRange(questionDifficulties);

            var questionCategories = new List <QuestionCategory>
            {
                new QuestionCategory
                {
                    Name     = "questionDifficulty1",
                    TenantId = tenantId
                },
                new QuestionCategory
                {
                    Name     = "questionDifficulty2",
                    TenantId = tenantId
                }
            };

            dbContext.QuestionCategories.AddRange(questionCategories);

            var department = new Department
            {
                CreatedBy = adminUser.Id,
                Name      = "yazilim",
                TenantId  = tenantId
            };

            dbContext.Departments.Add(department);

            var workingStatus = new WorkingStatus
            {
                Name      = "Full-Time",
                CreatedBy = adminUser.Id,
                TenantId  = tenantId
            };

            dbContext.WorkingStatuses.Add(workingStatus);

            var profession = new Profession
            {
                Name      = "Web",
                CreatedBy = adminUser.Id,
                TenantId  = tenantId
            };

            dbContext.Professions.Add(profession);

            var trainingSeries = new TrainingSeries
            {
                Name      = "series1",
                CreatedBy = adminUser.Id,
                TenantId  = tenantId
            };

            dbContext.TrainingSerieses.Add(trainingSeries);


            var trainingCategory = new TrainingCategory
            {
                CreatedBy   = adminUser.Id,
                Description = "sample",
                Name        = "test"
            };

            dbContext.TrainingCategories.Add(trainingCategory);

            var training = new Training
            {
                TrainingCategoryId = trainingCategory.Id,
                BeginDateTime      = DateTimeOffset.Now,
                EndDateTime        = DateTimeOffset.Now.AddDays(5),
                CreatedBy          = adminUser.Id,
                Description        = "description",
                Name             = "test",
                TrainingSeriesId = trainingSeries.Id
            };

            dbContext.Trainings.Add(training);

            var trainerUser = new TrainerUser
            {
                Name         = "Emre",
                PhoneNumber  = "1234567890",
                Surname      = "KAS",
                DepartmentId = department.Id,
                CreatedBy    = adminUser.Id,
                Email        = "*****@*****.**",
                Password     = "******".GetSHA512(salt),
                PasswordSalt = salt,
                ProfessionId = profession.Id
            };

            dbContext.TrainerUsers.Add(trainerUser);

            var traineeUser = new TraineeUser
            {
                DepartmentId           = department.Id,
                Name                   = "Yunus Emre",
                CreatedBy              = adminUser.Id,
                Gender                 = 1,
                Email                  = "*****@*****.**",
                Password               = "******".GetSHA512(salt),
                PasswordSalt           = salt,
                NationalIdentityNumber = "654654654444",
                PhoneNumber            = "053546835411",
                Surname                = "KAS",
                WorkingStatusId        = workingStatus.Id
            };

            dbContext.TraineeUsers.Add(traineeUser);

            var question = new Question
            {
                TenantId  = tenantId,
                CreatedBy = adminUser.Id,
                Duration  = 123,
                Text      = "Yukaridaki yukarida midir?",
            };

            dbContext.Questions.Add(question);

            var option = new Option
            {
                VisibilityOrder = 1,
                CreatedBy       = adminUser.Id,
                Text            = "yukaridadir",
                QuestionId      = question.Id
            };

            dbContext.Options.Add(option);

            var classroom = new Classroom
            {
                CreatedBy     = adminUser.Id,
                Name          = "test",
                TrainerUserId = trainerUser.Id,
                TrainingId    = training.Id,
            };

            dbContext.Classrooms.Add(classroom);

            var game = new Game
            {
                Name = "game1"
            };

            dbContext.Games.Add(game);

            var session = new Session
            {
                UpdatedBy   = adminUser.Id,
                Name        = "test",
                ClassroomId = classroom.Id,
                GameId      = game.Id,
            };

            dbContext.Sessions.Add(session);

            dbContext.TraineeGroups.Add(new TraineeGroup
            {
                CreatedBy = adminUser.Id,
                Name      = "traineeGroup",
                TenantId  = tenantId
            });
            dbContext.ContentFiles.Add(new ContentFile
            {
                Id          = Guid.Parse("4f2b88e3-704c-41d8-a679-f608a159d055"),
                Name        = "contentFile1",
                ContentType = "contentFile1",
                Data        = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 },
                TenantId    = tenantId,
                CreatedBy   = adminUser.Id
            });

            dbContext.Avatars.Add(new Avatar
            {
                Name       = "avatar1",
                ImageBytes = new byte[] { 0x20 }
            });

            var tag = new Tag
            {
                Name       = "tag1",
                CreatedBy  = adminUser.Id,
                ToQuestion = true
            };

            dbContext.Tags.Add(tag);
            var questionTag = new QuestionTag
            {
                QuestionId = question.Id,
                TagId      = tag.Id
            };

            dbContext.QuestionTags.Add(questionTag);
            dbContext.SaveChanges();
        }