コード例 #1
0
        public static void Seed()
        {
            _standardUserService.Register(new StandardUser()
            {
                FirstName = "Martin", LastName = "Panovski", UserName = "******", Password = "******"
            });
            _premiumUserService.Register(new PremiumUser()
            {
                FirstName = "Dejan", LastName = "Jovanov", UserName = "******", Password = "******"
            });
            TrainerUser trainer = new TrainerUser()
            {
                FirstName = "Ivo", LastName = "Kostovski", UserName = "******", Password = "******", YearsOfExperience = 6
            };

            _trainerUserService.Register(trainer);

            _videoTrainingService.AddTraining(new VideoTraining()
            {
                Title = "30 min workout", Description = "Cool workout for beginners", Difficulty = Difficulty.Medium, Link = "", Rating = 4, Duration = 35
            });
            _videoTrainingService.AddTraining(new VideoTraining()
            {
                Title = "ABS workout", Description = "Cool ABS workout for beginners", Difficulty = Difficulty.Hard, Link = "", Rating = 5, Duration = 60
            });

            _liveTrainingService.AddTraining(new LiveTraining()
            {
                Title = "ABS workout", Description = "Cool ABS workout for beginners", Difficulty = Difficulty.Easy, Link = "", NextSession = new DateTime(2020, 07, 12), Duration = 60, Trainer = trainer
            });
            _liveTrainingService.AddTraining(new LiveTraining()
            {
                Title = "Cardio workout for professionals", Description = "Extra hard cardio workout for professionals", Link = "", Difficulty = Difficulty.Hard, NextSession = new DateTime(2020, 07, 14), Duration = 60, Trainer = trainer
            });
        }
コード例 #2
0
        public static void Seed()
        {
            _standardUserService.Register(new StandardUser {
                FirstName = "Martin", LastName = "Panovski", UserName = "******", Password = "******"
            });
            _premiumUserService.Register(new PremiumUser {
                FirstName = "Petre", LastName = "Arsovski", UserName = "******", Password = "******"
            });

            TrainerUser trainer = new TrainerUser {
                FirstName = "Bob", LastName = "Bobsky", UserName = "******", Password = "******", YearsOfExperience = 6
            };

            _trainerUserService.Register(trainer);

            _videoTrainingService.AddTraining(new VideoTraining {
                Title = "30 min workout", Description = "Cool workout for beginners!", Difficulty = Difficulty.Easy, Link = "", Raiting = 4, Duration = 35
            });
            _videoTrainingService.AddTraining(new VideoTraining {
                Title = "ABS workout", Description = "ABS workout for professionals!", Difficulty = Difficulty.Hard, Link = "", Raiting = 5, Duration = 45
            });

            _liveTrainingService.AddTraining(new LiveTraining {
                Title = "Legs workout", Description = "Medium legs workout", Difficulty = Difficulty.Medium, Link = "", NextSession = new DateTime(2021, 06, 10), Duration = 60, Trainer = trainer
            });
            _liveTrainingService.AddTraining(new LiveTraining {
                Title = "Cardio workout for professionals", Description = "Cardio workout", Difficulty = Difficulty.Hard, Link = "", NextSession = new DateTime(2021, 06, 11), Duration = 60, Trainer = trainer
            });
        }
コード例 #3
0
        public void AcceptTrainingRequest(Guid requestId)
        {
            var request = Context.TrainingRequests.
                          Include(tr => tr.Trainer)
                          .ThenInclude(t => t.TrainerUsers).Where(r => r.Id == requestId).FirstOrDefault();

            if (request == null)
            {
                throw new EntityNotFoundException(requestId, "TrainingRequest");
            }

            if (request.Trainer.TrainerUsers.Any(tu => tu.UserId == request.UserId))
            {
                throw new EntityAlreadyExistsException("Trainer and user are already connected.");
            }

            var userTrainer = new TrainerUser
            {
                TrainerId = request.TrainerId,
                UserId    = request.UserId
            };

            request.IsActive = false;

            Context.Entry(userTrainer).State = EntityState.Added;

            Context.SaveChanges();
        }
