コード例 #1
0
        public async Task DeleteUser(string id)
        {
            var trainer = await _trainerRepository.GetTrainerByUser(id);

            if (trainer != null)
            {
                var trainings = await _trainingRepository.GetTrainerTrainings(trainer.Id);

                foreach (var training in trainings)
                {
                    await _trainingRepository.DeleteTraining(training);
                }

                var favs = await _favouriteRepository.GetFavouriteTrainers(trainer.Id);

                foreach (var fav in favs)
                {
                    await _favouriteRepository.DeleteFavouriteTrainer(fav);
                }

                await _trainerRepository.DeleteTrainer(trainer);
            }

            var clubs = await _clubRepository.GetUserClubs(id);

            if (clubs.Count() != 0)
            {
                foreach (var club in clubs)
                {
                    var trainings = await _trainingRepository.GetClubTrainings(club.Id);

                    foreach (var training in trainings)
                    {
                        await _trainingRepository.DeleteTraining(training);
                    }

                    var favs = await _favouriteRepository.GetFavouriteClubs(club.Id);

                    foreach (var fav in favs)
                    {
                        await _favouriteRepository.DeleteFavouriteClub(fav);
                    }

                    await _clubRepository.DeleteClub(club);
                }
            }

            var favClubs = await _favouriteRepository.GetUserFavouriteClubs(id);

            if (favClubs.Count() != 0)
            {
                foreach (var club in favClubs)
                {
                    await _favouriteRepository.DeleteFavouriteClub(club);
                }
            }

            var favTrainers = await _favouriteRepository.GetUserFavouriteTrainers(id);

            if (favTrainers.Count() != 0)
            {
                foreach (var favTrainer in favTrainers)
                {
                    await _favouriteRepository.DeleteFavouriteTrainer(favTrainer);
                }
            }

            var clubRates = await _rateRepository.GetUserClubRates(id);

            if (clubRates.Count() != 0)
            {
                foreach (var rate in clubRates)
                {
                    await _rateRepository.DeleteClubRate(rate);
                }
            }

            var trainerRates = await _rateRepository.GetUserTrainerRates(id);

            if (trainerRates.Count() != 0)
            {
                foreach (var rate in trainerRates)
                {
                    await _rateRepository.DeleteTrainerRate(rate);
                }
            }

            var bodyMeasurements = await _bodyMeasurementRepository.GetBodyMeasurements(id);

            if (bodyMeasurements.Count() != 0)
            {
                foreach (var measurement in bodyMeasurements)
                {
                    await _bodyMeasurementRepository.DeleteBodyMeasurement(measurement);
                }
            }

            var reservedTrainings = await _trainingRepository.GetReservedTrainings(id, true);

            var reservations = await _reservationRepository.GetReservations(id);

            if (reservations.Count() != 0)
            {
                foreach (var reservation in reservations)
                {
                    await _reservationRepository.DeleteReservation(reservation);
                }
            }

            foreach (var trng in reservedTrainings)
            {
                await _trainingService.UpdateSignedUpList(trng);
            }

            var userTrainings = await _userTrainingRepository.GetUserTrainings(id);

            if (userTrainings.Count() != 0)
            {
                foreach (var userTraining in userTrainings)
                {
                    await _userTrainingRepository.DeleteUserTraining(userTraining);
                }
            }

            var chats = await _chatRepository.GetAllChats(id);

            if (chats.Count() != 0)
            {
                foreach (var chat in chats)
                {
                    await _chatRepository.DeleteChat(chat);
                }
            }

            var user = await _userRepository.GetUser(id);

            await _userRepository.DeleteUser(user);
        }