コード例 #1
0
        public Tuple <string, UserRepositoryAccount> handleUserOperation(UserRepositoryAccount userRepositoryAccount,
                                                                         UserOperationType type)
        {
            string result = "";
            UserRepositoryAccount resultUserRepositoryAccount = userRepositoryAccount;

            switch (type)
            {
            case UserOperationType.CREATE_PUBLIC_REPOSITORY:
            {
                result = userRepositoryService.createUserRepository(RepositoryType.PUBLIC, userRepositoryAccount);
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.CREATE_PRIVATE_REPOSITORY:
            {
                result = userRepositoryService.createUserRepository(RepositoryType.PRIVATE, userRepositoryAccount);
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.LIST_OWN_REPOSITORIES:
            {
                result =
                    $"Your repositories:\n{String.Join("\n", userRepositoryService.listOwnRepositories(userRepositoryAccount).ToArray())}";
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.LIST_CLONED_REPOSITORIES:
            {
                result =
                    $"Your cloned repositories:\n{String.Join("\n", userRepositoryService.listClonedRepositories(userRepositoryAccount).ToArray())}";
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.LIST_CONTRIBUTED_REPOSITORIES:
            {
                var user = userService.getUser(userRepositoryAccount.User.Login);
                userRepositoryAccount = identifiedUserRepositoryAccount(user);
                result =
                    $"Repositories where you made contributions:\n{String.Join("\n", userRepositoryService.listContributedRepositories(userRepositoryAccount).ToArray())}";
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.LOG_OUT:
            {
                result = "Thank you for your work! See you later!";
                resultUserRepositoryAccount = logOut(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.SIGN_IN:
            {
                resultUserRepositoryAccount = signIn();
                result = $"Welcome back {resultUserRepositoryAccount.User.Login}! You successfully signed in.";
                break;
            }

            case UserOperationType.SIGN_UP:
            {
                resultUserRepositoryAccount = signUp();
                result = "You successfully signed up";
                break;
            }

            case UserOperationType.LOOK_FOR_USER:
            {
                User existingUser                = lookForUser();
                var  userOwnRepositories         = existingUser.getOwnRepositories().Select(it => it.Name);
                var  userContributedRepositories = existingUser.getContributedRepositories().Select(it => it.Name);
                result = $"Found user:{existingUser.Login}" +
                         $"\nUser own repositories:\n{String.Join("\n", userOwnRepositories)}" +
                         $"\nUser contributed repositories:\n{String.Join("\n", userContributedRepositories)}";
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User);
                break;
            }

            case UserOperationType.LOOK_FOR_REPOSITORY:
            {
                RepositoryDetails repositoryDetails = repositoryService.getRepositoryDetails();
                result = $"Repository:{repositoryDetails.Name}\n" +
                         $"Owner:{repositoryDetails.OwnerName}\n" +
                         $"Branches:\n{String.Join("\n", repositoryDetails.Branches)}\n" +
                         $"Contributors:\n{String.Join("\n", repositoryDetails.Contributors)}";
                break;
            }

            case UserOperationType.SELECT_REPOSITORY:
            {
                var account = userRepositoryService.selectRepository(userRepositoryAccount);
                resultUserRepositoryAccount = identifiedUserRepositoryAccount(account.User);
                break;
            }

            case UserOperationType.LIST_ALL_PUBLIC_REPOSITORIES:
            {
                RepositoryCollection collection         = new PublicRepositoryCollection();
                RepositoryIterator   repositoryIterator = collection.RepositoryIterator();
                while (repositoryIterator.hasMore())
                {
                    Repository repository = repositoryIterator.getNext();
                    Console.WriteLine($"Repository:{repository.Name}, owner:{repository.Owner.Login}");
                }
                break;
            }

            case UserOperationType.LIST_RATING_REPOSITORIES:
            {
                RepositoryCollection collection         = new RatingRepositoryCollection(resultUserRepositoryAccount.User);
                RepositoryIterator   repositoryIterator = collection.RepositoryIterator();
                while (repositoryIterator.hasMore())
                {
                    Repository repository = repositoryIterator.getNext();
                    Console.WriteLine($"Repository:{repository.Name}, owner:{repository.Owner.Login}, rating:{repository.getRepositoryRating()}");
                }
                break;
            }

            default:
            {
                result = "Invalid user operation type";
                break;
            }
            }

            return(new Tuple <string, UserRepositoryAccount>(result, resultUserRepositoryAccount));
        }
コード例 #2
0
 public RatingRepositoryIterator(RatingRepositoryCollection ratingRepositoryCollection, User user)
 {
     this.ratingRepositoryCollection = ratingRepositoryCollection;
     this.user = user;
 }