コード例 #4
0
        public IHttpActionResult RegisterTrainer(TrainerUser model)
        {
            User    userModel    = new User();
            Person  personModel  = new Person();
            Trainer trainerModel = new Trainer();

            #region Model to model - Person
            personModel.Email           = model.Email;
            personModel.Name            = model.Name;
            personModel.Sex             = Utility.GetSexID(model.Sex);
            personModel.BirthDate       = model.BirthDate;
            personModel.CityID          = Utility.GetCityID(model.CityName, Utility.GetCountryID(model.CountryName));
            personModel.LastName        = model.LastName;
            personModel.TelephoneNumber = model.TelephoneNumber;
            #endregion

            if (model.Role != "Entrenador")
            {
                return(BadRequest("Esta función es para entrenadores."));
            }

            #region Model to model - User
            userModel.Username = model.Username;
            userModel.Password = model.Password;
            userModel.Email    = model.Email;
            userModel.Role     = Utility.GetRoleID(model.Role);
            #endregion

            #region Model to model - Trainer
            trainerModel.Username  = model.Username;
            trainerModel.Certified = true;
            #endregion

            //Adding values to Databases
            personModel.AddPerson();
            var response = userModel.AddUser();
            trainerModel.AddTrainer();

            if (response.IsComplete())
            {
                return(Ok("Entrenador Agregado."));
            }
            else
            {
                return(BadRequest(response.Message));
            }
        }
コード例 #5
0
        public static void Seed()
        {
            if (_standardUserService.IsDbEmpty() &&
                _premiumUserService.IsDbEmpty() &&
                _trainerUserService.IsDbEmpty() &&
                _videoTrainingService.IsDbEmpty() &&
                _liveTrainingService.IsDbEmpty())
            {
                _standardUserService.Register(new StandardUser()
                {
                    FirstName = "Bob", LastName = "Bobsky", Username = "******", Password = "******"
                });
                _premiumUserService.Register(new PremiumUser()
                {
                    FirstName = "Jill", LastName = "Wayne", Username = "******", Password = "******"
                });

                TrainerUser John = new TrainerUser()
                {
                    FirstName = "John", LastName = "Johnsky", Username = "******", Password = "******", YearsOfExperience = 7
                };
                _trainerUserService.Register(John);

                _videoTrainingService.AddTraining(new VideoTraining()
                {
                    Title = "30 min workout", Description = "Cool workout for beginners and intermediate users", Difficulty = Difficulty.Medium, Link = "https://www.youtube.com/watch?v=50kH47ZztHs", Rating = 4, Time = 35
                });
                _videoTrainingService.AddTraining(new VideoTraining()
                {
                    Title = "Standing ABS workout", Description = "Abs workout for people at home with standing and no equipment required", Difficulty = Difficulty.Easy, Link = "https://www.youtube.com/watch?v=Qia2ZXEzyLw", Rating = 5, Time = 11
                });
                _videoTrainingService.AddTraining(new VideoTraining()
                {
                    Title = "Full AGILITY Bodyweight", Description = "An intense workout for people that have experience working out and need a good AGILITY training", Difficulty = Difficulty.Hard, Link = "https://www.youtube.com/watch?v=tveIjnSG_8s", Rating = 2, Time = 67
                });

                _liveTrainingService.AddTraining(new LiveTraining()
                {
                    Title = "Workout with John", Description = "Working out can be easy when you are at home. Trust John, he is a professional!", Difficulty = Difficulty.Medium, NextSession = new DateTime(2021, 07, 20), Trainer = John, Rating = 2, Time = 25
                });
                _liveTrainingService.AddTraining(new LiveTraining()
                {
                    Title = "Quick abs with John", Description = "You want abs for the summer? You want them quick? This is the training for you!", Difficulty = Difficulty.Hard, NextSession = new DateTime(2021, 07, 24), Trainer = John, Rating = 4, Time = 40
                });
            }
        }
コード例 #6
0
        public ActionResult Edit(TrainerUser trainerUser)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            var trainerInDb = _context.TrainerUsers.SingleOrDefault(tn => tn.ID == trainerUser.ID);

            if (trainerInDb == null)
            {
                return(HttpNotFound());
            }
            trainerInDb.TrainerID     = trainerUser.TrainerID;
            trainerInDb.Full_Name     = trainerUser.Full_Name;
            trainerInDb.Working_Place = trainerUser.Working_Place;
            trainerInDb.Phone         = trainerUser.Phone;

            _context.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        //Arrange
        private HonoplayDbContext InitAndGetDbContext(out int adminUserId, out Guid tenantId)
        {
            var context = GetDbContext();

            var salt      = ByteArrayExtensions.GetRandomSalt();
            var adminUser = new AdminUser
            {
                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 department = new Department
            {
                CreatedBy = adminUser.Id,
                Name      = "testDepartment",
                TenantId  = tenant.Id
            };

            context.Departments.Add(department);

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

            context.Professions.Add(profession);

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

            context.TrainerUsers.Add(trainerUser);

            context.SaveChanges();

            adminUserId = adminUser.Id;
            tenantId    = tenant.Id;
            return(context);
        }
コード例 #9
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);
        }
コード例 #10
0
 public static TrainerUserDetailModel Create(TrainerUser trainerUser)
 {
     return(Projection.Compile().Invoke(trainerUser));
 }
コード例 #11
0
ファイル: SeedData.cs プロジェクト: fossabot/honoplay
        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();
        }
コード例 #12
0
        public async Task <ResponseModel <CreateTrainerUserModel> > Handle(CreateTrainerUserCommand request, CancellationToken cancellationToken)
        {
            var redisKey    = $"TrainerUsersWithDepartmentsByTenantId{request.TenantId}";
            var salt        = ByteArrayExtensions.GetRandomSalt();
            var trainerUser = new TrainerUser
            {
                Name         = request.Name,
                CreatedBy    = request.CreatedBy,
                DepartmentId = request.DepartmentId,
                Email        = request.Email,
                PhoneNumber  = request.PhoneNumber,
                ProfessionId = request.ProfessionId,
                Surname      = request.Surname,
                LastPasswordChangeDateTime = DateTimeOffset.Now,
                PasswordSalt = salt,
                Password     = request.Password.GetSHA512(salt),
            };

            using (IDbContextTransaction transaction = await _context.Database.BeginTransactionAsync(cancellationToken))
            {
                try
                {
                    var isExistAnyDepartment = await _context.Departments
                                               .AnyAsync(x =>
                                                         x.TenantId == request.TenantId &&
                                                         x.Id == request.DepartmentId,
                                                         cancellationToken);

                    if (!isExistAnyDepartment)
                    {
                        throw new NotFoundException(nameof(Department), request.DepartmentId);
                    }

                    await _context.AddAsync(trainerUser, cancellationToken);

                    await _context.SaveChangesAsync(cancellationToken);

                    transaction.Commit();

                    await _cacheService.RedisCacheUpdateAsync(redisKey,
                                                              _ =>
                                                              _context.TrainerUsers.Include(x => x.Department)
                                                              .Where(x => x.Department.TenantId == request.TenantId)
                                                              .ToList()
                                                              , cancellationToken);
                }
                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(TrainerUser), request.Name);
                }
                catch (NotFoundException)
                {
                    transaction.Rollback();
                    throw;
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw new TransactionException();
                }

                var trainerUserModel = new CreateTrainerUserModel(
                    trainerUser.Id,
                    trainerUser.CreatedAt,
                    trainerUser.Name,
                    trainerUser.Surname,
                    trainerUser.Email,
                    trainerUser.PhoneNumber,
                    trainerUser.DepartmentId,
                    trainerUser.ProfessionId);

                return(new ResponseModel <CreateTrainerUserModel>(trainerUserModel));
            }
        }